{"version":3,"file":"main.4d2f22e3b2e44ae0.js","mappings":"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,CACJ,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,YAGR,CACItQ,KAAM,MACNuiJ,YAAY,EACZjwG,MAAO,aACPhiC,OAAQ,CACJ,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,YAGR,CACItQ,KAAM,OACNuiJ,YAAY,EACZjwG,MAAO,aACPhiC,OAAQ,CACJ,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,YAGR,CACItQ,KAAM,QACNuiJ,YAAY,EACZjwG,MAAO,UACPhiC,OAAQ,CACJ,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,YAGR,CACItQ,KAAM,QACNuiJ,YAAY,EACZjwG,MAAO,UACPhiC,OAAQ,CACJ,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,YAGR,CACItQ,KAAM,SACNuiJ,YAAY,EACZjwG,MAAO,UACPhiC,OAAQ,CACJ,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,YAGR,CACItQ,KAAM,UACNuiJ,YAAY,EACZjwG,MAAO,UACPhiC,OAAQ,CACJ,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,YAGR,CACItQ,KAAM,QACNuiJ,YAAY,EACZjwG,MAAO,UACPhiC,OAAQ,CACJ,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,YAGR,CACItQ,KAAM,SACNuiJ,YAAY,EACZjwG,MAAO,UACPhiC,OAAQ,CACJ,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,YAGR,CACItQ,KAAM,QACNuiJ,YAAY,EACZjwG,MAAO,UACPhiC,OAAQ,CACJ,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,YAGR,CACItQ,KAAM,cACNuiJ,YAAY,EACZjwG,MAAO,UACPhiC,OAAQ,CACJ,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,aAKZ,SACI5V,YAAYyqI,EAAQ17H,EAAM6G,EAAQ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","names":["ClientOrdersService","constructor","http","this","environment","getOrderDocs","orderid","isGuid","get","apiGetOrderDocs","of","askActeToTrue","post","agreeToPay","stringToTest","regexGuid","test","serviceImgUrl","id","selected","url","assetsFolder","getFileName","getOrderRef","order","getIdFromGuid","OrderId","s","services","sv","undefined","immoServices","serv","fileName","guid","length","slice","isOrderFromNotaria","orderMeansType","isClientAndThirdPartyOrder","isThirdParyNotaria","isDateToday","dateString","today","Date","date","getDate","getMonth","getFullYear","addDayToDate","days","result","setDate","markNotificationsToRead","orderId","delete","getElecAgents","pipe","shareReplay","T","factory","DEVIS","NONE","OTHER","MAISON_1","MAISON_2","MAISON_3","MAISON_4","MAISON_5","VILLA","STUDIO","APPART_5075","APPART","DUPLEX","TRIPLEX","TERRAIN","STORE","INDUSTRY","GARAGE","OFFICE","NON_RESI_OVER_250","IMMEUBLE_APPART","HOUSE","FLAT","BUILDING","LAND","estatesName","name","estates","m","buildingType","text","typeId","a","i","non","contactLinks","fr","nl","en","de","regions","PEB","PEB_Partiel","AUDIT","PEB_BOOST","ASBESTOS","ELEC","ELEC_SUPP","DISCOUNT","CITERNE_ENTERREE","EXTRA","CITERNE_AERIENNE","DEPLACEMENT","PLAN","GAZ_CONTROLE","GAZ_SUPP","GAZ_CONTROLE_PERIO","BLOWER_DOOR","ISO","DESCRIPTIF","PLAN3D","VISITE360","VISITMATTERPORT","PHOTO","PHOTODRONE","VIDEO_DRONE","VIDEO","VIDEO_TEASING","QR","RESP_PEB","ELEC_NONDOM_MAX125A","ELEC_NONDOM_OVER125A","PEBCHAUFFAGE","PANELBIDDIT","PANELBIDDIT_SUPPORT","PANEL","PANEL_SUPPORT","SMS","ELEC_PHOTOVOLTA","PANEL_STANDARD","PANEL_XL_CERTI","PANEL_DEVIS","IMMOCOMBI","VISIOCOMBI","CONTROLECOMBI","PEB_SUPP","SPECIFIC","PLAQUETTE","VISIT","DESCRIPTIF_URBA","LIVRET","AFFICHETTE","AMIANTE","NETTMAISON","NETTJARDIN","VISITADVALORIS","LOCKSMITH","FRAIS_DOSSIER","URGENT_PRO","PRINT","PRINT_A_LA_CARTE","PRINT_A_LA_CARTE_BIS","PANEL_XL","PublicationNotaireBE","PublicationImmowebXL","ImmovlanOnline","NotaireBEOnline","BidditOnline","Fees","BidditFees","FullPress","PublicationVlan","PublicationLeSoir","PublicationNiewsblad","PublicationHetLaatsteNieuws","publicationLaLibre","PublicationDezeWeekRingBXL","PublicationBruzz","PublicationDeZondag","PublicationRondomVlaamsBrabant","PublicationRomdomPajottenland","PublicationRondomNoordrant","PublicationProximag","PublicationEcho","PublicationDeTijd","PublicationDeMorgen","PublicationAvenir","PublicationProximagAndenne","PublicationProximagCiney_Condroz","PublicationProximagDinant_Bauraing","PublicationProximagGembloux","PublicationProximagNamur","PublicationProximagPhilippeville","PublicationProximagCouvinChimay","PublicationProximagCiney_Dinant_Beauraing","PublicationProximagCharleroi","PublicationProximagBrabantWallonEst","PublicationProximagHuy","PublicationProximagHesbaye","PublicationProximagFamenne","PublicationProximagArdennes","VisitGil4S","VisitGil6S","VisitGilBoundless_3M","VisitGil2Times_Bid","VisitGilBoundless_Bid","VlanEditionLocal","ProximagNamurBW","ProximagLuxembourg","ProximagLiege","ProximagHainautOcc","ProximagHainautOutOfOcc","PublicationNotaireBeZimmo","PublicationFbIns","ZYVA","FireLvl2Check","FireLvl1Periodical","FireCheckGasDetectors","FireCheckHoseReelAndHydrant","FireCheckEmergencyLighting","FireCheckSmokeEvacuation","FireLvl1Or2TestFireDetection","Reasons","descriptifPacks","displayedPacks","ONLINE_REDUC","biens","reasons","PRODUCTS","servicesSupp","userTypes","venteTypes","VENTES","UserType","free","panneauxServices","publicationServices","mdnServices","estateStyles","type","projectID","hasImmoAccessProject","hasAccessAllPack","displayHelpSection","step1TitleImmo","step1SubTitle","step2HideDateButoir","headerShowPhone","showBigFooter","showFinalOptions","displayRegionSelection","defaultRegion","filterNewUserTypes","getPricesID","projectIDs","packRoleID","forceConnection","forceInvoiceToPro","hasSplitInvoice","themeColor","displayAskForExpertise","OrderStatus","PricingPlans","Products","Regions","street","number","zip","city","boxNumber","apartmentNumber","firstName","lastName","tva","companyName","address","Address","ReasonType","UserRole","RoleID","Name","firstname","lastname","phone","description","gsm","indicator","indicatorphone","email","companyname","commercialname","title","Owner","super","defaultVenteInfo","num","division","section","numCadastre","rcni","comment","references","ventePub","venteStatut","startPrice","date_DateTime","greAgre","askedPrice","biddit","venteForced","venteDate_DateTime","startDate","startDate_DateTime","endDate","endDate_DateTime","adjuDate_DateTime","infoDate_DateTime","miseAPrix","minPrice","CookieService","document","platformId","documentIsAccessible","isPlatformBrowser","escapedName","replace","RegExp","encodedURIComponent","decodeURIComponent","_a","check","encodeURIComponent","regExp","getCookieRegExp","cookie","exec","safeDecodeURIComponent","getAll","cookies","split","forEach","currentCookie","cookieName","cookieValue","set","value","expiresOrOptions","path","domain","secure","sameSite","expires","cookieString","options","getTime","toUTCString","console","warn","expiresDate","deleteAll","hasOwnProperty","ɵfac","t","ɵngcc0","DOCUMENT","PLATFORM_ID","ɵprov","i0","i1","token","providedIn","emailCheckURL","AuthService","cookieService","store","router","dataService","Subject","It","select","orderSelector","subscribe","u","userId","V","userEmail","isLoggedIn","isAgency","map","ut","isNotary","isInstallateur","isParticulier","isNotAgencyNotaryInstallator","isFromNVN","code","isFromHainaut","isFromNamur","login","password","redirectUrl","nn","take","switchMap","logged","logoutRedirect","postLoginEmailPassword","navigateByUrl","error","httpParams","HttpParams","append","httpOptions","headers","HttpHeaders","params","Email","Password","catchError","err","dispatch","SetLoginError","handleError","tap","data","userDB","User","Token","loginStatus","LoginStatus","next","Consumer","ConsumerType","user","mapUserdbToUser","SetUserInfo","SetToken","CompleteNotaireLandingDialog","loginWithUserIDAsync","userid","logout","delayms","Promise","resolve","reject","postLoginUserId","delay","navigateToSubUrl","refreshUserInfo","qt","getToken","filter","ongoingOrders","filterOptionsDefault","orderStatus","refreshToken","tn","resetOrderForm","combineLatest","ResetOrderForm","UserID","Title","FirstName","VatNumber","PhoneNumber","TelNumber","CommercialName","CompanyName","addressid","AddressId","Street","Number","City","PostalCode","BoxNumber","ApartmentNumber","sendByMail","ReceiveByEmail","userType","hasCommission","Commission","pricingPlan","Status","roles","Roles","r","Role","notifications","Notifications","pendingOrders","PendingOrders","unpaidAmount","UnpaidAmount","unpaidCount","UnpaidCount","unsignedBdc","UnsignedBdc","unpaidCallbackAmount","UnpaidCallbackAmount","unpaidCallbackCount","UnpaidCallbackCount","yearlyOrdersCount","YearlyOrdersCount","OngoingOrders","newOrdersCount","NewOrdersCount","ordersCount","OrdersCount","latestOrdersCount","LatestOrdersCount","canceledOrdersCount","CanceledOrdersCount","suspensOrdersCount","SuspensOrdersCount","OrderID","consumerAddresses","ConsumerAddresses","c","customPrices","ConsumerPrices","price","ConsumerAmount","commission","ConsumerCommission","estateType","EstateType","region","ConsumerRegion","productTypeId","ProductTypeId","localStorage","clear","success","redirect","ResetUserInfo","ResetOrderState","SetResetStepper","ResetUI","from","navigate","fetchUserNotifications","isEmailAlreadyInUse","subUrl","queryParamsHandling","ErrorEvent","message","status","throwError","Zt","packsTheme","estate","reduc","show","userRoles","servicesPrice","servicesRed","totalWithReduc","DataService","logger","dev","certiServicesBaseUrl","joinPaths","certiCoreBaseUrl","apiUrl","apiCoreUrl","BehaviorSubject","searchString","paid","notPaid","waitingPayment","cancelled","displayCount","Mt","regionId","kt","e","estateId","et","reason","q","v","venteType","R","cp","pt","n","nbOfApp","pp","userPricingPlan","Dt","Bt","yn","p","parutions","Gn","av","adValoris","Ie","ur","se","getLanguage","ln","language","usersSubject","ReplaySubject","isGreenfish","getLangue","updatePricesOnResolve","pr","products","getOrderInfo","At","checkoutInfo","Observable","subscriber","complete","setOrderId","fetchOrderInfo","fetchPromise","fetch","then","response","ok","Error","json","loadUserOrdersInfo","ordersInfo$","userOrdersUrl","log","orderInfoNow","refresh","orderInfo$","timer","d","asObservable","publicOrderInfo","loadOrderInfo","forceReload","orderID","getPreloadOrderInfo","apiGetPreloadOrderURL","createContact","body","apiCoreProfile","apiCreateContact","Authorization","observe","editInfo","apiEditInfo","patch","editAdress","apiEditAdress","editContact","apiEditContact","createAdress","apiCreateAdress","editPassword","apiEditPassword","deleteAdress","apiDeleteAdress","deleteContact","apiDeleteContact","getComissions","apiComissions","comissions$","getProfile","apiProfile","profile$","getStats","apiStats","apiStatsNl","stats$","getPriceFromAPI","consumerType","URL","apiPricesURL","SPECIAL_PRICING_USER_TYPES","includes","searchParams","toString","observable","Data","getPacksFromAPI","res","defaultPacksDB","packsURL","getPromoCodesFromAPI","promoCodeURL","postComment","userID","commentTextContent","Comment","isPromoCodeValid","promoCode","productsID","clearTimeout","debouncer","setTimeout","promoCodes","found","checkIfCodeFound","f","KeyWord","PromoCode","expertises","every","indexOf","getProduct","Price","Reduction","OrderPriceID","OrderType","ProductType","prices","ProductDB","filteredPrices","estateTypeId","filteredPrices1","find","Region","filteredPrices2","getParuPrice","paru","getProductPrice","paruPrice","ipl","SaleType","prod","getStatutReduc","checkCustomPrice","dbPrice","newDbPrice","customP","Object","SetCommission","getEstateTypes","getEstateStyles","getServiceTypes","getImmoServiceTypes","getImmoPacks","packsDB","pa","some","p1","p2","p3","p4","tmp","sort","b","parseInt","packs","getPacksToDisplay","filteredPacks","getPackPrice","packID","getProductsForPack","pack","getProductsAllIn","getProductsPresquIn","getRegionTypes","getRegionByID","isPro","reduction","plandID","ReductionBronze","ReductionSilver","ReductionGold","ReductionPlatinum","ReductionPro","deleteOrderFile","fileid","apiDeleteFileURL","preloadOrder","o","isNaN","SetRegion","SetEstateType","OrderProducts","SetServices","op","ProductTypeID","nbElecSupp","nbGazSupp","nbApp","hasGazInUrl","SetGazChoice","element","setService","SetNumberOfAppartments","setElecSupp","setGazSupp","AddressVisit","add","Zip","SetAddress","LastName","owner","Phone","SetOwner","removeService","index","indexCiterneE","indexCiterneA","indexPlan2D","indexPlan3D","indexVisite360","indexSMS","indexPanel","splice","setPlanIso","nb","isoArray","Array","fill","concat","SetNbOfIso","setPebSupp","pebSuppArray","setAuditSupp","auditSuppArray","elecSuppArray","SetNbOfElec","gazSuppArray","SetNbOfGaz","formatAddress","getInvoiceLink","invoiceOrderURL","checkTva","vatNumber","Tt","GtmService","emit","eventName","dataLayer","push","event","emitPurchase","eventParameters","extraParameters","ecommerce","emitDomEvent","emitClick","LoggerService","errorHandler","rest","PreviousRouteService","events","evt","RoutesRecognized","pairwise","previousUrl","urlAfterRedirects","setPreviousUrl","getPreviousUrl","E","SendEmailService","getListHtml","links","link","join","sendDevis","serviceId","toFred","mail","userStreet","userZip","numbox","userNum","userCity","subject","remarks","certiEmail","sendMail","emailDepartment","getEmailDepartment","frederic","sendNotaryRequest","notaryEmail","sendRequest","graphisme","apiURL","to","sendMails","emails","sendPaymentInviteMail","apiWithTemplateURL","EmailType","Recipient","sendComplain","sendBrochure","brochure","ENV","sendLegalShare","Sender","websiteTitle","sendRequestZyva","orderZyva","userName","ownerName","ownerAddress","static","F","uploadLinks","option","active","ht","instructions","ZyvaHelper","zyvaMail","SpinnerOverlayService","loaderSubject","hide","ActionTypes","payload","SET_REGION","SET_REGIONINFO","SET_ESTATETYPE","SET_ESTATESTYLE","SET_NUMBEROFAPPARTMENTS","SET_SERVICES","SET_PRODUCTS","SET_NBOFELEC","SET_NBOFGAZ","SET_GAZCHOICE","SET_PAYMENTTYPE","SET_ACTETYPE","TOGGLE_SENDBYMAIL","SET_SENDBYMAIL","SET_REMARKS","SET_INVOICETO","SET_IMMOPACK","SET_IMMOPACKIDS","SET_REDUCTIONS","TOGGLE_ONLINEPAYMENT","SET_PROMOCODE","TOGGLE_URGENCE","TOGGLE_URGENCE_PRO","SET_ADDRESS","SET_ZIPCODE","SET_OWNER","SET_CONTACT","SET_CONTACTS","SET_USERFORM","SET_DATEBUTOIR","SET_DOCUMENT","RESET_ORDERSTATE","RESET_ORDER_FORM","SET_NEWUSERTYPE","SET_GOGETKEYS","SET_COMMISSION","SET_CONTACTCHOICE","SET_USERINFO","RESET_USERINFO","SET_NN","SET_PROMOCODEID","SET_PEBNB","SET_PACKID","SET_PACKNAME","SET_NBOFISO","SET_REASON","SET_CLIENTTYPE","SET_IMMOORCTRL","SET_VENTETYPE","SET_VENTEINFO","SET_PARUTIONS","SET_PARUTION_LINKS","SET_PARUTION_COMMENT","SET_VISITS","SET_VISITCONTACT","SET_VISITADVALORIS","RESET_PACK","SET_SPLIT_INVOICE","SET_ASKFOREXPERTISE","SET_ASKFOROFFER","SET_AGENCY_PRODUCTS","SET_TOKEN","SET_ADDRESSKEY","COMPLETE_NOTAIRE_LANDING_DIALOG","initialOrderState","regionType","estateStyle","estateName","nbOfAppartments","productsForAgency","hasPeb","hasAudit","hasPebPartiel","hasElec","hasCiterne","hasPlan","hasGaz","pebNb","nbOfElec","nbOfGaz","gazChoice","paymentType","acteType","invoiceTo","immoPack","immoPackIds","reductions","reductionWithoutComm","onlinePayment","urgence","urgencePro","contact","Contact","contacts","dateButoir","Document","goGetKeys","contactChoice","nbOfIso","promoCodeID","packName","clientType","immoOrCtrl","venteInfo","panels","panelsInfo","parutionFileLinks","parutionsComment","visits","visitContact","tel","visitAdValoris","forfaits","devis","splitInvoice","askForExpertise","askForOffer","addressKeyID","addressKeyPrice","newUser","UserForm","hasImmoAccess","hasCompletedNotaireLandingDialog","state","action","getEstateName","getEstateStyle","checkPriceWithoutReduction","redWithoutComm","checkReduction","maxComm","comm","maxCom","checkMaxCommission","red","checkHasImmoAccess","product","Math","round","start","end","min","max","getOrder","getUser","getState","getRegion","createSelector","getRegionInfo","getEstateID","getNbOfAppartments","getFilteredServices","ui","productId","keys","SERVICE_RESTRICTIONS_BY_ZIPCODE_MANIFEST","productIdConcernedByRestriction","isUnavailable","service","showMoreServices","selectedPackIds","filterServices","getFilteredImmoServices","filterImmoServices","getServices","getProducts","getImmoPack","getImmoPackIds","getReductions","getOnlinePayment","getPromoCode","getPromoCodeID","getPriceWithoutReduction","getReduction","getReductionWithoutComm","getUrgence","getUrgencePro","hasDescUrba","getUserForm","getOwner","getContact","getAddress","getAddressZipcode","getPaymentType","getActeType","getSendByMail","getRemarks","getInvoiceTo","getDocument","getGoGeyKeys","getAddressKeyPrice","getCommission","getContactChoice","getDateButoir","getCustomPrices","getPricingPlan","getFilteredPanneauxServices","on","filterPanneauxServices","getFilteredPublicationsServices","filterPublicationsServices","getUserInfo","getUserNotifications","getUnpaidAmount","getUnpaidCount","getPendingOrdersCount","getUnpaidCallbackAmount","getUnpaidCallbackCount","getYearlyOrdersCount","getOngoingOrdersCount","getNewOrdersCount","getLatestOrdersCount","getCanceledOrdersCount","getSuspensOrdersCount","getSingleOrderId","getOrdersCount","getUnsignedBdc","getPendingOrders","getUserID","getHasImmoAccess","getIsLoggedIn","getUserType","getUserRoles","getHasCommission","getUserEmail","getUserZip","getUserName","getNN","getNbOfIso","getReason","getClientType","getVenteType","getVenteStatut","getVenteInfo","getParutions","getParutionsComment","getVisits","getParutionsLength","getVisitsLength","getVisitContact","getVisitAdValoris","getPackID","getPackName","getImmoOrCtrl","getSplitInvoice","getProductsForAgency","getAskForExpertise","getAskForOffer","getConsumerAddresses","getAddressKey","getPanels","getPanelsInfo","getIsThirdPartyNotaria","getThirdParyNotariaName","getHasCompletedNotaireLandingDialog","zipcode","inRange","SET_SHOWPACKS","SET_ISMOBILE","SET_ISTABLETTE","SET_LANGUAGE","SET_STEP1VALID","SET_STEP2VALID","SET_STEP3VALID","SET_STEP4VALID","SET_IAGREE","SET_PACKSWITHPRICES","SET_PACKSWITHPRICES_NOFILT","StartOnlineOfflineCheck","SET_ONLINE","SET_RESETSTEPPER","RESET_UI","SHOWMORESERVICES","SET_LOGIN_ERROR","initialUIState","showpacks","isMobile","isTablette","step1IsValid","step2IsValid","step3IsValid","step4IsValid","iAgree","packsWithPrices","packsWithPricesNoFilt","isOnline","navigator","onLine","resetStepper","loginError","handleIsOnline","getUI","getShowPacks","getIsMobile","getIsTablette","getStep1IsValid","getStep2IsValid","getStep3IsValid","getStep4IsValid","getIAgree","getPacksWithPrices","getPacksWithPricesNoFilt","getOnline","getResetStepper","getShowMoreServices","getLoginError","paths","part","MatBadgeModule","ɵmod","ɵinj","A11yModule","MatCommonModule","MatCardModule","MatTabsModule","CommonModule","PortalModule","MatRippleModule","ObserversModule","SHARE_BUTTONS_CONFIG","InjectionToken","ShareModule_1","ShareModule","config","ngModule","providers","provide","useValue","ShareButtonModule_1","imports","PlatformModule","ShareButtonModule","ShareButtonsModule_1","FontAwesomeModule","ShareButtonsModule","shareIcons","prefix","iconName","icon","faSms","faEnvelope","faCheck","faPrint","faExclamation","faLink","faEllipsisH","faMinus","ShareIconsModule","iconLibrary","addIcons","ɵngcc1","TranslateHttpLoader","SharedModule","library","faAngleDown","faCheckCircle","faUser","faTrash","faUpload","MAT_DATE_LOCALE","MAT_SNACK_BAR_DEFAULT_OPTIONS","duration","CurrencyPipe","LayoutModule","RouterModule","MatButtonModule","MatCheckboxModule","MatTooltipModule","MatExpansionModule","MatFormFieldModule","MatInputModule","MatMenuModule","MatIconModule","MatSelectModule","MatSlideToggleModule","ReactiveFormsModule","FormsModule","FileUploadModule","RatingModule","MatProgressSpinnerModule","InlineSVGModule","TranslateModule","loader","TranslateLoader","useFactory","HttpLoaderFactory","deps","HttpClient","FlatpickrModule","locale","fpickr","defaultHour","MatStepperModule","MatDatepickerModule","MatNativeDateModule","MatRadioModule","MatOptionModule","MatSliderModule","MatDialogModule","MatButtonToggleModule","MatSnackBarModule","MatAutocompleteModule","TooltipComponent","ngOnInit","selectors","certiSystemsBaseUrl","production","firebase","apiKey","authDomain","databaseURL","projectId","storageBucket","messagingSenderId","appId","measurementId","release","stripeCheckoutUrl","stripeGetStatusUrl","stripePublicKey","stripePublicKeyGreenfish","API","SEND_BROCHURE","apiRef","CertiCore","loginUrl","refresToken","orderInfo","deleteNotifications","checkVat","agendaEmployees","sendDocReminder","checkoutInfoV2","clientComment","sms","forgotPassword","CertiSystems","onlineAgendaUrl","loginWeb","mailSending","emailWithTemplate","packPromo","createNewUser","CertiServices","primmo","PlanningApiMicroservice","API_KEY","baseUrl","certinergieBlobStorageBaseUrl","certinergieNotaryAppBaseUrl","certiAdminBaseUrl","googleMapsApiKey","newUserTypes","txt","userTypePartAndPro","userTypePartAndNotary","ContactTypes","BannerComponent","variantClass","variant","ctx_r10","oxw","ctx_r12","ctx_r13","ctx_r14","ctx_r17","ctx_r21","ctx_r23","ctx_r24","ctx_r25","ctx_r26","ctx_r27","ctx_r33","ctx_r36","ctx_r41","LoginDialogComponent","authService","breakpointObserver","snackBar","_formBuilder","gtmService","route","company","userTypeSelected","selectedUserType","displayForgotInfoWindow","forgotten","recoverPasswordWindowType","userFG","group","userInfo","disabled","Validators","isEmailUnique","bind","isHainautOrNamurorNVN","$isLoggedIn","userSelector","$isTablette","uiSelector","$isLoggedError","closeDialog","valueChanges","debounceTime","values","queryParamMap","loginRedirectUrl","ngOnDestroy","signIn","pw","emailAsked","val","open","emailSent","emailError","emailNotInDB","checkEmailForgotten","resetEmail","emailFoundForOrderUserId","userIdFoundForOrderUserId","displayEmailProposition","has_clicked_on_password_lost","dialog","closeAll","selectUserType","showOthers","selectedClass","selectedId","askForProAccount","invalid","Users","Language","Addresses","Company","control","showForgotInfo","expandRegister","register","expandConnect","close","togglePasswordVisibility","isPasswordVisible","MAT_DIALOG_DATA","x","__esModule","prototype","call","default","SuppressedError","isEqual","getDefaultExportFromCjs","isArray","equal","source","flags","valueOf","key","DEFAULT_ID","LoaderStatus","INITIALIZED","LOADING","SUCCESS","FAILURE","authReferrerPolicy","channel","client","libraries","mapIds","nonce","retries","version","callbacks","done","loading","errors","Loader","instance","JSON","stringify","failed","createUrl","deleteScript","script","getElementById","remove","load","loadPromise","loadCallback","window","google","importLibrary","execute","maps","fn","setScript","_b","callback","g","h","k","l","Set","URLSearchParams","thisArg","_arguments","P","generator","step","throw","adopt","fulfilled","rejected","apply","__awaiter","createElement","toLowerCase","src","onerror","querySelector","head","libraryPromises","all","loadErrorCallback","reset","onerrorEvent","resetIfRetryingFailed","pow","cb","GoogleMapsLoaderService","loadGoogleMaps","ventePubChoices","venteBidditChoices","ctx_r11","ctx_r28","ctx_r29","VenteTypeInfoComponent","currencyPipe","venteInfo$","cadastreFG","z","K","venteFG","J","bt","un","$cadastreSub","Zn","SetVenteInfo","$venteInfoSub","le","ventePubFG","it","venteDate","Xn","ventePrice","Qe","$e","venteGreGreFG","venteOffre","Ke","yo","venteBidditFG","Yo","Io","venteStartDate","Ka","venteEndDate","gr","adjuDate","Qa","infoDate","Xa","ra","venteMinEnch","ta","ventePubSub$","parse","venteGreSub$","venteBidditSub$","Open","flatpickr1","nativeElement","_flatpickr","flatpickr2","flatpickr3","flatpickr4","flatpickr5","flatpickr6","SetComment","SetReferences","transformAmount","target","formattedAmount","transform","ctx","ctx_r35","ctx_r43","ctx_r45","ctx_r60","ctx_r62","ctx_r75","ctx_r77","ctx_r85","ctx_r87","ctx_r89","ctx_r96","Step2Component","googleMapsLoader","cdRef","clientService","FormControl","$contact","$contactChoice","$newUserType","userForm","$owner","newUserType","$venteType","$zipCode","ad","$consumerAddresses","$addressKeyId","$nbOfApp","$isInstallateur","$isParticulier","$elecAgents","agents","localeCompare","$filteredElecAgents","elecAgentControl","startWith","_filter","isAvailableZipFlanders$","isAnversZip$","$venteInfo","re","bool","notLogAndNotPart","step2FormGroup","codecountry","usertva","orderStreet","Ni","orderNum","ms","orderZip","inputZipCode","orderCity","zc","orderBoxNumber","pc","orderApartmentNumber","Pc","sl","Ym","$m","array","$userSub","Oa","h0","bs","SetUserForm","eM","xr","ri","Bo","Zc","rc","Ll","Rl","Tr","jc","I1","v0","Kv","t3","Xv","e3","n3","a3","o3","c3","r3","userBoxNumber","l3","s3","userApartmentNumber","g3","d3","m3","b3","f3","_3","u3","C3","M3","O3","P3","h3","v3","x3","w3","y3","k3","z3","A3","T3","S3","E3","I3","$ownerSub","R3","L3","D3","Z3","F3","N3","So","j3","B3","V3","H3","U3","q3","G3","Y3","$3","W3","J3","Q3","K3","X3","tx","nx","ex","ox","ax","rx","ix","cx","sx","gx","dx","lx","mx","bx","px","fx","_x","$contactSub","SetContact","ux","unsubscribe","Ox","Mx","Cx","vx","hx","Px","SetContacts","setHours","getHours","SetDateButoir","yx","wx","xx","kx","statusChanges","SetStep2Valid","minDate","$goGetKeys","fu","isValid","$dateButoir","dateButoire","patchValue","onZipChanges","updateValueAndValidity","doesOwnerAddressEqualProUserAddress","Boolean","ngAfterViewInit","addressAutocompleteListenersCleanupFunctions","initializeAutocomplete","catch","googleMapsAutocompleteRefs","googleMapsAutocomplete","inputElement","autocomplete","places","Autocomplete","types","addListener","place","getPlace","onAutocompleteSelected","unbindAll","valid","setRegion","setEstateStyle","style","SetEstateStyle","newUserTypeImgUrl","setNewUserType","setContactChoice","SetNewUserType","filterWeekend","day","getDay","logOut","stepper","copyContact","SetContactChoice","SetGoGetKeys","adds","officeAddresses","defaultOffice","setOfficeDeplacement","AddressObj","AddressID","pResult","addrObj","getFormattedAddress","toStep3","SetInvoiceTo","hasCompletedStep2","country","lat","lng","markAsDirty","detectChanges","location_obj","address_components","item","formatted_address","long_name","admin_area_l1","short_name","geometry","location","toggleDisplayTVA","checkbox","pattern","match","isZipCode","selectStatusVentePub","vatMightBeInvalid","setAddressKey","office","off","SetAddressKey","contactsArray","addContacts","filterValue","agent","displayFn","employee","changeprefix","mask","gsmholder","openLoginDialog","panelClass","SplitInvoiceComponent","$productsForAgency","$isAgency","$isNotary","$hasImmoServices","$hasLegalServices","togglesplitInvoice","SetSplitInvoice","ctx_r6","ctx_r8","ctx_r16","Step3Component","otherDocFormGroup","$invoiceTo","$isStep3Valid","SetStep3Valid","formGP","statu","statusValid","oldStatus","st","SetDocument","doc","onlySelf","emitEvent","SelectInvoice","toStep4","hasCompletedStep3","commisison","SetName","ctx_r9","SpecificRequestDialogComponent","sendEmailService","sent","devisFormGroup","onSubmit","HtvaPipe","args","valueHTVA","rounded","parseFloat","toFixed","y","floor","pure","SummaryConfirmDialogComponent","getRegionImg","file","getEstateImg","backToEditOrder","editOrder","previous","immoOrCtrlOptions","mdnOptions","nvnOptions","ventes","imgagesFolder","SafeHtmlPipe","sanitizer","bypassSecurityTrustUrl","ctx_r18","ctx_r20","_r23","MAs","ctx_r30","_r27","ctx_r34","ctx_r47","ctx_r50","ctx_r52","ctx_r58","PrintRequestDialogComponent","needPhoto","format","FileUploader","removeAfterUpload","autoUpload","getPubPrice","defaultParu","nextDay","currentParu","paruList","us","infoFormGroup","uploader","onBuildItemForm","form","withCredentials","onSuccessItem","SetParutionFileLinks","setSupportType","filterOneDay","addSupport","repeatNumber","paruTmp","addDays","showAddParu","displayAddParu","deleteParu","editParu","editing","selectedChoice","saveEditSupport","cancel","list","SetParutions","saveParu","SetParutionComment","backToList","getPubDB","WithPhoto","showPhotoSelect","onPhotoValueChanges","fileIndex","deletePhotoLink","now","finalPrice","ctx_r22","VisitRequestDialogComponent","hour","allDay","currentVisit","defaultVisit","visitList","visitFreeInfo","visitFreeFG","setHour","displayAddVisit","showAddVisit","editVisit","saveEditVisit","deleteVisit","saveVisits","SetVisits","saveVisitFree","visitFree","SetVisitContact","AddVisit","adV","SetVisitAdValoris","AddVisitGil","gilGG","gilVPnBid","cancelGil","forfait1Click","forfait2Click","option1Click","option2Click","totalPrice","color","quantity","unitPrice","saleType","ctx_r7","ctx_r15","ctx_r19","ctx_r31","ctx_r39","ctx_r40","PosterRequestDialogComponent","selectedFormat","selectedColor","colors","isNamur","connectedUser","displayAddPaper","displayAdd","addPaper","newPaper","Paper","selectedPaper","paperList","setFormat","deletePaper","editPaper","selectedIndex","findIndex","saveEditPaper","editedPaper","selectedUnitPrice","selectedQuantity","confirmPapers","sendEmail","formattedMsg","print","forfaitPrice","assign","SignsRequestDialogComponent","prixBiddit1","prixBiddit2","computedPrice","selectedPanel","priceVP","priceGG","minQuantity","SetDefaultQuantity","txtVentePub","txtVenteGG","txtVenteBiddit","PaperRequestDialogComponent","A4","officeId","size","choice","dateSelected","toLocaleDateString","officeChoices","ServicesChoiceDialogComponent","EventEmitter","continue","toNotaryServices","PrintFullpressRequestDialogComponent","nbOfWeeks","saveFullPress","fullPressPrint","ctx_r2","ctx_r4","PanelXlRequestDialogComponent","ctx_r5","SpecificPrintRequestDialogComponent","_r25","ctx_r32","_r29","ctx_r38","yi","CustomRequestDialogComponent","translate","needAddress","titleTxt$","remarkPlaceholder$","fileUploadTitle$","isElecNv3","isElecNv4","isEtudePEB","ServicesDetailsDialogComponent","addServiceNoClose","onAddService","addService","displayAddService","GlobalMessageComponent","ctx_r37","ctx_r46","PanelRequestDialogComponent","selectedSaleType","selectedLanguage","amount","fraisMDN","ag","saleTypeOptions","panelList","displayAddPanel","addPanel","formatOptions","quantityOptions","quantityOptionsExt","EPSILON","newPanel","Panel","languageOptions","deletePanel","editPanel","panel","saveEditPanel","confirmPanels","fees","panelSelect","MessageDialogComponent","_r5","_r9","VisitZyvaRequestDialogComponent","mailService","forfait","zyvaFormGroup","hasKey","initForm","vz","setValue","visit","visitZyva","sendZyvaMailFromModal","finalize","cancelVisit","BigSelectComponent","items","noPlaceHolderItems","imgUrl","valueChanged","valueChange","selectedItem","StepMoneyResultComponent","$urgence","priceWithoutReduction","immoReduction","reduce","priceForProNoRed","SortbyPipe","field","aa","bb","ctx_r44","ctx_r51","ctx_r53","ctx_r55","ctx_r57","ctx_r71","ctx_r76","ctx_r78","ctx_r83","ctx_r99","ctx_r107","ctx_r110","ctx_r119","ctx_r121","ctx_r122","ctx_r124","ctx_r127","ctx_r131","ctx_r135","ctx_r137","ctx_r139","ctx_r141","ctx_r142","ctx_r149","ctx_r152","ctx_r159","ctx_r162","ctx_r190","ctx_r195","ctx_r197","ctx_r201","ctx_r206","ctx_r208","ctx_r216","ctx_r226","ctx_r228","ctx_r233","ctx_r235","ctx_r240","ctx_r242","ctx_r247","ctx_r249","ctx_r251","ctx_r265","ctx_r270","ctx_r272","ctx_r277","ctx_r279","ctx_r288","ctx_r296","ctx_r299","ctx_r308","ctx_r310","ctx_r311","ctx_r313","ctx_r316","ctx_r320","ctx_r324","ctx_r326","ctx_r328","ctx_r330","ctx_r331","ctx_r338","ctx_r341","ctx_r356","ctx_r358","ctx_r363","ctx_r365","ctx_r370","ctx_r372","ctx_r377","ctx_r379","ctx_r381","ctx_r387","ctx_r389","ctx_r402","ctx_r410","ctx_r419","ctx_r421","ctx_r422","ctx_r424","ctx_r427","ctx_r431","ctx_r435","ctx_r437","ctx_r439","ctx_r441","ctx_r446","ctx_r453","ctx_r455","ctx_r469","ctx_r471","ctx_r476","ctx_r478","ctx_r483","ctx_r485","ctx_r490","ctx_r492","ctx_r494","ctx_r500","ctx_r502","ctx_r512","ctx_r514","ctx_r515","ctx_r524","ctx_r533","ctx_r535","ctx_r536","ctx_r538","ctx_r541","ctx_r545","ctx_r549","ctx_r551","ctx_r553","ctx_r555","ctx_r556","ctx_r562","Step1Component","hasPanelSupport","hasPanel","hasBidditPanelSupport","hasBidditPanel","step1FormGroup","validStep","SetStep1Valid","checkQueryParams","$immoPacks","$selectedRegion","$selectedEstateType","$selectedEstateStyle","$nbOfAppartments","$selectedImmoPack","$packName","$immoPackIds","$filteredServices","$filteredImmoServices","$reductions","$filteredPanneauxServices","$filteredPublicationsServices","$products","$pricingProducts","packIds","$packProducts","prods","packReducPrice","acc","cur","Product","filteredProds","$packPrice","prs","$onlinePayment","$userID","$commission","$reductionWithoutComm","$reduction","$nbElec","$nbOfIso","$nbGaz","$hasElec","$hasPeb","$hasAudit","$gazChoice","$hasImmoAccess","$hasCommission","$userRoles","$showPacks","$isMobile","$immoPacksWithPrices","$services","$userType","$reason","$clientType","$immoOrCtrlSelected","$promocodeID","$region","$packID","$hasPack","descriptifPack","packId","SetImmoPackIds","uid","$showMoreServices","clientTypes","situationControl","setValidators","results","pebPartiel","currentEstateStyle","visitLength","$hasGazCerga","fs","filteredServices","fi","filteredImmoServices","estateTypes","productsDB","currentRegionId","promodRed","rr","reductionPromoCode","maison5","houseOptions","maison6","elecOptions","gazOptions","nonResOptions","appartOptions","immeubleOptions","noPlaceHolderEstateStyles","selectedRegion","selectedReason","selectedVenteType","immoPacksWithPrices","ip","SetPacksWithPricesNoFilt","sortId","immopacksWithPrices","SetPacksWithPrices","controlLength","immoLength","howManyControlSelected","howManyImmoSelected","houseControl","selectNotEmpty","appartControl","buildingControl","nonResControl","filteredProducts","selectedServiceId","availableService","hasRemovedAnyServices","instant","selectedProductIds","hasSelectedPeb","getDialogById","$hasDefinedRegionAndZipcode","zipCode","diag","succintStep1","openRegisterDialog","setPromoCode","hasElecInUrl","hasPebInUrl","setReasonType","setEstateType","setGazChoice","ngAfterContentInit","ngAfterViewChecked","getDefaultEstateType","setNbOfAppartments","init","content","firstValueFrom","disableClose","setServiceNoRemove","isCiterneSelected","citerneType","under","regionClass","regionImgUrl","estateClass","selectedEstate","estateImgUrl","serviceClass","isSelected","idd","setImmoPack","ResetPack","SetImmoPack","setShowPacks","setPebPartiel","addPebPartiel","addPebNb","SetPebNb","setWantsIso","wantsIso","nextStep","markAsTouched","ref","afterClosed","hasCompletedStep1","ToggleOnlinePayment","ToggleUrgence","SetPromoCode","setCommission","SetShowPacks","toRegister","toForgotten","openGlobalDialog","openDetailsDialog","stopPropagation","dialogRef","componentInstance","displayDetailsBtn","openServicesChoiceDialog","servicesChoiceDialogRef","servicesInfo","servPrice","ser","thisPack","servicesNotary","proPackDisplay","ps","prodAgency","immoRed","isEmpty","setClientType","SetClientType","setImmoOrCtrl","href","SetImmoOrCtrl","setVenteType","SetVenteType","SetReason","imgUrlRegion","isAvailableZipFlanders","checkIfZipAvailableFlanders","SetZipCode","toggleShowMoreServices","ShowMoreServices","canUrgence","hasDescriptif","packHasDescriptif","ids","toggleImmoPackDetails","im","details","isLavenir","toOrdering","estateStylesParticulier","scrollToElement","$element","scrollIntoView","behavior","block","inline","CongratsDialogComponent","agenda","displayAgenda","createOrderResponseUserId","toAgenda","toCheckout","toClientArea","closeModal","DefaultDialogComponent","toOrder","reload","BillingInfo","Step4Component","translateService","$paymentType","$acteType","$sendByMail","$remarks","$IAgree","$askForExpertise","$askForOffer","$estateName","$visitAddress","$user","$document","$nn","$language","$estateType","$isUrgent","$userZip","isUrgent","uz","visitAddress","inst","string","isValid$","step1","step3","step4","online","SetPaymentType","ia","SetStep4Valid","trim","step4ShowByMail","SetSendByMail","selectPayment","selectActe","SetActeType","toggleSendByMail","ToggleSendByMail","toggleAskForExpertise","SetAskForExpertise","toggleAskForOffer","SetAskForOffer","SetRemarks","rem","toggleIAgree","SetIAgree","setNN","SetNN","checkIfProducts","hasProdducts","hasPrice","Invoice","TotalPrice","sendOrder","orderIsValid","submitNotValid","isSendingOrder","mapdOrderForDb","hasProducts","autoFocus","API_CREATE_ORDER","createOrderResponse","purchaseItems","item_id","item_name","ProductName","TotalTVAC","discount","transaction_id","currency","affiliation","is_new_customer","hasAgendaAccess","notaryProject","packComm","commOrder","commTotal","docName","gsmu","substring","phoneu","gsmo","phoneo","invoiceVat","invoiceCompany","orderProducts","Description","ContactName","ContactSurname","ContactType","ContactPhone","SmsNumber","ap","orderProductsPro","orderReductions","TypeId","reducWithoutOR","remarque","formattedContacts","co","Order","RegionLocation","OrderCommission","NeedBDC","Agence","SentByMail","ImmoDiscount","GoGetKeys","AddressKeyID","PromoCodeID","PackID","OrderMeansType","IsDeedPayment","NotaryActeChoice","InvoiceConsumerType","AddressBien","Country","AddressEnvois","Latitude","Longitude","OrderReductions","OrderConsumer","NationalNumber","Type","Commentaire","AvailableDates","OrderProductsForAgency","Urgent","SentByMailAgency","OrderProductsNotary","Publications","pub","saletype","PublicationLinks","PublicationComment","Visits","VenteInfo","VenteType","ProjectID","TotalCommission","AskForExpertise","NbrOfApartments","isEligibleUserForExpertise","Particulier","MULTIPLE_ELEC_PRODUCTS","NotaireLandingComponent","translationKey","continueToCertinergieOrder","OrderSteppersComponent","setDefaultLang","use","shouldInitiallyOpenLoginDialog","shouldInitiallyOpenLoginDialogWithPasswordRecoveryForNewUser","shouldRedirectToPasswordRecoveryForNewUser","shouldHideOrderStepperAndShowNotaryRedirectView$","frmStep1","frmStep2","isStep2Valid","ownerAddIsValid","isStep3Valid","otherValid","relativeTo","queryParams","replaceUrl","NEVER","noop","DEFAULT_CONFIG","connector","selector","operate","innerFrom","subscribable","fromSubscribable","ERR_SW_NOT_SUPPORTED","serviceWorker","controllerChanges","controllerChangeEvents","fromEvent","controller","currentController","defer","controllerWithChanges","worker","registration","getRegistration","eventsUnconnected","connect","subjectOrSubjectFactory","subjectFactory","isFunction","ConnectableObservable","multicast","publish","errorObservable","postMessage","sw","toPromise","postMessageWithOperation","operationNonce","waitForOperationCompleted","generateNonce","random","eventsOfType","filterFn","nextEventOfType","isEnabled","SwPush","subscriptionChanges","messages","notificationClicks","subscription","pushManager","workerDrivenSubscriptions","pm","getSubscription","merge","requestSubscription","pushOptions","userVisibleOnly","decodeBase64","serverPublicKey","applicationServerKey","Uint8Array","ArrayBuffer","charCodeAt","sub","input","atob","NgswCommChannel","SwUpdate","versionUpdates","available","activated","unrecoverable","current","currentVersion","latestVersion","checkForUpdate","activateUpdate","SCRIPT","injector","initializer","enabled","readyToRegister$","addEventListener","registrationStrategy","strategy","delayWithTimeout","whenStable","NgZone","runOutsideAngular","scope","timeout","appRef","ApplicationRef","isStable","stable","opts","ServiceWorkerModule","SwRegistrationOptions","ngswCommChannelFactory","APP_INITIALIZER","ngswAppInitializer","Injector","multi","UpdateSwService","updates","period","scheduler","asyncScheduler","interval","checkForUpdates","promptUser","SpinnerOverlayComponent","loaderService","loaderState","ctx_r49","ctx_r59","ctx_r66","HeaderComponent","flagImgUrl","$userEmail","$userNotifications","$tablette","NavigationStart","phoneNumber","phoneNumberFormatted","$result","onLangChange","currentLang","lang","isBpLarge","matches","activeNavLinkId","mapUrlToNavLinkId","pathname","switchLanguage","SetLanguage","toContact","toProfile","toStats","toCommission","scrollTo","top","left","toHomePage","toRates","toLink","startsWith","toNotifications","FooterComponent","AppComponent","fb","titleService","iconRegistry","previousRouteService","addSvgIcon","bypassSecurityTrustResourceUrl","NavigationEnd","takeUntil","destroy$","getTitle","routerState","root","setTitle","getWebsiteTitle","SetIsMobile","SetIsTablette","lan","isEmbedded","currentUserId","ieIE","navigatorIsIE","alert","parent","snapshot","child","firstChild","ua","userAgent","kind","hasValue","observer","observeNotification","do","nextHandler","completeHandler","accept","nextOrObserver","toObservable","EMPTY","TypeError","Notification","completeNotification","notification","_c","keySelector","elementOrOptions","groups","Map","notify","consumer","activeGroups","teardownAttempted","groupBySourceSubscriber","OperatorSubscriber","grouped","groupSubject","groupSubscriber","innerSub","createGroupedObservable","durationSubscriber","createOperatorSubscriber","project","resultSelector","exhaustMap","ii","isComplete","outerValue","DEFAULT_EFFECT_CONFIG","useEffectsErrorHandler","CREATE_EFFECT_METADATA_KEY","propertyNames","getOwnPropertyNames","propertyName","property","metaData","getPrototypeOf","METADATA_KEY","sourceProto","metadata","hasMetadataEntries","defineProperty","addEffectMetadataEntry","compose","getEffectMetadataEntries","getSourceForInstance","sourceInstance","globalErrorHandler","effectsErrorHandler","sourceName","observables$","effects","getEffectDecoratorMetadata","getCreateEffectMetadata","sources","getSourceMetadata","observable$","effectAction$","ignoreElements","materialized$","materialize","effect","retryAttemptLeft","defaultEffectsErrorHandler","Actions","lift","operator","ScannedActionsSubject","allowedTypes","typeOrActionCreator","onInitEffects","functionName","_ROOT_EFFECTS_GUARD","USER_PROVIDED_EFFECTS","_ROOT_EFFECTS","ROOT_EFFECTS","_FEATURE_EFFECTS","FEATURE_EFFECTS","EFFECTS_ERROR_HANDLER","EffectSources","addEffects","effectSourceInstance","toActions","groupBy","mergeMap","source$","effectsInstance","effect$","mergedEffects$","mergeEffects","onRunEffectsKey","isOnRunEffects","ngrxOnRunEffects","resolveEffectSource","output","reporter","isAction","isMethod","String","getEffectName","reportInvalidActions","dematerialize","init$","isOnInitEffects","ngrxOnInitEffects","onIdentifyEffectsKey","isOnIdentifyEffects","ngrxOnIdentifyEffects","EffectsRunner","effectSources","effectsSubscription","i3","ROOT_EFFECTS_INIT","createAction","EffectsRootModule","runner","rootEffects","storeRootModule","storeFeatureModule","guard","EffectsFeatureModule","effectSourceGroups","EffectsModule","featureEffects","createEffects","_provideForRootGuard","Optional","SkipSelf","Self","effectGroups","userProvidedEffectGroups","mergedEffects","effectGroup","userProvidedEffectGroup","createEffectInstances","PackSelectedComponent","param","MAT_SNACK_BAR_DATA","actions$","ofType","fromOrder","fromUI","checkStyles","checkReductionOnline","fillDocumentInfo","addUrgentPro","checkParutions","checkPanels","checkVisitAdValoris","checkSplitFacturation","immoPackSelected","esateType","agencyProducts","styleID","fullPressList","hasFullPressParu","arrayFP","withoutFullPressList","par","hasVisitForfait","selectedForfait","onlineReduc","checkReductionPromoCode","pan","keyPrice","panelFound","gaz","packReducs","checkForPacks","redOnline","getReductionOnline","reducCode","immoPacks","biggestReductionPack","biggestLength","packReduc","openFromComponent","foundPlaquette","tempProducts","checkNeedAddForfait","isChecked","hasUrgentPro","OrderEffects","__decorate","Effect","Bi","STORE_KEYS_TO_PERSIST","reducers","metaReducers","reducer","localStorageSync","rehydrate","none","empty","querySelectorAll","node","firstElementChild","children","update","datum","ownerDocument","namespaceURI","_next","_parent","__data__","enter","exit","groupLength","dataLength","EnterNode","keyValue","nodeByKeyValue","keyValues","has","NaN","appendChild","insertBefore","xhtml","svg","xlink","xml","xmlns","namespaces","space","local","removeAttribute","fullname","removeAttributeNS","setAttribute","setAttributeNS","arguments","defaultView","removeProperty","priority","setProperty","getPropertyValue","getComputedStyle","classList","ClassList","_node","_names","classArray","getAttribute","names","classedAdd","classedRemove","textContent","innerHTML","nextSibling","parentNode","previousSibling","uri","documentElement","createElementNS","namespace","creatorFixed","creatorInherit","removeChild","clone","cloneNode","typenames","typename","__on","j","removeEventListener","listener","contextListener","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","dispatchEvent","contains","parents","_groups","_parents","Selection","selection","subgroups","subnode","subgroup","selectAll","arrayAll","selectorAll","selectChild","childFirst","childFind","childMatcher","selectChildren","childrenFilter","matcher","bindKey","bindIndex","constant","enterGroup","updateGroup","exitGroup","_enter","_exit","sparse","onenter","onupdate","onexit","groups0","groups1","m0","merges","group0","group1","compareDocumentPosition","compare","ascending","sortgroups","sortgroup","compareNode","nodes","each","attr","getAttributeNS","attrRemoveNS","attrRemove","attrFunctionNS","attrFunction","attrConstantNS","attrConstant","styleRemove","styleFunction","styleConstant","styleValue","propertyRemove","propertyFunction","propertyConstant","classed","classedFunction","classedTrue","classedFalse","textRemove","textFunction","textConstant","html","htmlRemove","htmlFunction","htmlConstant","raise","lower","create","creator","insert","before","constantNull","deep","selection_cloneDeep","selection_cloneShallow","parseTypenames","onAdd","onRemove","dispatchFunction","dispatchConstant","selection_dispatch","Symbol","iterator","_","Dispatch","copy","that","preventDefault","stopImmediatePropagation","view","noevent","__noselect","MozUserSelect","noclick","definition","brighter","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","rgb","formatHex","formatRgb","rgbn","Rgb","rgba","hsla","Color","opacity","rgbConvert","hex","Hsl","m1","m2","t1","v1","v2","t2","define","channels","displayable","color_formatHex","formatHsl","hslConvert","color_formatRgb","extend","darker","rgb_formatHex","rgb_formatRgb","hsl2rgb","linear","nogamma","exponential","gamma","colorRgb","rgbGamma","spline","na","setTime","rgbSpline","basis","reA","reB","am","bm","bi","lastIndex","one","zero","isView","DataView","isNumberArray","numberArray","genericArray","object","sourceEvent","currentTarget","ownerSVGElement","createSVGPoint","point","clientX","clientY","matrixTransform","getScreenCTM","inverse","getBoundingClientRect","rect","clientLeft","clientTop","pageX","pageY","taskHead","taskTail","frame","clockLast","clockNow","clockSkew","clock","performance","setFrame","requestAnimationFrame","clearNow","_call","_time","time","Timer","restart","timerFlush","t0","Infinity","sleep","nap","wake","clearInterval","setInterval","poke","elapsed","stop","emptyOn","emptyTween","timing","schedules","__transition","self","tween","tick","ease","CREATED","schedule","svgNode","degrees","PI","identity","translateX","translateY","rotate","skewX","scaleX","scaleY","sqrt","atan2","atan","pxComma","pxParen","degParen","pop","xa","ya","xb","yb","scale","interpolateTransformCss","interpolateTransform","DOMMatrix","WebKitCSSMatrix","isIdentity","decompose","interpolateTransformSvg","baseVal","consolidate","matrix","tween0","tween1","transition","_id","interpolateNumber","interpolateRgb","interpolateString","interpolate","value1","string00","interpolate0","string1","string0","string10","attrInterpolateNS","_value","attrInterpolate","on0","on1","sit","styleInterpolate","textInterpolate","_name","selection_prototype","Transition","inherit","id0","id1","newId","onFunction","attrTween","tweenValue","attrTweenNS","styleTween","styleNull","listener0","styleMaybeRemove","textTween","removeFunction","tweenRemove","tweenFunction","delayFunction","delayConstant","durationFunction","durationConstant","easeConstant","easeVarying","interrupt","transition_end","defaultTiming","mode","defineProperties","enumerable","configurable","MODE_DRAG","MODE_SPACE","MODE_HANDLE","MODE_CENTER","abs","El","number1","X","handles","xy","Y","cursors","overlay","w","nw","ne","flipX","flipY","signsX","signsY","ctrlKey","button","hasAttribute","viewBox","width","height","maxTouchPoints","__brush","extent","delta","lo","hi","mid","ascendingComparator","center","right","e10","e5","e2","count","power","LN10","step0","durationSecond","durationMinute","durationHour","durationDay","durationWeek","durationMonth","durationYear","floori","offseti","ceil","d0","d1","offset","range","newInterval","isFinite","millisecond","getMilliseconds","getUTCSeconds","getSeconds","getMinutes","getTimezoneOffset","sunday","weekday","monday","thursday","setMonth","year","setFullYear","setUTCSeconds","getUTCMinutes","setUTCMinutes","getUTCHours","setUTCHours","setUTCDate","getUTCDate","getUTCDay","utcSunday","utcWeekday","utcMonday","utcThursday","setUTCMonth","getUTCMonth","getUTCFullYear","utcYear","setUTCFullYear","month","week","minute","tickIntervals","second","bisector","tickStep","reverse","tickInterval","ticks","utcTicks","utcTickInterval","ticker","utcMonth","utcWeek","utcDay","utcHour","utcMinute","timeTicks","timeTickInterval","H","M","S","L","UTC","timeFormat","pads","numberRe","percentRe","requoteRe","sign","requote","U","W","Z","Q","pad","timeDay","timeYear","formatMilliseconds","timeSunday","timeThursday","dISO","timeMonday","getUTCMilliseconds","formatUTCMilliseconds","dow","UTCdISO","locale_dateTime","dateTime","locale_date","locale_time","locale_periods","periods","locale_weekdays","locale_shortWeekdays","shortDays","locale_months","months","locale_shortMonths","shortMonths","periodRe","formatRe","periodLookup","formatLookup","weekdayRe","weekdayLookup","shortWeekdayRe","shortWeekdayLookup","monthRe","monthLookup","shortMonthRe","shortMonthLookup","formats","A","B","formatDayOfMonth","formatMicroseconds","formatYearISO","G","formatFullYearISO","formatHour24","I","formatHour12","formatDayOfYear","formatMonthNumber","formatMinutes","formatUnixTimestamp","formatUnixTimestampSeconds","formatSeconds","formatWeekdayNumberMonday","formatWeekNumberSunday","formatWeekNumberISO","formatWeekdayNumberSunday","formatWeekNumberMonday","formatYear","formatFullYear","formatZone","formatLiteralPercent","utcFormats","formatUTCDayOfMonth","formatUTCMicroseconds","formatUTCYearISO","formatUTCFullYearISO","formatUTCHour24","formatUTCHour12","formatUTCDayOfYear","formatUTCMonthNumber","formatUTCMinutes","formatUTCSeconds","formatUTCWeekdayNumberMonday","formatUTCWeekNumberSunday","formatUTCWeekNumberISO","formatUTCWeekdayNumberSunday","formatUTCWeekNumberMonday","formatUTCYear","formatUTCFullYear","formatUTCZone","parses","parseSpecifier","parseDayOfMonth","parseMicroseconds","parseYear","parseFullYear","parseHour24","parseDayOfYear","parseMilliseconds","parseMonthNumber","parseMinutes","parseQuarter","parseUnixTimestamp","parseUnixTimestampSeconds","parseSeconds","parseWeekdayNumberMonday","parseWeekNumberSunday","parseWeekNumberISO","parseWeekdayNumberSunday","parseWeekNumberMonday","parseZone","parseLiteralPercent","specifier","charAt","newDate","utcDate","localDate","newFormat","newParse","utcFormat","utcParse","formatLocale","defaultLocale","bisectRight","d2","unit","r0","r1","normalize","bisect","clamp","unknown","untransform","piecewise","interpolateValue","clamper","polymap","bimap","invert","rescale","rangeRound","interpolateRound","transformer","continuous","formatMillisecond","formatSecond","formatMinute","formatHour","formatDay","formatWeek","formatMonth","tickFormat","nice","x0","x1","calendar","initRange","timeMonth","timeWeek","timeHour","timeMinute","timeSecond","prefixExponent","FormatSpecifier","align","symbol","comma","precision","toExponential","coefficient","formatDecimalParts","exponent","formatSpecifier","%","toLocaleString","toPrecision","formatRounded","toUpperCase","formatPrefix","prefixes","tickIncrement","precisionPrefix","precisionRound","precisionFixed","prestep","maxIter","linearish","grouping","thousands","formatGroup","currencyPrefix","currencySuffix","decimal","numerals","formatNumerals","percent","minus","nan","formatTypes","suffix","formatType","maybeSuffix","valuePrefix","valueSuffix","valueNegative","out","formatTrim","padding","implicit","ordinal","bandwidth","ordinalRange","paddingInner","paddingOuter","sequence","band","pointish","valueof","value0","thresholds","threshold","invertExtent","quantiles","quantile","context","_context","Linear","areaStart","_line","areaEnd","lineStart","_point","lineEnd","closePath","lineTo","moveTo","pi","tau","epsilon","tauEpsilon","_x0","_y0","_x1","_y1","Path","quadraticCurveTo","y1","bezierCurveTo","x2","y2","arcTo","y0","x21","y21","x01","y01","l01_2","x20","y20","l21_2","l20_2","l21","l01","acos","t01","t21","arc","a0","a1","ccw","cos","dy","sin","cw","da","defined","curve","curveLinear","buffer","defined0","line","pointX","pointY","x0z","y0z","area","lineX0","lineY0","arealine","lineY1","lineX1","_k","_x2","_y2","tension","_curve","Cardinal","cardinal","custom","CardinalClosed","_x3","_x4","_x5","_y3","_y4","_y5","Radial","radial","curveRadial","halfPi","asin","innerRadius","outerRadius","startAngle","endAngle","padAngle","x10","y10","x32","y32","oy","x11","y11","x00","y00","D","cx0","cy0","cx1","cy1","dx0","dy0","dx1","dy1","cy","arcInnerRadius","arcOuterRadius","cornerRadius","padRadius","arcStartAngle","arcEndAngle","arcPadAngle","a01","a11","a00","a10","da0","da1","rp","rc0","rc1","p0","oc","intersect","ay","by","kc","lc","cornerTangents","centroid","sum","mapChildren","objectChildren","childs","Node","depth","eachBefore","computeHeight","ratio","row","nodeValue","sumValue","minValue","maxValue","newRatio","minRatio","alpha","beta","rows","dice","treemapDice","treemapSlice","squarifyRatio","squarify","hierarchy","eachAfter","ancestor","aNodes","ancestors","bNodes","leastCommonAncestor","descendants","leaves","copyData","node_copy","_c0","rf","_c1","model","TooltipContentComponent_span_4_ng_template_1_Template","ctx_r1","template","ctx_r0","legendOptions","position","legendWidth","_r3","$event","legendLabelClick","legendLabelActivate","legendLabelDeactivate","activeEntries","_c2","_c3","_c4","_c5","tick_r3","$implicit","tickTransform","textAnchor","textTransform","tickTrim","gridLineTransform","gridLineHeight","XAxisTicksComponent__svg_g_3__svg_g_1_Template","tick_r4","showGridLines","_c6","emitTicksHeight","trimTicks","rotateTicks","maxTickLength","tickFormatting","tickArguments","tickStroke","xScale","xOrient","dims","labelText","labelOffset","_c7","tick_r5","referenceAreaPath","gridLineWidth","YAxisTicksComponent__svg_g_4__svg_g_1__svg_line_1_Template","YAxisTicksComponent__svg_g_4__svg_g_1__svg_line_2_Template","orient","YAxisTicksComponent__svg_g_4__svg_g_1_Template","tick_r6","ctx_r3","refLine_r10","YAxisTicksComponent__svg_g_5__svg_g_1__svg_g_2_Template","showRefLabels","YAxisTicksComponent__svg_g_5__svg_g_1_Template","showRefLines","_c8","emitTicksWidth","yScale","yOrient","referenceLines","_c9","circle","radius","gradientFill","_c10","CircleSeriesComponent__svg_g_0__svg_rect_3_Template","onClick","activateCircle","deactivateCircle","gradientId","gradientStops","barVisible","isActive","seriesName","classNames","tooltipDisabled","tooltipTemplate","getTooltipText","_c11","_c14","stop_r1","_c15","_c16","_c18","_c19","tooltipItem_r5","getToolTipText","TooltipArea__svg_ng_template_2__xhtml_div_1_Template","model_r3","_c20","_r4","labelClick","activate","deactivate","entry_r2","label","formattedLabel","_c21","_c22","_c23","_c24","_c34","_r6","updateXAxisHeight","showXAxisLabel","xAxisLabel","trimXAxisTicks","rotateXAxisTicks","maxXAxisTickLength","xAxisTickFormatting","xAxisTicks","_r8","updateYAxisWidth","showYAxisLabel","yAxisLabel","trimYAxisTicks","maxYAxisTickLength","yAxisTickFormatting","yAxisTicks","series_r9","scaleType","rangeFillOpacity","hasRange","animations","_r13","onActivate","onDeactivate","series_r11","hoveredVertical","_r17","hideCircles","updateHoveredVertical","LineChartComponent__svg_g_9__svg_g_2_Template","xSet","seriesTooltipTemplate","series_r20","timelineXScale","timelineYScale","_r22","updateDomain","LineChartComponent__svg_g_10__svg_g_1_Template","timelineWidth","timelineHeight","scheme","customColors","legend","timelineTransform","trackBy","_c35","isInactive","outerPath","hasGradient","gradientUrl","getColor","_c37","_c38","radialGradientId","startOpacity","_c42","arc_r1","trimLabels","maxLabelLength","explodeSlices","PieSeriesComponent__svg_g_0__svg_g_1_Template","dblclick","labelVisible","gradient","getTooltipTitle","InjectionService","applicationRef","componentFactoryResolver","container","globalRootViewContainer","getRootViewContainer","_container","components","setRootViewContainer","getComponentRootNode","component","isViewContainerRef","hostView","rootNodes","getRootViewContainerNode","projectComponentBindings","bindings","inputs","bindingKeys","bindingName","outputs","eventKeys","appendComponent","componentClass","appendLocation","portalHost","DomPortalHost","portal","ComponentPortal","componentRef","attach","func","wait","leading","remaining","trailing","later","descriptor","throttle","PlacementTypes","bottom","elDimensions","popoverDimensions","alignment","verticalPosition","innerHeight","caretDimensions","popoverPosition","horizontalPosition","innerWidth","placement","spacing","flip","elmDim","hostDim","PositionHelper","calculateVerticalCaret","calculateHorizontalCaret","calculateVerticalAlignment","calculateHorizontalAlignment","shouldFlip","TooltipContentComponent","renderer","cssClasses","clz","cssClass","nativeElm","host","checkFlip","positionContent","showCaret","positionCaret","addClass","setStyle","caretElm","determinePlacement","onWindowResize","ɵcmp","viewQuery","_t","first","hostVars","hostBindings","decls","vars","consts","TooltipContentComponent_span_4_Template","TooltipContentComponent_span_5_Template","directives","styles","encapsulation","throttleable","TooltipService","injectionService","defaults","getByType","createByType","assignDefaults","injectComponent","destroy","compsByType","componentType","idx","destroyAll","destroyByType","comps","ChartComponent","showLegend","ngOnChanges","changes","legendColumns","legendType","getLegendType","chartWidth","legendData","features","ngContentSelectors","ChartComponent_ngx_charts_scale_legend_3_Template","ChartComponent_ngx_charts_legend_4_Template","ScaleLegendComponent","LegendComponent","animation","trigger","animate","changeDetection","VisibilityObserver","zone","visible","isVisible","runCheck","onVisibilityChange","run","offsetHeight","offsetWidth","ɵdir","BaseChartComponent","chartElement","cd","schemeType","isPlatformServer","bindWindowResizeEvent","visibilityObserver","unbindEvents","cloneData","getContainerDims","markForCheck","hostElem","formatDates","series","resizeSubscription","seriesItem","seriesItemCopy","extra","AxisLabelComponent","textHeight","margin","strokeWidth","attrs","maxTicks","reduced","modulus","XAxisTicksComponent","dimensionsChanged","verticalSpacing","rotateLabels","innerTickSize","outerTickSize","tickPadding","maxTicksLength","maxAllowedLength","approxHeight","updateDims","ticksElement","getTicks","angle","getRotationAngle","adjustedScale","tickLength","wordWidth","len","baseWidth","maxBaseWidth","getMaxTicks","maxScaleTicks","tickValues","reduceTicks","tickWidth","trimLabel","XAxisTicksComponent__svg_g_2_Template","XAxisTicksComponent__svg_g_3_Template","XAxisComponent","xAxisOffset","xAxisClassName","stroke","xAxisTickCount","newLabelOffset","ticksComponent","showLabel","xAxisTickInterval","XAxisComponent__svg_g_1_Template","XAxisComponent__svg_g_2_Template","YAxisTicksComponent","referenceLineLength","getApproximateAxisWidth","tickSpacing","setReferencelines","refMin","refMax","tl","tr","bl","br","retval","roundedRect","tickHeight","maxChars","YAxisTicksComponent__svg_g_2_Template","YAxisTicksComponent__svg_path_3_Template","YAxisTicksComponent__svg_g_4_Template","YAxisTicksComponent__svg_g_5_Template","YAxisComponent","yAxisOffset","yAxisClassName","yAxisTickCount","yAxisTickInterval","YAxisComponent__svg_g_1_Template","YAxisComponent__svg_g_2_Template","AxesModule","StyleTypes","popover","tooltip","AlignmentTypes","ShowTypes","focus","mouseover","TooltipDirective","tooltipService","viewContainerRef","tooltipCssClass","tooltipTitle","tooltipAppendToBody","tooltipSpacing","tooltipShowCaret","tooltipPlacement","tooltipAlignment","tooltipType","tooltipCloseOnClickOutside","tooltipCloseOnMouseLeave","tooltipHideTimeout","tooltipShowTimeout","tooltipShowEvent","tooltipImmediateExit","listensForFocus","listensForHover","hideTooltip","onFocus","showTooltip","onBlur","onMouseEnter","onMouseLeave","contentDom","onMouseClick","immediate","createBoundOptions","addHideListeners","mouseEnterContentEvent","listen","mouseLeaveContentEvent","documentClickEvent","destroyFn","tooltipContext","TooltipModule","cache","L5","CircleSeriesComponent","getActiveCircle","indexActiveDataPoint","visibleValue","mapDataPointToCircle","tooltipLabel","formatLabel","getGradientStops","escapeLabel","getTooltipMinMaxText","entry","CircleSeriesComponent__svg_g_0_Template","SvgLinearGradientComponent","CircleComponent","circleOpacity","pointerEvents","orientation","stops","SvgLinearGradientComponent__svg_stop_1_Template","SvgRadialGradientComponent","endOpacity","stopsInput","stopsDefault","SvgRadialGradientComponent__svg_stop_1_Template","AreaComponent","initialized","loadAnimation","getGradient","updatePathEl","areaPath","startingPath","activeLabel","AreaComponent__svg_defs_0_Template","global","MouseEvent","TooltipArea","anchorOpacity","anchorPos","anchorValues","showPercentage","hover","getValues","xVal","groupName","mouseMove","xPos","closestIndex","findClosestPointIndex","closestPoint","lastAnchorPos","ev","createMouseEvent","tooltipAnchor","minIndex","maxIndex","minDiff","MAX_VALUE","currentIndex","currentElement","curDiff","tooltipItem","TooltipArea__svg_ng_template_2_Template","_r0","Timeline","onDomainChange","addBrush","getDims","offsetY","xDomain","getXDomain","getXScale","brush","updateBrush","filterId","scaleTime","scaleLinear","scalePoint","dim","touchending","defaultExtent","defaultFilter","touchable","defaultTouchable","listeners","handleSize","initialize","handle","redraw","started","touchmoved","touchended","clean","emitter","Emitter","touches","w0","w1","n0","n1","e0","e1","s0","s1","moving","lockX","lockY","metaKey","altKey","signX","signY","N","shifting","shiftKey","points","identifier","pointer","point0","pts","move","beforestart","moved","ended","keydowned","keyupped","dragDisable","changedTouches","nopropagation","dragEnable","keyCode","number2","selection0","selection1","starting","BrushEvent","keyModifiers","brushX","d3selection","newDomain","miniChart","autoScale","horizontal","labelActivate","labelDeactivate","legendEntries","getLegendEntries","LegendComponent_header_1_Template","LegendComponent_li_4_Template","LegendEntryComponent","toggle","trimmedLabel","gradientValues","gradientString","splits","pairs","ɵngcc2","valueRange","ChartCommonModule","margins","showXAxis","showYAxis","xAxisHeight","yAxisWidth","showXLabel","showYLabel","legendPosition","columns","xOffset","chartHeight","colorSets","selectable","cs","colorDomain","generateColorScheme","colorScale","scaleQuantile","scaleOrdinal","valueScale","formattedValue","mapping","getLinearGradientStops","colorValueScale","scaleBand","endColor","startVal","startColor","endVal","currentVal","originalOffset","AreaChartModule","BarChartModule","BubbleChartModule","HeatMapModule","LineComponent","initialPath","strokeDasharray","strokeDashoffset","LineChartComponent","legendTitle","roundDomains","timelinePadding","calculateViewDimensions","xAxis","yAxis","timeline","filteredDomain","yDomain","getYDomain","seriesDomain","getSeriesDomain","getYScale","updateTimeline","setColors","getLegendOptions","clipPathId","clipPath","timelineXDomain","valueSet","getUniqueXDomainValues","checkDateType","getScaleType","xScaleMin","xScaleMax","aDate","bDate","yScaleMin","yScaleMax","deactivateAll","ColorHelper","entries","ɵLineChartComponent_BaseFactory","contentQueries","dirIndex","LineChartComponent__svg_g_5_Template","LineChartComponent__svg_g_6_Template","LineChartComponent__svg_g_8_Template","LineChartComponent__svg_g_9_Template","LineChartComponent__svg_g_10_Template","LineSeriesComponent","updateGradients","sortData","lineGen","getLineGenerator","areaGen","getAreaGenerator","getRangeGenerator","direction","sortLinear","sortByTime","bVal","aIdx","bIdx","sortByDomain","areaGradientStops","LineSeriesComponent__svg_g_2_Template","LineSeriesComponent__svg_g_5_Template","LineChartModule","PieLabelComponent","labelTrim","labelTrimSize","setTransforms","styleTransform","textX","textY","attrTransform","textTransition","isIE","startRadius","innerPos","innerArc","pos","midAngle","PieArcComponent","getPointerEvents","calc","calculateArc","updateAnimation","_current","copyOfD","interpolater","_timeout","onDblClick","nativeEvent","PieArcComponent__svg_defs_1_Template","PieChartComponent","labels","doughnut","arcWidth","hasNoOptionalMarginsSet","translation","getDomain","fromLegend","ɵPieChartComponent_BaseFactory","labelFormatting","tooltipText","PieSeriesComponent","arcData","sortValues","descending","arcs","pie","pieGenerator","calculateLabelPositions","defaultTooltipText","outerArc","factor","pieData","labelPositions","minDistance","myArc","showLabels","PieSeriesComponent__svg_g_0_Template","PieChartModule","PolarChartModule","NumberCardModule","TreeMapModule","GaugeModule","NgxChartsModule","SVGElement","HTMLDivElement","ngxChartsPolyfills","Error404Component","OrderResolver","NotaryServicesComponent","openDialog","QrCodeComponent","routeSub","routeParamSub","qParams","qrid","PublicShareResolver","paramMap","LegalForm","CloseIconComponent","ProfileEditComponent","info","profile","MainUser","Website","Tel","Gsm","controls","disable","displayError","ProfileProMainComponent","AdressType","AddAdressDialogComponent","newAdress","Num","NotReceiveInvoice","NotReceiveReport","AppartementNumber","autoComplete","adress","sendNewAdress","notReceiveInvoice","notReceiveReport","myModel","myModel2","DeleteAdressComponent","annuler","EditAdressDialogComponent","toPatch","AddAdressesComponent","MainAddress","addNewAdress","FunctionType","TitleType","AddContactDialogComponent","newContact","Function","UnsubscribedOrderInformations","UnsubscribedEmailReports","addNewContact","DeleteContactComponent","EditContactDialogComponent","mainContact","NotifOrderIconComponent","NotifAllIconComponent","EditIconComponent","onEditClick","editClick","ProfileProContactsComponent","addContact","popDelete","ProfilePasswordComponent","_snackBar","newPassword","oldpassword","newpassword","confirmNewpassword","confirmPass","MatSnackBarConfig","openSnackBar","OldPassword","NewPassword","ProfileUpgradeStatusComponent","ProfileStatusComponent","statusPlans","upgrade","toComission","ProfileProComponent","ProfileComponent","AllNotairesComponent","toggleStats","ActifsNotairesComponent","InactifsNotairesComponent","ListingNotaireComponent","setTab","arg","activeTab","setFilter","activeFilter","ComissionsInfoComponent","closeAlert","parentElement","PrintIconComponent","FilterIconsComponent","setFilterEvent","ComissionsUnpaidComponent","ComissionsCurrentComponent","ComissionsDashboardComponent","tab","previousTab","removeClass","newTab","tabGreen","previousFilter","newFilter","filterNotActive","getElementsByTagName","media","createTextNode","titleDiv","ProfileComissionsComponent","StatsMainComponent","stats","MonthlyStatistics","loop","Month","Year","OrderAmount","total","last12Year","StatsGraphComponent","sixMonthData","getMonthName","yearData","allData","monthTypeData","Label","Amount","totalMonth","typeOrdersData","sixMonthTypeData","el","totalSixMonth","activeTabType","yearTypeData","totalYear","allTypeData","totalAll","getPourcentage","setTabType","monthId","StatsComponent","AuthGuard","canActivate","search","routes","loadChildren","C","PublicShareModule","CheckoutModule","ClientSpaceModule","WebsiteModule","redirectTo","AppRoutingModule","scrollPositionRestoration","anchorScrolling","relativeLinkResolution","mapTo","SetOnline","UIEffects","dO","LoaderInterceptorService","intercept","req","urlPath","showLoader","HttpResponse","diff","MIN_LOADING_TIME","onEnd","notifier","errors$","syncResub","subscribeForRetryWhen","retryWhen","concatMap","RETRY","hideLoader","yz","ARS","AUD","BEF","BMD","BND","BZD","CAD","CLP","CNY","COP","CYP","EGP","FJD","FKP","FRF","GBP","GIP","HKD","IEP","ILP","ITL","JPY","KMF","LBP","MTP","MXN","NAD","NIO","NZD","PHP","RHD","RON","RWF","SBD","SGD","SRD","TOP","TTD","TWD","USD","UYU","WST","XCD","XPF","ZMW","AuthenticationInterceptor","clonedRequest","setHeaders","IconsModule","registerLocaleData","localeFr","AppModule","faQuestionCircle","faClipboardCheck","faHome","faCalculator","faShippingFast","faPhone","faBriefcase","faReceipt","faCog","faTags","faPowerOff","faThumbsUp","faInfoCircle","faArrowLeft","faArrowRight","faAngleRight","faCalendarAlt","faTimes","faCircle","faSearch","faUndo","faComments","faExclamationTriangle","faCreditCard","faDownload","faThumbsDown","faEye","faPen","faShareAlt","faExternalLinkAlt","faHourglass","faClock","faFileImage","faPlus","faFileInvoice","faFileUpload","bootstrap","LOCALE_ID","HTTP_INTERCEPTORS","useClass","ErrorHandler","BrowserAnimationsModule","BrowserModule","HttpClientModule","StoreModule","Hu","runtimeChecks","strictStateImmutability","strictActionImmutability","StoreDevtoolsModule","AngularFireModule","AngularFirestoreModule","AngularFireAuthModule","NgxMaskModule","Ng2TelInputModule","enableProdMode","__NgCli_bootstrap_1","bootstrapModule","APP_CHECK_STATES","DEFAULT_STATE","tokenObservers","DEBUG_STATE","app","operation","retryPolicy","getWaitDuration","lowerBound","upperBound","pending","nextErrorWaitInterval","process","isRunning","hasSucceeded","_this","Deferred","getNextRun","promise","_asyncToGenerator","currentErrorWaitInterval","ERROR_FACTORY","ErrorFactory","throttled","getStateReference","appName","heartbeatServiceProvider","heartbeatService","getImmediate","optional","heartbeatsHeader","getHeartbeatsHeader","method","responseBody","originalError","originalErrorMessage","httpStatus","ttl","timeToLiveAsNumber","expireTimeMillis","issuedAtTimeMillis","debugToken","debug_token","STORE_NAME","dbPromise","request","indexedDB","onsuccess","onupgradeneeded","oldVersion","createObjectStore","keyPath","transaction","getDBPromise","objectStore","put","compositeKey","_event","Logger","isIndexedDBAvailable","write","computeKey","writeTokenToIndexedDB","debugState","getDebugState","defaultTokenErrorData","tokenErrorData","base64","_x7","appCheck","forceRefresh","ensureActivated","cachedToken","cachedTokenPromise","writeTokenToStorage","interopTokenResult","shouldCallListeners","isDebugMode","exchangeTokenPromise","exchangeToken","getExchangeDebugTokenRequest","getDebugToken","finally","tokenFromDebugExchange","provider","On","internalError","makeDummyTokenResult","notifyTokenListeners","newObservers","tokenObserver","tokenRefresher","refresher","Refresher","getToken$2","nextRefreshTimeMillis","RETRIAL_MAX_WAIT","createTokenRefresher","isTokenAutoRefreshEnabled","observers","formatDummyToken","_delete","removeTokenListener","APP_CHECK_NAME_INTERNAL","_registerComponent","Component","AppCheckService","getProvider","setInstantiationMode","setInstanceCreatedCallback","_identifier","_appcheckService","getLimitedUseToken","_x8","getLimitedUseToken$1","addTokenListener","onError","validToken","initTokenRefresher","internalFactory","registerVersion","registerAppCheck","ɵgetAllInstancesOf","APP_CHECK_PROVIDER_NAME","ɵzoneWrap","innerObservable","USE_EMULATOR","SETTINGS","TENANT_ID","LANGUAGE_CODE","USE_DEVICE_LANGUAGE","PERSISTENCE","ɵauthFactory","useEmulator","tenantId","languageCode","useDeviceLanguage","settings","persistence","ɵcacheInstance","auth","setPersistence","AngularFireAuth","schedulers","_appCheckInstances","logins","observeOn","outsideAngular","ɵfirebaseAppFactory","bufferSize","refCount","authState","idToken","idTokenResult","credential","redirectResult","getRedirectResult","keepUnstableUntilFirst","authStateChanged","onAuthStateChanged","idTokenChanged","onIdTokenChanged","switchMapTo","subscribeOn","insideAngular","getIdToken","getIdTokenResult","ɵlazySDKProxy","spy","FIREBASE_OPTIONS","FIREBASE_APP_NAME","i2","VERSION","commonjsGlobal","globalThis","esm","goog","ca","unshift","ea","fa","$","ac","sa","ba","shift","ka","defaultPrevented","oa","qa","za","va","wa","documentMode","Aa","Ba","Ca","Fa","relatedTarget","screenY","screenX","pointerId","pointerType","srcElement","nodeName","fromElement","toElement","Ga","returnValue","Ha","Ia","proxy","capture","la","Sa","Ta","Ja","Va","Wa","once","Za","Ya","$a","O","ab","eb","attachEvent","db","removeListener","gb","Ua","detachEvent","hb","handleEvent","Ra","ib","jb","mb","ob","pb","sb","tb","vb","ub","lb","rb","qb","ga","zb","wb","Bb","Cb","Na","Jb","Fb","Gb","Ea","Lb","Mb","Nb","STAT_EVENT","stat","Pb","Qb","Sb","NO_ERROR","Eb","Db","TIMEOUT","Ib","Tb","Kb","$b","Ub","Xb","OPEN","Hb","cc","dc","Yb","Zb","XMLHttpRequest","ec","fc","hc","ic","Ab","Pa","ha","Ob","uc","qc","vc","wc","Rb","sc","nc","abort","xc","yc","Ac","Bc","La","Ma","getResponseHeader","Cc","Da","Dc","Ec","Fc","Gc","Hc","Jc","Ic","bc","ja","mc","TextDecoder","decode","stream","getAllResponseHeaders","tc","Lc","Nc","Oc","Qc","Rc","$c","Xc","Sc","Yc","decodeURI","encodeURI","Tc","Uc","Vc","Wc","Mc","ma","dd","PerformanceNavigationTiming","getEntriesByType","nextHopProtocol","gd","Kc","onload","onabort","ontimeout","readyState","nd","responseType","responseText","statusText","onreadystatechange","Headers","fd","ld","md","read","od","send","credentials","Request","pd","arrayBuffer","ReadableStream","getReader","qd","setRequestHeader","rd","sd","td","ud","yd","zd","protocol","wd","mozResponseArrayBuffer","Bd","internalChannelParams","Dd","xmlHttpFactory","supportsCrossDomainXhr","concurrentRequestLimit","hd","fastHandshake","encodeInitMessageHeaders","forceLongPolling","detectBufferingProxy","longPollingTimeout","Fd","Gd","sendBeacon","Image","Hd","ed","Cd","Kd","gc","Jd","Id","kd","jd","hostname","port","Ed","messageUrlParams","messageHeaders","clientProtocolHeaderRequired","initMessageHeaders","messageContentType","sendRawJson","httpSessionIdParam","__headers__","statusCode","__status__","__sm__","blockSize","Vb","vd","FormData","xd","Ad","kb","Ld","Md","Nd","Od","Pd","Qd","Sd","Ud","Td","Wd","Xd","ae","Yd","be","Zd","LN2","$d","and","or","xor","createWebChannel","HTTP_ERROR","COMPLETE","Wb","EventType","CLOSE","ERROR","MESSAGE","listenOnce","getLastError","getLastErrorCode","getStatus","getResponseJson","getResponseText","setWithCredentials","digest","multiply","modulo","toNumber","getBits","fromNumber","fromString","Vd","createWebChannelTransport","getStatEventTarget","ErrorCode","Event","Stat","PROXY","NOPROXY","FetchXmlHttpFactory","WebChannel","XhrIo","Md5","Integer","isAuthenticated","toKey","UNAUTHENTICATED","GOOGLE_CREDENTIALS","FIRST_PARTY","MOCK_USER","logLevel","LogLevel","debug","OK","CANCELLED","UNKNOWN","INVALID_ARGUMENT","DEADLINE_EXCEEDED","NOT_FOUND","ALREADY_EXISTS","PERMISSION_DENIED","RESOURCE_EXHAUSTED","FAILED_PRECONDITION","ABORTED","OUT_OF_RANGE","UNIMPLEMENTED","INTERNAL","UNAVAILABLE","DATA_LOSS","FirebaseError","invalidateToken","enqueueRetryable","shutdown","changeListener","currentUser","addAuthTokenListener","onInit","accessToken","removeAuthTokenListener","getUid","crypto","msCrypto","getRandomValues","seconds","nanoseconds","fromMillis","toDate","toMillis","_compareTo","toJSON","padStart","timestamp","rt","compareTo","toMicroseconds","toTimestamp","segments","comparator","limit","ot","construct","popFirst","popLast","firstSegment","lastSegment","isPrefixOf","isImmediateParentOf","toArray","canonicalString","ct","at","isValidIdentifier","isKeyField","emptyPath","collectionGroup","hasCollectionId","getCollectionGroup","getCollectionPath","indexId","fields","indexState","lt","UNKNOWN_ID","fieldPath","sequenceNumber","gt","fromTimestamp","readTime","documentKey","largestBatchId","Et","onCommittedListeners","addOnCommittedListener","raiseOnCommittedEvent","_vt","nextCallback","catchCallback","isDone","callbackAttached","wrapFailure","wrapSuccess","Rt","wrapUserFunction","waitFor","aborted","oncomplete","St","Pt","commit","Ct","getUA","xt","deleteDatabase","env","_this2","onblocked","onversionchange","runTransaction","_this3","cursor","primaryKey","Vt","openKeyCursor","openCursor","Nt","asyncQueue","tt","task","enqueueAfterDelay","_this4","nt","vt","localStore","_this5","doWhile","indexManager","getNextCollectionGroupToUpdate","getMinOffsetFromCollectionGroup","localDocuments","getNextDocuments","updateIndexEntries","updateCollectionGroup","batchId","Ot","previousValue","sequenceNumberHandler","writeSequenceNumber","isInteger","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","Kt","Ut","__PRIVATE_lastReasonableEscapeIndex","Qt","Wt","Ht","Jt","Yt","Xt","te","ee","ie","oe","ue","ce","he","fe","currentSequenceNumber","Te","pe","BLACK","minKey","maxKey","inorderTraversal","reverseTraversal","getIterator","getIteratorFrom","getReverseIterator","getReverseIteratorFrom","isReverse","nodeStack","getNext","hasNext","peek","RED","fixUp","removeMin","isRed","moveRedLeft","rotateRight","moveRedRight","rotateLeft","colorFlip","checkMaxDepth","last","forEachInRange","forEachWhile","firstAfterOrEqual","Ae","unionWith","Ee","iter","Re","covers","binaryString","DOMException","Pe","Ve","fromCharCode","toBase64","btoa","toUint8Array","approximateByteSize","EMPTY_BYTE_STRING","Se","substr","nanos","Ce","fromBase64String","fromUint8Array","mapValue","__type__","stringValue","__previous_value__","Ne","ke","De","__local_write_time__","timestampValue","databaseId","persistenceKey","ssl","autoDetectLongPolling","longPollingOptions","useFetchStreams","database","Oe","isDefaultDatabase","Fe","Be","nullValue","Le","booleanValue","Me","xe","bytesValue","referenceValue","geoPointValue","latitude","longitude","integerValue","doubleValue","arrayValue","qe","me","Ge","je","fromName","ge","We","inclusive","Ze","getFieldsMap","setAll","applyChanges","cn","documentType","createTime","documentState","an","convertToFoundDocument","convertToNoDocument","convertToUnknownDocument","setHasCommittedMutations","setHasLocalMutations","setReadTime","hasLocalMutations","hasCommittedMutations","hasPendingWrites","isValidDocument","isFoundDocument","isNoDocument","isUnknownDocument","mutableCopy","dir","_n","createKeyFieldInFilter","Pn","Dn","Cn","xn","Nn","mn","bn","Vn","matchesComparison","isInequality","getFlattenedFilters","getFilters","getFirstInequalityField","filters","gn","ft","Tn","In","En","An","Rn","Sn","Je","Ue","orderBy","startAt","endAt","dt","kn","Ft","wn","isDocumentKey","Bn","rn","sn","explicitOrderBy","limitType","wt","Un","zn","jn","dn","keyField","Mn","Hn","hn","Jn","$n","rs","mapKeyFn","equalsFn","inner","innerSize","ye","as","overlayedDocument","ws","os","_s","ys","useProto3Json","Lt","Ts","Is","Vs","Ss","Ds","Cs","Ps","Ns","He","serializer","xs","As","elements","ks","transformResults","updateTime","exists","Fs","isNone","Ys","js","zs","Hs","fieldTransforms","Bs","precondition","Ws","Js","fieldMask","$s","Ls","getFieldMask","Rs","vs","localWriteTime","baseMutations","mutations","applyToRemoteDocument","mutationResults","Us","applyToLocalView","Ks","applyToLocalDocumentSet","ds","mutatedFields","qs","gs","Qs","batch","commitVersion","docVersions","ti","mutation","getKey","unchangedNames","onExistenceFilterMismatchCallbacks","ai","ci","onExistenceFilterMismatch","notifyOnExistenceFilterMismatch","TextEncoder","li","encode","getUint32","bitmap","hashCount","_i","di","wi","snapshotVersion","targetChanges","targetMismatches","documentUpdates","resolvedLimboDocuments","gi","createSynthesizedTargetChangeForCurrentChange","mi","resumeToken","addedDocuments","modifiedDocuments","removedDocuments","removedTargetIds","targetId","targetIds","cause","vi","$t","Gt","jt","zt","Ai","forEachTarget","removeTarget","Fn","newNoDocument","localCacheCount","existenceFilterCount","bloomFilter","applied","bitmapLength","bits","getRemoteKeysForTarget","purpose","Ti","Ri","asc","desc","Pi","in","toISOString","Di","ki","Mi","qi","$i","Oi","newFoundDocument","Ui","updateMask","Xs","verify","updateTransforms","setToServerValue","appendMissingElements","removeAllFromArray","increment","currentDocument","xi","fromServerFormat","Ms","fieldPaths","documents","Fi","structuredQuery","collectionId","allDescendants","where","sr","Si","Zi","ir","Kn","unaryFilter","fieldFilter","compositeFilter","Xe","Ye","er","nr","lastLimboFreeSnapshotVersion","expectedCount","withSequenceNumber","cr","withResumeToken","withExpectedCount","withLastLimboFreeSnapshotVersion","prefixPath","documentId","noDocument","dr","unknownDocument","zi","localWriteTimeMs","Zs","wr","query","Yi","lastListenSequenceNumber","Hi","Ji","canonicalId","ei","overlayMutation","getBundleMetadata","Ar","bundleId","saveBundleMetadata","getNamedQuery","vr","yr","bundledQuery","saveNamedQuery","_e","Rr","getOverlay","Pr","Ir","getOverlays","saveOverlays","we","removeOverlaysForBatchId","IDBKeyRange","bound","getOverlaysForCollection","POSITIVE_INFINITY","getOverlaysForCollectionGroup","collectionPath","ji","ve","Vr","codePointAt","Sr","seed","setFloat64","Dr","ze","Cr","directionalValue","kr","$r","Fr","Kr","Ur","Lr","qr","pn","jr","Gr","Qr","vn","Wr","addToCollectionParentIndex","getCollectionParents","getEntries","addFieldIndex","deleteFieldIndex","getDocumentsMatchingTarget","getIndexType","getFieldIndexes","getMinOffset","Hr","Yr","Zr","Xr","Ln","qn","fromSegments","Br","createRange","Or","Nr","orderedDocumentKey","Mr","only","eo","mapArray","no","didRun","sequenceNumbersCollected","targetsRemoved","documentsRemoved","cacheSizeCollectionThreshold","percentileToCollect","maximumSequenceNumbersToCollect","so","DEFAULT_COLLECTION_PERCENTILE","DEFAULT_MAX_SEQUENCE_NUMBERS_TO_COLLECT","DEFAULT","DISABLED","referenceDelegate","oo","checkEmpty","NEGATIVE_INFINITY","addMutationBatch","ao","lookupMutationBatch","_r","getNextMutationBatchAfterBatchId","getHighestUnacknowledgedBatchId","getAllMutationBatches","getAllMutationBatchesAffectingDocumentKey","getAllMutationBatchesAffectingDocumentKeys","getAllMutationBatchesAffectingQuery","removeMutationBatch","io","markPotentiallyOrphaned","performConsistencyCheck","containsKey","uo","ho","lastAcknowledgedBatchId","lastStreamToken","allocateTargetId","highestTargetId","getLastRemoteSnapshotVersion","lastRemoteSnapshotVersion","getHighestSequenceNumber","highestListenSequenceNumber","setTargetsMetadata","addTargetData","targetCount","updateTargetData","removeTargetData","removeMatchingKeysForTargetId","wo","removeTargets","mr","_o","getTargetCount","getTargetData","addMatchingKeys","mo","addReference","removeMatchingKeys","removeReference","getMatchingKeysForTargetId","go","garbageCollector","Qn","_this6","collectGarbage","calculateTargetCount","nthSequenceNumber","Wn","removeOrphanedDocuments","collect","getCacheSize","To","getTargetCache","Yn","Ao","getRemoteDocumentCache","newChangeBuffer","getEntry","removeEntry","updateLimboDocument","getSize","changesApplied","addEntry","assertNotApplied","newInvalidDocument","getFromCache","getAllFromCache","setIndexManager","updateMetadata","getMetadata","byteSize","Do","ts","es","ro","ns","ss","xo","getDocumentsMatchingQuery","getAllFromCollectionGroup","Co","bo","trackRemovals","Vo","Ki","newUnknownDocument","hr","Ro","vo","lr","remoteDocumentCache","mutationQueue","documentOverlayCache","getDocuments","getLocalViewOfDocuments","populateOverlays","computeViews","hs","getOverlayedDocuments","recalculateAndSaveOverlays","No","recalculateAndSaveOverlaysForDocumentKeys","getDocumentsMatchingDocumentQuery","getDocumentsMatchingCollectionGroupQuery","getDocumentsMatchingCollectionQuery","ls","overlays","Fo","Es","docs","qo","Oo","Os","Uo","zr","Lo","ar","Mo","setDatabaseDeletedListener","setNetworkEnabled","getIndexManager","getDocumentOverlayCache","$o","getMutationQueue","getBundleCache","Go","Gs","Qo","fromPath","autoIncrement","createIndex","unique","Wo","deleteObjectStore","objectStoreNames","ni","si","Po","Ko","ko","Ho","allowTabSynchronization","clientId","oi","isPrimary","networkEnabled","inForeground","Jo","Eo","zo","fo","Er","Ii","_this7","newVersion","enqueueAndForget","_this8","Xo","updateTimeMs","Ei","_this9","Vi","removeItem","ownerId","leaseTimestampMs","Ci","_this10","Jr","visibilityState","isSafari","appVersion","enterRestrictedMode","getItem","setItem","fromCache","docChanges","tu","Gi","Qi","Wi","yt","is","Xi","nu","removedBatchIds","addedBatchIds","_iu","cu","_x6","_lu","_u","hu","_mu","_x13","_gu","Tu","Eu","activeTargetIds","Au","onlineState","vu","syncEngine","onlineStateHandler","storage","yu","Ru","_this11","getAllActiveQueryTargets","isActiveQueryTarget","addPendingMutation","updateMutationState","addLocalQueryTarget","Iu","removeLocalQueryTarget","isLocalQueryTarget","clearQueryState","updateQueryState","handleUserChange","setOnlineState","notifyBundleLoaded","storageArea","newValue","_this12","pu","_this13","Du","xu","BatchGetDocuments","Commit","RunQuery","RunAggregationQuery","onMessage","ku","databaseInfo","po","Cu","forwardChannelRequestTimeoutMs","timeoutSeconds","Nu","timerId","skipDelay","connection","authCredentialsProvider","appCheckCredentialsProvider","Bu","_this14","jo","_this15","_this16","Zo","eu","_this17","Lu","targetChange","targetChangeType","documentChange","documentDelete","documentRemove","su","Li","addTarget","iu","ru","ou","uu","streamToken","writeResults","commitTime","au","writes","authCredentials","appCheckCredentials","lu","terminate","wu","mu","gu","datastore","remoteSyncer","Pu","_this18","_ref10","Wu","bu","zu","Qu","_x19","_zu","_x20","_Wu","Zu","Yu","Xu","Vu","_x21","_sc","_x22","_ic","_x24","_ref45","rejectListen","applyRemoteEvent","_rc","_x27","_oc","_x30","_cc","_x31","_dc","_x32","_wc","_x33","applySuccessfulWrite","_x36","_ref47","rejectFailedWrite","_mc","_x38","verifyOperationInProgress","handleCredentialChange","_gc","_x40","_yc","Su","qu","Uu","targetTimeMs","removalCallback","deferred","timerHandle","handleDelayElapsed","keyedMap","sortedSet","track","oldDocs","mutatedKeys","syncStateChanged","excludesMetadataChanges","hasCachedResults","emptySet","queries","_x44","onListen","Mu","$u","_Vc","_x46","onUnlisten","_Sc","Ou","Fu","includeMetadataChanges","Ku","fromInitialDocuments","Gu","byteLength","ju","collectionGroups","progress","bytesLoaded","documentsLoaded","namedQuery","documentMetadata","_x9","_this19","taskState","Ju","totalDocuments","totalBytes","remoteStore","eventManager","sharedClientState","maxConcurrentLimboResolutions","isPrimaryClient","_x48","_Gc","_x50","_Qc","_x55","_jc","_zc","_x60","_Wc","_x62","_Jc","_x65","_Yc","_x67","_Xc","_Zc","_x72","_ref49","_ua","_x75","_ca","_x77","_ha","_x79","_la","_x81","_fa","_da","_x87","du","_wa","_x90","createSynthesizedRemoteEventForCurrentChange","_ga","_x94","_ya","synchronizeTabs","_this20","createSharedClientState","createPersistence","createLocalStore","gcScheduler","createGarbageCollectionScheduler","indexBackfillerScheduler","createIndexBackfillerScheduler","initialUser","_this21","cacheSizeBytes","forceOwnership","_superprop_getInitialize","_this22","withCacheSize","_superprop_getInitialize2","_this23","_x85","_this24","createDatastore","createRemoteStore","createEventManager","createSyncEngine","_ref15","releaseLock","closed","muted","_this25","_this26","_this27","_this28","_this29","_this30","readVersions","committed","lastWriteError","writtenDocs","lookup","_this31","ensureCommitNotCalled","_ref16","missing","recordVersion","toMutation","preconditionForUpdate","_this32","_ref17","updateFunction","maxAttempts","_this33","authCredentialListener","appCheckCredentialListener","_this34","getConfiguration","_this35","setCredentialChangeListener","setAppCheckTokenChangeListener","verifyNotTerminated","isShuttingDown","enqueueAndForgetEvenWhileRestricted","_this36","_onlineComponents","_offlineComponents","_x107","_Na","_x109","_ka","_x111","_uninitializedComponentsProvider","_offline","_$a","_x112","_online","_Oa","_x113","_Ka","eh","_delegate","oh","ignoreUndefinedProperties","localCache","sh","experimentalForceLongPolling","experimentalAutoDetectLongPolling","experimentalLongPollingOptions","th","_authCredentials","_appCheckCredentials","_databaseId","_app","_persistenceKey","_settings","ah","_settingsFrozen","_initialized","_terminated","_terminateTask","_setSettings","sessionIndex","iamToken","authTokenFactory","_getSettings","_freezeSettings","_terminate","converter","_key","firestore","_path","wh","withConverter","fh","_query","dh","getModularInstance","nh","hh","rh","ih","enqueue","_this37","stack","createAndSchedule","_this38","_progressObserver","_taskCompletionResolver","_lastProgress","onProgress","_completeWith","_updateProgress","_failWith","_queue","Ih","_firestoreClient","Vh","_offlineComponentProvider","_onlineComponentProvider","_offlineKind","_byteString","Uh","_internalPath","_methodName","_lat","_long","zh","Yh","gl","methodName","Jh","Xh","mergeFields","dl","ll","wl","yl","Wh","Qh","_toFieldTransform","hl","ml","Hh","fl","fromDate","jh","Kh","_l","_firestore","_userDataWriter","_document","_converter","Il","fromFirestore","convertValue","Tl","pl","Al","Vl","Pl","_apply","vl","_field","_op","_parse","Ql","Zh","Gl","Kl","al","_queryConstraints","_getOperator","_getQueryConstraints","_direction","Cl","jl","_limit","_limitType","Nl","_docOrFields","_inclusive","$l","Ul","Bl","convertTimestamp","convertServerTimestamp","convertBytes","convertReference","convertGeoPoint","convertArray","convertObject","convertObjectMap","convertDocumentKey","toFirestore","Wl","_firestoreImpl","serverTimestamps","sf","_snapshot","nf","_cachedChanges","_cachedChangesIncludeMetadataChanges","oldIndex","newIndex","uf","ph","uh","vh","Hl","Ef","cl","ul","Th","Af","hf","bh","_x57","Ff","_commitHandler","_mutations","_committed","_dataReader","_verifyNotCommitted","Lf","_transaction","Jl","FirestoreError","_isBase64Available","SDK_VERSION","instanceIdentifier","setMultipleInstances","assertBase64Available","Blob","Bytes","assertUint8ArrayAvailable","other","obj","methods","implementsAnyMethods","enableIndexedDbPersistence","Bh","Ch","enableMultiTabIndexedDbPersistence","clearIndexedDbPersistence","_ref38","databaseIdOrApp","_persistenceProvider","_DatabaseId","_appCompat","settingsLiteral","currentSettings","_logWarn","mockUserToken","createMockUserToken","user_id","connectFirestoreEmulator","enableNetwork","disableNetwork","_ref23","enablePersistence","experimentalForceOwningTab","_validateIsNotUsedTogether","clearPersistence","_removeServiceInstance","waitForPendingWrites","_x70","onSnapshotsInSync","collection","pathString","CollectionReference","replaceFunctionName","DocumentReference","Query","qf","Transaction","ensureFirestoreConfigured","WriteBatch","WriteBatch$1","executeWrite","loadBundle","bundleData","Eh","expQuery","AbstractUserDataWriter","bytes","forKey","UserDataWriter","documentRef","castReference","DocumentSnapshot","DocumentSnapshot$1","validateSetOptions","dataOrField","moreFieldsAndValues","expSnapshot","QueryDocumentSnapshot$1","QueryDocumentSnapshot","modelObject","converterMapByFirestore","FirestoreDataConverter","INSTANCES","untypedConverterByConverter","WeakMap","DocumentReference$1","_DocumentKey","refEqual","setDoc","fieldOrUpdateData","updateDoc","deleteDoc","onSnapshot","extractSnapshotOptions","wrapObserver","snap","_ref25","getDocFromCache","getDocFromServer","getDoc","getInstance","original","updated","isPartialObserver","wrapper","userObserver","snapshotEqual","_debugAssert","opStr","_create","directionStr","ch","limitToLast","startAfter","endBefore","queryEqual","_ref28","getDocsFromCache","getDocsFromServer","getDocs","QuerySnapshot","QuerySnapshot$1","docChange","DocumentChange","docRef","documentPath","gh","addDoc","_cast","fieldNames","FieldPath$1","FieldPath","_FieldPath","delegate","serverTimestamp","FieldValue","deleteField","il","arrayUnion","rl","arrayRemove","ol","firestoreNamespace","Firestore","GeoPoint","vf","Timestamp","setLogLevel","level","setLogLevel$1","CACHE_SIZE_UNLIMITED","firestoreFactory","registerComponent","firestoreExp","setServiceProps","configureForFirebase","IndexedDbPersistenceProvider","registerFirestore","_fromRef","fromRef","fromCollectionRef","priorAction","actions","change","currentDoc","priorDoc","scan","combined","sliceAndSplice","copiedArray","combineChange","combineChanges","distinctUntilChanged","deleteCount","returnArray","afs","stateChanges","prior","auditTrail","snapshotChanges","validatedEvents","validateEventsArray","scheduledSortedChanges$","idField","AngularFirestoreDocument","queryFn","collectionRef","associateQuery","AngularFirestoreCollection","priorPayload","scheduledFromDocRef$","fromCollectionRefScheduled$","ENABLE_PERSISTENCE","PERSISTENCE_SETTINGS","AngularFirestore","shouldEnablePersistence","persistenceSettings","_useEmulator","useAuthEmulator","authSettings","persistenceEnabled$","pathOrRef","refInZone","ngZone","queryGroupFn","AngularFirestoreCollectionGroup","createId","USE_EMULATOR$1","SETTINGS$1","noopFunctions","klass","Proxy","mod","ret","ɵapplyMixins","derivedCtor","constructors","baseCtor","getOwnPropertyDescriptor","nameOrConfig","existingApp","log$1","module","hot","FirebaseApp","isDevMode","FIREBASE_APP_PROVIDER","VERSION$1","cacheKey","moduleName","cachedDeps","ɵAngularfireInstanceCache","matchDep","IS_HMR","was","newInstance","idbProxyableTypes","cursorAdvanceMethods","cursorRequestMap","transactionDoneMap","transactionStoreNamesMap","transformCache","reverseTransformCache","idbProxyTraps","prop","receiver","IDBTransaction","wrap","IDBDatabase","IDBCursor","advance","continuePrimaryKey","getCursorAdvanceMethods","unwrap","storeNames","wrapFunction","unlisten","cacheDonePromiseForTransaction","instanceOfAny","IDBObjectStore","IDBIndex","getIdbProxyableTypes","IDBRequest","promisifyRequest","transformCachableValue","blocked","blocking","terminated","openPromise","readMethods","writeMethods","cachedMethods","targetFuncName","useIndex","isWrite","storeName","replaceTraps","oldTraps","Ax","getMethod","PACKAGE_VERSION","INTERNAL_AUTH_VERSION","requestStatus","expiresIn","getExpiresInFromResponseExpiresIn","creationTime","requestName","errorData","serverCode","serverMessage","serverStatus","Accept","appConfig","getHeaders","getAuthorizationHeader","responseExpiresIn","fid","endpoint","getInstallationsEndpoint","authVersion","sdkVersion","retryIfServerError","responseValue","registrationStatus","authToken","extractAuthTokenInfoFromResponse","getErrorFromResponse","VALID_FID_PATTERN","fidByteArray","b64","b64String","INVALID_FID","fidChangeCallbacks","callFidChangeCallbacks","broadcastChannel","BroadcastChannel","onmessage","getBroadcastChannel","closeBroadcastChannel","broadcastFidChange","OBJECT_STORE_NAME","openDB","getDbPromise","oldValue","fidChanged","updateFn","_x11","installations","registrationPromise","installationEntry","oldEntry","updateOrCreateInstallationEntry","entryWithPromise","triggerRegistrationIfNecessary","clearTimedOutRequest","generateFid","inProgressEntry","registrationTime","_x12","registerInstallation","waitUntilFidRegistration","registeredInstallationEntry","createInstallationRequest","isServerError","customData","_x14","updateInstallationRequest","getInstallationEntry","hasInstallationRequestTimedOut","_x15","getGenerateAuthTokenEndpoint","getHeadersWithAuth","installation","_x17","tokenPromise","isEntryRegistered","oldAuthToken","isAuthTokenValid","waitUntilAuthTokenRequest","makeAuthTokenRequestInProgressEntry","fetchAuthTokenFromServer","_x18","updateAuthTokenRequest","refreshAuthToken","requestTime","hasAuthTokenRequestTimedOut","generateAuthTokenRequest","updatedInstallationEntry","TOKEN_EXPIRATION_BUFFER","isAuthTokenExpired","inProgressAuthToken","installationsImpl","completeInstallationRegistration","valueName","INSTALLATIONS_NAME","publicFactory","getMissingValueError","configKeys","keyName","extractAppConfig","_getProvider","getId","_x23","registerInstallations","storageCache","isCachedDataFresh","cacheMaxAgeMillis","lastSuccessfulFetchTimestampMillis","cacheAgeMillis","lastSuccessfulFetchResponse","getLastSuccessfulFetchTimestampMillis","getLastSuccessfulFetchResponse","eTag","storageOperations","setLastSuccessfulFetchTimestampMillis","setLastSuccessfulFetchResponse","navigatorLanguage","languages","firebaseInstallations","installationId","installationToken","FIREBASE_REMOTE_CONFIG_URL_BASE","requestBody","sdk_version","app_instance_id","app_instance_id_token","app_id","language_code","getUserLanguage","timeoutPromise","_resolve","signal","race","errorCode","responseEtag","throttleMetadata","getThrottleMetadata","backoffCount","throttleEndTimeMillis","attemptFetch","backoffMillis","setAbortableTimeout","deleteThrottleMetadata","isRetriableError","calculateBackoffMillis","setThrottleMetadata","_client","_storageCache","_storage","_logger","_isInitializationComplete","fetchTimeoutMillis","minimumFetchIntervalMillis","defaultConfig","fetchTimeMillis","lastFetchStatus","getLastFetchStatus","APP_NAMESPACE_STORE","openDbPromise","toFirebaseError","openDatabase","setLastFetchStatus","getActiveConfig","setActiveConfig","getActiveConfigEtag","setActiveConfigEtag","etag","createCompositeKey","activeConfig","loadFromStorage","lastFetchStatusPromise","lastSuccessfulFetchTimestampMillisPromise","activeConfigPromise","timestampMillis","validateIndexedDBOpenable","Storage","StorageCache","restClient","RestClient","retryingClient","RetryingClient","cachingClient","CachingClient","remoteConfigInstance","RemoteConfig","ensureInitialized","remoteConfig","_initializePromise","registerRemoteConfig","DEFAULT_SW_PATH","DEFAULT_SW_SCOPE","DEFAULT_VAPID_KEY","CONSOLE_CAMPAIGN_ID","CONSOLE_CAMPAIGN_NAME","CONSOLE_CAMPAIGN_TIME","CONSOLE_CAMPAIGN_ANALYTICS_ENABLED","MessageType","PUSH_RECEIVED","NOTIFICATION_CLICKED","uint8Array","base64String","repeat","rawData","outputArray","OLD_DB_NAME","OLD_OBJECT_STORE_NAME","senderId","databases","tokenDetails","_ref","upgradeTransaction","oldDetails","p256dh","fcmToken","subscriptionOptions","swScope","vapidKey","arrayToBase64","deleteDB","checkTokenDetails","_migrateOldDatabase","upgradeDb","firebaseDependencies","oldTokenDetails","migrateOldDatabase","dbSet","getBody","subscribeOptions","responseData","getEndpoint","errorInfo","updateOptions","_x10","unsubscribeOptions","web","applicationPubKey","TOKEN_EXPIRATION_MS","messaging","pushSubscription","getPushSubscription","swRegistration","dbGet","isTokenValid","updateToken","requestDeleteToken","getNewToken","dbRemove","updatedToken","requestUpdateToken","updatedTokenDetails","deleteTokenInternal","requestGetToken","base64ToArray","dbOptions","currentOptions","isP256dhEqual","internalPayload","collapseKey","collapse_key","messageId","fcmMessageId","propagateNotificationPayload","messagePayloadInternal","image","propagateDataPayload","_d","fcmOptions","click_action","analyticsLabel","analytics_label","propagateFcmOptions","s2","resultArray","_mergeStrings","analyticsProvider","deliveryMetricsExportedToBigQueryEnabled","onBackgroundMessageHandler","onMessageHandler","logEvents","isLogServiceStarted","browserErrorMessage","registerDefaultSw","ServiceWorkerRegistration","permission","requestPermission","updateVapidKey","updateSwReg","serviceWorkerRegistration","getTokenInternal","_x28","messageType","eventType","getEventType","logEvent","message_id","message_name","message_time","message_device_time","isFirebaseMessaging","externalizePayload","dataPayload","isConsoleMessage","logToScion","WindowMessagingFactory","MessagingService","messageEventListener","WindowMessagingInternalFactory","_x26","getToken$1","areCookiesEnabled","PushSubscription","registerMessagingInWindow","ANALYTICS_TYPE","GA_FID_KEY","DYNAMIC_CONFIG_URL","GTAG_URL","gtagURL","promises","dataLayerName","trustedTypesPolicy","policyName","policyOptions","trustedTypes","createPolicy","createTrustedTypesPolicy","createScriptURL","createGtagTrustedTypesScriptURL","gtagScriptURL","async","gtagCore","initializationPromisesMap","dynamicConfigPromisesList","measurementIdToAppId","gtagParams","correspondingAppId","foundConfig","promiseAllSettled","initializationPromisesToWaitFor","send_to","gaSendToList","dynamicConfigResults","sendToId","initializationPromise","scriptTags","tag","defaultRetryData","intervalMillis","appFields","appUrl","errorMessage","jsonResponse","_ignored","responseMessage","retryData","timeoutMillis","AnalyticsAbortSignal","attemptFetchDynamicConfigWithRetry","fetchDynamicConfig","defaultEventParametersForInit","defaultConsentSettingsForInit","gtagFunction","eventParams","consentSettings","customParams","dynamicConfigPromise","fetchDynamicConfigWithRetry","fidPromise","validateIndexedDB","envIsValid","dynamicConfig","findGtagScriptOnPage","insertScriptTag","_setConsentDefaultForInit","configProperties","ORIGIN_KEY","_setDefaultEventParametersForInit","gtagCoreFunction","wrappedGtagFunction","globalInitDone","mismatchedEnvMessages","isBrowserExtension","warnOnBrowserContextMismatch","getOrCreateDataLayer","wrappedGtag","gtagFunctionName","_args","command","gtagOnEvent","gtagOnConfig","fieldName","gtagWrapper","wrapGtag","wrapOrCreateGtag","_x39","_initializeAnalytics","AnalyticsService","analyticsOptions","analytics","analyticsInstance","logEvent$1","registerAnalytics","Version","isAnalyticsSupportedValueSymbol","isAnalyticsSupportedPromiseSymbol","isRemoteConfigSupportedValueSymbol","isRemoteConfigSupportedPromiseSymbol","isMessagingSupportedValueSymbol","isMessagingSupportedPromiseSymbol","provided","defaultApp","providedUsingDefaultApp","isSupported","isSupported$1","isSupported$2","apps","getApps","instances","queueScheduler","work","targetZone","runGuarded","unscheduleTask","Zone","scheduleMacroTask","invoke","ɵAngularFireSchedulers","ɵZoneScheduler","ɵAngularFireScheduler","obs$","getSchedulers","BlockUntilFirstOperator","ɵkeepUnstableUntilFirstFactory","stringToByteArray$1","str","byteToCharMap_","charToByteMap_","byteToCharMapWebSafe_","charToByteMapWebSafe_","ENCODED_VALS_BASE","ENCODED_VALS","ENCODED_VALS_WEBSAFE","HAS_NATIVE_SUPPORT","encodeByteArray","webSafe","init_","byteToCharMap","byte1","haveByte2","byte2","haveByte3","byte3","outByte3","outByte4","encodeString","decodeString","c1","c2","byteArrayToString","decodeStringToByteArray","charToByteMap","byte4","haveByte4","DecodeBase64StringError","base64urlEncodeWithoutPadding","utf8Bytes","base64Encode","base64Decode","isValidKey","deepExtend","getDefaults","getGlobal","__FIREBASE_DEFAULTS__","getDefaultsFromEnvVariable","defaultsJsonString","getDefaultsFromCookie","decoded","getDefaultAppConfig","getExperimentalSetting","wrapCallback","iat","iss","aud","exp","auth_time","sign_in_provider","identities","alg","cordova","phonegap","PhoneGap","forceEnvironment","runtime","chrome","browser","isNode","preExist","DB_CHECK_NAME","cookieEnabled","setPrototypeOf","captureStackTrace","serviceName","fullCode","PATTERN","replaceTemplate","aKeys","bKeys","aProp","bProp","isObject","deepEqual","thing","querystringParams","arrayVal","querystring","tokens","queryStart","fragmentStart","executor","onNoObservers","ObserverProxy","unsubscribes","observerCount","finalized","forEachObserver","unsub","unsubscribeOne","finalError","sendOne","backoffFactor","currBaseValue","randomWait","FaConfig","defaultPrefix","fallbackIcon","globalLibrary","ɵɵdefineInjectable","FaIconLibrary","definitions","icons","addIconPacks","getIconDefinition","faClassList","props","classes","spin","pulse","fixedWidth","border","counter","pull","stackItemSize","FaStackItemSizeDirective","Input","FaIconComponent","stackItem","faWarnIfIconSpecMissing","iconToBeRendered","iconDefinition","findIconDefinition","buildParams","renderIcon","render","faNormalizeIconSpec","iconSpec","isIconLookup","globalDefinition","faWarnIfIconDefinitionMissing","classOpts","parsedTransform","attributes","role","a11yRole","renderedIcon","renderedIconHTML","bypassSecurityTrustHtml","hostAttrs","HostBinding","__param","_typeof","writable","ownKeys","getOwnPropertySymbols","sym","_defineProperty","arr","_arrayWithHoles","_arr","return","_iterableToArrayLimit","_nonIterableRest","arr2","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","_WINDOW","_DOCUMENT","MutationObserver","_ref$userAgent","WINDOW","IS_DOM","IS_IE","NAMESPACE_IDENTIFIER","DEFAULT_REPLACEMENT_CLASS","DATA_FA_I2SVG","oneToTen","oneToTwenty","DUOTONE_CLASSES","GROUP","SWAP_OPACITY","PRIMARY","SECONDARY","initial","FontAwesomeConfig","_ref2","_slicedToArray","coerce","getAttrConfig","_config","_objectSpread","familyPrefix","replacementClass","autoReplaceSvg","autoAddCss","autoA11y","searchPseudoElements","observeMutations","mutateApproach","keepOriginalSource","measurePerformance","showMissingIcons","hooks","shims","functions","doScroll","asyncTimer","PENDING","SETTLED","FULFILLED","REJECTED","NOOP","asyncSetTimer","setImmediate","asyncFlush","settled","_state","_data","handleThenable","resolved","fulfill","asyncCall","publishFulfillment","publishRejection","_then","invokeCallback","_handled","resolver","rejectPromise","invokeResolver","onFulfillment","onRejection","notifyRejectionHandled","meaninglessTransform","styleName","iconWidth","outer","containerWidth","innerTranslate","innerScale","innerRotate","ALL_SPACE","abstract","force","_params$icons","main","maskId","titleId","_params$watchable","watchable","isUploadedIcon","widthClass","attrClass","class","uploadedIconWidthStyle","nextUniqueId","explicitMaskId","mainPath","maskPath","trans","transformForSvg","maskRect","maskInnerGroupChildrenMixin","fillBlack","maskInnerGroup","maskOuterGroup","clipId","maskTag","maskUnits","maskContentUnits","defs","deGroup","makeIconMasking","styleString","joinStyles","transformIsMeaningful","makeIconStandard","asSymbol","asIcon","_params$watchable2","_ref2$width","_ref2$height","_ref2$startCentered","startCentered","transformForCss","initialValue","thisContext","bindInternal4","_params$skipHooks","skipHooks","normalized","addPack","defineIcons","build","ligatures","ligature","hasRegular","shim","abstractNodes","_abstractNodes$attrib","_abstractNodes$childr","htmlEscape","attributeName","joinAttributes","toHtml","MissingIcon","FILL","ANIMATION_BASE","attributeType","repeatCount","dur","OPACITY_ANIMATE","vectorData","_cssInserted","css","headChildren","childNodes","beforeChild","tagName","insertCss","drc","fp","dPatt","customPropPatt","rPatt","abstractCreator","iconLookup","_iconLookup$prefix","iconFromMapping","Constructor","_classCallCheck","Library","_createClass","protoProps","staticProps","_defineProperties","_len","additions","_pullDefinitions","_normalized$key","transformString","parts","parseTransformString","maybeIconDefinition","resolveIcons","_params$transform","_params$symbol","_params$mask","_params$maskId","_params$title","_params$titleId","_params$classes","_params$attributes","_params$styles","apiObject","ensureCss","focusable","makeInlineSvgAbstract","asFoundIcon","_params$transform2","_params$title2","_params$classes2","_params$attributes2","_params$styles2","makeLayersTextAbstract","_toConsumableArray","_params$title3","_params$classes3","_params$attributes3","_params$styles3","makeLayersCounterAbstract","autoReplaceSvgRoot","faYinYang","HOOKS","_disable","allowInput","allowInvalidPreload","altFormat","altInput","altInputClass","ariaDateFormat","autoFillDefaultTime","clickOpens","closeOnSelect","conjunction","dateFormat","defaultMinute","defaultSeconds","disableMobile","enableSeconds","enableTime","getWeek","givenDate","week1","hourIncrement","ignoredFocusElements","minuteIncrement","monthSelectorType","nextArrow","noCalendar","onChange","onClose","onDayCreate","onDestroy","onKeyDown","onMonthChange","onOpen","onParseConfig","onReady","onValueUpdate","onYearChange","onPreCalendarPosition","plugins","positionElement","prevArrow","shorthandCurrentMonth","showMonths","time_24hr","weekNumbers","english","weekdays","shorthand","longhand","daysInMonth","firstDayOfWeek","nth","rangeSeparator","weekAbbreviation","scrollTitle","toggleTitle","amPM","yearAriaLabel","monthAriaLabel","hourAriaLabel","minuteAriaLabel","int","arrayify","elem","className","condition","findParent","inputClassName","numInput","arrowUp","arrowDown","composedPath","doNothing","monthToStr","monthNumber","revFormat","dateObj","monthName","shortMonth","setSeconds","unixSeconds","weekNum","weekNumber","ISODate","minutes","setMinutes","unixMillSeconds","tokenRegex","createDateFormatter","l10n","frmt","overrideLocale","formatDate","createDateParser","givenFormat","timeless","customLocale","parsedDate","dateOrig","datestr","parseDate","matched","ops","matchIndex","regexStr","isBackSlash","date1","date2","calculateSecondsSinceMidnight","hours","minHour","minMinutes","minSeconds","maxDate","maxHr","maxMinutes","__assign","__spreadArrays","instanceConfig","defaultOptions","flatpickr","English","calendarContainer","getRootNode","activeElement","visibility","display","daysContainer","daysWidth","weekWrapper","selectedDates","defaultDate","compareDates","getDefaultHours","latestSelectedDateObj","isKeyDown","eventTarget","getEventTarget","curValue","which","isHourElem","hourElement","isMinuteElem","minuteElement","incrementNumInput","timeWrapper","prevValue","_input","setHoursFromInputs","updateValue","_debouncedChange","secondElement","ampm2military","limitMinHours","minTime","minDateHasTime","limitMaxHours","maxTime","maxDateHasTime","minBound","maxBound","currentTime","secondsSinceMidnight","changeYear","handler","_handlers","triggerEvent","jumpDate","triggerChange","jumpTo","oldYear","currentYear","oldMonth","currentMonth","buildMonthSwitch","inputElem","_dayNumber","dateIsEnabled","dayElement","todayDateElem","tabIndex","isDateSelected","selectedDateElem","toggleClass","isDateInRange","insertAdjacentHTML","targetNode","onMouseOver","endMonth","endIndex","getClosestActiveElement","dayFocused","isInView","startElem","getFirstAvailableDay","givenMonth","loopDelta","numMonthDays","focusOnDayElem","changeMonth","focusOnDay","getNextAvailableDay","firstOfMonth","prevMonthDays","utils","getDaysInMonth","createDocumentFragment","isMultiMonth","prevMonthDayClass","nextMonthDayClass","dayNumber","dayIndex","createDay","dayNum","dayContainer","clearNode","frag","buildMonthDays","monthsDropdownContainer","monthElement","monthNavFragment","selectedMonth","yearInput","createNumberInput","tabindex","yearElement","monthNav","prevMonthNav","yearElements","monthElements","buildMonth","nextMonthNav","weekdayContainer","updateWeekdays","isOffset","_hidePrevMonthArrow","_hideNextMonthArrow","buildDays","updateNavigationCurrentMonth","isOpen","eventTarget_1","isCalendarElement","isCalendarElem","lostFocus","isIgnored","timeContainer","newYear","isNewYear","dateToCheck","enable","parsed","isInput","trimEnd","getDateStr","allowKeydown","allowInlineKeydown","blur","isTimeObj","focusAndClose","selectDate","delta_1","currentYearElement","elems","pluginElements","cellClass","hoverDate","initialDate","rangeStartDate","rangeEndDate","containsDisabled","minRange","maxRange","rContainer","dayElem","outOfRange","ts1","ts2","isBetween","positionCalendar","inverseDateObj","setHoursFromDate","l10ns","dataset","customPositionElement","_positionElement","calendarHeight","calendarWidth","configPos","configPosVertical","configPosHorizontal","inputBounds","distanceFromBottom","showOnTop","pageYOffset","pageXOffset","isCenter","isRight","rightMost","centerMost","editableSheet","styleSheets","sheet","cssRules","createStyleSheet","getDocumentStyleSheet","bodyWidth","centerLeft","centerIndex","centerStyle","insertRule","centerBefore","msMaxTouchPoints","selectedDate","shouldChangeMonth","loadedPlugins","_bind","_setHoursFromDate","_positionCalendar","triggerChangeEvent","toInitial","mobileInput","_initialDate","_createElement","lastChild","_type","jumpToDate","click","wasOpen","CALLBACKS","setSelectedDate","setupLocale","buildMonths","setCalendarWidth","buildWeekdays","updatePositionElement","inputDate","dates","rule","specificFormat","dObj","mobileFormatStr","isPrevMonth","isNextMonth","boolOpts","userConfig","_enable","parseDateRules","timeMode","_minDate","minMaxDateSetter","_maxDate","minMaxTimeSetter","_minTime","_maxTime","hook","bindToInstance","pluginConf","getInputElem","parseConfig","placeholder","required","setupInputs","preloadedDate","setupDates","setupHelperFunctions","fragment","__hidePrevMonthArrow","__hideNextMonthArrow","buildMonthNav","innerContainer","buildWeeks","separator","hourInput","minuteInput","military2ampm","secondInput","buildTime","customAppend","appendTo","nodeType","inputType","defaultValue","setupMobile","debouncedResize","debounce","onResize","ontouchstart","documentClick","onMonthNavClick","onYearInput","timeIncrement","bindEvents","nodeList","HTMLElement","FlatpickrInstance","HTMLCollection","NodeList","localize","setDefaults","jQuery","fp_incr","FlatpickrDefaults","time24hr","utc","convertModelValue","FLATPICKR_CONTROL_VALUE_ACCESSOR","NG_VALUE_ACCESSOR","useExisting","forwardRef","FlatpickrDirective","elm","flatpickrReady","flatpickrChange","flatpickrValueUpdate","flatpickrOpen","flatpickrClose","flatpickrMonthChange","flatpickrYearChange","flatpickrDayCreate","isDisabled","onChangeFn","onTouchedFn","setDisabledState","inputKey","writeValue","convertedValue","registerOnChange","registerOnTouched","inputChanged","exportAs","USER_DEFAULTS","userDefaults","defaultsFactory","exports","isMergeableObject","isNonNullObject","$$typeof","REACT_ELEMENT_TYPE","isReactElement","isSpecial","for","deepmerge","emptyTarget","cloneUnlessOtherwiseSpecified","propertyIsEnumerable","getEnumerableOwnPropertySymbols","destination","getKeys","customMerge","getMergeFunction","arrayMerge","defaultArrayMerge","sourceIsArray","mergeObject","prev","deepmerge_1","_loop_1","args_1","French","InlineSVGConfig","__metadata","Reflect","paramIndex","decorator","SVGCacheService","_appBase","_location","httpBackend","rendererFactory","_http","_renderer","createRenderer","setBaseUrl","SVGCacheService_1","_cache","_inProgressReqs","getSVG","resolveSVGUrl","svgUrl","getAbsoluteUrl","_cloneSVG","share","svgText","svgEl","_svgElementFromString","_baseUrl","getBaseHrefFromDOM","base","div","ngInjectableDef","decorators","decorate","Inject","APP_BASE_HREF","PlatformLocation","HttpBackend","RendererFactory2","ɵngcc3","InlineSVGService","_ranScripts","insertEl","parentEl","replaceContents","prepend","_prevSVG","evalScripts","evalMode","scripts","scriptsToEval","scriptType","innerText","InlineSVGComponent","_inlineSVGService","_el","_updateContent","InlineSVGDirective","ElementRef","innerEls","removeAttributes","_viewContainerRef","_resolver","_svgCache","cacheSVG","forceEvalStyles","onSVGInserted","onSVGFailed","_supportsSVG","SVGRect","SvgUtil","_fail","_isValidPlatform","_isSSRDisabled","_insertSVG","inlineSVG","_subscription","_prevUrl","symbolId","elSvg","elSvgUse","_processSvg","removeSVGAttributes","setSVGAttributes","onSVGLoaded","_insertEl","styleTags","_svgComp","resolveComponentFactory","createComponent","msg","fallbackImgUrl","elImg","clientOnly","Output","ViewContainerRef","ComponentFactoryResolver","Renderer2","InlineSVGModule_1","forRoot","StarRatingComponent_1","StarRatingComponent","stars","_readOnly","_totalStars","rate","onStarsCountChange","setStars","generateRating","applySizeAllStars","applyColorStyleAllStars","addEvents","onValueChange","onCheckedColorChange","onUnCheckedColorChange","onSizeChange","onReadOnlyChange","readonly","makeReadOnly","makeEditable","checkedcolor","_checkedColor","uncheckedcolor","_unCheckedColor","_size","totalstars","mainElement","star","offStar","onRate","onStar","starRating","rateValues","addDefaultClass","addCheckedStarClass","CLS_DEFAULT_STAR","CLS_CHECKED_STAR","addHalfStarClass","CLS_HALF_STAR","starContainer","maxStars","starNumber","starElement","newSize","halfSize","halfMargin","VAR_SIZE","VAR_HALF_WIDTH","VAR_HALF_MARGIN","setChecked","applyCheckedColorStyle","applyUnCheckedColorStyle","applyColorStyle","VAR_CHECKED_COLOR","VAR_UNCHECKED_COLOR","forceGenerate","hasDecimals","INP_CHECKED_COLOR","INP_UNCHECKED_COLOR","INP_VALUE","INP_SIZE","INP_READONLY","INP_TOTALSTARS","ViewChild","ngDoBootstrap","fileOrInput","rawFile","fakePathOrObject","_createFromFakePath","lastModifiedDate","lastIndexOf","_createFromObject","formData","isReady","isUploading","isUploaded","isSuccess","isCancel","isError","FileLikeObject","_file","alias","itemAlias","upload","uploadItem","_onCompleteItem","_onErrorItem","cancelItem","removeFromQueue","onBeforeUpload","onBuildForm","onSuccess","onCancel","onComplete","_onBeforeUpload","_onBuildForm","_onProgress","_onSuccess","_onError","_onCancel","_onComplete","_prepareToUploading","_nextIndex","FileType","mimeClass","mime_psd","mime_compress","mime_doc","mime_xsl","mime_ppt","fileTypeDetection","inputFilename","jpg","jpeg","tif","psd","bmp","png","nef","tiff","cr2","dwg","cdr","indd","pin","cdp","skp","stp","mp3","wav","wma","m4a","compress","rar","lz","z01","bz2","gz","pdf","xls","xlsx","ods","mp4","avi","wmv","mpg","mts","flv","vob","m4v","mpeg","m2ts","mov","docx","eps","odt","rtf","ppt","pptx","pps","ppsx","odp","chunks","extension","queue","isHTML5","disableMultipart","formatDataFunction","formatDataFunctionIsAsync","setOptions","authTokenHeader","_queueLimitFilter","maxFileSize","_fileSizeFilter","allowedFileType","_fileTypeFilter","allowedMimeType","_mimeTypeFilter","addToQueue","files","arrayOfFilters","_getFilters","addedFileItems","temp","_isValidFile","fileItem","FileItem","_onAfterAddingFile","_onWhenAddingFileFailed","_failFilterIndex","_onAfterAddingAll","_getTotalProgress","_render","uploadAll","getIndexOfItem","clearQueue","transport","_xhr","_form","getNotUploadedItems","cancelAll","isFile","File","isFileLikeObject","getReadyItems","item1","item2","onAfterAddingAll","fileItems","onAfterAddingFile","onWhenAddingFileFailed","onBeforeUploadItem","onProgressItem","onProgressAll","onErrorItem","onCancelItem","onCompleteItem","onCompleteAll","getMimeClass","nextItem","_headersGetter","parsedHeaders","_xhrTransport","sendable","xhr","_onBeforeUploadItem","_onBuildItemForm","appendFile","parametersBeforeFiles","additionalParameter","paramVal","onprogress","lengthComputable","loaded","_onProgressItem","_parseHeaders","_transformResponse","_isSuccessCode","_onCancelItem","header","DONE","notUploaded","queueLimit","_onSuccessItem","FileSelectDirective","onFileSelected","getOptions","isEmptyAfterSelection","multiple","Ng2TelInput","ng2TelInputOptions","hasError","ng2TelOutput","countryChange","intlTelInputObject","utilsScript","getUtilsScript","ngTelInput","intlTelInput","getSelectedCountryData","isInputValid","telOutput","getNumber","isValidNumber","setCountry","defaultUtilScript","require","INIT_ACTION","detectDate","dummyReviver","storageKeySerializer","restoreDates","curr","deserialize","decrypt","reviver","dateReviver","encrypt","stateSlice","isObjectRegex","raw","removeOnUndefined","syncCondition","replacer","name_1","serialize","memo","rehydratedState","destinationArray","sourceArray","checkStorageAvailability","mergeReducer","defaultMergeReducer","stateKeys","validateStateKeys","rehydrateApplicationState","nextState","syncStateUpdate","NEW_CONFIG","INITIAL_CONFIG","initialConfig","thousandSeparator","decimalMarker","clearIfNotMatch","showTemplate","showMaskTyped","placeHolderCharacter","dropSpecialCharacters","hiddenInput","shownMaskExpression","separatorLimit","allowNegativeNumbers","validation","specialCharacters","patterns","timeMasks","withoutValidation","MaskApplierService","maskExpression","actualValue","_formatWithSeparators","thousandSeparatorChar","decimalChar","decimals","rgx","percentage","getPrecision","checkInputPrecision","inputValue","precisionRegEx","_charToRegExpExpression","precisionMatch","endsWith","_shift","maskSpecialCharacters","maskAvailablePatterns","applyMaskWithPattern","maskAndPattern","customPattern","applyMask","backspaceShift","stepBack","inputArray","ipError","cpfCnpjError","_stripToDecimal","thousandSeperatorCharEscaped","decimalMarkerEscaped","invalidChars","invalidCharRegexp","strForSep","commaShift","shiftStep","inputSymbol","_checkSymbolMask","daysCount","withoutDays","monthsCount","day1monthInput","day2monthInput","day1monthPaste","day2monthPaste","_findSpecialChar","newPosition","actualShift","maskSymbol","char","charsToEscape","MaskService","_elementRef","isNumberValue","maskIsShown","selStart","selEnd","writingValue","_formElement","showMaskInInput","formControlResult","getSymbol","newInputValue","actualResult","shiftTypedSymbols","getActualValue","hideInput","prefNmask","resLen","applyValueChanges","clearIfNotMatchFn","symbolToReplace","currSymbol","replaceSymbol","inputVal","_checkForIp","_checkForCpfCnpj","formElementProperty","checkSpecialCharAmount","chars","removeMask","_removeMask","_removeSuffix","_removePrefix","cpf","cnpj","_checkSymbols","specialCharactersForRemove","_regExpForRemove","_retrieveSeparatorValue","separatorPrecision","_retrieveSeparatorPrecision","separatorValue","_checkPrecision","maskExpretion","separatorExpression","MaskDirective_1","MaskDirective","_maskService","_maskValue","_position","_maskExpressionArray","onTouch","currentValue","_applyMask","validate","_createValidationError","_validateTime","counterOfOpt","opt","onInput","_inputValue","_setMask","selectionStart","caretShift","_backspaceShift","positionToApply","_code","_getActualInputLength","setSelectionRange","selectionEnd","nextValue","suffixCheckOnPressDelete","cursorStart","readOnly","onModelChange","_repeatPatternSymbols","maskExp","accum","currval","_start","_end","repaceWith","rowMaskLen","requiredMask","NgxMaskModule_1","NG_VALIDATORS","ctorParameters","HostListener","configValue","_configFactory","initConfig","getValue","_subscribe","thrownError","_throwIfClosed","observerOrNext","Subscriber","isObserver","isSubscription","isSubscriber","SafeSubscriber","errorContext","_trySubscribe","sink","promiseCtor","getPromiseCtor","Symbol_observable","operations","fns","pipeFromArray","_bufferSize","_windowTime","_timestampProvider","dateTimestampProvider","_buffer","_infiniteTimeWindow","isStopped","_trimBuffer","_innerSubscribe","_checkFinalizedStatuses","adjustedBufferSize","ObjectUnsubscribedError","createErrorClass","_super","currentObservers","AnonymousSubject","observed","EMPTY_SUBSCRIPTION","Subscription","arrRemove","COMPLETE_NOTIFICATION","createNotification","EMPTY_OBSERVER","handleStoppedNotification","nextNotification","errorNotification","_error","_complete","partialObserver","handleUnhandledError","ConsumerObserver","captureError","reportUnhandledError","onStoppedNotification","timeoutProvider","UnsubscriptionError","initialTeardown","_parentage","_finalizers","initialFinalizer","finalizer","execFinalizer","teardown","_hasParent","_addParent","_removeParent","onUnhandledError","useDeprecatedSynchronousErrorHandling","useDeprecatedNextContext","hasConfig","EmptyError","_subject","_refCount","_connection","hasLift","getSubject","_teardown","higherOrderRefCount","popScheduler","popResultSelector","observables","argsArgArrayOrObject","valueTransform","maybeSchedule","remainingFirstValues","hasFirstValue","combineLatestInit","createObject","mapOneOrManyArgs","executeSchedule","mergeAll","concatAll","observableFactory","remainingCompletions","remainingEmissions","sourceIndex","asyncIterator","isInteropObservable","scheduleObservable","isArrayLike","scheduleArray","isPromise","schedulePromise","isAsyncIterable","scheduleAsyncIterable","isIterable","Symbol_iterator","scheduleIterable","isReadableStreamLike","readableStreamLikeToAsyncGenerator","scheduleReadableStreamLike","createInvalidObservableTypeError","scheduled","nodeEventEmitterMethods","eventTargetMethods","jqueryMethods","isEventTarget","isNodeStyleEventEmitter","toCommonHandlerRegistry","isJQueryStyleEventEmitter","subTarget","obs","fromInteropObservable","fromArrayLike","fromPromise","fromAsyncIterable","iterable","fromIterable","readableStream","fromReadableStreamLike","asyncIterable","asyncIterable_1","asyncIterable_1_1","e_1","__asyncValues","e_1_1","concurrent","popNumber","errorOrErrorFactory","errorFactory","dueTime","intervalOrScheduler","intervalDuration","isScheduler","due","isValidDate","onNext","onFinalize","shouldUnsubscribe","durationSelector","lastValue","endDuration","cleanupDuration","audit","handledResult","syncUnsub","activeTask","lastTime","targetTime","emitWhenIdle","delayDurationSelector","subscriptionDelay","delayWhen","defaultCompare","previousKey","currentKey","predicate","hasDefaultValue","defaultIfEmpty","throwIfEmpty","onBeforeNext","expand","innerSubScheduler","additionalFinalizer","checkComplete","outerNext","doInnerSub","innerComplete","innerValue","bufferedValue","mergeInternals","hasPrev","refCounter","sharedConnection","conn","accumulator","hasSeed","emitOnNext","emitBeforeComplete","hasState","scanInternals","resetOnError","resetOnComplete","resetOnRefCountZero","wrapperSource","resetConnection","hasCompleted","hasErrored","cancelReset","resetAndUnsubscribe","dest","handleReset","onSubscriber","configOrBufferSize","windowTime","innerSubscriber","innerIndex","outerIndex","seen","tapObserver","isUnsub","defaultErrorFactory","TimeoutError","schedulerArg","with","_with","timeoutErrorFactory","meta","originalSourceSubscription","timerSubscription","startTimer","otherValues","ready","intervalProvider","Action","recycleAsyncId","requestAsyncId","flush","_scheduler","_execute","_delay","errorValue","errored","schedulerActionCtor","Scheduler","SchedulerAction","_active","nextHandle","activeHandles","Immediate","findAndClearHandle","clearImmediate","immediateProvider","asapScheduler","AsyncScheduler","flushId","_scheduled","AsyncAction","getSymbolIterator","objectProto","isPOJO","createImpl","ctorFunc","isRoot","errorThrown","parentSubscription","scheduleSubscription","__asyncGenerator","reader","__await","liftedSource","callOrApply","AUTO_STYLE","timings","steps","stateChangeExpr","expr","_onDoneFns","_onStartFns","_onDestroyFns","_started","_destroyed","_finished","parentPlayer","totalTime","_onFinish","onStart","onDone","hasStarted","play","_onStart","triggerMicrotask","scheduleMicroTask","pause","finish","setPosition","getPosition","triggerCallback","phaseName","_players","players","doneCount","destroyCount","startCount","player","_onDestroy","timeAtPosition","longestPlayer","longestSoFar","newPlayerIsLongest","beforeDestroy","ɵPRE_STYLE","CDK_DESCRIBEDBY_ID_PREFIX","CDK_DESCRIBEDBY_HOST_ATTRIBUTE","nextId","AriaDescriber","_platform","_messageRegistry","_messagesContainer","describe","hostElement","_canBeDescribed","setMessageId","messageElement","referenceCount","_createMessageElement","_isElementDescribedByMessage","_addMessageReference","removeDescription","_isElementNode","_removeMessageReference","registeredMessage","_deleteMessageElement","describedElements","_removeCdkDescribedByReferenceIds","_createMessagesContainer","containerClassName","serverContainers","messagesContainer","isBrowser","originalReferenceIds","getAriaReferenceIds","existingId","ID_DELIMITER","addAriaReferencedId","filteredIds","removeAriaReferencedId","referenceIds","trimmedMessage","ariaLabel","ELEMENT_NODE","_items","_activeItemIndex","_activeItem","_wrap","_letterKeyStream","_typeaheadSubscription","_vertical","_allowedModifierKeys","_homeAndEnd","_skipPredicateFn","_pressedLetters","tabOut","QueryList","newItems","itemArray","skipPredicate","withWrap","shouldWrap","withVerticalOrientation","withHorizontalOrientation","_horizontal","withAllowedModifierKeys","withTypeAhead","debounceInterval","letter","inputString","_getItemsArray","getLabel","setActiveItem","withHomeAndEnd","previousActiveItem","updateActiveItem","onKeydown","isModifierAllowed","modifiers","modifier","TAB","DOWN_ARROW","setNextItemActive","UP_ARROW","setPreviousItemActive","RIGHT_ARROW","LEFT_ARROW","HOME","setFirstItemActive","END","setLastItemActive","hasModifierKey","toLocaleUpperCase","ZERO","NINE","activeItemIndex","activeItem","isTyping","_setActiveItemByIndex","_setActiveItemByDelta","_setActiveInWrapMode","_setActiveInDefaultMode","fallbackDelta","ListKeyManager","setInactiveStyles","setActiveStyles","_origin","setFocusOrigin","origin","InteractivityChecker","getClientRects","hasGeometry","isTabbable","frameElement","getFrameElement","getWindow","getTabIndexValue","tabIndexValue","WEBKIT","IOS","isPotentiallyTabbableIOS","FIREFOX","isFocusable","isInputElement","isHiddenInput","isNativeFormElement","isAnchorElement","isAnchorWithHref","hasValidTabIndex","isPotentiallyFocusable","ignoreVisibility","_element","_checker","_ngZone","deferAnchors","_hasAttached","startAnchorListener","focusLastTabbableElement","endAnchorListener","focusFirstTabbableElement","_enabled","attachAnchors","_startAnchor","_endAnchor","_toggleAnchorTabIndex","startAnchor","endAnchor","_createAnchor","focusInitialElementWhenReady","_executeOnStable","focusInitialElement","focusFirstTabbableElementWhenReady","focusLastTabbableElementWhenReady","_getRegionBoundary","markers","_getFirstTabbableElement","_getLastTabbableElement","redirectToElement","focusableChild","hasAttached","tabbableChild","anchor","toggleAnchors","onStable","FocusTrapFactory","deferCaptureElements","FocusTrap","CdkTrapFocus","_focusTrapFactory","_previouslyFocusedElement","focusTrap","coerceBooleanProperty","autoCapture","_autoCapture","_captureFocus","ngDoCheck","autoCaptureChange","firstChange","_getFocusedElementPierceShadowDom","buttons","offsetX","touch","radiusX","radiusY","INPUT_MODALITY_DETECTOR_OPTIONS","INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS","ignoreKeys","ALT","CONTROL","MAC_META","META","SHIFT","modalityEventListenerOptions","normalizePassiveListenerOptions","passive","InputModalityDetector","_mostRecentTarget","_modality","_lastTouchMs","_onKeydown","_options","_getEventTarget","_onMousedown","isFakeMousedownFromScreenReader","_onTouchstart","isFakeTouchstartFromScreenReader","modalityDetected","skip","modalityChanged","mostRecentModality","LIVE_ANNOUNCER_ELEMENT_TOKEN","LIVE_ANNOUNCER_DEFAULT_OPTIONS","LiveAnnouncer","elementToken","_defaultOptions","_liveElement","_createLiveElement","announce","politeness","_previousTimeout","_currentPromise","_currentResolve","elementClass","previousElements","getElementsByClassName","liveEl","FOCUS_MONITOR_DEFAULT_OPTIONS","captureEventListenerOptions","FocusMonitor","_inputModalityDetector","_windowFocused","_originFromTouchInteraction","_elementInfo","_monitoredElementCount","_rootNodeFocusListenerCount","_windowFocusListener","_windowFocusTimeoutId","_stopInputModalityDetector","_rootNodeFocusAndBlurListener","_onFocus","_onBlur","_detectionMode","detectionMode","monitor","checkChildren","coerceElement","rootNode","_getShadowRoot","_getDocument","cachedInfo","_registerGlobalListeners","stopMonitoring","elementInfo","_setClasses","_removeGlobalListeners","focusVia","_getClosestElementsInfo","_originChanged","_setOrigin","_info","_getWindow","_getFocusOrigin","focusEventTarget","_shouldBeAttributedToTouch","_lastFocusOrigin","isFromInteraction","_originTimeoutId","_emitOrigin","rootNodeFocusListeners","modality","CdkMonitorFocus","_focusMonitor","cdkFocusChange","_monitorSubscription","BLACK_ON_WHITE_CSS_CLASS","WHITE_ON_BLACK_CSS_CLASS","HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS","HighContrastModeDetector","getHighContrastMode","testElement","backgroundColor","documentWindow","computedStyle","computedColor","_applyBodyHighContrastModeCssClasses","_hasCheckedHighContrastMode","bodyClasses","highContrastModeDetector","DIR_DOCUMENT","inject","RTL_LOCALE_PATTERN","Directionality","htmlDir","rawValue","_resolveDirectionality","BidiModule","fallbackValue","_isNumberValue","elementOrRef","sourceValues","sourceValue","trimmedString","itemContextFactory","itemValueResolver","itemViewChanged","forEachOperation","record","adjustedPreviousIndex","previousIndex","insertContext","createEmbeddedView","templateRef","detach","viewCacheSize","_viewCache","_insertView","viewArgsFactory","_detachAndCacheView","_moveView","cachedView","_insertViewFromCache","viewArgs","detachedView","_maybeCacheView","_multiple","initiallySelectedValues","_emitChanges","_selection","_deselectedToEmit","_selectedToEmit","changed","_markSelected","_selected","_verifyValueAssignment","_emitChangeEvent","deselect","_unmarkSelected","_unmarkAll","isMultipleSelection","added","removed","UniqueSelectionDispatcher","_listeners","registered","_VIEW_REPEATER_STRATEGY","ENTER","ESCAPE","SPACE","PAGE_UP","PAGE_DOWN","mediaQueriesForWebkitCompatibility","mediaQueryStyleNode","MediaMatcher","_matchMedia","matchMedia","noopMatchMedia","BLINK","createEmptyStyleRule","BreakpointObserver","_mediaMatcher","_zone","_queries","_destroySubject","isMatched","coerceArray","mediaQuery","_registerQuery","mql","stateObservable","breakpointStates","breakpoints","a2","Breakpoints","XSmall","Small","Medium","Large","XLarge","Handset","Tablet","Web","HandsetPortrait","TabletPortrait","WebPortrait","HandsetLandscape","TabletLandscape","WebLandscape","MutationObserverFactory","ContentObserver","_mutationObserverFactory","_observedElements","_cleanupObserver","_observeElement","_unobserveElement","characterData","childList","subtree","disconnect","CdkObserveContent","_contentObserver","_disabled","_currentSubscription","_unsubscribe","_debounce","coerceNumberProperty","scrollBehaviorSupported","supportsScrollBehavior","_viewportRuler","_previousHTMLStyles","_isEnabled","_canBeEnabled","_previousScrollPosition","getViewportScrollPosition","coerceCssPixelValue","htmlStyle","bodyStyle","previousHtmlScrollBehavior","scrollBehavior","previousBodyScrollBehavior","scroll","viewport","getViewportSize","scrollHeight","scrollWidth","_scrollDispatcher","_scrollSubscription","_detach","_overlayRef","overlayRef","scrolled","_initialScrollPosition","scrollPosition","updatePosition","scrollContainers","containerBounds","outsideRight","scrollContainerRect","clippedRight","scrollThrottle","autoClose","overlayRect","overlayElement","isElementScrolledOutsideView","ScrollStrategyOptions","NoopScrollStrategy","CloseScrollStrategy","BlockScrollStrategy","reposition","RepositionScrollStrategy","scrollStrategy","hasBackdrop","backdropClass","disposeOnNavigation","connectionPair","scrollableViewProperties","_portalOutlet","_host","_pane","_keyboardDispatcher","_outsideClickDispatcher","_backdropElement","_backdropClick","_attachments","_detachments","_locationChanges","_backdropClickHandler","_backdropTransitionendHandler","_disposeBackdrop","_keydownEvents","_outsidePointerEvents","_scrollStrategy","_positionStrategy","positionStrategy","backdropElement","_previousHostParent","attachResult","_updateStackingOrder","_updateElementSize","_updateElementDirection","_togglePointerEvents","_attachBackdrop","_toggleClasses","dispose","detachBackdrop","detachmentResult","_detachContentWhenStable","isAttached","_disposeScrollStrategy","backdropClick","attachments","detachments","keydownEvents","outsidePointerEvents","getConfig","updatePositionStrategy","updateSize","sizeConfig","setDirection","addPanelClass","removePanelClass","getDirection","updateScrollStrategy","minWidth","minHeight","maxWidth","maxHeight","enablePointer","showingClass","backdropToDetach","_backdropTimeout","isAdd","backdrop","OverlayContainer","_containerElement","getContainerElement","_createContainer","containerClass","_isTestEnvironment","oppositePlatformContainers","i1$1","boundingBoxClass","cssUnitPattern","connectedTo","_overlayContainer","_lastBoundingBoxSize","_isPushed","_canPush","_growAfterOpen","_hasFlexibleDimensions","_positionLocked","_viewportMargin","_scrollables","_preferredPositions","_positionChanges","_resizeSubscription","_offsetX","_offsetY","_appliedPanelClasses","positionChanges","setOrigin","positions","_validatePositions","_boundingBox","_isDisposed","_isInitialRender","_lastPosition","reapplyLastPosition","_clearPanelClasses","_resetOverlayElementStyles","_resetBoundingBoxStyles","_viewportRect","_getNarrowedViewportRect","_originRect","_getOriginRect","_overlayRect","_containerRect","originRect","viewportRect","containerRect","flexibleFits","fallback","originPoint","_getOriginPoint","overlayPoint","_getOverlayPoint","overlayFit","_getOverlayFit","isCompletelyWithinViewport","_applyPosition","_canFitWithFlexibleDimensions","boundingBoxRect","_calculateBoundingBoxRect","visibleArea","bestFit","bestScore","fit","score","weight","_previousPushAmount","extendStyles","alignItems","justifyContent","lastPosition","withScrollableContainers","scrollables","withPositions","withViewportMargin","withFlexibleDimensions","flexibleDimensions","withGrowAfterOpen","growAfterOpen","withPush","canPush","withLockedPosition","isLocked","withDefaultOffsetX","withDefaultOffsetY","withTransformOriginOn","_transformOriginSelector","originX","startX","_isRtl","endX","originY","overlayStartX","overlayStartY","overlayX","overlayY","rawOverlayRect","getRoundedBoundingClientRect","_getOffset","topOverflow","bottomOverflow","visibleWidth","_subtractOverflows","visibleHeight","fitsInViewportVertically","fitsInViewportHorizontally","availableHeight","availableWidth","getPixelValue","horizontalFit","_pushOverlayOnScreen","overflowRight","overflowBottom","overflowTop","overflowLeft","pushX","pushY","_setTransformOrigin","_setOverlayElementStyles","_setBoundingBoxStyles","_addPanelClasses","_getScrollVisibility","changeEvent","ConnectedOverlayPositionChange","xOrigin","yOrigin","transformOrigin","isRtl","smallestDistanceToViewportEdge","previousHeight","previousWidth","_hasExactPosition","hasExactPosition","hasFlexibleDimensions","_getExactOverlayY","_getExactOverlayX","clientHeight","horizontalStyleProperty","clientWidth","originBounds","overlayBounds","scrollContainerBounds","scrollable","getElementRef","isOriginClipped","isElementClippedByScrolling","isOriginOutsideView","isOverlayClipped","isOverlayOutsideView","overflows","currentOverflow","axis","Element","units","clientRect","wrapperClass","_cssPosition","_topOffset","_bottomOffset","_leftOffset","_rightOffset","_alignItems","_justifyContent","_width","_height","centerHorizontally","centerVertically","parentStyles","shouldBeFlushHorizontally","shouldBeFlushVertically","marginLeft","marginTop","marginBottom","marginRight","OverlayPositionBuilder","GlobalPositionStrategy","flexibleConnectedTo","FlexibleConnectedPositionStrategy","BaseOverlayDispatcher","_attachedOverlays","OverlayKeyboardDispatcher","_keydownListener","_isAttached","OverlayOutsideClickDispatcher","_cursorStyleIsSet","_pointerDownListener","_pointerDownEventTarget","_clickListener","_addEventListeners","_cursorOriginalValue","Overlay","scrollStrategies","_componentFactoryResolver","_positionBuilder","_injector","_directionality","_createHostElement","pane","_createPaneElement","portalOutlet","_createPortalOutlet","overlayConfig","OverlayConfig","OverlayRef","_appRef","DomPortalOutlet","i5","i6","defaultPositionList","CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY","CdkOverlayOrigin","elementRef","CdkConnectedOverlay","_overlay","scrollStrategyFactory","_dir","_hasBackdrop","_lockPosition","_flexibleDimensions","_push","_backdropSubscription","_attachSubscription","_detachSubscription","_positionSubscription","viewportMargin","positionChange","overlayKeydown","overlayOutsideClick","_templatePortal","TemplatePortal","_scrollStrategyFactory","_updatePositionStrategy","lockPosition","_attachOverlay","_detachOverlay","_createOverlay","_buildConfig","_createPositionStrategy","currentPosition","_getFlexibleConnectedPositionStrategyOrigin","transformOriginSelector","takeWhile","CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER","OverlayModule","ScrollingModule","hasV8BreakIterator","Intl","v8BreakIterator","supportedInputTypes","Platform","_platformId","EDGE","TRIDENT","CSS","ANDROID","SAFARI","candidateInputTypes","featureTestInput","supportsPassiveEvents","shadowDomIsSupported","supportsPassiveEventListeners","scrollToFunction","createShadowRoot","attachShadow","_supportsShadowDom","ShadowRoot","shadowRoot","newActiveElement","__karma__","jasmine","jest","Mocha","_attachedHost","setAttachedHost","Portal","attachDomPortal","_attachedPortal","attachComponentPortal","attachTemplatePortal","DomPortal","_invokeDisposeFn","setDisposeFn","_disposeFn","BasePortalOutlet","outletElement","_defaultInjector","anchorNode","createComment","replaceChild","componentFactory","attachView","viewCount","detachView","_getComponentRootNode","viewContainer","viewRef","CdkPortalOutlet","_isInitialized","attached","_getRootNode","attachedRef","_attachedRef","notFoundValue","animationFrameProvider","cancelAnimationFrame","ScrollDispatcher","_scrolled","_globalSubscription","_scrolledCount","elementScrolled","deregister","scrollableReference","auditTimeInMs","_addGlobalListener","auditTime","_removeGlobalListener","ancestorScrolled","elementOrElementRef","getAncestorScrollContainers","scrollingContainers","_scrollableContainsElement","scrollableElement","ViewportRuler","_change","_changeListener","_viewportSize","_updateViewportSize","getViewportRect","documentRect","scrollTop","scrollY","scrollLeft","scrollX","throttleTime","CdkScrollableModule","listenerOptions","AutofillMonitor","_monitoredElements","animationName","isAutofilled","CdkTextareaAutosize","_previousMinRows","_isViewInited","_handleFocusEvent","_hasFocus","_textareaElement","minRows","_minRows","_setMinHeight","maxRows","_maxRows","_setMaxHeight","resizeToFitContent","_cachedPlaceholderHeight","_cacheTextareaPlaceholderHeight","_cachedLineHeight","_initialHeight","_cacheTextareaLineHeight","textareaClone","overflow","_measureScrollHeight","previousMargin","isFirefox","needsMarginFiller","measuringClass","textarea","_previousValue","_scrollToCaretPosition","_noopInputHandler","TextFieldModule","_DOM","adapter","historyGo","relativePosition","ɵɵinject","BrowserPlatformLocation","useBrowserPlatformLocation","LOCATION_INITIALIZED","_doc","_init","_history","history","getDOM","getBaseHref","onPopState","getGlobalEventTarget","onHashChange","hash","newPath","pushState","supportsState","replaceState","forward","back","createBrowserPlatformLocation","slashes","pathEndIdx","LocationStrategy","platformLocation","PathLocationStrategy","provideLocationStrategy","_platformLocation","_removeListenerFns","_baseHref","prepareExternalUrl","internal","joinWithSlash","includeHash","normalizeQueryParams","externalUrl","HashLocationStrategy","Location","platformStrategy","_urlChangeListeners","_platformStrategy","browserBaseHref","stripTrailingSlash","_stripIndexHtml","isCurrentPathEqualTo","baseHref","_stripBaseHref","_notifyUrlChangeListeners","onUrlChange","_urlChangeSubscription","onThrow","onReturn","createLocation","CURRENCIES_EN","ADP","AFN","ALL","AMD","AOA","AZN","BAM","BBD","BDT","BHD","BIF","BOB","BRL","BSD","BWP","BYN","BYR","CHF","CLF","CRC","CUC","CUP","CZK","DJF","DKK","DOP","ESP","EUR","GEL","GHS","GNF","GTQ","GYD","HNL","HRK","HUF","IDR","ILS","INR","IQD","IRR","ISK","JMD","JOD","KHR","KPW","KRW","KWD","KYD","KZT","LAK","LKR","LRD","LTL","LUF","LVL","LYD","MGA","MGF","MMK","MNT","MRO","MUR","MYR","NGN","NOK","NPR","OMR","PKR","PLN","PYG","RSD","RUB","RUR","SEK","SHP","SLL","SOS","SSP","STD","STN","SYP","THB","TMM","TND","TRL","TRY","TZS","UAH","UGX","UYI","UYW","UZS","VEF","VND","VUV","XAF","XOF","XXX","YER","ZAR","ZMK","ZWD","NumberFormatStyle","Decimal","Percent","Currency","Scientific","FormStyle","Format","Standalone","TranslationWidth","Narrow","Abbreviated","Wide","Short","FormatWidth","Long","Full","NumberSymbol","Group","List","PercentSign","PlusSign","MinusSign","Exponential","SuperscriptingExponent","PerMille","TimeSeparator","CurrencyDecimal","CurrencyGroup","getLastDefinedValue","ɵfindLocaleData","ɵLocaleDataIndex","ISO8601_DATE_REGEX","NAMED_FORMATS","DATE_FORMATS_SPLIT","ZoneWidth","ShortGMT","Extended","DateType","FullYear","Hours","Minutes","Seconds","FractionalSeconds","Day","TranslationType","DayPeriods","Days","Months","Eras","timezone","isDate","createDate","parsedNb","tzHour","tzMin","dateSetter","timeSetter","isoStringToDate","namedFormat","dateTimezoneOffset","timezoneToOffset","reverseValue","addDateMinutes","convertTimezoneToLocal","dateFormatter","DATE_FORMATS","formatter","dateStrGetter","dateGetter","weekNumberingYearGetter","weekGetter","timeZoneGetter","getDateFormatter","localeId","getLocaleId","formatValue","getLocaleDateFormat","getLocaleTimeFormat","shortTime","getNamedFormat","shortDate","formatDateTime","getLocaleDateTimeFormat","mediumTime","mediumDate","longTime","longDate","fullTime","fullDate","opt_values","digits","minusSign","negWrap","neg","strNum","getDatePart","milliseconds","strMs","formatFractionalSeconds","localeMinus","getLocaleNumberSymbol","padNumber","extended","formStyle","getLocaleMonthNames","getLocaleDayNames","currentHours","currentMinutes","rules","checkFullData","extractTime","getLocaleExtraDayPeriodRules","dayPeriods","getLocaleExtraDayPeriods","afterFrom","beforeTo","amPm","getLocaleDayPeriods","getLocaleEraNames","unexpected","getDateTranslation","datetime","monthBased","nbDaysBefore1stDayOfMonth","thisThurs","getThursdayThisWeek","firstThurs","firstDayOfYear","THURSDAY","getFirstThursdayOfYear","requestedTimezoneOffset","NUMBER_FORMAT_REGEXP","groupSymbol","decimalSymbol","digitsInfo","isPercent","formattedText","isZero","parsedNumber","integerLen","zeros","numStr","MAX_DIGITS","parseNumber","fractionLen","toPercent","minInt","minFraction","minFrac","maxFraction","maxFrac","minIntPart","minFractionPart","maxFractionPart","parseIntAutoRadix","fractionSize","roundAt","digit","dropTrailingZeros","minLen","carry","reduceRight","roundNumber","lgSize","gSize","negPre","negSuf","posPre","posSuf","patternParts","positive","negative","positiveParts","integer","fraction","trunkLen","extraData","ɵregisterLocaleData","cookieStr","eqIndex","NgClass","_iterableDiffers","_keyValueDiffers","_ngEl","_iterableDiffer","_keyValueDiffer","_initialClasses","_rawClass","_removeClasses","_applyClasses","ngClass","ɵisListLikeIterable","iterableChanges","_applyIterableChanges","keyValueChanges","_applyKeyValueChanges","forEachAddedItem","_toggleClass","forEachChangedItem","forEachRemovedItem","ɵstringify","rawClassVal","ngForOf","even","odd","NgForOf","_viewContainer","_template","_differs","_ngForOf","_ngForOfDirty","_differ","ngForTrackBy","_trackByFn","ngForTemplate","_applyChanges","NgForOfContext","applyViewChange","ilen","forEachIdentityChange","NgIf","NgIfContext","_thenTemplateRef","_elseTemplateRef","_thenViewRef","_elseViewRef","ngIf","_updateView","ngIfThen","assertTemplate","ngIfElse","PLATFORM_BROWSER_ID","PLATFORM_SERVER_ID","_templateRef","_created","enforceState","created","NgSwitch","_defaultUsed","_caseCount","_lastCaseCheckIndex","_lastCasesMatched","ngSwitch","_ngSwitch","_updateDefaultCases","_addCase","_addDefault","_defaultViews","_matchCase","useDefault","NgSwitchCase","_view","SwitchView","ngSwitchCase","NgSwitchDefault","NgStyle","_ngStyle","ngStyle","_setStyle","nameAndUnit","removeStyle","NgTemplateOutlet","_viewRef","ngTemplateOutletContext","ngTemplateOutlet","ɵRuntimeError","createSubscription","updateLatestValue","_promiseStrategy","PromiseStrategy","_subscribableStrategy","SubscribableStrategy","AsyncPipe","_latestValue","_obj","_strategy","_dispose","_selectStrategy","_updateLatestValue","ɵisPromise","ɵisSubscribable","invalidPipeArgumentError","ɵpipe","UpperCasePipe","DATE_PIPE_DEFAULT_TIMEZONE","DatePipe","defaultTimezone","JsonPipe","DecimalPipe","_locale","isValue","formatNumberToLocaleString","parseNumberFormat","getLocaleNumberFormat","formatNumber","strToNumber","_defaultCurrencyCode","currencyCode","getLocaleCurrencies","symbolNarrow","getCurrencySymbol","DEFAULT_NB_OF_CURRENCY_DIGITS","getNumberOfCurrencyDigits","formatCurrency","DEFAULT_CURRENCY_CODE","ViewportScroller","BrowserViewportScroller","setOffset","getScrollPosition","supportsScrolling","scrollToPosition","scrollToAnchor","elSelected","documentResult","getElementsByName","createTreeWalker","treeWalker","NodeFilter","SHOW_ELEMENT","currentNode","nextNode","findAnchorFromDocument","setHistoryScrollRestoration","scrollRestoration","supportScrollRestoration","scrollRestorationDescriptor","getScrollRestorationProperty","normalizedNames","lazyUpdate","lazyInit","maybeSetNormalizedName","lcName","copyFrom","applyUpdate","toDelete","existing","encodeKey","standardEncoding","encodeValue","decodeKey","decodeValue","STANDARD_ENCODING_REGEX","STANDARD_ENCODING_REPLACEMENTS","cloneFrom","encoder","HttpUrlEncodingCodec","fromObject","rawParams","codec","eqIdx","paramParser","appendAll","eKey","valueToString","third","fourth","reportProgress","HttpContext","urlWithParams","qIdx","serializeBody","isArrayBuffer","isBlob","isFormData","isUrlSearchParams","detectContentTypeHeader","setParams","HttpRequest","HttpEventType","Sent","UploadProgress","ResponseHeader","DownloadProgress","Response","defaultStatus","defaultStatusText","HttpResponseBase","HttpHeaderResponse","events$","res$","jsonp","callbackParam","addBody","HttpHandler","interceptor","NoopInterceptor","XSSI_PREFIX","HttpXhrBackend","xhrFactory","detectedType","reqBody","headerResponse","partialFromXhr","responseURL","getResponseUrl","onLoad","originalBody","HttpErrorResponse","sentHeaders","onDownProgress","progressEvent","partialText","onUpProgress","XSRF_COOKIE_NAME","XSRF_HEADER_NAME","HttpXsrfCookieExtractor","platform","lastCookieString","lastToken","parseCount","ɵparseCookieValue","HttpXsrfInterceptor","tokenService","headerName","lcUrl","HttpXsrfTokenExtractor","HttpInterceptingHandler","backend","chain","interceptors","HttpInterceptorHandler","HttpClientXsrfModule","withOptions","XhrFactory$1","objWithPropertyToExtract","getClosureSafeProperty","overriddenName","newLineIndex","after","__forward_ref__","forwardRefFn","isForwardRef","formatRuntimeError","renderStringify","injectorName","injectorDetails","RuntimeError","stringifyForError","actual","expected","comparison","getOwnDefinition","NG_PROV_DEF","NG_INJECTABLE_DEF","NG_INJ_DEF","NG_INJECTOR_DEF","ngInjectorDef","InjectFlags","Default","Host","_injectImplementation","impl","injectableDef","getInjectableDef","throwProviderNotFoundError","ChangeDetectionStrategy","OnPush","ViewEncapsulation$1","ViewEncapsulation","Emulated","None","ShadowDom","__globalThis","__window","__self","WorkerGlobalScope","_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","componentDefinition","noSideEffects","declaredInputs","def","providersResolver","onPush","directiveDefs","pipeDefs","setInput","schemas","tView","directiveTypes","feature","pipeTypes","pipes","invertObject","extractDirectiveDef","extractPipeDef","getComponentDef","getDirectiveDef","getPipeDef$1","autoRegisterModuleById","declarations","transitiveCompileScopes","ngModuleDef","getNgModuleDef","secondary","newLookup","minifiedKey","publicName","declaredName","ɵɵdefineDirective","ɵɵdefineComponent","pipeDef","throwNotFound","tNode","isFirstChange","NgOnChangesFeatureImpl","ngOnChangesSetInput","rememberChangeHistoryAndInvokeOnChangesHook","simpleChangesStore","getSimpleChangesStore","privateName","SIMPLE_CHANGES_STORE","setSimpleChangesStore","previousChange","SimpleChange","ɵɵNgOnChangesFeature","ngInherit","domRendererFactory3","rendererType","lView","unwrapRNode","nodeIndex","slotValue","isLView","HOST","lContainer","viewOrContainer","PARENT","instructionState","lFrame","createLFrame","bindingsEnabled","viewToRestore","contextLView","CONTEXT","currentTNode","getCurrentTNodePlaceholderOk","isParent","bindingRootIndex","bindingStartIndex","bindingIndex","currentDirectiveIndex","setCurrentDirectiveIndex","tData","currentQueryIndex","declTNode","parentTNode","parentLView","getDeclarationTNode","allocLFrame","newView","newLFrame","inI18n","currentLFrame","childLFrame","elementDepthCount","currentNamespace","oldLFrame","leaveDI","leaveViewLight","getTNode","SVG_NAMESPACE","namespaceHTMLInternal","directiveStart","directiveEnd","lifecycleHooks","directiveDef","ngAfterContentChecked","contentHooks","contentCheckHooks","viewHooks","viewCheckHooks","destroyHooks","callHooks","initPhase","currentView","currentNodeIndex","nodeIndexLimit","lastNodeIndexFound","isInitHook","callHook","directive","indexWithintInitPhase","NO_PARENT_INJECTOR","isViewProvider","injectImplementation","resolving","canSeeViewProviders","injectImpl","native","isProc","isProceduralRenderer","attrName","attrVal","isAnimationProp","marker","dst","srcMarker","mergeHostAttribute","key1","key2","markerInsertPosition","dstValue","parentLocation","startView","viewOffset","getParentInjectorViewOffset","parentView","includeViewProviders","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","tokenId","createNodeInjector","bloomHashBitOrFactory","enterDI","lookupTokenUsingModuleInjector","previousTView","hostTElementNode","shouldSearchParent","bloomHasToken","searchTokensOnInjector","NodeInjector","getCurrentTNode","getLView","currentTView","injectableIdx","locateDirectiveOrProvider","isComponentHost","getNodeInjectable","canAccessViewProviders","isHostSpecialCase","nodeProviderIndexes","providerIndexes","tInjectables","injectablesStart","directivesStart","cptViewProvidersCount","providerTokenOrDef","dirDef","isComponentDef","NodeInjectorFactory","isFactory","depPath","throwCyclicDependencyError","previousIncludeViewProviders","setIncludeViewProviders","directiveIndex","wrappedOnChanges","preOrderHooks","preOrderCheckHooks","registerPreOrderHooks","injectorView","isFirstHostTNode","_tNode","_lView","getOrCreateInjectable","ownConstructor","ownFactory","getFactoryOf","objectPrototype","resolveForwardRef","getFactoryDef","attrNameToInject","attrsLength","isNameOnlyAttributeMarker","injectAttributeImpl","PARAMETERS","PROP_METADATA","propName","parentClass","metaCtor","makeMetadataCtor","ParamDecoratorFactory","annotationInstance","ParamDecorator","annotation","cls","unusedKey","parameters","ngMetadataName","annotationCls","additionalProcessing","PropDecoratorFactory","decoratorInstance","PropDecorator","_desc","ANALYZE_FOR_ENTRY_COMPONENTS","makePropDecorator","isViewQuery","flatten","deepForEach","keyValueArray","keyValueArrayIndexOf","value2","arrayInsert2","middle","_arrayIndexOfSorted","THROW_IF_NOT_FOUND","DI_DECORATOR_FLAG","NG_TEMP_TOKEN_PATH","NEW_LINE","SOURCE","USE_VALUE$1","_currentInjector","former","getInjectImplementation","injectInjectorOnly","flag","getInjectFlag","attachInjectFlag","makeParamDecorator","RendererStyleFlags2","Important","DashCase","MONKEY_PATCH_KEY_NAME","readPatchedData","tIcuContainerNode","_icuContainerIterate","isLContainer","getNearestLContainer","CHILD_HEAD","NEXT","lNodeToHandle","beforeNode","isComponent","rNode","nativeAppendChild","nativeInsertBefore","isHostElement","nativeParent","nativeParentNode","nativeRemoveChild","nativeRemoveNode","destroyNode","parentRElement","applyToElementOrContainer","applyView","applyContainer","namespaceUri","getNamespaceUri","declarationContainer","movedViews","declarationViewIndex","insertionLContainer","updateTransplantedViewCount","removeIndex","indexInContainer","viewToDetach","declarationLContainer","detachMovedView","removedLView","removeFromArray","removeViewFromContainer","lQueries","rootView","lViewOrLContainer","cleanUpView","firstView","destroyViewTree","toCall","callContext","executeOnDestroys","tCleanup","cleanup","lCleanup","lastLCleanupIndex","idxOrTargetGetter","useCaptureOrSubIdx","processCleanups","getNativeByTNode","getClosestRElement","isMove","_getInsertInFrontOfRNodeWithI18n","policy$1","policy","childRNode","childTNode","parentRNode","getParentRElement","getInsertInFrontOfRNode","nativeAppendOrInsertBefore","tNodeType","getBeforeNodeForView","elIcuContainerChild","getFirstNativeNode","rNodeOrLContainer","projectionNodes","getProjectionNodes","getLViewParent","componentView","projection","viewIndexInContainer","nextViewIndex","firstTNodeOfView","NATIVE","isProjection","rawSlotValue","attachPatchData","applyNodes","nextRNode","icuContainerIterate","applyProjectionRecursive","projectionNext","tProjectionNode","componentLView","nodeToProjectOrRNodes","componentNode","cssText","createHTML","createScript","getPolicy$1","getPolicy","changingThisBreaksApplicationSecurity","SafeValueImpl","getTypeName","actualType","getSanitizationBypassType","trustedHtml","SafeHtmlImpl","trustedStyle","SafeStyleImpl","trustedScript","SafeScriptImpl","trustedUrl","SafeUrlImpl","trustedResourceUrl","SafeResourceUrlImpl","inertDocumentHelper","getInertBodyElement","DOMParser","parseFromString","trustedHTMLFromString","defaultDoc","inertDocument","implementation","createHTMLDocument","inertHtml","inertBodyElement","templateEl","inertBody","stripCustomNsAttrs","elAttrs","attrib","childNode","SAFE_URL_PATTERN","DATA_URL_PATTERN","tags","sets","VOID_ELEMENTS","tagSet","OPTIONAL_END_TAG_BLOCK_ELEMENTS","OPTIONAL_END_TAG_INLINE_ELEMENTS","VALID_ELEMENTS","URI_ATTRS","SRCSET_ATTRS","VALID_ATTRS","SKIP_TRAVERSING_CONTENT_IF_INVALID_ELEMENTS","sanitizedSomething","buf","sanitizeChildren","traverseContent","startElement","TEXT_NODE","endElement","checkClobberedElement","elAttr","_sanitizeUrl","srcset","encodeEntities","DOCUMENT_POSITION_CONTAINED_BY","outerHTML","SURROGATE_PAIR_REGEXP","NON_ALPHANUMERIC_REGEXP","inertBodyHelper","unsafeHtmlInput","InertDocumentHelper","isDOMParserAvailable","DOMParserHelper","getInertBodyHelper","unsafeHtml","mXSSAttempts","parsedHtml","SanitizingHtmlSerializer","getTemplateContent","safeHtml","isTemplateElement","SecurityContext","HTML","STYLE","RESOURCE_URL","getSanitizer","trustedHTMLFromStringBypass","sanitize","allowSanitizationBypassAndThrow","unwrapSafeValue","_sanitizeHtml","unsafeUrl","SANITIZER","ERROR_ORIGINAL_ERROR","_console","_findOriginalError","errorLogger","ERROR_LOGGER","defaultErrorLogger","getErrorLogger","getOriginalError","defaultScheduler","classToSearch","startingIndex","foundIndex","NG_TEMPLATE_SELECTOR","cssClassToMatch","isProjectionMode","classIndexOf","currentSelector","tagNameToCompare","nodeAttrs","nameOnlyMarkerIdx","getNameOnlyMarkerIndex","skipToNextSelector","hasTagAndTypeMatch","isPositive","selectorAttrValue","isCssClassMatching","attrIndexInNode","findAttrIndexInNode","isInlineTemplate","nodeAttrValue","compareAgainstClassName","bindingsMode","maybeAttrName","matchTemplateAttribute","isNodeMatchingSelector","selectorListLoop","currentSelectorInList","isNegativeMode","chunk","currentChunk","valueOrMarker","attrValue","maybeWrapInNotSelector","NO_CHANGE","selectIndexInternal","getTView","getSelectedIndex","checkNoChangesMode","executeCheckHooks","executeInitAndCheckHooks","setSelectedIndex","tStylingRange","queryStartIdx","directiveDefIdx","setCurrentQueryIndex","tHostNode","resetPreOrderHookFlags","isCurrentTNodeParent","tParent","insertBeforeIndex","directiveStylingLast","propertyBindings","mergedAttrs","localNames","initialInputs","tViews","stylesWithoutHost","residualStyles","classesWithoutHost","residualClasses","classBindings","styleBindings","createTNode","createTNodeAtIndex","isInI18nBlock","getCurrentParentTNode","setCurrentTNode","numSlotsToAlloc","allocIdx","enterView","executeViewQueryFn","templateFn","executeTemplate","staticContentQueries","refreshContentQueries","staticViewQueries","hostLView","renderComponent$1","renderChildComponents","leaveView","incompleteFirstPass","setBindingIndex","hooksInitPhaseCompleted","incrementInitPhaseFlags","getFirstLContainer","getNextLContainer","movedLView","markTransplantedViewsForRefresh","embeddedLView","embeddedTView","viewAttachedToChangeDetector","refreshView","refreshEmbeddedViews","hostBindingOpCodes","opCode","directiveIdx","bindingRootIndx","hostBindingFn","setBindingRootForHostBindings","processHostBindingOpCodes","refreshComponent","refreshChildComponents","firstUpdatePass","creationModeIsActive","isCreationMode","begin","renderView","prevSelectedIndex","isUpdatePhase","isContentQueryHost","getBindingsEnabled","getOrCreateNodeInjectorForNode","addComponentLogic","setInputsFromAttrs","getComponentLViewByIndex","instantiateAllDirectives","elementIndex","getCurrentDirectiveIndex","invokeHostBindingsInCreationMode","invokeDirectivesHostBindings","viewData","localRefExtractor","localIndex","createTView","constsOrFactory","initialViewLength","createViewBlueprint","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","ngDevMode","cacheMatchingLocalNames","directiveVarsIdx","elementIndx","lastSelectedElementIdx","hostTNode","numberOfDirectives","directiveFactory","nodeInjectorFactory","registerHostBindingOpCodes","getOrCreateTComponentView","addToViewTree","createLView","strValue","setElementAttribute","initialInputData","inputsToStore","hostNative","componentHostIdx","refreshContainsDirtyView","componentTView","syncViewWithBlueprint","isRootView","rootContext","rootComponent","readPatchedLView","renderComponentOrTemplate","tickRootContext","viewQueryFn","CLEAN_PROMISE","currentDef","unwrapLView","RENDERER","getNativeByIndex","updateTextNode","writeToHost","concatStringsWithSpace","INJECTOR","INJECTOR_SCOPE","NOT_YET","CIRCULAR","NULL_INJECTOR$1","NullInjector","defType","additionalProviders","createInjectorWithoutInjectorInstances","_resolveInjectorDefTypes","R3Injector","getNullInjector","records","injectorDefTypes","dedupStack","processProvider","injectorDef","processInjectorType","makeRecord","destroyed","assertNotDestroyed","previousInjector","setCurrentInjector","couldBeInjectableType","injectableDefInScope","injectableDefOrInjectorDefFactory","hydrate","injectorErrorName","tokenPath","formatError","NG_TOKEN_PATH","catchInjectorError","defOrWrappedDef","getInjectorDef","isDuplicate","importTypesWithProviders","imported","defProviders","injectorType","ngModuleType","isTypeProvider","isValueProvider","providerToFactory","providerToRecord","multiRecord","injectArgs","hasOnDestroy","paramLength","newArray","inheritedInjectableDef","typeName","getInheritedInjectableDef","getUndecoratedInjectableFactory","unwrappedProvider","isFactoryProvider","isExistingProvider","classRef","hasDeps","createInjector","NULL","registerPostOrderHooks","superType","getSuperType","shouldInheritFields","inheritanceChain","superDef","writeableDef","maybeUnwrapEmpty","superHostBindings","inheritHostBindings","superViewQuery","superContentQueries","inheritViewQuery","inheritContentQueries","fillProperties","defData","ɵɵInheritDefinitionFeature","mergeHostAttrsAcrossInheritance","prevViewQuery","prevContentQueries","prevHostBindings","_symbolIterator","isJsObject","exp1","exp2","different","bindingUpdated","exp3","bindingUpdated2","exp4","nextBindingIndex","elementAttributeInternal","getSelectedTNode","ɵɵattribute","attrsIndex","localRefsIndex","adjustedIndex","tViewConsts","getOrCreateTNode","getConstant","resolveDirectives","templateFirstCreatePass","createLContainer","isDirectiveHost","createDirectivesInstances","saveResolvedLocalsInData","getContextLView","elementPropertyInternal","ɵɵproperty","isClassBased","createElementNode","getNamespace$1","computeStaticStyling","elementStart","elementStartFirstCreatePass","setUpAttributes","writeDirectClass","writeDirectStyle","getElementDepthCount","increaseElementDepthCount","executeContentQueries","ɵɵelementStart","setCurrentTNodeAsNotParent","decreaseElementDepthCount","elementEnd","hasClassInput","setDirectiveInputsWhichShadowsStyling","hasStyleInput","ɵɵelementEnd","ɵɵelement","elementContainerStartFirstCreatePass","ɵɵelementContainerStart","ɵɵelementContainerEnd","ɵɵelementContainer","isObservable","isSubscribable","listenerFn","useCapture","eventTargetResolver","listenerInternal","ɵɵlistener","loadComponentRenderer","getCurrentDirectiveDef","ɵɵsyntheticHostListener","isTNodeDirectiveHost","processOutputs","lCleanupIndex","existingListener","tNodeIdx","cleanupEventName","listenerIdxInLCleanup","findExistingListener","__ngLastListenerFn__","__ngNextListenerFn__","wrapListener","propsLength","profiler","wrapWithPreventDefault","markViewDirty","executeListenerWithErrorHandling","nextListenerFn","wrapListenerIn_markDirtyAndPreventDefault","nestingLevel","walkUpViews","nextContextImpl","projectionSlots","wildcardNgContentIndex","ngProjectAsAttrVal","ngProjectAsAttrIdx","getProjectAsAttrValue","isSelectorInSelectorList","projectionHeads","tails","componentChild","slotIndex","matchingProjectionSlotIndex","selectorIndex","applyProjection","ɵɵpropertyInterpolate1","ɵɵpropertyInterpolate","interpolatedValue","interpolation1","tStylingKey","isPrevDir","isClassBinding","tStylingAtIndex","isMap","getTStylingRangePrev","getTStylingRangeNext","foundDuplicate","tStyleRangeAtCursor","isStylingMatch","setTStylingRangeNextDuplicate","setTStylingRangePrevDuplicate","tStylingKeyCursor","parserState","textEnd","keyEnd","valueEnd","startIndex","consumeClassToken","consumeWhitespace","consumeStyleKey","consumeSeparator","ch1","ch2","ch3","lastChIndex","consumeQuotedText","consumeStyleValue","quoteCharCode","checkStylingProperty","ɵɵstyleProp","ɵɵclassProp","checkStylingMap","styleKeyValueArraySet","styleStringParser","resetParserState","parseStyleNext","parseStyle","getLastParsedKey","getLastParsedValue","keyValueArraySet","classStringParser","parseClassNameNext","parseClassName","incrementBindingIndex","stylingFirstUpdatePass","updateStyling","normalizeSuffix","stringParser","hasStylingInputShadow","isInHostBindings","staticPrefix","oldKeyValueArray","newKeyValueArray","oldKey","newKey","setKey","updateStylingMap","styleKeyValueArray","unwrappedValue","toStylingKeyValueArray","isHostBindings","stylingKey","hostDirectiveDef","residual","collectStylingFromTAttrs","collectStylingFromDirectives","templateStylingKey","getTemplateHeadTStylingKey","setTemplateHeadTStylingKey","collectResidual","wrapInStaticStylingKey","tStylingKeyWithStatic","isHostBinding","tBindings","tmplHead","tmplTail","isKeyDuplicateOfStatic","staticKeyValueArray","previousNode","toTStylingRange","setTStylingRangeNext","setTStylingRangePrev","markDuplicates","markDuplicateOfResidualStyling","insertTStylingBinding","currentDirective","desiredMarker","currentMarker","tRange","isStylingValuePresent","getTStylingRangeNextDuplicate","findStylingValue","getTStylingRangePrevDuplicate","isProcedural","isImportant","applyStyling","isPrevDirection","rawKey","containsStatics","isStylingMap","valueAtLViewIndex","keyValueArrayGet","textNative","createText","ɵɵtextInterpolate1","ɵɵtextInterpolate","interpolated","textBindingInternal","getBindingIndex","interpolation2","ɵɵtextInterpolate2","bindingUpdated3","interpolation3","ɵɵtextInterpolate3","bindingUpdated4","interpolation4","ɵɵtextInterpolate4","v4","interpolation5","ɵɵtextInterpolate5","i4","v5","interpolation6","ɵɵtextInterpolate6","v6","v7","interpolation8","ɵɵtextInterpolate8","isBindingUpdated","interpolationV","ɵɵtextInterpolateV","ɵɵhostProperty","ɵɵsyntheticHostProperty","localeEn","LOCALE_DATA","LocaleDataIndex","LocaleId","ExtraData","normalizedLocale","normalizeLocale","getLocaleData","parentLocale","PluralCase","ng","common","locales","DayPeriodsFormat","DayPeriodsStandalone","DaysFormat","DaysStandalone","MonthsFormat","MonthsStandalone","FirstDayOfWeek","WeekendRange","DateFormat","TimeFormat","DateTimeFormat","NumberSymbols","NumberFormats","CurrencyCode","CurrencySymbol","CurrencyName","Currencies","DEFAULT_LOCALE_ID","LOCALE_ID$1","lInjectablesBlueprint","resolveProvider","providerFactory","beginIndex","ɵɵdirectiveInject","existingFactoryIndex","registerDestroyHooksIfSupported","existingProvidersFactoryIndex","existingViewProvidersFactoryIndex","doesProvidersFactoryExist","doesViewProvidersFactoryExist","factoryFn","componentProviders","multiFactoryAdd","multiFactory","multiViewProvidersFactoryResolver","multiProvidersFactoryResolver","contextIndex","indexInFactory","providerIsTypeProvider","providerIsClassProvider","isClassProvider","existingCallbacksIndex","isComponentProvider","lData","multiResolve","factories","componentCount","multiProviders","viewProviders","processProvidersFn","ERROR_COMPONENT","noComponentFactoryError","ComponentFactoryResolver$1","_NullComponentFactoryResolver","createElementRef","injectElementRef","nodeAtIndex","getOrCreateRenderer2","injectRenderer2","Sanitizer","full","major","minor","NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR","lNode","lViewInAContainer","lViewFirstChildTNode","collectNativeNodes","nodesInSlot","_cdRefInjectingView","_attachedToViewContainer","viewRefs","destroyLView","storeCleanupWithContext","reattach","detectChangesInternal","checkNoChanges","attachToViewContainerRef","detachFromAppRef","renderDetachView","attachToAppRef","ViewRef$1","detectChangesInRootView","componentDef","ComponentFactory","nonMinified","templateName","ComponentFactory$1","selectorList","stringifyCSSSelector","stringifyCSSSelectorList","isBoundToModule","toRefArray","projectableNodes","rootSelectorOrNode","rootViewInjector","createChainedInjector","hostRenderer","elementName","hostRNode","elementOrSelector","selectRootElement","rElement","locateHostElement","getNamespace","rootFlags","playerHandler","createRootContext","rootTView","rootLView","tElementNode","viewRenderer","createRootComponentView","extractAttrsAndClassesFromSelector","nodesforSlot","hostFeatures","rootTNode","instantiateRootComponent","createRootComponent","LifecycleHooksFeature","ComponentRef","_rootLView","changeDetectorRef","RootViewRef","modules","NgModuleRef$1","_bootstrapComponents","destroyCbs","maybeUnwrapFn","_r3Injector","injectFlags","NgModuleFactory$1","moduleType","visited","incoming","assertSameOrNotExisting","recurse","registerNgModuleType","parentInjector","NgModuleRef","slotOffset","pureFn","getBindingRoot","updateBinding","getBinding","pureFunction1Internal","pureFunction2Internal","bindingRoot","getPureFunctionReturnValue","pureFunction3Internal","returnValueIndex","lastReturnValue","pipeName","getPipeDef","pipeFactory","pipeInstance","isPure","isAsync","__isAsync","nextFn","errorFn","completeFn","_wrapInTimeout","_results","_emitDistinctChangesOnly","dirty","_changesDetected","_changes","proto","symbolIterator","resultsTree","identityAccessor","newResultFlat","valueA","valueB","arrayEquals","notifyOnChanges","setDirty","TemplateRef","injectTemplateRef","ViewEngineTemplateRef","R3TemplateRef","_declarationLView","_declarationTContainer","declarationViewLQueries","createTemplateRef","injectViewContainerRef","createContainerRef","VE_ViewContainerRef","R3ViewContainerRef","_lContainer","_hostTNode","_hostLView","getViewRefs","CONTAINER_HEADER_OFFSET","componentFactoryOrType","indexOrOptions","ngModuleRef","isComponentFactory","isType","contextInjector","viewAttachedToContainer","prevIdx","prevLContainer","prevVCRef","adjustedIdx","_adjustIndex","containerLength","addToArray","declaredComponentLView","insertedLContainer","trackMovedView","insertView","parentNativeNode","addViewToContainer","getOrCreateViewRefs","viewRefsArr","wasDetached","VIEW_REFS","commentNode","nativeNextSibling","queryList","LQuery_","tQueries","noOfInheritedQueries","viewLQueries","tQuery","getByIndex","indexInDeclarationView","LQueries_","dirtyQueriesWithMatches","getTQuery","queriesForTemplateRef","childQueryIndex","tqueryClone","TQueries_","tquery","crossesNgTemplate","_appliesToNextNode","_declarationNodeIndex","isApplyingToNode","matchTNode","addMatch","TQuery_","declarationNodeIdx","matchTNodeWithReadOption","getIdxOfMatchingSelector","nodeMatchIdx","directiveOrProviderIdx","matchIdx","matchingIdx","createResultByTNodeType","createSpecialToken","queryIndex","lQuery","tQueryMatches","matchedNodeIdx","createResultForNode","lViewResults","materializeViewResults","collectQueryResults","embeddedLViews","getCurrentQueryIndex","unwrapElementRef","createTQuery","TQueryMetadata_","createLQuery","tViewContentQueries","saveContentQueryAndDirectiveIndex","loadQueryInternal","bindingPropertyName","hostPropertyName","ApplicationInitStatus","appInits","donePromise","rej","runInitializers","asyncInitPromises","initResult","observableAsPromise","APP_ID","_randomChar","PLATFORM_INITIALIZER","APP_BOOTSTRAP_LISTENER","Console","$localize","getGlobalLocale","ngModuleFactory","componentFactories","Compiler","compileModuleSync","NgModuleFactory","compileModuleAsync","compileModuleAndAllComponentsSync","declaration","ModuleWithComponentFactories","compileModuleAndAllComponentsAsync","clearCache","clearCacheFor","getModuleId","enableLongStackTrace","shouldCoalesceEventChangeDetection","shouldCoalesceRunChangeDetection","hasPendingMacrotasks","hasPendingMicrotasks","onUnstable","onMicrotaskEmpty","assertZonePatched","_nesting","_outer","_inner","TaskTrackingZoneSpec","fork","longStackTraceZoneSpec","lastRequestAnimationFrameId","nativeRequestAnimationFrame","nativeCancelAnimationFrame","unpatchedRequestAnimationFrame","__symbol__","unpatchedCancelAnimationFrame","getNativeRequestAnimationFrame","delayChangeDetectionForEventsDelegate","isCheckStableRunning","fakeTopEventTask","scheduleEventTask","updateMicroTaskStatus","checkStable","delayChangeDetectionForEvents","properties","isAngularZone","onInvokeTask","applyThis","applyArgs","onEnter","invokeTask","onLeave","onInvoke","onHasTask","hasTaskState","hasTask","_hasPendingMicrotasks","microTask","macroTask","onHandleError","forkInnerZoneWithAngularBehavior","isInAngularZone","runTask","EMPTY_PAYLOAD","cancelTask","Testability","_pendingCount","_isZoneStable","_didWork","_callbacks","taskTrackingZone","_watchAngularEvents","assertNotInAngularZone","_runCallbacksIfReady","increasePendingRequestCount","decreasePendingRequestCount","timeoutId","doneCb","getPendingTasks","updateCb","macroTasks","creationLocation","addCallback","getPendingRequestCount","findProviders","using","exactMatch","TestabilityRegistry","_applications","_testabilityGetter","addToWindow","registerApplication","testability","unregisterApplication","unregisterAllApplications","getTestability","getAllTestabilities","getAllRootElements","findTestabilityInTree","findInAncestors","getter","_NoopGetTestability","_platformInjector","ALLOW_MULTIPLE_PLATFORMS","PLATFORM_ON_DESTROY","parentPlatformFactory","extraProviders","getPlatform","platformProviders","PlatformRef","inits","initFn","createPlatform","createPlatformInjector","requiredToken","assertPlatform","_modules","_destroyListeners","bootstrapModuleFactory","moduleFactory","ngZoneOption","NoopNgZone","ngZoneEventCoalescing","ngZoneRunCoalescing","getNgZone","ngZoneInjector","moduleRef","exceptionHandler","_callAndReportToErrorHandler","initStatus","assertDefined","setLocaleId","_moduleDoBootstrap","compilerOptions","optionsReducer","compileNgModuleFactory","destroyListener","objs","_exceptionHandler","_initStatus","_bootstrapListeners","_views","_runningTick","_stable","componentTypes","_onMicrotaskEmptySubscription","isCurrentlyStable","stableSub","unstableSub","assertInAngularZone","merge$1","componentOrFactory","cf","compRef","testabilityRegistry","_loadComponent","_devMode","_runModeLocked","ChangeDetectorRef","injectChangeDetectorRef","isPipe","createViewRef","supports","isListLikeIterable","trackByFn","DefaultIterableDiffer","trackByIdentity","_linkedRecords","_unlinkedRecords","_previousItHead","_itHead","_itTail","_additionsHead","_additionsTail","_movesHead","_movesTail","_removalsHead","_removalsTail","_identityChangesHead","_identityChangesTail","forEachItem","nextIt","nextRemove","addRemoveOffset","moveOffsets","getPreviousIndex","adjPreviousIndex","_nextRemoved","localMovePreviousIndex","localCurrentIndex","forEachPreviousItem","_nextPrevious","_nextAdded","forEachMovedItem","_nextMoved","_nextIdentityChange","_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","toIndex","_prevDup","_nextDup","_head","_tail","atOrAfterIndex","duplicates","_DuplicateItemRecordList","recordList","moveOffset","DefaultKeyValueDiffer","_records","_mapHead","_appendAfter","_previousMapHead","_changesHead","_changesTail","_nextChanged","_forEach","_maybeAddToChanges","_getOrCreateRecordForKey","_insertBeforeOrAppend","KeyValueChangeRecord_","_addToAdditions","_addToChanges","IterableDiffers","DefaultIterableDifferFactory","copied","defaultIterableDiffersFactory","KeyValueDiffers","DefaultKeyValueDifferFactory","defaultKeyValueDiffersFactory","kv","platformCore","createPlatformFactory","ApplicationModule","ɵɵdefineNgModule","ɵɵdefineInjector","decl","BaseControlValueAccessor","onTouched","BuiltInControlValueAccessor","DEFAULT_VALUE_ACCESSOR","DefaultValueAccessor","COMPOSITION_BUFFER_MODE","_compositionMode","_composing","ɵgetDOM","getUserAgent","_isAndroid","normalizedValue","_handleInput","_compositionStart","_compositionEnd","NG_ASYNC_VALIDATORS","EMAIL_REGEXP","minValidator","maxValidator","requiredValidator","requiredTrueValidator","emailValidator","minLength","isEmptyInputValue","hasValidLength","minlength","requiredLength","actualLength","minLengthValidator","maxLength","maxlength","maxLengthValidator","nullValidator","regex","requiredPattern","patternValidator","validators","composeAsync","ɵisObservable","arrayOfErrors","validator","isValidatorFn","presentValidators","isPresent","mergeErrors","executeValidators","normalizeValidators","forkJoin","controlValidators","dirValidator","_rawValidators","_rawAsyncValidators","currentValidators","makeValidatorsArray","validatorsToAdd","hasValidator","_onDestroyCallbacks","pristine","touched","untouched","_setValidators","_composedValidatorFn","composeValidators","_setAsyncValidators","_composedAsyncValidatorFn","composeAsyncValidators","asyncValidator","_registerOnDestroy","_invokeOnDestroyCallbacks","getError","AbstractControlDirective","valueAccessor","formDirective","_cd","submitted","NgControlStatus","AbstractControlStatus","NgControl","NgControlStatusGroup","ControlContainer","setUpValidators","_pendingValue","_pendingChange","_pendingDirty","updateOn","updateControl","setUpViewChangePipeline","emitModelEvent","viewToModelUpdate","_unregisterOnChange","setUpModelChangePipeline","_pendingTouched","setUpBlurPipeline","onDisabledChange","registerOnDisabledChange","_unregisterOnDisabledChange","setUpDisabledChangeHandler","validateControlPresenceOnChange","cleanUpValidators","_registerOnCollectionChange","registerOnValidatorChange","getControlValidators","mergeValidators","asyncValidators","getControlAsyncValidators","setAsyncValidators","onValidatorChange","isControlUpdated","updatedValidators","updatedAsyncValidators","emitModelToViewChange","viewModel","_syncPendingControls","valueAccessors","defaultAccessor","builtinAccessor","customAccessor","VALID","INVALID","validatorOrOpts","isOptionsObj","isFormControl","isFormGroup","FormGroup","isFormArray","FormArray","getRawValue","isGroup","_forEachChild","_hasOwnPendingAsyncValidator","_onCollectionChange","_onDisabledChange","coerceToValidator","coerceToAsyncValidator","validatorFn","asyncValidatorFn","_updateOn","addValidators","addAsyncValidators","removeValidators","removeAsyncValidators","hasAsyncValidator","clearValidators","clearAsyncValidators","markAllAsTouched","markAsUntouched","_updateTouched","markAsPristine","_updatePristine","markAsPending","skipPristineCheck","_parentMarkedDirty","_updateValue","_updateAncestors","changeFn","setParent","_setInitialStatus","_cancelExistingSubscription","_runValidator","_calculateStatus","_runAsyncValidator","_updateTreeValidity","ctrl","_allControlsDisabled","_asyncValidationSubscription","setErrors","_updateControlsErrors","delimiter","controlToFind","_find","_initObservables","_anyControlsHaveStatus","_anyControls","_anyControlsDirty","_anyControlsTouched","_isBoxedValue","formState","_setUpdateStrategy","AbstractControl","pickValidators","pickAsyncValidators","_onChange","_applyFormState","initialValueIsDefault","emitViewToModelChange","removeListItem","_setUpControls","registerControl","addControl","removeControl","setControl","controlName","assertAllValuesPresent","assertControlPresent","_reduceChildren","subtreeUpdated","_reduceValue","initValue","_registerControl","removeAt","formDirectiveProvider$1","NgForm","resolvedPromise$1","_directives","ngSubmit","_findContainer","setUpControl","getControl","addFormGroup","setUpFormContainer","removeFormGroup","getFormGroup","updateModel","syncPendingControls","onReset","resetForm","AbstractFormGroupDirective","_checkParentType","controlPath","formControlBinding$1","NgModel","resolvedPromise","_changeDetectorRef","_registered","selectValueAccessor","_checkForErrors","_checkName","oldName","_getPath","_setUpControl","_updateDisabled","isPropertyUpdated","_isStandalone","_setUpStandalone","standalone","disabledValue","ɵNgNoValidate","NUMBER_VALUE_ACCESSOR","NumberValueAccessor","RadioControlRegistryModule","NG_MODEL_WITH_FORM_CONTROL_WARNING","formControlBinding","FormControlDirective","_ngModelWarningConfig","_ngModelWarningSent","_isControlChanged","previousForm","cleanUpControl","_ngModelWarningSentOnce","formDirectiveProvider","FormGroupDirective","_updateDomValue","_checkFormPresent","_updateValidators","_updateRegistrations","_oldForm","_setUpFormContainer","_cleanUpFormContainer","addFormArray","removeFormArray","getFormArray","oldCtrl","newCtrl","cleanUpFormContainer","formGroupNameProvider","FormGroupName","_hasInvalidParent","formArrayNameProvider","FormArrayName","controlNameBinding","FormControlName","_added","AbstractValidatorDirective","_validator","inputName","normalizeInput","createValidator","MAX_VALIDATOR","MaxValidator","toFloat","MIN_VALIDATOR","MinValidator","REQUIRED_VALIDATOR","RequiredValidator","CHECKBOX_REQUIRED_VALIDATOR","CheckboxRequiredValidator","toBoolean","EMAIL_VALIDATOR","EmailValidator","ɵInternalFormsSharedModule","warnOnNgModelWithFormControl","FormBuilder","controlsConfig","_reduceControls","isAbstractControlOptions","_createControl","controlConfig","_uniqueAutocompleteIdCounter","_MatAutocompleteMixinBase","mixinDisableRipple","MAT_AUTOCOMPLETE_DEFAULT_OPTIONS","autoActiveFirstOption","_MatAutocompleteBase","_activeOptionChanges","showPanel","_isOpen","displayWith","optionSelected","opened","optionActivated","_classList","inertGroups","_autoActiveFirstOption","coerceStringArray","_setVisibilityClasses","_keyManager","ActiveDescendantKeyManager","_setVisibility","_setScrollTop","_getScrollTop","_emitSelectEvent","MatAutocompleteSelectedEvent","_getPanelAriaLabelledby","labelId","ariaLabelledby","_visibleClass","_hiddenClass","MatAutocomplete","MAT_OPTGROUP","MatOption","MAT_OPTION_PARENT_COMPONENT","MAT_AUTOCOMPLETE_SCROLL_STRATEGY","MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER","MAT_AUTOCOMPLETE_VALUE_ACCESSOR","MatAutocompleteTrigger","_MatAutocompleteTriggerBase","_formField","_defaults","_componentDestroyed","_autocompleteDisabled","_manuallyFloatingLabel","_viewportSubscription","_canOpenOnNextFocus","_closeKeyEventStream","_windowBlurHandler","panelOpen","_onTouched","autocompleteAttribute","_overlayAttached","optionSelections","onSelectionChange","autocompleteDisabled","_setStrategyPositions","_destroyPanel","openPanel","_floatLabel","closePanel","_resetLabel","_closingActionsSubscription","panelClosingActions","_getOutsideClickStream","MatOptionSelectionChange","activeOption","clickTarget","formField","customOrigin","_setTriggerValue","_handleKeydown","hasModifier","_selectViaInteraction","_resetActiveItem","prevActiveItem","isArrowKey","_canOpen","_scrollToOption","_handleFocus","_handleClick","shouldAnimate","floatLabel","_animateAndLockLabel","_subscribeToClosingActions","firstStable","optionChanges","_setValueAndClose","toDisplay","_control","_clearPreviousSelectedOption","_getConnectedElement","_getPanelWidth","_portal","getLabelId","_getOverlayConfig","_getOverlayPosition","overlayPanelClass","belowPositions","_aboveClass","abovePositions","getConnectedOverlayOrigin","panelWidth","_getHostWidth","labelCount","_countGroupLabelsBeforeOption","optionGroups","_getHostElement","newScrollPosition","_getOptionScrollPosition","offsetTop","i2$1","MAT_FORM_FIELD","MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS","MAT_BUTTON_TOGGLE_GROUP","MAT_BUTTON_TOGGLE_GROUP_VALUE_ACCESSOR","MatButtonToggleGroup","uniqueIdCounter","_changeDetector","_controlValueAccessorChangeFn","appearance","_buttonToggles","_markForCheck","vertical","_selectionModel","_setSelectionByValue","SelectionModel","checked","MatButtonToggleChange","_syncButtonToggle","isUserInput","deferEvents","_updateModelValue","_isSelected","_isPrechecked","_rawValue","_clearSelection","_selectValue","correspondingOption","MatButtonToggle","_MatButtonToggleBase","toggleGroup","defaultTabIndex","_isSingleSelector","_checked","parsedTabIndex","buttonToggleGroup","buttonId","_appearance","_buttonElement","_onButtonClick","newChecked","BUTTON_HOST_ATTRIBUTES","_MatButtonBase","mixinColor","mixinDisabled","MatButton","_animationMode","isRoundButton","_hasHostAttributes","isIconButton","DEFAULT_ROUND_BUTTON_COLOR","_isRippleDisabled","disableRipple","attribute","ANIMATION_MODULE_TYPE","MatRipple","MatAnchor","focusMonitor","animationMode","_haltDisabledEvents","MAT_CHECKBOX_DEFAULT_OPTIONS","MAT_CHECKBOX_DEFAULT_OPTIONS_FACTORY","clickAction","MAT_CHECKBOX_CONTROL_VALUE_ACCESSOR","MatCheckbox","_MatCheckboxBase","mixinTabIndex","_uniqueId","labelPosition","indeterminateChange","_currentAnimationClass","_currentCheckState","_indeterminate","defaultColor","inputId","_required","focusOrigin","_syncIndeterminate","indeterminate","_transitionCheckState","_onLabelTextChange","_getAriaChecked","newState","oldState","_getAnimationClassForCheckStateTransition","animationClass","MatCheckboxChange","_inputElement","_onInputClick","_onInteractionEvent","animSuffix","nativeCheckbox","_MatCheckboxRequiredValidatorModule","AnimationCurves","STANDARD_CURVE","DECELERATION_CURVE","ACCELERATION_CURVE","SHARP_CURVE","AnimationDurations","COMPLEX","ENTERING","EXITING","MATERIAL_SANITY_CHECKS","_sanityChecks","_hasDoneGlobalChecks","_checkIsEnabled","_color","colorPalette","_disableRipple","_tabIndex","errorState","updateErrorState","errorStateMatcher","_defaultErrorStateMatcher","isErrorState","ngControl","_parentFormGroup","_parentForm","_localeChanges","localeChanges","getValidDateOrNull","isDateInstance","setLocale","compareDate","getYear","sameDate","firstValid","secondValid","clampDate","MAT_DATE_FORMATS","ISO_8601_REGEX","valueFunction","valuesArray","NativeDateAdapter","DateAdapter","matDateLocale","useUtcForDisplay","getDayOfWeek","getMonthNames","dtf","timeZone","_format","getDateNames","getDayOfWeekNames","getYearName","getFirstDayOfWeek","getNumDaysInMonth","_createDateWithOverflow","displayFormat","addCalendarYears","years","addCalendarMonths","addCalendarDays","toIso8601","_2digit","MAT_NATIVE_DATE_FORMATS","dateInput","monthYearLabel","dateA11yLabel","monthYearA11yLabel","NativeDateModule","ErrorStateMatcher","fadeOut","fadeOutRipple","defaultRippleAnimationConfig","enterDuration","exitDuration","passiveEventOptions","pointerDownEvents","pointerUpEvents","_target","_isPointerDown","_activeRipples","_pointerUpEventsRegistered","fadeInRipple","animationConfig","centered","distX","distY","distanceToFurthestCorner","ripple","transitionDuration","enforceStyleRecalculation","rippleRef","RippleRef","persistent","_mostRecentTransientRipple","_runTimeoutOutsideZone","isMostRecentTransientRipple","wasActive","rippleEl","fadeOutAll","fadeOutAllNonPersistent","setupTriggerEvents","_triggerElement","_removeTriggerEvents","_registerEvents","_onTouchStart","_onPointerUp","isFakeMousedown","isSyntheticEvent","_lastTouchStartEvent","rippleDisabled","rippleConfig","terminateOnPointerUp","eventTypes","MAT_RIPPLE_GLOBAL_OPTIONS","globalOptions","_globalOptions","_rippleRenderer","RippleRenderer","_setupTriggerEventsIfEnabled","_trigger","launch","configOrX","MatPseudoCheckbox","MatPseudoCheckboxModule","_uniqueIdCounter","_MatOptionBase","_mostRecentViewValue","_stateChanges","viewValue","_emitSelectionChangeEvent","_getAriaSelected","_getTabIndex","optionIndex","optionsArray","groupCounter","optionOffset","optionHeight","currentScrollPosition","panelHeight","_cellClicked","day_r1","activeDate","_dateSelected","_monthSelectedInYearView","_goToDateInView","_r12","_yearSelectedInMultiYearView","displayValue","compareValue","MatCalendarBody","numCols","activeCell","isRange","cellAspectRatio","previewStart","previewEnd","selectedValueChange","previewChange","_enterHandler","_skipNextFocus","cell","_getCellFromElement","_leaveHandler","startValue","endValue","columnChanges","_firstRowOffset","_cellPadding","_cellWidth","_isActiveCell","rowIndex","colIndex","cellNumber","_focusActiveCell","movePreview","_isRangeStart","isStart","_isRangeEnd","isEnd","_isInRange","isInRange","_isComparisonStart","comparisonStart","comparisonEnd","_isComparisonBridgeStart","previousCell","previousRow","_isComparisonBridgeEnd","_isComparisonEnd","nextCell","nextRow","_isInComparisonRange","_isComparisonIdentical","_isPreviewStart","_isPreviewEnd","_isInPreview","isTableCell","col","rangeEnabled","MatDateSelectionModel","_adapter","_selectionChanged","selectionChanged","updateSelection","_isValidDateInstance","MatSingleDateSelectionModel","MAT_SINGLE_DATE_SELECTION_MODEL_PROVIDER","MAT_DATE_RANGE_SELECTION_STRATEGY","MatMonthView","_dateFormats","_dateAdapter","_rangeStrategy","_rerenderSubscription","selectedChange","_userSelection","activeDateChange","_activeDate","oldActiveDate","validDate","_hasSameMonthAndYear","DateRange","_setRanges","comparisonChange","selectedYear","_getDateInCurrentMonth","_previewStart","_previewEnd","_handleCalendarBodyKeydown","_selectionKeyPressed","_canSelect","_handleCalendarBodyKeyup","_todayDate","_getCellCompareValue","_monthLabel","monthLabel","_firstWeekOffset","_initWeekdays","_createWeekCells","_matCalendarBody","_previewChanged","previewRange","createPreview","narrowWeekdays","longWeekdays","long","narrow","_weekdays","dateNames","_weeks","_shouldEnableDate","cellClasses","dateClass","MatCalendarCell","dateFilter","selectedValue","_rangeStart","_rangeEnd","_isRange","_comparisonRangeStart","_comparisonRangeEnd","MatMultiYearView","yearSelected","isSameMultiYearView","_setSelectedYear","_todayYear","minYearOfPage","activeYear","getActiveOffset","_years","_createCellForYear","_yearSelected","yearsPerPage","_getActiveCell","yearName","_shouldEnableYear","_selectedYear","dateAdapter","year1","year2","startingYear","getStartingYear","euclideanModulo","maxYear","MatYearView","monthSelected","_setSelectedMonth","_monthSelected","normalizedDate","_todayMonth","_getMonthInCurrentYear","_yearLabel","monthNames","_months","_createCellForMonth","_shouldEnableMonth","_isYearAndMonthAfterMaxDate","_isYearAndMonthBeforeMinDate","maxMonth","minYear","minMonth","_selectedMonth","MatDatepickerIntl","calendarLabel","openCalendarLabel","closeCalendarLabel","prevMonthLabel","nextMonthLabel","prevYearLabel","nextYearLabel","prevMultiYearLabel","nextMultiYearLabel","switchToMonthViewLabel","switchToMultiYearViewLabel","formatYearRange","uniqueId","MatCalendarHeader","_intl","_buttonDescriptionId","periodButtonText","maxYearOfPage","minYearName","maxYearName","periodButtonLabel","prevButtonLabel","nextButtonLabel","currentPeriodClicked","previousClicked","nextClicked","previousEnabled","_isSameView","nextEnabled","MatCalendar","_moveFocusOnNextTick","viewChanged","_intlChanges","_startAt","_clampedActiveDate","_currentView","viewChangedResult","_calendarHeaderPortal","headerComponent","focusActiveCell","minDateChange","maxDateChange","_getCurrentViewComponent","updateTodaysDate","normalizedYear","normalizedMonth","monthView","yearView","multiYearView","i7","i8","matDatepickerAnimations","transformPanel","keyframes","fadeInCalendar","datepickerUid","MAT_DATEPICKER_SCROLL_STRATEGY","MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER","_MatDatepickerContentBase","MatDatepickerContent","_globalModel","_rangeSelectionStrategy","intl","_subscriptions","_animationDone","_actionsPortal","_closeButtonText","_model","_animationState","datepicker","touchUi","_calendar","_handleUserSelection","newSelection","selectionFinished","_startExitAnimation","_getSelected","_applyPendingSelection","MatDatepickerBase","_inputStateChanges","_touchUi","xPosition","yPosition","_restoreFocus","openedStream","closedStream","_opened","_focusedElementBeforeOpen","_backdropHarnessClass","datepickerInput","getStartValue","getThemePalette","restoreFocus","_panelClass","_getMinDate","_getMaxDate","_getDateFilter","_setConnectedPositions","_destroyOverlay","_selectYear","_selectMonth","_viewChanged","registerInput","registerActions","removeActions","_openOverlay","_componentRef","completeClose","_forwardContentValues","_dialogLabelId","getOverlayLabelId","isDialog","_getDialogStrategy","_getDropdownStrategy","_getCloseStream","primaryX","secondaryX","primaryY","secondaryY","i9","MatDatepicker","targetElement","MatDatepickerInputBase","dateChange","_validatorOnChange","_cvaOnChange","_valueChangesSubscription","_localeSubscription","_parseValidator","_lastValueValid","matDatepickerParse","_filterValidator","controlValue","_matchesFilter","matDatepickerFilter","_minValidator","matDatepickerMin","_maxValidator","matDatepickerMax","_assignValueProgrammatically","_getValueFromModel","_parentDisabled","_getValidators","_registerModel","_assignValue","_shouldHandleChangeEvent","_isValidValue","_formatValue","MatDatepickerInputEvent","dateInputsHaveChanged","isAltDownArrow","_openPopup","_onInput","lastValueWasValid","hasChanged","_assignValueToModel","MAT_DATEPICKER_VALUE_ACCESSOR","MatDatepickerInput","MAT_DATEPICKER_VALIDATORS","dateFormats","_closedSubscription","matDatepicker","_datepicker","_min","validValue","_max","_dateFilter","wasMatchingValue","modelValue","MAT_INPUT_VALUE_ACCESSOR","MatDatepickerToggleIcon","MatDatepickerToggle","_watchStateChanges","_open","datepickerStateChanged","inputStateChanged","datepickerToggled","ariaDescribedBy","ariaLabelledBy","delayFocusTrap","closeOnNavigation","matDialogAnimations","dialogContainer","animateChild","_MatDialogContainerBase","_interactivityChecker","_animationStateChanged","_elementFocusedBeforeDialogWasOpened","_closeInteractionType","_ariaLabelledBy","_initializeWithAttachedContent","_focusTrap","_recaptureFocus","_containsFocus","_trapFocus","_forceFocus","_focusByCssSelector","elementToFocus","focusedSuccessfully","_focusDialogContainer","previousElement","MatDialogConfig","MatDialogContainer","_onAnimationDone","toState","_onAnimationStart","_containerInstance","_afterOpened","_afterClosed","_beforeClosed","_closeFallbackTimeout","_finishDialogClose","_result","_closeDialogVia","dialogResult","afterOpened","beforeClosed","_getPositionStrategy","interactionType","MAT_DIALOG_DEFAULT_OPTIONS","MAT_DIALOG_SCROLL_STRATEGY","MAT_DIALOG_SCROLL_STRATEGY_PROVIDER","_MatDialogBase","_parentDialog","_dialogRefConstructor","_dialogContainerType","_dialogDataToken","_openDialogsAtThisLevel","_afterAllClosedAtThisLevel","_afterOpenedAtThisLevel","_ariaHiddenElements","afterAllClosed","openDialogs","_getAfterAllClosed","componentOrTemplateRef","_applyConfigDefaults","_attachDialogContainer","_attachDialogContent","_hideNonDialogContentFromAssistiveTechnology","_removeOpenDialog","_closeDialogs","dialogConfig","containerPortal","containerRef","_createInjector","contentRef","userInjector","overlayContainer","siblings","sibling","dialogs","MatDialog","parentDialog","MatDialogRef","MatDialogClose","_dialog","getClosestDialog","proxiedChange","_matDialogClose","_matDialogCloseResult","nextId$1","CDK_ACCORDION","CdkAccordion","_openCloseAllActions","_multi","openAll","CdkAccordionItem","accordion","_expansionDispatcher","_openCloseAllSubscription","expandedChange","_expanded","_removeUniqueSelectionListener","accordionId","expanded","_subscribeToOpenCloseAllActions","CdkAccordionModule","MAT_ACCORDION","EXPANSION_PANEL_ANIMATION_TIMING","matExpansionAnimations","indicatorRotate","bodyExpansion","MatExpansionPanelContent","MAT_EXPANSION_PANEL_DEFAULT_OPTIONS","MatExpansionPanel","_uniqueSelectionDispatcher","_hideToggle","afterExpand","afterCollapse","_inputChanges","_headerId","_bodyAnimationDone","fromState","hideToggle","togglePosition","_togglePosition","_hasSpacing","displayMode","_getExpandedState","_lazyContent","_body","focusedElement","bodyElement","_MatExpansionPanelHeaderMixinBase","MatExpansionPanelHeaderBase","MatExpansionPanelHeader","_parentChangeSubscription","accordionHideToggleChange","expandedHeight","collapsedHeight","_toggle","_isExpanded","_getPanelId","_getTogglePosition","_showToggle","_getHeaderHeight","isExpanded","_keydown","_handleHeaderKeydown","_handleHeaderFocus","MatExpansionPanelDescription","MatExpansionPanelTitle","MatAccordion","_ownHeaders","_headers","FocusKeyManager","_r10","updateOutlineGap","_r16","nextUniqueId$2","MAT_ERROR","MatError","ariaLive","matFormFieldAnimations","transitionMessages","MatFormFieldControl","_MAT_HINT","MatLabel","MatPlaceholder","MAT_PREFIX","MAT_SUFFIX","MatSuffix","_MatFormFieldBase","MAT_FORM_FIELD_DEFAULT_OPTIONS","MatFormField","_outlineGapCalculationNeededImmediately","_outlineGapCalculationNeededOnStable","_showAlwaysAnimate","_subscriptAnimationState","_hintLabel","_hintLabelId","_labelId","_getDefaultFloatLabelState","_animationsEnabled","_hideRequiredMarker","hideRequiredMarker","_shouldAlwaysFloat","_canLabelFloat","hintLabel","_processHints","_explicitFormFieldControl","_controlNonStatic","_controlStatic","_hasFloatingLabel","_connectionContainerRef","_validateControlChild","controlType","_validatePlaceholders","_syncDescribedByIds","_prefixChildren","_suffixChildren","_hintChildren","_errorChildren","_shouldForward","_hasPlaceholder","_placeholderChild","_hasLabel","_labelChildNonStatic","_labelChildStatic","_shouldLabelFloat","shouldLabelFloat","_hideControlPlaceholder","_getDisplayedMessages","_label","_validateHints","userAriaDescribedBy","startHint","hint","endHint","setDescribedByIds","labelEl","outlineStartSelector","outlineGapSelector","gapElements","_isAttachedToDOM","startWidth","gapWidth","startEls","gapEls","containerStart","_getStartEnd","labelChildren","labelStart","labelWidth","outlineGapPadding","ttWindow","literal","MatIconRegistry","_httpClient","_sanitizer","_errorHandler","_svgIconConfigs","_iconSetConfigs","_cachedIconsByUrl","_inProgressUrlFetches","_fontCssClassesByAlias","_resolvers","_defaultFontSetClass","addSvgIconInNamespace","addSvgIconLiteral","addSvgIconLiteralInNamespace","_addSvgIconConfig","SvgIconConfig","addSvgIconResolver","cleanLiteral","getMatIconFailedToSanitizeLiteralError","trustedLiteral","addSvgIconSet","addSvgIconSetInNamespace","addSvgIconSetLiteral","addSvgIconSetLiteralInNamespace","_addSvgIconSetConfig","registerFontClassAlias","classNameForFontAlias","setDefaultFontSetClass","getDefaultFontSetClass","getSvgIconFromUrl","safeUrl","getMatIconFailedToSanitizeUrlError","cachedIcon","cloneSvg","_loadSvgIconFromConfig","getNamedSvgIcon","iconKey","_getSvgFromConfig","_getIconConfigFromResolvers","iconSetConfigs","_getSvgFromIconSetConfigs","getMatIconNameNotFoundError","_svgElementFromConfig","namedIcon","_extractIconWithNameFromAnySet","iconSetFetchRequests","iconSetConfig","_loadSvgIconSetFromConfig","foundIcon","_extractSvgIconFromSet","_fetchIcon","iconSet","iconSource","iconElement","_setSvgAttributes","_toSvgElement","iconConfig","getMatIconNoHttpProviderError","inProgressFetch","configNamespace","svgElement","isSafeUrlWithOptions","_MatIconBase","MAT_ICON_LOCATION","getPathname","funcIriAttributes","funcIriAttributeSelector","funcIriPattern","MatIcon","_iconRegistry","ariaHidden","_inline","_currentIconFetch","svgIcon","_svgIcon","_updateSvgIcon","_clearSvgElement","fontSet","_fontSet","_cleanupFontValue","_updateFontIconClasses","fontIcon","_fontIcon","_splitIconName","cachedElements","_elementsWithExternalReferences","_previousPath","_prependPathToReferences","_usingFontIcon","_setSvgElement","_cacheChildrenWithExternalReferences","layoutElement","childCount","fontSetClass","_previousFontSetClass","_previousFontIconClass","elementsWithFuncIri","elementWithReference","rawName","_svgNamespace","_svgName","MAT_INPUT_INVALID_TYPES","_MatInputBase","mixinErrorState","MatInput","inputValueAccessor","_autofillMonitor","_uid","focused","autofilled","_readonly","_neverEmptyInputTypes","getSupportedInputTypes","_iOSKeyupListener","_inputValueAccessor","_previousNativeValue","_isServer","_isNativeSelect","_isTextarea","_isInFormField","_validateType","_dirtyCheckNativeValue","_dirtyCheckPlaceholder","_focusChanged","isFocused","_previousPlaceholder","_isNeverEmpty","_isBadInput","validity","badInput","selectElement","firstOption","onContainerClick","_isInlineSelect","_r2","matMenuAnimations","transformMenu","fadeInItems","MAT_MENU_CONTENT","MAT_MENU_PANEL","_MatMenuItemBase","MatMenuItem","_parentMenu","_hovered","_focused","_highlighted","_triggersSubmenu","addItem","_checkDisabled","_handleMouseEnter","_setHighlighted","isHighlighted","MAT_MENU_DEFAULT_OPTIONS","overlapTrigger","menuPanelUid","_MatMenuBase","_xPosition","_yPosition","_directDescendantItems","_tabSubscription","_panelAnimationState","_overlapTrigger","panelId","setPositionClasses","previousPanelClass","_previousPanelClass","_updateDirectDescendants","focusedItem","itemsList","manager","itemChanges","_item","parentMenu","focusFirstItem","menuPanel","closest","resetActiveItem","setElevation","elevation","_baseElevation","newElevation","_elevationPrefix","customElevation","_previousElevation","posX","posY","_startAnimation","_resetAnimation","_isAnimating","_allItems","MatMenu","MAT_MENU_SCROLL_STRATEGY","MAT_MENU_SCROLL_STRATEGY_FACTORY_PROVIDER","passiveEventListenerOptions","_MatMenuTriggerBase","_menuItemInstance","_menuOpen","_hoverSubscription","_menuCloseSubscription","_handleTouchStart","_openedBy","menuOpened","onMenuOpen","menuClosed","onMenuClose","_parentMaterialMenu","triggersSubmenu","_deprecatedMatMenuTriggerFor","menu","_menu","_destroyMenu","_checkMenu","_handleHover","menuOpen","toggleMenu","closeMenu","openMenu","_setPosition","_getPortal","lazyContent","menuData","_menuClosingActions","_initMenu","_attached","_setIsMenuOpen","_setMenuElevation","_subscribeToPositions","originFallbackX","overlayFallbackY","originFallbackY","overlayFallbackX","parentClose","_handleMousedown","i3$1","MatMenuTrigger","_MatProgressSpinnerBase","MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS","diameter","BASE_SIZE","viewportRuler","_diameter","trackedDiameters","MatProgressSpinner","_diameters","_spinnerAnimationLabel","_getSpinnerAnimationLabel","_noopAnimations","_forceAnimations","_styleRoot","_attachStyleNode","_strokeWidth","_getCircleRadius","_getViewBox","_getStrokeCircumference","_getStrokeDashOffset","_getCircleStrokeWidth","_getCircleTransformOrigin","currentScale","styleRoot","currentDiameter","diameters","diametersForElement","styleTag","_getAnimationText","strokeCircumference","MAT_RADIO_DEFAULT_OPTIONS","MAT_RADIO_GROUP_CONTROL_VALUE_ACCESSOR","MatRadioGroup","MAT_RADIO_GROUP","_MatRadioGroupBase","_labelPosition","_updateRadioButtonNames","_markRadiosForCheck","_updateSelectedRadioFromValue","_checkSelectedRadioButton","_touch","_radios","radio","MatRadioChange","MatRadioButton","_MatRadioButtonMixinBase","MatRadioButtonBase","_MatRadioButtonBase","radioGroup","_radioDispatcher","_providerOverride","newCheckedState","_setDisabled","_updateTabIndex","_onInputInteraction","groupValueChanged","_previousTabIndex","changeDetector","radioDispatcher","providerOverride","_panelDoneAnimatingStream","matSelectAnimations","transformPanelWrap","SELECT_PANEL_MAX_HEIGHT","MAT_SELECT_SCROLL_STRATEGY","MAT_SELECT_CONFIG","MAT_SELECT_SCROLL_STRATEGY_PROVIDER","_MatSelectMixinBase","MAT_SELECT_TRIGGER","MatSelectTrigger","_MatSelectBase","_parentFormField","_liveAnnouncer","_panelOpen","_compareWith","o1","o2","_triggerAriaLabelledBy","_destroy","_valueId","_overlayPanelClass","_disableOptionCentering","disableOptionCentering","optionSelectionChanges","openedChange","_openedStream","_closedStream","selectionChange","typeaheadDebounceInterval","_typeaheadDebounceInterval","_placeholder","compareWith","_initializeSelection","hasAssigned","_panelDoneAnimating","_initKeyManager","_resetOptions","newAriaLabelledby","_getTriggerAriaLabelledby","_previousControl","_highlightCorrectOption","triggerValue","selectedOptions","_handleOpenKeydown","_handleClosedKeydown","isOpenKey","previouslySelectedOption","selectedOption","hasDeselectedOptions","previouslyFocusedIndex","_onAttached","_overlayDir","_positioningSettled","_getPanelTheme","_selectOptionByValue","_sortValues","_scrollOptionIntoView","changedOrDestroyed","_onSelect","wasSelected","_propagateChanges","sortComparator","valueToEmit","_getChangeEvent","_getAriaActiveDescendant","_ariaDescribedby","MatSelect","_scrollTop","_triggerFontSize","_transformOrigin","_positions","_calculateOverlayScroll","scrollBuffer","maxScroll","itemHeight","_getItemHeight","_triggerRect","fontSize","_calculateOverlayPosition","_calculateOverlayOffsetX","MatSelectChange","viewportSize","paddingWidth","SELECT_MULTIPLE_PANEL_PADDING_X","SELECT_PANEL_PADDING_X","leftOverflow","rightOverflow","_calculateOverlayOffsetY","optionHeightAdjustment","maxOptionsDisplayed","optionOffsetFromPanelTop","_getItemCount","_checkOverlayWithinViewport","topSpaceAvailable","bottomSpaceAvailable","panelHeightTop","panelHeightBottom","totalPanelHeight","_adjustPanelUp","_adjustPanelDown","_getOriginBasedOnOption","distanceBelowViewport","distanceAboveViewport","scrollContainerHeight","selectedOptionOffset","SELECT_ITEM_HEIGHT_EM","MAT_SLIDE_TOGGLE_DEFAULT_OPTIONS","disableToggleValue","MAT_SLIDE_TOGGLE_VALUE_ACCESSOR","MatSlideToggle","_MatSlideToggleBase","toggleChange","_onChangeEvent","MatSlideToggleChange","_MatSlideToggleRequiredValidatorModule","activeEventOptions","MAT_SLIDER_VALUE_ACCESSOR","MatSlider","_MatSliderBase","_invert","_step","_thumbLabel","_tickInterval","_percent","_isSliding","_isActive","_tickIntervalPercent","_sliderDimensions","_dirChangeSubscription","_pointerDown","isTouchEvent","_touchId","sliderHost","getTouchIdForSlider","pointerPosition","getPointerPositionOnPage","_lastPointerEvent","_focusHostElement","_onMouseenter","_bindGlobalEvents","_updateValueFromPosition","_valueOnSlideStart","_emitInputEvent","_pointerMove","_pointerUp","findMatchingTouch","_removeGlobalEvents","_windowBlur","_calculatePercentage","_roundToDecimal","thumbLabel","_blurHostElement","_clamp","_shouldInvertAxis","_isMinValue","_getThumbGap","_getTrackBackgroundStyles","_shouldInvertMouseCoords","_getTrackFillStyles","_getTicksContainerStyles","_getDirection","_getTicksStyles","tickSize","backgroundSize","shouldInvertAxis","side","_getThumbContainerStyles","_getSliderDimensions","_updateTickIntervalPercent","_increment","_onKeyup","isTouch","endEventName","numSteps","clampedValue","exactValue","_calculateValue","closestValue","_createChangeEvent","tickIntervalPercent","trackSize","pixelsPerTick","isSafeNumber","MatSliderChange","_sliderWrapper","announcementMessage","MAX_TIMEOUT","containerInstance","_afterDismissed","_onAction","_dismissedByAction","_onExit","_finishDismiss","dismiss","_durationTimeoutId","dismissWithAction","closeWithAction","_dismissAfter","dismissedByAction","afterDismissed","_onEnter","onAction","SimpleSnackBar","snackBarRef","hasAction","MatSnackBarRef","matSnackBarAnimations","snackBarState","MatSnackBarContainer","snackBarConfig","_announceDelay","_onAnnounce","_assertNotAttached","_applySnackBarClasses","_live","_role","onAnimationEnd","_completeExit","_screenReaderAnnounce","_announceTimeoutId","panelClasses","inertElement","liveElement","_MatSnackBarBase","_breakpointObserver","_parentSnackBar","_defaultConfig","_snackBarRefAtThisLevel","_openedSnackBarRef","_attach","openFromTemplate","simpleSnackBarComponent","_attachSnackBarContainer","snackBarContainerComponent","handsetCssClass","_animateSnackBar","isLeft","i3$2","MatSnackBar","live","parentSnackBar","CdkStepHeader","CdkStepLabel","STEPPER_GLOBAL_OPTIONS","CdkStep","_stepper","stepperOptions","interacted","interactedStream","_editable","_optional","_completedOverride","_customError","_stepperOptions","_displayDefaultIndicatorType","displayDefaultIndicatorType","editable","completed","_getDefaultCompleted","stepControl","_getDefaultError","_stateChanged","_markAsInteracted","_showError","showError","CdkStepper","_sortedHeaders","_linear","_selectedIndex","_orientation","_groupId","_steps","_isValidIndex","_anyControlsInvalidOrPending","_updateSelectedItemIndex","_stepHeader","documentPosition","DOCUMENT_POSITION_FOLLOWING","_layoutDirection","_getStepLabelId","_getStepContentId","_getAnimationDirection","_getIndicatorType","isCurrentStep","_isCurrentStep","_getDefaultIndicatorLogic","_getGuidelineLogic","_getFocusIndex","stepsArray","previouslySelectedIndex","selectedStep","previouslySelectedStep","stepperElement","CdkStepperNext","CdkStepperPrevious","CdkStepperModule","_r19","step_r20","MatStepLabel","MatStepperIntl","optionalLabel","completedLabel","editableLabel","MAT_STEPPER_INTL_PROVIDER","parentIntl","_MatStepHeaderBase","MatStepHeader","_intlSubscription","_stringLabel","_templateLabel","_getIconContext","_getDefaultTextForState","matStepperAnimations","horizontalStepTransition","verticalStepTransition","MatStepperIcon","MatStepContent","MatStep","_errorStateMatcher","customErrorState","MatStepper","_MatProxyStepperBase","MatHorizontalStepper","MatVerticalStepper","animationDone","_iconOverrides","_icons","_stepIsNavigable","MatStepperNext","MatStepperPrevious","PANEL_CLASS","passiveListenerOptions","MAT_TOOLTIP_SCROLL_STRATEGY","MAT_TOOLTIP_SCROLL_STRATEGY_FACTORY_PROVIDER","SCROLL_THROTTLE_MS","MAT_TOOLTIP_DEFAULT_OPTIONS","showDelay","hideDelay","touchendHideDelay","_MatTooltipBase","_ariaDescriber","_viewInitialized","_pointerExitEventsInitialized","_cssClassPrefix","_showDelay","_hideDelay","touchGestures","_message","_passiveListeners","_updatePosition","_tooltipInstance","_setupPointerEnterEventsIfNeeded","_mouseLeaveHideDelay","_isTooltipVisible","_updateTooltipMessage","tooltipClass","_tooltipClass","_setTooltipClass","_touchstartTimeout","_showTimeoutId","_hideTimeoutId","_tooltipComponent","afterHidden","scrollableAncestors","_updateCurrentPositionClass","_handleBodyInteraction","disableTooltipInteractivity","_getOrigin","_addOffset","isLtr","originPosition","_invertPosition","overlayPosition","_currentPosition","classPrefix","_platformSupportsMouseEvents","_setupPointerExitEventsIfNeeded","_disableNativeGesturesIfNecessary","LONGPRESS_DELAY","_addListeners","exitListeners","newTarget","_wheelListener","touchendListener","elementUnderPointer","elementFromPoint","gestures","userSelect","msUserSelect","webkitUserSelect","draggable","webkitUserDrag","touchAction","webkitTapHighlightColor","MatTooltip","scrollDispatcher","ariaDescriber","_TooltipComponentBase","_visibility","_closeOnInteraction","_isVisible","_onHide","_animationsDisabled","_toggleVisibility","_handleMouseLeave","_onShow","_handleAnimationEnd","_showAnimation","_hideAnimation","_finalizeAnimation","toVisible","_tooltip","showClass","hideClass","_isHandset","NG_DEV_MODE$1","NoopAnimationPlayer","ɵAnimationGroupPlayer","driver","normalizer","preStyles","postStyles","normalizedKeyframes","previousOffset","previousKeyframe","kf","isSameOffset","normalizedKeyframe","normalizedProp","normalizePropertyName","normalizeStyleValue","LINE_START","animationFailed","copyAnimationEvent","makeAnimationEvent","triggerName","separatorPos","_contains","elm1","elm2","_documentElement","getParentElement","_CACHED_BODY","_IS_WEBKIT","getBodyNode","containsVendorPrefix","camelProp","containsElement","invokeQuery","NoopAnimationDriver","validateStyleProperty","matchesElement","_selector","computeStyle","easing","previousPlayers","scrubberAccessRequested","AnimationDriver","ENTER_CLASSNAME","LEAVE_CLASSNAME","NG_TRIGGER_CLASSNAME","NG_TRIGGER_SELECTOR","NG_ANIMATING_CLASSNAME","NG_ANIMATING_SELECTOR","_convertTimeValueToMS","allowNegativeValues","invalidTimingValue","delayMatch","easingVal","containsErrors","negativeStepValue","negativeDelayValue","parseTimeExpression","readPrototype","copyObj","styleAttrValue","getStyleAttributeString","camelCaseToDashCase","formerStyles","dashCaseToCamelCase","writeStyleAttribute","PARAM_REGEX","varName","localVal","invalidParamValue","DASH_CASE_REGEXP","visitor","visitTrigger","visitState","visitTransition","visitSequence","visitGroup","visitAnimate","visitKeyframes","visitStyle","visitReference","visitAnimateChild","visitAnimateRef","visitQuery","visitStagger","invalidNodeType","transitionValue","expressions","eventStr","invalidTransitionAlias","parseAnimationAlias","invalidExpression","makeLambdaFromStates","parseInnerTransitionStr","TRUE_BOOLEAN_VALUES","FALSE_BOOLEAN_VALUES","lhs","rhs","LHS_MATCH_BOOLEAN","RHS_MATCH_BOOLEAN","lhsMatch","rhsMatch","SELF_TOKEN_REGEX","warnings","AnimationAstBuilderVisitor","_driver","AnimationAstBuilderContext","_resetContextStyleTimingState","ast","visitDslNode","normalizeAnimationEntry","unsupportedCSSPropertiesFound","currentQuerySelector","collectedStyles","queryCount","depCount","states","transitions","invalidTrigger","stateDef","invalidDefinition","styleAst","astParams","containsDynamicStyles","missingSubs","stylesObj","extractStyleParams","iteratorToArray","metadataName","invalidState","missingSubsArr","matchers","parseTransitionExpr","normalizeAnimationOptions","furthestTime","innerAst","timingAst","makeTimingAst","resolveTiming","dynamic","constructTimingAst","currentAnimateTimings","styleMetadata","newStyleData","_styleAst","isEmptyStep","_makeStyleAst","_validateStyleAst","styleTuple","invalidStyleValue","collectedEasing","styleData","styleMap","endTime","startTime","tuple","collectedEntry","updateCollectedStyle","firstStart","firstEnd","secondStart","secondEnd","invalidParallelAnimation","invalidStyleParams","validateStyleParams","invalidKeyframes","totalKeyframesWithOffsets","offsets","offsetsOutOfOrder","keyframesOutOfRange","offsetVal","consumeOffset","invalidOffset","keyframeOffsetsOutOfOrder","generatedOffset","keyframesMissingOffsets","animateDuration","durationUpToThisFrame","parentSelector","currentQuery","includeSelf","hasAmpersand","normalizeSelector","getOrSetAsInMap","originalSelector","invalidStagger","currentTransition","normalizeParams","preStyleProps","postStyleProps","subTimeline","_map","existingInstructions","ENTER_TOKEN_REGEX","LEAVE_TOKEN_REGEX","rootElement","enterClassName","leaveClassName","startingStyles","finalStyles","subInstructions","AnimationTimelineBuilderVisitor","buildKeyframes","ElementInstructionMap","AnimationTimelineContext","currentTimeline","setStyles","timelines","containsAnimation","lastRootTimeline","allowOnlyTimelineStyles","createTimelineInstruction","elementInstructions","innerContext","createSubContext","_visitSubInstructions","transformIntoNewTimeline","resolveTimingValue","instruction","instructionTimings","appendInstructionToTimeline","subContextCount","snapshotCurrentStyles","DEFAULT_NOOP_PREVIOUS_NODE","delayNextStep","applyStylesToKeyframe","innerTimelines","mergeTimelineCollectedStyles","_visitTiming","interpolateParams","incrementTime","getCurrentStyleProperties","forwardFrame","applyEmptyStep","innerTimeline","forwardTime","elms","currentQueryTotal","sameElementTimeline","parentContext","currentStaggerTime","startingTime","_enterClassName","_leaveClassName","initialTimeline","TimelineBuilder","skipIfExists","newOptions","optionsToUpdate","newParams","paramsToUpdate","_copyOptions","oldParams","newTime","updatedTimings","builder","SubTimelineBuilder","stretchStartingKeyframe","invalidQuery","_elementTimelineStylesLookup","_previousKeyframe","_currentKeyframe","_keyframes","_styleSummary","_pendingStyles","_backFill","_currentEmptyStepKeyframe","_localTimelineStyles","_globalTimelineStyles","_loadKeyframe","hasPreStyleStep","_updateStyle","allStyles","allProperties","copyStyles","flattenStyles","getFinalKeyframe","details0","details1","finalKeyframes","keyframe","finalKeyframe","preProps","postProps","kf0","kf1","_stretchStartingKeyframe","newKeyframes","startingGap","newFirstKeyframe","oldFirstKeyframe","roundOffset","decimalPoints","mult","AnimationStyleNormalizer","userProvidedProperty","normalizedProperty","strVal","DIMENSIONAL_PROP_MAP","valAndSuffixMatch","invalidCssUnitValue","makeBooleanMap","isRemovalTransition","fromStyles","toStyles","queriedElements","EMPTY_OBJECT","_triggerName","_stateStyles","currentState","matchFns","oneOrMoreTransitionsMatch","buildStyles","stateName","backupStateStyler","stateStyler","backupStyles","nextOptions","skipAstBuild","transitionAnimationParams","currentStateStyles","nextAnimationParams","nextStateStyles","preStyleMap","postStyleMap","isRemoval","animationOptions","buildAnimationTimelines","createTransitionInstruction","queriedElementsList","defaultParams","combinedParams","styleObj","_normalizer","transitionFactories","AnimationStateStyles","balanceProperties","AnimationTransitionFactory","fallbackTransition","createFallbackTransition","containsQueries","matchTransition","matchStyles","EMPTY_INSTRUCTION_MAP","bodyNode","_animations","_playersById","buildAnimationAst","registerFailed","_buildPlayer","normalizeKeyframes","autoStylesMap","missingOrDestroyedAnimation","createAnimationFailed","optimizeGroupPlayer","_getPlayer","missingPlayer","baseEvent","listenOnPlayer","QUEUED_CLASSNAME","DISABLED_CLASSNAME","EMPTY_PLAYER_ARRAY","NULL_REMOVAL_STATE","namespaceId","setForRemoval","setForMove","hasAnimation","removedBeforeQueried","NULL_REMOVED_QUERIED_STATE","REMOVAL_FLAG","isObj","normalizeTriggerValue","absorbOptions","VOID_VALUE","DEFAULT_STATE_VALUE","StateValue","_engine","_triggers","_elementListeners","_hostClassName","phase","missingTrigger","missingEvent","isTriggerEventValid","unsupportedTriggerEvent","triggersWithStates","statesByElement","afterFlush","_getTrigger","unregisteredTrigger","defaultToFallback","TransitionAnimationPlayer","k1","k2","objEquals","reportError","eraseStyles","playersOnElement","playersByElement","queued","isFallbackTransition","totalQueuedPlayers","stateMap","clearElementCache","elementPlayers","_signalRemovalForInnerTriggers","fetchNamespacesByElement","triggerLeaveAnimation","afterFlushAnimationsDone","destroyAfterComplete","triggerStates","previousTriggersValues","markElementAsRemoved","processLeaveNode","prepareLeaveAnimationListeners","elementStates","visitedTriggers","removeNode","engine","childElementCount","containsPotentialParentTransition","totalAnimations","currentPlayers","playersByQueriedElement","removalFlag","destroyInnerAnimations","_onRemovalComplete","insertNode","drainQueuedTransitions","microtaskId","markedForDestroy","elementContainsData","containsData","newHostElements","disabledNodes","_namespaceLookup","_namespaceList","_flushFns","_whenQuietFns","namespacesByHostElement","collectedEnterElements","collectedLeaveElements","onRemovalComplete","queuedPlayers","createNamespace","AnimationTransitionNamespace","_balanceNamespaceList","collectEnterElement","namespaceList","ancestorNs","registerTrigger","_fetchNamespace","nsId","isElementNode","markElementAsDisabled","hostNS","_buildInstruction","subTimelines","skipBuildAst","containerElement","destroyActiveAnimationsForElement","finishActiveQueriedAnimationOnElement","whenRenderingDone","cleanupFns","_flushAnimations","quietFns","triggerTransitionsFailed","skippedPlayers","skippedPlayersMap","queuedInstructions","allPreStyleElements","allPostStyleElements","disabledElementsSet","nodesThatAreDisabled","allTriggerElements","enterNodeMap","buildRootMap","enterNodeMapIds","allLeaveNodes","mergedLeaveNodes","leaveNodesWithoutAnimations","leaveNodeMapIds","leaveNodeMap","allPlayers","erroneousTransitions","nodeIsOrphaned","stringMap","setVal","transitionFailed","allPreviousPlayersMap","animationElementMap","_beforeAnimationBuild","_getPreviousPlayers","prevPlayer","replaceNodes","replacePostStylesAsPre","postStylesMap","cloakAndComputeStyles","preStylesMap","pre","rootPlayers","subPlayers","NO_PARENT_ANIMATION_ELEMENT_DETECTED","overrideTotalTime","parentWithAnimation","parentsToAdd","detectedParent","innerPlayer","_buildAnimation","setRealPlayer","parentPlayers","playersForElement","syncPlayerEvents","queriedPlayerResults","queriedInnerElements","queriedPlayers","activePlayers","removeNodesAfterAnimationDone","isQueriedElement","toStateValue","queriedElementPlayers","isRemovalAnimation","targetNameSpaceId","targetTriggerName","timelineInstruction","realPlayer","getRealPlayer","allQueriedPlayers","allConsumedElements","allSubElements","allNewPlayers","finalPlayers","_flattenGroupPlayersRecur","flattenGroupPlayers","wrappedPlayer","currentValues","deleteOrUnsetInMap","_player","_containsRealPlayer","_queuedCallbacks","_queueEvent","valuesMap","elementPropsMap","defaultStyle","cloakVals","cloakElement","failedElements","roots","rootMap","nodeSet","localRootMap","getRoot","postEntry","preEntry","_triggerCache","_transitionEngine","TransitionAnimationEngine","_timelineEngine","TimelineAnimationEngine","componentId","triggerBuildFailed","AnimationTrigger","buildTrigger","onInsert","disableAnimations","parseTimelineCommand","eventPhase","SpecialCasedStyles","_startStyles","_endStyles","initialStyles","initialStylesByElement","_initialStyles","isNonAnimatableStyle","_specialStyles","currentSnapshot","_duration","_preparePlayerBeforeStart","domPlayer","_triggerWebAnimation","_finalKeyframe","_resetDomPlayerState","playerOptions","previousStyles","previousWebAnimationPlayers","WebAnimationsPlayer","allowPreviousPlayerStylesMerge","previousStyleProps","startingKeyframe","missingStyleProps","balancePreviousStylesIntoKeyframes","specialStyles","startStyles","endStyles","filterNonAnimatableStyles","packageNonAnimatableStyles","BrowserAnimationBuilder","AnimationBuilder","rootRenderer","_nextAnimationId","typeData","issueAnimationCommand","BrowserAnimationFactory","AnimationFactory","RendererAnimationPlayer","_command","_listen","DISABLE_ANIMATIONS_FLAG","AnimationRendererFactory","_currentId","_microtaskId","_animationCallbacksBuffer","_rendererCache","_cdRecurDepth","BaseAnimationRenderer","animationTriggers","AnimationRenderer","_scheduleCountTask","scheduleListenerCallback","newChild","refChild","oldChild","selectorOrNode","preserveContent","resolveElementFromTarget","dotIndex","parseTriggerCallbackName","InjectableAnimationEngine","ɵAnimationEngine","SHARED_ANIMATION_PROVIDERS","ɵAnimationStyleNormalizer","ɵWebAnimationsStyleNormalizer","ɵDomRendererFactory2","BROWSER_ANIMATIONS_PROVIDERS","ɵWebAnimationsDriver","BROWSER_NOOP_ANIMATIONS_PROVIDERS","ɵNoopAnimationDriver","ɵDomAdapter","supportsDOMEvents","GenericBrowserDomAdapter","ɵsetRootDomAdapter","BrowserDomAdapter","onAndCancel","getDefaultDocument","createHtmlDocument","isShadowRoot","DocumentFragment","baseElement","getBaseElementHref","urlParsingNode","pathName","relativePath","resetBaseElement","getCookie","TRANSITION_ID","SERVER_TRANSITION_PROVIDERS","transitionId","dom","setTestabilityGetter","BrowserGetTestability","ɵglobal","testabilities","didWork","decrement","didWork_","whenAllStable","BrowserXhr","EVENT_MANAGER_PLUGINS","EventManager","_eventNameToPlugin","_plugins","plugin","_findPluginFor","addGlobalEventListener","getZone","SharedStylesHost","_stylesSet","addStyles","onStylesAdded","getAllStyles","DomSharedStylesHost","_hostNodes","_addStylesToHost","styleNodes","styleEl","addHost","hostNode","removeHost","styleNode","NAMESPACE_URIS","math","COMPONENT_REGEX","compId","eventHandler","allowDefaultBehavior","DomRendererFactory2","sharedStylesHost","rendererByCompId","defaultRenderer","DefaultDomRenderer2","EmulatedEncapsulationDomRenderer2","applyToHost","ShadowDomRenderer","decoratePreventDefault","contentAttr","componentShortId","shimContentAttribute","hostAttr","shimHostAttribute","hostEl","nodeOrShadowRoot","DomEventsPlugin","EventManagerPlugin","MODIFIER_KEYS","_keyMap","Del","Esc","Left","Right","Up","Down","Menu","Scroll","Win","_chromeNumKeyPadMap","MODIFIER_KEY_GETTERS","alt","KeyEventsPlugin","parseEventName","parsedEvent","outsideHandler","eventCallback","fullKey","domEventName","_normalizeKey","modifierName","keyIdentifier","getEventKey","modifierGetter","getEventFullKey","platformBrowser","ɵPLATFORM_BROWSER_ID","makeCurrent","ɵsetDocument","BROWSER_MODULE_PROVIDERS","ɵINJECTOR_SCOPE","XhrFactory","parentModule","Meta","_dom","addTag","forceCreation","_getOrCreateElement","addTags","getTag","attrSelector","getTags","updateTag","_parseSelector","_setMetaElementAttributes","removeTag","removeTagElement","_containsAttributes","_getMetaKeyMap","META_KEYS_MAP","createMeta","httpEquiv","newTitle","createTitle","DomSanitizer","DomSanitizerImpl","ɵallowSanitizationBypassAndThrow","ɵunwrapSafeValue","ɵ_sanitizeHtml","ɵgetSanitizationBypassType","ɵ_sanitizeUrl","ɵbypassSanitizationTrustHtml","bypassSecurityTrustStyle","ɵbypassSanitizationTrustStyle","bypassSecurityTrustScript","ɵbypassSanitizationTrustScript","ɵbypassSanitizationTrustUrl","ɵbypassSanitizationTrustResourceUrl","domSanitizerImplFactory","RouterEvent","navigationTrigger","restoredState","shouldActivate","routeConfig","routerEvent","PRIMARY_OUTLET","ParamsAsMap","NAVIGATION_CANCELING_ERROR","segmentGroup","pathMatch","hasChildren","posParams","segment","consumed","equalArraysOrString","aSorted","bSorted","pathCompareMap","exact","containee","matrixParams","equalPath","matrixParamsMatch","numberOfChildren","equalSegmentGroups","subset","containsSegmentGroup","paramCompareMap","shallowEqual","ignored","containsSegmentGroupHelper","containeePaths","containerPaths","containeeSegment","_queryParamMap","convertToParamMap","DEFAULT_SERIALIZER","serializePaths","parameterMap","_parameterMap","serializePath","UrlParser","UrlTree","parseRootSegment","parseQueryParams","parseFragment","tree","serializeSegment","strParams","encodeUriQuery","serializeQueryParams","encodeUriFragment","DefaultUrlSerializer","primary","childOutlet","mapChildrenIntoArray","encodeUriString","encodeUriSegment","serializeMatrixParams","SEGMENT_RE","QUERY_PARAM_RE","QUERY_PARAM_VALUE_RE","consumeOptional","peekStartsWith","UrlSegmentGroup","parseChildren","parseQueryParam","parseSegment","parseParens","matchSegments","UrlSegment","parseMatrixParams","parseParam","valueMatch","matchQueryParams","matchUrlQueryParamValue","decodedKey","decodeQuery","decodedVal","allowPrimary","outletName","_root","pathFromRoot","findNode","findPath","outlet","Tree","setRouterState","urlTree","ActivatedRouteSnapshot","RouterStateSnapshot","TreeNode","createEmptyStateSnapshot","emptyUrl","emptyParams","emptyData","emptyQueryParams","ActivatedRoute","RouterState","futureSnapshot","_futureSnapshot","_routerState","_paramMap","paramsInheritanceStrategy","inheritingStartingFrom","_resolvedData","flattenInherited","urlSegment","lastPathIndex","_urlSegment","_lastPathIndex","serializeNode","nextSnapshot","shallowEqualArrays","equalUrlParams","equalSegments","equalParamsAndUrlSegments","routeReuseStrategy","prevState","shouldReuseRoute","createNode","createOrReuseChildren","shouldAttach","detachedRouteHandle","retrieve","createActivatedRoute","outlets","segmentPath","oldRoot","oldSegmentGroup","newSegmentGroup","qp","newRoot","replaceSegment","oldSegment","newSegment","isAbsolute","numberOfDoubleDots","commands","isMatrixParams","cmdWithOutlet","isCommandWithOutlets","toRoot","processChildren","updateSegmentGroupChildren","currentCommandIndex","currentPathIndex","noMatch","pathIndex","commandIndex","prefixedWith","slicedCommands","createNewSegmentGroup","getOutlets","updateSegmentGroup","createNewSegmentChildren","futureState","currState","forwardEvent","parentContexts","futureRoot","currRoot","deactivateChildRoutes","advanceActivatedRoute","activateChildRoutes","futureNode","currNode","contexts","nodeChildrenAsMap","futureChild","childOutletName","deactivateRoutes","childName","deactivateRouteAndItsChildren","future","getContext","shouldDetach","detachAndStoreRouteSubtree","deactivateRouteAndOutlet","onOutletDeactivated","attachRef","activateRoutes","ActivationEnd","ChildActivationEnd","getOrCreateContext","stored","onOutletReAttached","_loadedConfig","parentLoadedConfig","cmpFactoryResolver","activateWith","INITIAL_VALUE","isPending","innerAcc","isUrlTree","ChildrenOutletContexts","onChildOutletCreated","onChildOutletDestroyed","OutletContext","RouterOutlet","_activatedRoute","activateEvents","deactivateEvents","attachEvents","detachEvents","isActivated","activatedRoute","activatedRouteData","cmp","childContexts","OutletInjector","ɵEmptyOutletComponent","parentPath","validateNode","getFullPath","fullPath","validateConfig","currentRoute","standardizeConfig","sortedConfig","getOutlet","noMatch$1","consumedSegments","remainingSegments","positionalParamSegments","defaultUrlMatcher","slicedSegments","emptyPathMatch","containsEmptyPathMatchesWithNamedOutlets","primarySegment","_sourceSegment","_segmentIndexShift","createChildrenForEmptyPaths","containsEmptyPathMatches","addEmptyPathsToChildrenIfNeeded","rawSegment","NoMatch$1","newTree","AbsoluteRedirect","configLoader","urlSerializer","allowRedirects","splitGroup","rootSegmentGroup","urlTrees$","expandSegmentGroup","createUrlTree","squashSegmentGroup","noMatchError","mapped$","rootCandidate","expandChildren","expandSegment","childOutlets","sortedRoutes","sortByMatchingOutlets","expandedChild","takeLast","last$1","expanded$","expandSegmentAgainstRoute","noLeftoversInUrl","isImmediateMatch","matchSegmentAgainstRoute","expandSegmentAgainstRouteUsingRedirect","expandWildCardWithParamsAgainstRouteUsingRedirect","expandRegularSegmentAgainstRouteUsingRedirect","applyRedirectCommands","absoluteRedirect","lineralizeSegments","newSegments","rawSegmentGroup","cfg","childConfig$","getChildConfig","routerConfig","childModule","childConfig","splitSegmentGroup","matchedOnOutlet","LoadedRouterConfig","runCanLoadGuards","shouldLoadResult","navigationCancelingError","canLoadFails","canLoad","canLoadObservables","injectionToken","guardVal","isCanLoad","wrapIntoObservable","prioritizedGuardValue","applyRedirectCreatreUrlTree","createSegmentGroup","createQueryParams","redirectToParams","actualParams","updatedSegments","createSegments","redirectToSegments","actualSegments","findPosParam","findOrReturn","redirectToUrlSegment","newChildren","childCandidate","mergeTrivialChildren","getChildRouteGuards","getClosestLoadedConfig","futurePath","checks","canDeactivateChecks","canActivateChecks","prevChildren","shouldRun","shouldRunGuardsAndResolvers","runGuardsAndResolvers","CanActivate","CanDeactivate","getRouteGuards","rootComponentType","recognize","processSegmentGroup","freeze","routeState","inheritParamsAndData","routeNode","inheritedParamsDataResolve","processSegment","outletChildren","mergedChildren","mergeEmptyPathMatches","sortActivatedRouteSnapshots","processSegmentAgainstRoute","getData","getSourceSegmentGroup","getPathIndexShift","getResolve","mergedNodes","hasEmptyPathConfig","duplicateEmptyPathNode","resultNode","mergedNode","nextResult","detachedTree","ROUTES","compiler","onLoadStartListener","onLoadEndListener","_loader$","loadRunner","moduleFactory$","loadModuleFactory","shouldProcessUrl","extract","newUrlPart","wholeUrl","runExtras","exactMatchOptions","subsetMatchOptions","Router","rootContexts","lastSuccessfulNavigation","currentNavigation","disposed","navigationId","currentPageId","isNgZoneEnabled","defaultErrorHandler","malformedUriErrorHandler","defaultMalformedUriErrorHandler","navigated","lastSuccessfulId","beforePreactivation","defaultRouterHook","afterPreactivation","urlHandlingStrategy","DefaultUrlHandlingStrategy","DefaultRouteReuseStrategy","onSameUrlNavigation","urlUpdateStrategy","canceledNavigationResolution","ɵConsole","resetConfig","currentUrlTree","createEmptyUrlTree","rawUrlTree","browserUrlTree","RouterConfigLoader","RouteConfigLoadStart","RouteConfigLoadEnd","createEmptyState","targetPageId","currentRawUrl","extractedUrl","rawUrl","extras","targetSnapshot","currentRouterState","targetRouterState","guards","guardsResult","navigations","setupNavigations","processNavigations","browserPageId","ɵrouterPageId","eventsSubject","initialUrl","previousNavigation","urlTransition","isBrowserTriggeredNavigation","serializeUrl","ApplyRedirects","applyRedirects$1","applyRedirects","finalUrl","Recognizer","newObservableError","NoMatch","recognize$1","skipLocationChange","setBrowserUrl","routesRecognized","navStart","switchTap","appliedUrlTree","guardsStart","GuardsCheckStart","getAllRouteGuards","futureRSS","currRSS","currARS","canDeactivate","canDeactivateObservables","isCanDeactivate","runCanDeactivate","runCanDeactivateChecks","isBoolean","ChildActivationStart","fireChildActivationStart","ActivationStart","fireActivationStart","futureARS","canActivateChildGuardsMapped","canActivateChildGuards","canActivateChild","getCanActivateChild","guardsMapped","isCanActivateChild","runCanActivateChild","canActivateObservables","isCanActivate","runCanActivate","runCanActivateChecks","checkGuards","guardsEnd","GuardsCheckEnd","restoreHistory","cancelNavigationTransition","resolveStart","ResolveStart","dataResolved","canActivateChecksResolved","getDataKeys","getResolver","resolveNode","resolvedData","runResolve","resolveData","resolveEnd","ResolveEnd","createRouterState","ActivateRoutes","isNavigationCancelingError","redirecting","navCancel","NavigationCancel","mergedTree","scheduleNavigation","navError","NavigationError","resetRootComponentType","setTransition","initialNavigation","setUpLocationChangeListener","locationSubscription","stateCopy","parseUrl","getCurrentNavigation","navigationExtras","preserveFragment","removeEmptyProps","nav","Navigation","cmd","cmdIdx","urlPart","partIndex","computeNavigation","startingPosition","Position","createPositionApplyingDoubleDots","findStartingPosition","validateCommands","matchOptions","containsTree","priorPromise","generateNgRouterState","restoringFromCaughtError","targetPagePosition","resetState","resetUrlToCurrentUrlTree","routerPageId","RouterLink","tabIndexAttribute","onChanges","setTabIndexIfNotOnNativeEl","newTabIndex","routerLink","attrBoolValue","RouterLinkWithHref","locationStrategy","updateTargetUrlAndHref","preload","RouterPreloader","preloadingStrategy","onEndLoad","setUpPreloading","processRoutes","preloadConfig","PreloadingStrategy","RouterScroller","viewportScroller","lastId","lastSource","restoredId","routerEventsSubscription","createScrollEvents","scrollEventsSubscription","consumeScrollEvents","scheduleScrollEvent","ROUTER_CONFIGURATION","ROUTER_FORROOT_GUARD","ROUTER_PROVIDERS","UrlSerializer","assignExtraOptionsToRouter","enableTracing","groupEnd","NoPreloading","NgProbeToken","provideRoutes","provideForRootGuard","createRouterScroller","routerNgProbeToken","RouterInitializer","getAppInitializer","ROUTER_INITIALIZER","getBootstrapListener","provideRouterInitializer","scrollOffset","platformLocationStrategy","useHash","initNavigation","resultOfPreactivationDone","appInitializer","bootstrapListener","bootstrappedComponentRef","preloader","routerScroller","_addComponent","automaticDataCollectionEnabled","checkDestroyed","removeApp","deleteApp","_getService","_DEFAULT_ENTRY_NAME","isInitialized","getComponent","instantiationMode","clearInstance","_addOrOverwriteComponent","firebase$1","firebaseAppImpl","initializeApp","rawConfig","modularAPIs","appCompat","onLog","componentName","componentNameWithoutCompat","serviceNamespace","appArg","serviceProps","serviceFxn","multipleInstances","useAsService","App","createFirebaseNamespaceCore","FirebaseAppImpl","createFirebaseNamespace","extendNamespace","createSubscribe","registerCoreComponents","getPlatformInfoString","getProviders","isVersionServiceProvider","logString","name$o","DEFAULT_ENTRY_NAME","PLATFORM_LOG_STRING","_apps","_components","addComponent","addOrOverwriteComponent","heartbeatController","triggerHeartbeat","_isDeleted","_automaticDataCollectionEnabled","isDeleted","ComponentContainer","newApp","libraryKeyOrName","libraryMismatch","versionMismatch","warning","logCallback","setUserLogHandler","idbGetError","heartbeatObject","_heartbeatsCache","HeartbeatStorageImpl","_heartbeatsCachePromise","platformLogger","getUTCDateString","lastSentHeartbeatDate","heartbeats","singleDateHeartbeat","hbTimestamp","STORED_HEARTBEAT_RETENTION_MAX_MILLIS","overwrite","heartbeatsToSend","unsentEntries","heartbeatsCache","maxSize","heartbeatEntry","countBytes","extractHeartbeatsForHeader","headerString","_canUseIndexedDBPromise","runIndexedDBEnvironmentCheck","readHeartbeatsFromIndexedDB","heartbeatsObject","existingHeartbeatsObject","writeHeartbeatsToIndexedDB","PlatformLoggerServiceImpl","HeartbeatServiceImpl","instanceFactory","onInstanceCreated","instancesDeferred","instancesOptions","onInitCallbacks","normalizedIdentifier","normalizeInstanceIdentifier","shouldAutoInitialize","getOrInitializeService","setComponent","isComponentEager","instanceDeferred","isComponentSet","existingCallbacks","existingInstance","invokeOnInitCallbacks","Provider","DEBUG","VERBOSE","INFO","WARN","SILENT","levelStringToEnum","verbose","silent","defaultLogLevel","ConsoleMethod","defaultLogHandler","logType","_logLevel","_logHandler","_userLogHandler","logHandler","userLogHandler","customLogLevel","maxAge","STORE_DEVTOOLS_CONFIG","INITIAL_OPTIONS","DEFAULT_NAME","optionsInput","DEFAULT_OPTIONS","noMonitor","actionSanitizer","stateSanitizer","logOnly","autoPause","lock","persist","export","import","jump","reorder","PERFORM_ACTION","REFRESH","RESET","ROLLBACK","COMMIT","SWEEP","TOGGLE_ACTION","SET_ACTIONS_ACTIVE","JUMP_TO_STATE","JUMP_TO_ACTION","IMPORT_STATE","LOCK_CHANGES","PAUSE_RECORDING","actionId","nextLiftedState","liftedState","computedStates","currentStateIndex","actionsById","nextActionId","PerformAction","sanitizedActions","actionIdx","sanitizeAction","computedState","sanitizeState","stateIdx","actionsSafelist","actionsBlocklist","safelist","blocklist","filteredStagedActionIds","filteredActionsById","filteredComputedStates","stagedActionIds","liftedAction","isActionFiltered","blockedlist","predicateMatch","safelistMatch","escapeRegExp","blocklistMatch","INIT","RECOMPUTE","RECOMPUTE_ACTION","nextError","minInvalidatedStateIndex","committedState","skippedActionIds","isPaused","nextComputedStates","lastIncludedActionId","previousEntry","previousState","previousError","shouldSkip","computeNextEntry","initialCommittedState","monitorReducer","monitorState","liftAction","initialLiftedState","excess","idsToDelete","commitChanges","actionIds","difference","lastState","commitExcessActions","recomputeStates","UPDATE","DevtoolsDispatcher","ActionsSubject","ExtensionActionTypes","START","DISPATCH","STOP","ACTION","REDUX_DEVTOOLS_EXTENSION","DevtoolsExtension","devtoolsExtension","dispatcher","createActionStreams","unliftState","shouldFilterActions","sanitizedState","sanitizedAction","sendToReduxDevtools","extensionConnection","sanitizedLiftedState","sanitizeActions","sanitizeStates","getExtensionConfig","createChangesObservable","changes$","start$","stop$","liftedActions$","unwrapAction","actionsUntilStop$","liftedUntilStop$","eval","extensionOptions","StoreDevtools","reducers$","scannedActions","initialState","liftedInitialState","liftInitialState","liftReducer","liftReducerWith","liftedAction$","liftedReducer$","liftedStateSubject","liftedStateSubscription","withLatestFrom","reducedLiftedState","filterLiftedState","unliftedAction","extensionStartSubscription","liftedState$","state$","stateSubscription","performAction","Refresh","Reset","rollback","Rollback","sweep","Sweep","toggleAction","ToggleAction","jumpToAction","JumpToAction","jumpToState","JumpToState","importState","ImportState","lockChanges","LockChanges","pauseRecording","PauseRecording","INITIAL_STATE","IS_EXTENSION_OR_MONITOR_PRESENT","extensionKey","devtools","createIsExtensionOrMonitorPresent","createReduxDevtoolsExtension","createConfig","StateObservable","createStateObservable","ReducerManagerDispatcher","REGISTERED_ACTION_TYPES","defineType","_as","ACTIONS_SUBJECT_PROVIDERS","_ROOT_STORE_GUARD","_INITIAL_STATE","REDUCER_FACTORY","_REDUCER_FACTORY","INITIAL_REDUCERS","_INITIAL_REDUCERS","STORE_FEATURES","_STORE_REDUCERS","_FEATURE_REDUCERS","_FEATURE_CONFIGS","_STORE_FEATURES","_FEATURE_REDUCERS_TOKEN","FEATURE_REDUCERS","USER_PROVIDED_META_REDUCERS","META_REDUCERS","_RESOLVED_META_REDUCERS","USER_RUNTIME_CHECKS","_USER_RUNTIME_CHECKS","ACTIVE_RUNTIME_CHECKS","_ACTION_TYPE_UNIQUENESS_CHECK","reducerKeys","finalReducers","finalReducerKeys","previousStateForKey","nextStateForKey","composed","reducerFactory","ReducerManager","currentReducers","addFeature","addFeatures","reducerDict","createFeatureReducerFactory","createReducerFactory","addReducers","removeFeature","removeFeatures","removeReducers","addReducer","updateReducers","removeReducer","featureKey","featureKeys","keyToRemove","omit","REDUCER_MANAGER_PROVIDERS","ReducerObservable","SCANNED_ACTIONS_SUBJECT_PROVIDERS","State","reducer$","stateAndAction$","actionsOnQueue$","reduceState","stateActionPair","STATE_PROVIDERS","Store","actionsObserver","reducerManager","pathOrMapFn","STORE_PROVIDERS","propsOrPath","pathSlices","currentProp","pluck","RUNTIME_CHECK_URL","lastArguments","projectionFn","isArgumentsEqual","isEqualCheck","isResultEqual","overrideResult","lastResult","memoized","isArgumentsChanged","newResult","setResult","clearResult","memoize","stateFn","defaultStateFn","tail","projector","memoizedSelectors","memoizedProjector","memoizedState","defaultMemoize","createSelectorFactory","targetIsFunction","propValue","isObjectLike","isFrozen","isUndefined","isNull","isNumber","isString","targetPrototype","isPlainObject","getUnserializable","unserializable","unserializablePath","strictStateSerializability","strictActionSerializability","strictActionWithinNgZone","strictActionTypeUniqueness","throwIfUnserializable","serializationCheckMetaReducer","ignoreNgrxAction","act","immutabilityCheckMetaReducer","inNgZoneAssertMetaReducer","_runtimeChecksFactory","createActiveRuntimeChecks","createImmutabilityCheckMetaReducer","createSerializationCheckMetaReducer","createInNgZoneCheckMetaReducer","_actionTypeUniquenessCheck","registrations","StoreRootModule","scannedActions$","actionCheck","StoreFeatureModule","featureReducers","feats","featureReducerCollection","_initialStateFactory","_createStoreReducers","_concatMetaReducers","combineReducers","provideRuntimeChecks","checkForActionTypeUniqueness","featureNameOrSlice","_createFeatureStore","_createFeatureReducers","configs","featureStores","feat","conf","reducerCollection","userProvidedMetaReducers","TranslateFakeLoader","getTranslation","FakeMissingTranslationHandler","keySet","equals","mergeDeep","TranslateDefaultParser","TranslateParser","templateMatcher","interpolateFunction","isDefined","TranslateFakeCompiler","TranslateCompiler","compile","compileTranslations","translations","defaultLang","langs","onTranslationChange","onDefaultLangChange","USE_STORE","USE_DEFAULT_LANG","DEFAULT_LANGUAGE","USE_EXTEND","TranslateService","currentLoader","parser","missingTranslationHandler","useDefaultLang","isolate","defaultLanguage","_onTranslationChange","_onLangChange","_onDefaultLangChange","_langs","_translations","_translationRequests","_defaultLang","_currentLang","retrieveTranslations","changeDefaultLang","getDefaultLang","changeLang","loadingTranslations","updateLangs","setTranslation","shouldMerge","getLangs","addLangs","getParsedResult","getStreamOnTranslationChange","reloadLang","resetLang","getBrowserLang","browserLang","browserLanguage","userLanguage","getBrowserCultureLang","browserCultureLang","TranslateStore","MissingTranslationHandler","TranslatePipe","lastKey","lastParams","onTranslation","validArgs","SyntaxError","debugErrorMap","prodErrorMap","_DEFAULT_AUTH_ERROR_FACTORY","logClient","authOrCode","createErrorInternal","errorMap","_errorWithCustomMessage","fullParams","_errorFactory","assertion","failure","_logError","debugFail","_getCurrentScheme","shortDelay","longDelay","debugAssert","isMobileCordova","isReactNative","_isHttpOrHttps","_isOnline","emulator","fetchImpl","headersImpl","responseImpl","SERVER_ERROR_MAP","CREDENTIAL_MISMATCH","MISSING_CUSTOM_TOKEN","INVALID_IDENTIFIER","MISSING_CONTINUE_URI","INVALID_PASSWORD","MISSING_PASSWORD","EMAIL_EXISTS","PASSWORD_LOGIN_DISABLED","INVALID_IDP_RESPONSE","INVALID_PENDING_TOKEN","FEDERATED_USER_ID_ALREADY_LINKED","MISSING_REQ_TYPE","EMAIL_NOT_FOUND","RESET_PASSWORD_EXCEED_LIMIT","EXPIRED_OOB_CODE","INVALID_OOB_CODE","MISSING_OOB_CODE","CREDENTIAL_TOO_OLD_LOGIN_AGAIN","INVALID_ID_TOKEN","TOKEN_EXPIRED","USER_NOT_FOUND","TOO_MANY_ATTEMPTS_TRY_LATER","INVALID_CODE","INVALID_SESSION_INFO","INVALID_TEMPORARY_PROOF","MISSING_SESSION_INFO","SESSION_EXPIRED","MISSING_ANDROID_PACKAGE_NAME","UNAUTHORIZED_DOMAIN","INVALID_OAUTH_CLIENT_ID","ADMIN_ONLY_OPERATION","INVALID_MFA_PENDING_CREDENTIAL","MFA_ENROLLMENT_NOT_FOUND","MISSING_MFA_ENROLLMENT_ID","MISSING_MFA_PENDING_CREDENTIAL","SECOND_FACTOR_EXISTS","SECOND_FACTOR_LIMIT_EXCEEDED","BLOCKING_FUNCTION_ERROR_RESPONSE","RECAPTCHA_NOT_ENABLED","MISSING_RECAPTCHA_TOKEN","INVALID_RECAPTCHA_TOKEN","INVALID_RECAPTCHA_ACTION","MISSING_CLIENT_TYPE","MISSING_RECAPTCHA_VERSION","INVALID_RECAPTCHA_VERSION","INVALID_REQ_TYPE","DEFAULT_API_TIMEOUT_MS","Delay","customErrorMap","_performFetchWithErrorHandling","_getAdditionalHeaders","FetchProvider","_getFinalTarget","apiHost","referrerPolicy","fetchFn","_canInitEmulator","networkTimeout","NetworkTimeout","clearNetworkTimeout","_makeTaggedError","serverErrorCode","serverErrorMessage","authError","serverResponse","_performApiRequest","_serverResponse","_emulatorUrl","apiScheme","_createError","errorParams","_tokenResponse","_x16","utcTimestamp","userInternal","claims","_parseToken","_assert","signInProvider","authTime","utcTimestampToDateString","secondsStringToMilliseconds","issuedAtTime","expirationTime","signInSecondFactor","sign_in_second_factor","algorithm","signature","bypassAuthState","isUserInvalidated","signOut","errorBackoff","_stop","getInterval","wasError","stsTokenManager","iteration","createdAt","lastLoginAt","_initializeTime","lastSignInTime","_copy","_logoutIfInvalidated","getAccountInfo","users","coreAccount","_notifyReloadListener","newProviderData","providerUserInfo","extractProviderData","providerData","mergeProviderData","isAnonymous","passwordHash","localId","displayName","photoURL","photoUrl","emailVerified","UserMetadata","_reloadWithoutSaving","_persistUserIfCurrent","_notifyListenersIfCurrent","newData","providerId","__rest","rawId","grant_type","refresh_token","tokenApiHost","access_token","expires_in","isExpired","updateFromServerResponse","parsedToken","_tokenExpiresIn","updateTokensAndExpiration","clearRefreshToken","oldToken","requestStsToken","expiresInSec","StsTokenManager","_assign","_clone","_performRefresh","proactiveRefresh","ProactiveRefresh","reloadUserInfo","reloadListener","UserImpl","_onReload","_startProactiveRefresh","_stopProactiveRefresh","_updateTokensIfNecessary","tokensRefreshed","deleteAccount","_redirectEventId","_f","_g","_h","plainObjectTokenManager","fromJSON","assertStringOrUndefined","idTokenResponse","instanceCache","inMemoryPersistence","_isAvailable","_set","_get","_addListener","_listener","_removeListener","InMemoryPersistence","userKey","fullUserKey","_persistenceKeyName","fullPersistenceKey","boundEventHandler","_onStorageEvent","setCurrentUser","getCurrentUser","blob","_fromJSON","removeCurrentUser","savePersistenceForRedirect","newPersistence","persistenceHierarchy","PersistenceUserManager","_getInstance","availablePersistences","selectedPersistence","userToMigrate","migrationHierarchy","_shouldAllowMigration","_isIEMobile","_isFirefox","_isBlackBerry","_isWebOS","_isSafari","_isChromeIOS","_isIOS","clientPlatform","frameworks","reportedPlatform","_getBrowserName","reportedFrameworks","recaptchaSiteKey","_addTidIfNecessary","grecaptcha","getResponse","enterprise","siteKey","emailPasswordEnabled","recaptchaKey","recaptchaEnforcementState","enforcementState","charset","getScriptParentElement","authExtern","_castAuth","_agentRecaptchaConfig","_tenantRecaptchaConfigs","getRecaptchaConfig","RecaptchaConfig","_retrieveSiteKey","isEnterprise","FAKE_TOKEN","retrieveSiteKey","retrieveRecaptchaToken","_loadJS","captchaResp","verifier","RecaptchaEnterpriseVerifier","captchaResponse","newRequest","recaptchaVersion","pushCallback","onAbort","wrappedCallback","runMiddleware","nextUser","onAbortStack","beforeStateCallback","originalMessage","appCheckServiceProvider","emulatorConfig","authStateSubscription","idTokenSubscription","beforeStateQueue","AuthMiddlewareQueue","redirectUser","isProactiveRefreshEnabled","_deleted","_initializationPromise","_popupRedirectResolver","lastNotifiedUid","appVerificationDisabledForTesting","clientVersion","sdkClientVersion","_initializeWithPersistence","popupRedirectResolver","persistenceManager","_shouldInitProactively","_initialize","initializeCurrentUser","assertedPersistence","_currentUser","_updateCurrentUser","previouslyStoredUser","futureCurrentUser","needsTocheckMiddleware","getOrInitRedirectPersistenceManager","redirectUserEventId","storedUserEventId","tryRedirectSignIn","directlySetCurrentUser","_overrideRedirectResult","reloadAndSetCurrentUserOrClear","redirectResolver","_completeRedirectFn","_setRedirectUser","_getUserLanguage","updateCurrentUser","userExtern","skipBeforeStateCallbacks","notifyAuthListeners","redirectPersistenceManager","initializeRecaptchaConfig","_getRecaptchaConfig","_getPersistence","_updateErrorMap","registerStateListener","beforeAuthStateChanged","redirectManager","_redirectPersistence","_redirectUserForId","currentUid","addObserver","_logFramework","framework","_getClientVersion","_getFrameworks","appCheckToken","_getAppCheckToken","appCheckTokenResult","protocolEnd","portStr","signInMethod","_getIdTokenResponse","_auth","_linkToIdToken","_idToken","_getReauthenticationResolver","_x42","_performSignInRequest","sendOobCode","_x52","AuthCredential","_email","_password","_tenantId","EmailAuthCredential","oobCode","_fromEmailAndPassword","_fromEmailAndCode","returnSecureToken","requestWithRecaptcha","injectRecaptchaFields","signInWithPassword","_x54","signInWithEmailLink$1","updateEmailPassword","_x56","signInWithEmailLinkForLinking","_x59","pendingToken","cred","OAuthCredential","oauthToken","oauthTokenSecret","secret","signInWithIdp","buildRequest","autoCreate","requestUri","postBody","id_token","oauth_token_secret","_x61","temporaryProof","VERIFY_PHONE_NUMBER_FOR_EXISTING_ERROR_MAP_","verificationId","verificationCode","PhoneAuthCredential","_x63","signInWithPhoneNumber$1","_makeVerificationRequest","linkWithPhoneNumber$1","verifyPhoneNumberForExisting","sessionInfo","actionLink","querystringDecode","extractQuerystring","parseMode","continueUrl","doubleDeepLink","deep_link_id","iOSDeepLink","parseDeepLink","ActionCodeURL","EmailAuthProvider","PROVIDER_ID","emailLink","actionCodeUrl","parseLink","EMAIL_PASSWORD_SIGN_IN_METHOD","EMAIL_LINK_SIGN_IN_METHOD","defaultLanguageCode","customParameters","setDefaultLanguage","setCustomParameters","customOAuthParameters","getCustomParameters","FederatedAuthProvider","scopes","addScope","getScopes","BaseOAuthProvider","_fromParams","_credential","rawNonce","userCredential","OAuthProvider","oauthCredentialFromTaggedObject","tokenResponse","oauthIdToken","oauthAccessToken","FacebookAuthProvider","FACEBOOK_SIGN_IN_METHOD","credentialFromTaggedObject","GoogleAuthProvider","GOOGLE_SIGN_IN_METHOD","GithubAuthProvider","GITHUB_SIGN_IN_METHOD","SAMLAuthCredential","SAMLAuthProvider","samlCredentialFromTaggedObject","TwitterAuthProvider","TWITTER_SIGN_IN_METHOD","_x69","operationType","_fromIdTokenResponse","providerIdForResponse","UserCredentialImpl","authInternal","signUp","MultiFactorError","_fromErrorAndOperation","pid","_assertLinkedStatus","deleteLinkedAccounts","deleteProvider","providersLeft","providerDataAsNames","_x74","_forOperation","_x76","_processCredentialSavingMfaContextIfNecessary","_x83","_signInWithCredential","_link$1","_reauthenticate","_x89","customToken","signInWithCustomToken$1","factorId","mfaEnrollmentId","enrollmentTime","enrolledAt","enrollment","PhoneMultiFactorInfoImpl","_fromServerResponse","TotpMultiFactorInfoImpl","MultiFactorInfoImpl","phoneInfo","actionCodeSettings","dynamicLinkDomain","canHandleCodeInApp","handleCodeInApp","iOS","iOSBundleId","android","packageName","androidInstallApp","installApp","androidMinimumVersionCode","minimumVersion","androidPackageName","requestType","_setActionCodeSettingsOnRequest","sendPasswordResetEmail$1","_sendPasswordResetEmail","resetPassword","applyActionCode$1","_x101","authModular","newEmail","mfaInfo","multiFactorInfo","previousEmail","checkActionCode","signUpResponse","_createUserWithEmailAndPassword","setActionCodeSettings","sendSignInLinkToEmail$1","_sendSignInLinkToEmail","credentialWithLink","_getCurrentUrl","signInWithCredential","_x114","continueUri","signinMethods","createAuthUri","sendEmailVerification$1","verifyAndChangeEmail","_x123","profileRequest","updateProfile$1","passwordProvider","_x127","isNewUser","GenericAdditionalUserInfo","username","FederatedAdditionalUserInfoWithUsername","screenName","rawUserInfo","filteredProviderId","FacebookAdditionalUserInfo","GithubAdditionalUserInfo","GoogleAdditionalUserInfo","TwitterAdditionalUserInfo","MultiFactorSessionImpl","mfaPendingCredential","multiFactorSession","pendingCredential","_fromMfaPendingCredential","_fromIdtoken","session","hints","signInResolver","MultiFactorResolverImpl","mfaResponse","_process","resolveSignIn","assertionExtern","enrolledFactors","MultiFactorUserImpl","getSession","enroll","finalizeMfaResponse","unenroll","infoOrUid","withdrawMfa","multiFactorUserCache","STORAGE_AVAILABLE_KEY","storageRetriever","browserLocalPersistence","BrowserPersistenceClass","poll","onStorageEvent","pollTimer","safariLocalStorageNotSynced","_iframeCannotSyncWebStorage","_isIframe","fallbackToPolling","_isMobileBrowser","forAllChangedKeys","_oldValue","notifyListeners","detachListener","stopPolling","storedValue","triggerListeners","_isIE10","startPolling","StorageEvent","_POLLING_INTERVAL_MS$1","attachListener","_superprop_get_set","_this39","_superprop_get_get","_this40","_superprop_get_remove","_this41","BrowserLocalPersistence","browserSessionPersistence","sessionStorage","BrowserSessionPersistence","Receiver","handlersMap","receivers","isListeningto","messageEvent","eventId","handlers","_this42","ports","_allSettled","removeMessageHandler","messageChannel","port1","_send","MessageChannel","completionTimer","_generateEventId","ackTimer","_this43","port2","_window","importScripts","DB_NAME","DB_OBJECTSTORE_NAME","DB_DATA_KEYPATH","isReadWrite","DBPromise","_deleteDatabase","_openDatabase","_x134","getObjectStore","indexedDBLocalPersistence","pendingWrites","sender","serviceWorkerReceiverAvailable","activeServiceWorker","_workerInitializationPromise","initializeServiceWorkerMessaging","_openDb","_this44","_withRetries","numAttempts","_this45","_isWorker","_this46","initializeReceiver","initializeSender","_this47","_getWorkerGlobalScope","keyProcessed","_poll","_this48","_getActiveServiceWorker","notifyServiceWorker","_this49","_getServiceWorkerController","_putObject","_deleteObject","_withPendingWrite","_this50","_this51","_this52","_x137","getObject","_this53","_this54","getAllRequest","keysInResult","fbase_key","localKey","_this55","_POLLING_INTERVAL_MS","IndexedDBLocalPersistence","_WIDGET_ID_START","_widgets","MockWidget","optWidgetId","_this56","containerOrId","deleted","responseToken","clickHandler","checkIfDeleted","allowedChars","generateRandomAlphaNumericString","expiredCallback","_EXPIRATION_TIME_MS","_SOLVE_TIME_MS","_JSLOAD_CALLBACK","_generateCallbackName","NETWORK_TIMEOUT_DELAY","hostLanguage","librarySeparatelyLoaded","isHostLanguageValid","shouldResolveImmediately","isV2","recaptcha","widgetId","clearedOneInstance","MockReCaptcha","RECAPTCHA_VERIFIER_TYPE","DEFAULT_PARAMS","theme","tokenChangeListeners","renderPromise","isInvisible","makeTokenCallback","_recaptchaLoader","MockReCaptchaLoaderImpl","ReCaptchaLoaderImpl","validateStartingState","_this57","getAssertedRecaptcha","tokenChange","makeRenderPromise","sitekey","hasChildNodes","globalFunc","_this58","guaranteedEmpty","_this59","domReady","getRecaptchaParams","onConfirmation","confirm","authCredential","_fromVerification","appVerifier","_verifyPhoneNumber","ConfirmationResultImpl","linkWithCredential","reauthenticateWithCredential","_x152","recaptchaToken","phoneInfoOptions","startEnrollPhoneMfa","phoneEnrollmentInfo","phoneSessionInfo","multiFactorHint","multiFactorUid","startSignInPhoneMfa","phoneSignInInfo","phoneResponseInfo","sendPhoneVerificationCode","PhoneAuthProvider","verifyPhoneNumber","phoneOptions","applicationVerifier","_fromTokenResponse","PHONE_SIGN_IN_METHOD","resolverOverride","_buildIdpRequest","sessionId","returnIdpCredential","IdpCredential","_x157","pendingPromise","_this60","onExecution","registerConsumer","onAuthEvent","urlResponse","_this61","getIdpTask","_signIn","_link","_reauth","unregisterAndCleanUp","unregisterConsumer","cleanUp","_POLL_WINDOW_CLOSE_TIMEOUT","_assertInstanceOf","resolverInternal","_withDefaultResolver","PopupOperation","executeNotNull","AbstractPopupRedirectOperation","authWindow","pollId","currentPopupAction","_this62","_this63","associatedEvent","_originValidation","_isIframeWebStorageSupported","pollUserCancellation","redirectOutcomeMap","readyOutcome","_this64","_x169","_getAndClearPendingRedirectStatus","_superprop_getExecute","_superprop_getOnAuthEvent","_this65","pendingRedirectKey","resolverPersistence","hasPendingRedirect","_x171","_setPendingRedirectStatus","_openRedirect","prepareUserForRedirect","_getRedirectResult","_x184","resolverExtern","RedirectAction","_x186","cachedEventUids","consumers","queuedRedirectEvent","hasHandledPotentialRedirect","lastProcessedEventTime","authEventConsumer","isEventForConsumer","sendToConsumer","saveEventToCache","onEvent","hasEventBeenHandled","handled","isNullRedirectEvent","isRedirectEvent","eventIdMatches","eventUid","_x187","IP_ADDRESS_REGEX","HTTP_REGEX","authorizedDomains","_getProjectConfig","matchDomain","currentUrl","ceUrl","escapedDomainPattern","NETWORK_TIMEOUT","beacon","___jsl","CP","cachedGApiLoader","resetUnloadedGapiModules","gapi","iframes","Iframe","cbName","loadGapiIframe","loadGapi","PING_TIMEOUT","IFRAME_ATTRIBUTES","EID_FROM_APIHOST","eid","fw","_loadGapi","getIframeUrl","messageHandlersFilter","CROSS_ORIGIN_IFRAMES_FILTER","dontclear","iframe","restyle","setHideOnLeave","networkError","networkErrorTimer","ping","clearTimerAndResolve","_openIframe2","BASE_POPUP_OPTIONS","resizable","statusbar","toolbar","FIREBASE_APP_CHECK_FRAGMENT_ID","_x190","authType","additionalParams","tid","paramsDict","appCheckTokenFragment","getHandlerBase","WIDGET_PATH","WEB_STORAGE_SUPPORT_KEY","_finalizeEnroll","_finalizeSignIn","PhoneMultiFactorAssertionImpl","finalizeEnrollPhoneMfa","phoneVerificationInfo","finalizeSignInPhoneMfa","PhoneMultiFactorGenerator","_fromCredential","FACTOR_ID","internalListeners","assertAuthConfigured","_this71","updateProactiveRefresh","BuildInfo","_cordovaWindow","sessionDigest","computeSha256","ibi","apn","appDisplayName","_getRedirectUrl","iosBundleId","eventListener","iabRef","onCloseTimer","closeBrowserTab","browsertab","REDIRECT_TIMEOUT_MS","resumed","addPassiveListener","authEventSeen","visibilityChanged","removePassiveListener","stringToArrayBuffer","subtle","buff","authInstance","AuthImpl","_initializeAuthInstance","_instanceIdentifier","_instance","AuthInterop","getVersionForPlatform","registerAuth","AuthEventManager","passiveListeners","initPromise","resolveInialized","resetRedirect","_isIe11","_isEdge","_isLocalStorageNotSynchronized","_isAndroidOrIosCordovaScheme","_isNativeEnvironment","_isWebStorageSupported","_isLikelyCordova","Persistence","LOCAL","SESSION","_assert$3","PERSISTENCE_KEY","getSessionStorageIfAvailable","_getSelfWindow","_assert$2","browserResolver","eventManagers","originValidationPromises","_this66","screen","availHeight","availWidth","scrollbars","optionsString","_isIOSStandalone","openAsNewWindowIOS","initMouseEvent","AuthPopup","newWin","_setWindowLocation","_this67","initAndGetManager","_x189","_openIframe","iframeEvent","authEvent","_this68","_x188","_validateOrigin","cordovaResolver","CordovaAuthEventManager","attachCallbackListeners","_j","win","universalLinks","missingPlugin","openUrl","isAvailable","InAppBrowser","_checkCordovaConfiguration","_clearRedirectOutcomes","generateSessionId","_generateNewEvent","_savePartialEvent","_generateHandlerUrl","handlerUrl","browserTabIsAvailable","_isIOS7Or8","_performRedirect","_waitForAppResume","_cb","handleOpenURL","noEventTimeout","_getAndRemoveEvent","generateNoEvent","universalLinksCb","eventData","partialEvent","finalEvent","callbackUrl","searchParamsOrEmpty","iOSDoubleDeepLink","_getDeepLinkFromCallback","errorObject","firebaseError","parseJsonOrNull","_eventFromPartialAndUrl","existingHandleOpenURL","packagePrefix","underlyingResolver","selectUnderlyingResolver","assertedUnderlyingResolver","isCordova","_isCordova","credentialFromObject","credentialFromError","credentialFromResult","credentialPromise","MultiFactorResolver","errorInternal","_fromError","credErr","attachExtraErrorFields","credentialFromResponse","additionalUserInfo","getOrCreate","confirmationResultPromise","confirmationResultExp","convertCredential","wrapped","multiFactor","userModular","_fromUser","USER_MAP","linkAndRetrieveDataWithCredential","linkWithPhoneNumber","convertConfirmationResult","_x146","linkWithPopup","_x166","CompatPopupRedirectResolver","linkWithRedirect","_savePersistenceForRedirect","_x179","_linkWithRedirect","reauthenticateAndRetrieveDataWithCredential","reauthenticateWithPhoneNumber","_x149","reauthenticateWithPopup","_x163","reauthenticateWithRedirect","_x176","_reauthenticateWithRedirect","sendEmailVerification","_x118","unlink","updateEmail","updateEmailOrPassword","updatePassword","updatePhoneNumber","phoneCredential","_x155","updateProfile","_x125","verifyBeforeUpdateEmail","_x120","_assert$1","Auth","linkUnderlyingAuth","buildPersistenceHierarchy","disableWarnings","extractProtocol","authority","hostAndPort","bracketedIPv6","parsePort","extractHostAndPort","sty","zIndex","textAlign","attachBanner","emitEmulatorWarning","applyActionCode","_x99","confirmPasswordReset","_x96","createUserWithEmailAndPassword","_x105","fetchProvidersForEmail","fetchSignInMethodsForEmail","_x116","isSignInWithEmailLink","_isPopupRedirectSupported","_x182","addFrameworkForLogging","wrapObservers","sendSignInLinkToEmail","_x108","sendPasswordResetEmail","_x93","converted","_validatePersistenceArgument","signInAndRetrieveDataWithCredential","signInAnonymously","_x71","signInWithCustomToken","_x91","signInWithEmailAndPassword","signInWithEmailLink","signInWithPhoneNumber","_x143","signInWithPopup","_x160","signInWithRedirect","_x173","_signInWithRedirect","verifyPasswordResetCode","_x103","oldNext","persistences","_getPersistencesFromRedirect","authProvider","ActionCodeInfo","Operation","EMAIL_SIGNIN","PASSWORD_RESET","RECOVER_EMAIL","REVERT_SECOND_FACTOR_ADDITION","VERIFY_AND_CHANGE_EMAIL","VERIFY_EMAIL","RecaptchaVerifier","registerAuthCompat"],"sourceRoot":"webpack:///","sources":["./src/app/client-space/services/client-orders.service.ts","./src/app/core/data/estates.ts","./src/app/core/data/header-menu.ts","./src/app/core/data/regions.ts","./src/app/core/data/products.ts","./src/app/core/enums/reason.enum.ts","./src/app/core/data/services.ts","./src/app/core/data/theme-config.ts","./src/app/core/enums/order-status.enum.ts","./src/app/core/enums/pricing-plan.enum.ts","./src/app/core/enums/product.enum.ts","./src/app/core/enums/region.enum.ts","./src/app/core/enums/vente.enum.ts","./src/app/core/models/address.ts","./src/app/core/models/document.ts","./src/app/core/models/user.ts","./src/app/core/models/venteInfo.ts","./node_modules/ngx-cookie-service/__ivy_ngcc__/fesm2015/ngx-cookie-service.js","./src/app/core/services/auth.service.ts","./src/app/core/models/productDB.ts","./src/app/core/data/packs.ts","./src/app/core/services/data.service.ts","./src/app/core/services/google-tag-manager.service.ts","./src/app/core/services/logger.service.ts","./src/app/core/services/previous-route.service.ts","./src/app/core/services/send-email.service.ts","./src/app/core/services/zyva.helper.ts","./src/app/core/spinner-overlay/spinner-overlay.service.ts","./src/app/core/store/order/order.actions.ts","./src/app/core/store/order/order.reducer.ts","./src/app/core/models/region.ts","./src/app/core/models/visitContact.ts","./src/app/core/utils/number/in-range.ts","./src/app/core/store/order/order.selectors.ts","./src/app/core/store/ui/ui.actions.ts","./src/app/core/store/ui/ui.reducer.ts","./src/app/core/store/ui/ui.selectors.ts","./src/app/core/utils/paths/join.ts","./node_modules/@angular/material/fesm2015/badge.mjs","./node_modules/@angular/material/fesm2015/card.mjs","./node_modules/@angular/material/fesm2015/tabs.mjs","./node_modules/ngx-sharebuttons/__ivy_ngcc__/fesm2015/ngx-sharebuttons.js","./node_modules/ngx-sharebuttons/__ivy_ngcc__/fesm2015/ngx-sharebuttons-button.js","./node_modules/ngx-sharebuttons/__ivy_ngcc__/fesm2015/ngx-sharebuttons-buttons.js","./node_modules/ngx-sharebuttons/__ivy_ngcc__/fesm2015/ngx-sharebuttons-icons.js","./node_modules/@fortawesome/free-brands-svg-icons/index.es.js","./src/app/shared/shared.module.ts","./src/app/tooltip/tooltip.component.html","./src/app/tooltip/tooltip.component.ts","./src/environments/environment.prod.ts","./src/app/core/data/newUserTypes.ts","./src/app/core/enums/contact.enum.ts","./src/app/components/banner/banner.component.ts","./src/app/components/banner/banner.component.html","./src/app/dialogs/login-dialog/login-dialog.component.html","./src/app/dialogs/login-dialog/login-dialog.component.ts","./node_modules/@googlemaps/js-api-loader/dist/index.mjs","./src/app/google-maps-loader.service.ts","./src/app/core/models/venteChoices.ts","./src/app/components/vente-type-info/vente-type-info.component.html","./src/app/components/vente-type-info/vente-type-info.component.ts","./src/app/step2/step2.component.html","./src/app/step2/step2.component.ts","./src/app/components/split-invoice/split-invoice.component.html","./src/app/components/split-invoice/split-invoice.component.ts","./src/app/step3/step3.component.html","./src/app/step3/step3.component.ts","./src/app/core/models/product.ts","./src/app/dialogs/specific-request-dialog/specific-request-dialog.component.html","./src/app/dialogs/specific-request-dialog/specific-request-dialog.component.ts","./src/app/shared/pipes/htva.pipe.ts","./src/app/dialogs/summary-confirm-dialog/summary-confirm-dialog.component.html","./src/app/dialogs/summary-confirm-dialog/summary-confirm-dialog.component.ts","./src/app/core/data/immoOrCtrlOptions.ts","./src/app/core/data/ventes.ts","./src/app/core/data/reasons.ts","./src/app/core/services/globals.ts","./src/app/shared/pipes/safe-html.pipe.ts","./src/app/dialogs/print-request-dialog/print-request-dialog.component.html","./src/app/dialogs/print-request-dialog/print-request-dialog.component.ts","./src/app/dialogs/visit-request-dialog/visit-request-dialog.component.html","./src/app/dialogs/visit-request-dialog/visit-request-dialog.component.ts","./src/app/core/models/paper.ts","./src/app/dialogs/poster-request-dialog/poster-request-dialog.component.html","./src/app/dialogs/poster-request-dialog/poster-request-dialog.component.ts","./src/app/dialogs/signs-request-dialog/signs-request-dialog.component.html","./src/app/dialogs/signs-request-dialog/signs-request-dialog.component.ts","./src/app/dialogs/paper-request-dialog/paper-request-dialog.component.html","./src/app/dialogs/paper-request-dialog/paper-request-dialog.component.ts","./src/app/dialogs/services-choice-dialog/services-choice-dialog.component.ts","./src/app/dialogs/services-choice-dialog/services-choice-dialog.component.html","./src/app/dialogs/print-fullpress-request-dialog/print-fullpress-request-dialog.component.html","./src/app/dialogs/print-fullpress-request-dialog/print-fullpress-request-dialog.component.ts","./src/app/dialogs/panel-xl-request-dialog/panel-xl-request-dialog.component.html","./src/app/dialogs/panel-xl-request-dialog/panel-xl-request-dialog.component.ts","./src/app/dialogs/specific-print-request-dialog/specific-print-request-dialog.component.html","./src/app/dialogs/specific-print-request-dialog/specific-print-request-dialog.component.ts","./src/app/dialogs/custom-request-dialog/custom-request-dialog.component.html","./src/app/dialogs/custom-request-dialog/custom-request-dialog.component.ts","./src/app/dialogs/services-details-dialog/services-details-dialog.component.html","./src/app/dialogs/services-details-dialog/services-details-dialog.component.ts","./src/app/dialogs/global-message/global-message.component.ts","./src/app/dialogs/global-message/global-message.component.html","./src/app/dialogs/panel-request-dialog/panel-request-dialog.component.html","./src/app/dialogs/panel-request-dialog/panel-request-dialog.component.ts","./src/app/dialogs/message-dialog/message-dialog.component.ts","./src/app/dialogs/message-dialog/message-dialog.component.html","./src/app/dialogs/visit-zyva-request-dialog/visit-zyva-request-dialog.component.html","./src/app/dialogs/visit-zyva-request-dialog/visit-zyva-request-dialog.component.ts","./src/app/step1/big-select/big-select.component.html","./src/app/step1/big-select/big-select.component.ts","./src/app/components/step-money-result/step-money-result.component.html","./src/app/components/step-money-result/step-money-result.component.ts","./src/app/shared/pipes/sortby.pipe.ts","./src/app/step1/step1.component.html","./src/app/step1/step1.component.ts","./src/app/dialogs/congrats-dialog/congrats-dialog.component.html","./src/app/dialogs/congrats-dialog/congrats-dialog.component.ts","./src/app/dialogs/default-dialog/default-dialog.component.html","./src/app/dialogs/default-dialog/default-dialog.component.ts","./src/app/step4/billing-info/billing-info.component.html","./src/app/step4/billing-info/billing-info.component.ts","./src/app/step4/step4.component.html","./src/app/step4/step4.component.ts","./src/app/order-steppers/notaire-landing/notaire-landing.component.html","./src/app/order-steppers/notaire-landing/notaire-landing-dialog.ts","./src/app/order-steppers/order-steppers.component.html","./src/app/order-steppers/order-steppers.component.ts","./node_modules/rxjs/dist/esm/internal/observable/never.js","./node_modules/rxjs/dist/esm/internal/operators/connect.js","./node_modules/rxjs/dist/esm/internal/observable/fromSubscribable.js","./node_modules/@angular/service-worker/fesm2015/service-worker.mjs","./node_modules/rxjs/dist/esm/internal/operators/publish.js","./node_modules/rxjs/dist/esm/internal/operators/multicast.js","./src/app/core/services/update-sw.service.ts","./node_modules/rxjs/dist/esm/internal/observable/interval.js","./src/app/core/spinner-overlay/spinner-overlay.component.html","./src/app/core/spinner-overlay/spinner-overlay.component.ts","./src/app/header/header.component.html","./src/app/header/header.component.ts","./src/app/footer/footer.component.html","./src/app/footer/footer.component.ts","./src/app/app.component.html","./src/app/app.component.ts","./node_modules/rxjs/dist/esm/internal/Notification.js","./node_modules/rxjs/dist/esm/internal/operators/groupBy.js","./node_modules/rxjs/dist/esm/internal/operators/exhaustMap.js","./node_modules/@ngrx/effects/fesm2015/ngrx-effects.mjs","./node_modules/rxjs/dist/esm/internal/operators/materialize.js","./node_modules/rxjs/dist/esm/internal/operators/dematerialize.js","./src/app/core/models/reduction.ts","./src/app/snackbars/pack-selected/pack-selected.component.ts","./src/app/snackbars/pack-selected/pack-selected.component.html","./src/app/core/effects/order.effects.ts","./src/app/app.reducers.ts","./node_modules/d3-selection/src/selector.js","./node_modules/d3-selection/src/array.js","./node_modules/d3-selection/src/selectorAll.js","./node_modules/d3-selection/src/matcher.js","./node_modules/d3-selection/src/selection/selectChild.js","./node_modules/d3-selection/src/selection/selectChildren.js","./node_modules/d3-selection/src/selection/sparse.js","./node_modules/d3-selection/src/selection/enter.js","./node_modules/d3-selection/src/constant.js","./node_modules/d3-selection/src/selection/data.js","./node_modules/d3-selection/src/selection/sort.js","./node_modules/d3-selection/src/namespaces.js","./node_modules/d3-selection/src/namespace.js","./node_modules/d3-selection/src/selection/attr.js","./node_modules/d3-selection/src/window.js","./node_modules/d3-selection/src/selection/style.js","./node_modules/d3-selection/src/selection/property.js","./node_modules/d3-selection/src/selection/classed.js","./node_modules/d3-selection/src/selection/text.js","./node_modules/d3-selection/src/selection/html.js","./node_modules/d3-selection/src/selection/raise.js","./node_modules/d3-selection/src/selection/lower.js","./node_modules/d3-selection/src/creator.js","./node_modules/d3-selection/src/selection/insert.js","./node_modules/d3-selection/src/selection/remove.js","./node_modules/d3-selection/src/selection/clone.js","./node_modules/d3-selection/src/selection/on.js","./node_modules/d3-selection/src/selection/dispatch.js","./node_modules/d3-selection/src/selection/index.js","./node_modules/d3-selection/src/selection/select.js","./node_modules/d3-selection/src/selection/selectAll.js","./node_modules/d3-selection/src/selection/filter.js","./node_modules/d3-selection/src/selection/exit.js","./node_modules/d3-selection/src/selection/join.js","./node_modules/d3-selection/src/selection/merge.js","./node_modules/d3-selection/src/selection/order.js","./node_modules/d3-selection/src/selection/call.js","./node_modules/d3-selection/src/selection/nodes.js","./node_modules/d3-selection/src/selection/node.js","./node_modules/d3-selection/src/selection/size.js","./node_modules/d3-selection/src/selection/empty.js","./node_modules/d3-selection/src/selection/each.js","./node_modules/d3-selection/src/selection/append.js","./node_modules/d3-selection/src/selection/datum.js","./node_modules/d3-selection/src/selection/iterator.js","./node_modules/d3-selection/src/select.js","./node_modules/d3-dispatch/src/dispatch.js","./node_modules/d3-drag/src/noevent.js","./node_modules/d3-drag/src/nodrag.js","./node_modules/d3-color/src/define.js","./node_modules/d3-color/src/color.js","./node_modules/d3-interpolate/src/basis.js","./node_modules/d3-interpolate/src/constant.js","./node_modules/d3-interpolate/src/color.js","./node_modules/d3-interpolate/src/rgb.js","./node_modules/d3-interpolate/src/array.js","./node_modules/d3-interpolate/src/date.js","./node_modules/d3-interpolate/src/number.js","./node_modules/d3-interpolate/src/object.js","./node_modules/d3-interpolate/src/basisClosed.js","./node_modules/d3-interpolate/src/string.js","./node_modules/d3-interpolate/src/numberArray.js","./node_modules/d3-interpolate/src/value.js","./node_modules/d3-selection/src/pointer.js","./node_modules/d3-selection/src/sourceEvent.js","./node_modules/d3-timer/src/timer.js","./node_modules/d3-timer/src/timeout.js","./node_modules/d3-transition/src/transition/schedule.js","./node_modules/d3-transition/src/interrupt.js","./node_modules/d3-interpolate/src/transform/decompose.js","./node_modules/d3-interpolate/src/transform/parse.js","./node_modules/d3-interpolate/src/transform/index.js","./node_modules/d3-transition/src/transition/tween.js","./node_modules/d3-transition/src/transition/interpolate.js","./node_modules/d3-transition/src/transition/attr.js","./node_modules/d3-transition/src/transition/attrTween.js","./node_modules/d3-transition/src/transition/delay.js","./node_modules/d3-transition/src/transition/duration.js","./node_modules/d3-transition/src/transition/ease.js","./node_modules/d3-transition/src/transition/on.js","./node_modules/d3-transition/src/transition/selection.js","./node_modules/d3-transition/src/transition/style.js","./node_modules/d3-transition/src/transition/styleTween.js","./node_modules/d3-transition/src/transition/textTween.js","./node_modules/d3-transition/src/transition/index.js","./node_modules/d3-transition/src/transition/select.js","./node_modules/d3-transition/src/transition/selectAll.js","./node_modules/d3-transition/src/transition/filter.js","./node_modules/d3-transition/src/transition/merge.js","./node_modules/d3-transition/src/transition/transition.js","./node_modules/d3-transition/src/transition/text.js","./node_modules/d3-transition/src/transition/remove.js","./node_modules/d3-transition/src/transition/easeVarying.js","./node_modules/d3-transition/src/transition/end.js","./node_modules/d3-transition/src/selection/transition.js","./node_modules/d3-ease/src/cubic.js","./node_modules/d3-transition/src/selection/index.js","./node_modules/d3-transition/src/selection/interrupt.js","./node_modules/d3-brush/src/constant.js","./node_modules/d3-brush/src/event.js","./node_modules/d3-brush/src/noevent.js","./node_modules/d3-brush/src/brush.js","./node_modules/d3-array/src/ascending.js","./node_modules/d3-array/src/bisector.js","./node_modules/d3-array/src/ticks.js","./node_modules/d3-time/src/duration.js","./node_modules/d3-time/src/interval.js","./node_modules/d3-time/src/millisecond.js","./node_modules/d3-time/src/second.js","./node_modules/d3-time/src/minute.js","./node_modules/d3-time/src/hour.js","./node_modules/d3-time/src/day.js","./node_modules/d3-time/src/week.js","./node_modules/d3-time/src/month.js","./node_modules/d3-time/src/year.js","./node_modules/d3-time/src/utcMinute.js","./node_modules/d3-time/src/utcHour.js","./node_modules/d3-time/src/utcDay.js","./node_modules/d3-time/src/utcWeek.js","./node_modules/d3-time/src/utcMonth.js","./node_modules/d3-time/src/utcYear.js","./node_modules/d3-time/src/ticks.js","./node_modules/d3-time-format/src/locale.js","./node_modules/d3-time-format/src/defaultLocale.js","./node_modules/d3-array/src/number.js","./node_modules/d3-array/src/bisect.js","./node_modules/d3-interpolate/src/round.js","./node_modules/d3-scale/src/number.js","./node_modules/d3-scale/src/continuous.js","./node_modules/d3-scale/src/constant.js","./node_modules/d3-scale/src/init.js","./node_modules/d3-scale/src/time.js","./node_modules/d3-scale/src/nice.js","./node_modules/d3-format/src/formatSpecifier.js","./node_modules/d3-format/src/formatPrefixAuto.js","./node_modules/d3-format/src/formatDecimal.js","./node_modules/d3-format/src/exponent.js","./node_modules/d3-format/src/formatRounded.js","./node_modules/d3-format/src/formatTypes.js","./node_modules/d3-format/src/identity.js","./node_modules/d3-format/src/locale.js","./node_modules/d3-format/src/defaultLocale.js","./node_modules/d3-scale/src/linear.js","./node_modules/d3-scale/src/tickFormat.js","./node_modules/d3-format/src/precisionPrefix.js","./node_modules/d3-format/src/precisionRound.js","./node_modules/d3-format/src/precisionFixed.js","./node_modules/d3-array/src/range.js","./node_modules/d3-format/src/formatGroup.js","./node_modules/d3-format/src/formatNumerals.js","./node_modules/d3-format/src/formatTrim.js","./node_modules/d3-scale/src/ordinal.js","./node_modules/d3-scale/src/band.js","./node_modules/d3-array/src/quantile.js","./node_modules/d3-scale/src/quantile.js","./node_modules/d3-shape/src/curve/linear.js","./node_modules/d3-path/src/path.js","./node_modules/d3-shape/src/array.js","./node_modules/d3-shape/src/constant.js","./node_modules/d3-shape/src/point.js","./node_modules/d3-shape/src/line.js","./node_modules/d3-shape/src/area.js","./node_modules/d3-shape/src/noop.js","./node_modules/d3-shape/src/curve/cardinal.js","./node_modules/d3-shape/src/curve/cardinalClosed.js","./node_modules/d3-shape/src/curve/radial.js","./node_modules/d3-shape/src/math.js","./node_modules/d3-shape/src/arc.js","./node_modules/d3-shape/src/descending.js","./node_modules/d3-shape/src/identity.js","./node_modules/d3-hierarchy/src/treemap/dice.js","./node_modules/d3-hierarchy/src/treemap/slice.js","./node_modules/d3-hierarchy/src/hierarchy/count.js","./node_modules/d3-hierarchy/src/hierarchy/index.js","./node_modules/d3-hierarchy/src/treemap/squarify.js","./node_modules/d3-hierarchy/src/hierarchy/each.js","./node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","./node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","./node_modules/d3-hierarchy/src/hierarchy/find.js","./node_modules/d3-hierarchy/src/hierarchy/sum.js","./node_modules/d3-hierarchy/src/hierarchy/sort.js","./node_modules/d3-hierarchy/src/hierarchy/path.js","./node_modules/d3-hierarchy/src/hierarchy/ancestors.js","./node_modules/d3-hierarchy/src/hierarchy/descendants.js","./node_modules/d3-hierarchy/src/hierarchy/leaves.js","./node_modules/d3-hierarchy/src/hierarchy/links.js","./node_modules/d3-hierarchy/src/hierarchy/iterator.js","./node_modules/@swimlane/ngx-charts/__ivy_ngcc__/fesm2015/swimlane-ngx-charts.js","./node_modules/d3-shape/src/pie.js","./node_modules/d3-array/src/max.js","./src/app/error404/error404.component.ts","./src/app/error404/error404.component.html","./src/app/order-steppers/order-resolver.service.ts","./src/app/notary-services/notary-services.component.html","./src/app/notary-services/notary-services.component.ts","./src/app/qr-code/qr-code.component.html","./src/app/qr-code/qr-code.component.ts","./src/app/public-share/public-share-resolver.service.ts","./src/app/core/enums/legalForm.enum.ts","./src/app/client-space/icons/close-icon/close-icon.component.ts","./src/app/client-space/profile/profile-edit/profile-edit.component.html","./src/app/client-space/profile/profile-edit/profile-edit.component.ts","./src/app/client-space/profile/profile-pro-main/profile-pro-main.component.html","./src/app/client-space/profile/profile-pro-main/profile-pro-main.component.ts","./src/app/core/enums/adress-type.enum.ts","./src/app/client-space/profile/add-adress-dialog/add-adress-dialog.component.html","./src/app/client-space/profile/add-adress-dialog/add-adress-dialog.component.ts","./src/app/client-space/profile/delete-adress/delete-adress.component.ts","./src/app/client-space/profile/delete-adress/delete-adress.component.html","./src/app/client-space/profile/edit-adress-dialog/edit-adress-dialog.component.html","./src/app/client-space/profile/edit-adress-dialog/edit-adress-dialog.component.ts","./src/app/client-space/profile/add-adresses/add-adresses.component.html","./src/app/client-space/profile/add-adresses/add-adresses.component.ts","./src/app/core/enums/function-type.enum.ts","./src/app/core/enums/title.enum.ts","./src/app/client-space/profile/add-contact-dialog/add-contact-dialog.component.html","./src/app/client-space/profile/add-contact-dialog/add-contact-dialog.component.ts","./src/app/client-space/profile/delete-contact/delete-contact.component.ts","./src/app/client-space/profile/delete-contact/delete-contact.component.html","./src/app/client-space/profile/edit-contact-dialog/edit-contact-dialog.component.html","./src/app/client-space/profile/edit-contact-dialog/edit-contact-dialog.component.ts","./src/app/client-space/icons/notif-order-icon/notif-order-icon.component.ts","./src/app/client-space/icons/notif-all-icon/notif-all-icon.component.ts","./src/app/client-space/icons/edit-icon/edit-icon.component.ts","./src/app/client-space/profile/profile-pro-contacts/profile-pro-contacts.component.html","./src/app/client-space/profile/profile-pro-contacts/profile-pro-contacts.component.ts","./src/app/client-space/profile/profile-password/profile-password.component.ts","./src/app/client-space/profile/profile-password/profile-password.component.html","./src/app/client-space/profile/profile-upgrade-status/profile-upgrade-status.component.ts","./src/app/client-space/profile/profile-upgrade-status/profile-upgrade-status.component.html","./src/app/client-space/profile/profile-status/profile-status.component.html","./src/app/client-space/profile/profile-status/profile-status.component.ts","./src/app/client-space/profile/profile-pro/profile-pro.component.html","./src/app/client-space/profile/profile-pro/profile-pro.component.ts","./src/app/client-space/profile/profile/profile.component.html","./src/app/client-space/profile/profile/profile.component.ts","./src/app/client-space/listing-notaire-stats/all-notaires/all-notaires.component.html","./src/app/client-space/listing-notaire-stats/all-notaires/all-notaires.component.ts","./src/app/client-space/listing-notaire-stats/actifs-notaires/actifs-notaires.component.html","./src/app/client-space/listing-notaire-stats/actifs-notaires/actifs-notaires.component.ts","./src/app/client-space/listing-notaire-stats/inactifs-notaires/inactifs-notaires.component.html","./src/app/client-space/listing-notaire-stats/inactifs-notaires/inactifs-notaires.component.ts","./src/app/client-space/listing-notaire-stats/listing-notaire/listing-notaire.component.html","./src/app/client-space/listing-notaire-stats/listing-notaire/listing-notaire.component.ts","./src/app/client-space/comissions/comissions-info/comissions-info.component.ts","./src/app/client-space/comissions/comissions-info/comissions-info.component.html","./src/app/client-space/icons/print-icon/print-icon.component.ts","./src/app/client-space/icons/filter-icons/filter-icons.component.ts","./src/app/client-space/comissions/comissions-unpaid/comissions-unpaid.component.html","./src/app/client-space/comissions/comissions-unpaid/comissions-unpaid.component.ts","./src/app/client-space/comissions/comissions-current/comissions-current.component.html","./src/app/client-space/comissions/comissions-current/comissions-current.component.ts","./src/app/client-space/comissions/comissions-dashboard/comissions-dashboard.component.html","./src/app/client-space/comissions/comissions-dashboard/comissions-dashboard.component.ts","./src/app/client-space/comissions/profile-comissions/profile-comissions.component.html","./src/app/client-space/comissions/profile-comissions/profile-comissions.component.ts","./src/app/client-space/listing-notaire-stats/stats-main/stats-main.component.html","./src/app/client-space/listing-notaire-stats/stats-main/stats-main.component.ts","./src/app/client-space/listing-notaire-stats/stats-graph/stats-graph.component.html","./src/app/client-space/listing-notaire-stats/stats-graph/stats-graph.component.ts","./src/app/client-space/listing-notaire-stats/stats/stats.component.html","./src/app/client-space/listing-notaire-stats/stats/stats.component.ts","./src/app/core/guards/auth/index.ts","./src/app/app-routing.module.ts","./src/app/core/effects/ui.effects.ts","./src/app/core/spinner-overlay/loader-interceptor.service.ts","./node_modules/rxjs/dist/esm/internal/operators/retryWhen.js","./node_modules/@angular/common/locales/fr.mjs","./src/app/core/interceptors/authentication.interceptor.ts","./src/app/client-space/icons/icons.module.ts","./src/app/app.module.ts","./src/main.ts","./node_modules/@firebase/app-check/dist/esm/index.esm2017.js","./node_modules/@angular/fire/fesm2015/angular-fire-app-check.js","./node_modules/rxjs/dist/esm/internal/operators/switchMapTo.js","./node_modules/@angular/fire/fesm2015/angular-fire-compat-auth.js","./node_modules/@firebase/webchannel-wrapper/dist/esm/index.esm2017.js","./node_modules/@firebase/firestore/dist/index.esm2017.js","./node_modules/@firebase/firestore-compat/dist/index.esm2017.js","./node_modules/@angular/fire/fesm2015/angular-fire-compat-firestore.js","./node_modules/@angular/fire/fesm2015/angular-fire-compat.js","./node_modules/idb/build/wrap-idb-value.js","./node_modules/idb/build/index.js","./node_modules/@firebase/installations/dist/esm/index.esm2017.js","./node_modules/@firebase/remote-config/dist/esm/index.esm2017.js","./node_modules/@firebase/messaging/dist/esm/index.esm2017.js","./node_modules/@firebase/analytics/dist/esm/index.esm2017.js","./node_modules/@angular/fire/fesm2015/angular-fire.js","./node_modules/@firebase/util/dist/index.esm2017.js","./node_modules/@fortawesome/angular-fontawesome/__ivy_ngcc__/fesm2015/angular-fontawesome.js","./node_modules/@fortawesome/fontawesome-svg-core/index.es.js","./node_modules/@fortawesome/free-solid-svg-icons/index.es.js","./node_modules/flatpickr/dist/esm/types/options.js","./node_modules/flatpickr/dist/esm/l10n/default.js","./node_modules/flatpickr/dist/esm/utils/index.js","./node_modules/flatpickr/dist/esm/utils/dom.js","./node_modules/flatpickr/dist/esm/utils/formatting.js","./node_modules/flatpickr/dist/esm/utils/dates.js","./node_modules/flatpickr/dist/esm/index.js","./node_modules/angularx-flatpickr/__ivy_ngcc__/fesm2015/angularx-flatpickr.js","./node_modules/deepmerge/dist/umd.js","./node_modules/flatpickr/dist/esm/utils/polyfills.js","./node_modules/flatpickr/dist/l10n/fr.js","./node_modules/ng-inline-svg/__ivy_ngcc__/lib_esmodule/inline-svg.config.js","./node_modules/ng-inline-svg/__ivy_ngcc__/lib_esmodule/svg-cache.service.js","./node_modules/ng-inline-svg/__ivy_ngcc__/lib_esmodule/inline-svg.service.js","./node_modules/ng-inline-svg/__ivy_ngcc__/lib_esmodule/inline-svg.component.js","./node_modules/ng-inline-svg/__ivy_ngcc__/lib_esmodule/svg-util.js","./node_modules/ng-inline-svg/__ivy_ngcc__/lib_esmodule/inline-svg.directive.js","./node_modules/ng-inline-svg/__ivy_ngcc__/lib_esmodule/inline-svg.module.js","./node_modules/ng-starrating/__ivy_ngcc__/fesm2015/ng-starrating.js","./node_modules/ng2-file-upload/__ivy_ngcc__/fesm2015/ng2-file-upload.js","./node_modules/ng2-tel-input/__ivy_ngcc__/esm2015/ng2-tel-input.js","./node_modules/ngrx-store-localstorage/dist/index.js","./node_modules/ngx-mask/node_modules/tslib/tslib.es6.js","./node_modules/ngx-mask/__ivy_ngcc__/fesm2015/ngx-mask.js","./node_modules/rxjs/dist/esm/internal/BehaviorSubject.js","./node_modules/rxjs/dist/esm/internal/Observable.js","./node_modules/rxjs/dist/esm/internal/util/pipe.js","./node_modules/rxjs/dist/esm/internal/ReplaySubject.js","./node_modules/rxjs/dist/esm/internal/util/ObjectUnsubscribedError.js","./node_modules/rxjs/dist/esm/internal/Subject.js","./node_modules/rxjs/dist/esm/internal/NotificationFactories.js","./node_modules/rxjs/dist/esm/internal/Subscriber.js","./node_modules/rxjs/dist/esm/internal/util/UnsubscriptionError.js","./node_modules/rxjs/dist/esm/internal/Subscription.js","./node_modules/rxjs/dist/esm/internal/config.js","./node_modules/rxjs/dist/esm/internal/firstValueFrom.js","./node_modules/rxjs/dist/esm/internal/observable/ConnectableObservable.js","./node_modules/rxjs/dist/esm/internal/observable/combineLatest.js","./node_modules/rxjs/dist/esm/internal/observable/concat.js","./node_modules/rxjs/dist/esm/internal/operators/concatAll.js","./node_modules/rxjs/dist/esm/internal/observable/defer.js","./node_modules/rxjs/dist/esm/internal/observable/empty.js","./node_modules/rxjs/dist/esm/internal/observable/forkJoin.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleAsyncIterable.js","./node_modules/rxjs/dist/esm/internal/observable/from.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduled.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleObservable.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleArray.js","./node_modules/rxjs/dist/esm/internal/scheduled/schedulePromise.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleIterable.js","./node_modules/rxjs/dist/esm/internal/scheduled/scheduleReadableStreamLike.js","./node_modules/rxjs/dist/esm/internal/observable/fromEvent.js","./node_modules/rxjs/dist/esm/internal/observable/innerFrom.js","./node_modules/rxjs/dist/esm/internal/observable/merge.js","./node_modules/rxjs/dist/esm/internal/observable/of.js","./node_modules/rxjs/dist/esm/internal/observable/throwError.js","./node_modules/rxjs/dist/esm/internal/observable/timer.js","./node_modules/rxjs/dist/esm/internal/operators/OperatorSubscriber.js","./node_modules/rxjs/dist/esm/internal/operators/auditTime.js","./node_modules/rxjs/dist/esm/internal/operators/audit.js","./node_modules/rxjs/dist/esm/internal/operators/catchError.js","./node_modules/rxjs/dist/esm/internal/operators/concatMap.js","./node_modules/rxjs/dist/esm/internal/operators/debounceTime.js","./node_modules/rxjs/dist/esm/internal/operators/defaultIfEmpty.js","./node_modules/rxjs/dist/esm/internal/operators/delayWhen.js","./node_modules/rxjs/dist/esm/internal/operators/delay.js","./node_modules/rxjs/dist/esm/internal/operators/distinctUntilChanged.js","./node_modules/rxjs/dist/esm/internal/operators/filter.js","./node_modules/rxjs/dist/esm/internal/operators/finalize.js","./node_modules/rxjs/dist/esm/internal/operators/first.js","./node_modules/rxjs/dist/esm/internal/operators/ignoreElements.js","./node_modules/rxjs/dist/esm/internal/operators/map.js","./node_modules/rxjs/dist/esm/internal/operators/mapTo.js","./node_modules/rxjs/dist/esm/internal/operators/mergeAll.js","./node_modules/rxjs/dist/esm/internal/operators/mergeMap.js","./node_modules/rxjs/dist/esm/internal/operators/mergeInternals.js","./node_modules/rxjs/dist/esm/internal/operators/observeOn.js","./node_modules/rxjs/dist/esm/internal/operators/pairwise.js","./node_modules/rxjs/dist/esm/internal/operators/refCount.js","./node_modules/rxjs/dist/esm/internal/operators/scanInternals.js","./node_modules/rxjs/dist/esm/internal/operators/scan.js","./node_modules/rxjs/dist/esm/internal/operators/share.js","./node_modules/rxjs/dist/esm/internal/operators/shareReplay.js","./node_modules/rxjs/dist/esm/internal/operators/skip.js","./node_modules/rxjs/dist/esm/internal/operators/startWith.js","./node_modules/rxjs/dist/esm/internal/operators/subscribeOn.js","./node_modules/rxjs/dist/esm/internal/operators/switchMap.js","./node_modules/rxjs/dist/esm/internal/operators/take.js","./node_modules/rxjs/dist/esm/internal/operators/takeUntil.js","./node_modules/rxjs/dist/esm/internal/operators/tap.js","./node_modules/rxjs/dist/esm/internal/operators/throwIfEmpty.js","./node_modules/rxjs/dist/esm/internal/operators/timeout.js","./node_modules/rxjs/dist/esm/internal/operators/withLatestFrom.js","./node_modules/rxjs/dist/esm/internal/scheduler/Action.js","./node_modules/rxjs/dist/esm/internal/scheduler/intervalProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsyncAction.js","./node_modules/rxjs/dist/esm/internal/Scheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsyncScheduler.js","./node_modules/rxjs/dist/esm/internal/util/Immediate.js","./node_modules/rxjs/dist/esm/internal/scheduler/immediateProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/asap.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsapScheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsapAction.js","./node_modules/rxjs/dist/esm/internal/scheduler/async.js","./node_modules/rxjs/dist/esm/internal/scheduler/dateTimestampProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/queue.js","./node_modules/rxjs/dist/esm/internal/scheduler/QueueScheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/QueueAction.js","./node_modules/rxjs/dist/esm/internal/scheduler/timeoutProvider.js","./node_modules/rxjs/dist/esm/internal/symbol/iterator.js","./node_modules/rxjs/dist/esm/internal/symbol/observable.js","./node_modules/rxjs/dist/esm/internal/util/EmptyError.js","./node_modules/rxjs/dist/esm/internal/util/args.js","./node_modules/rxjs/dist/esm/internal/util/argsArgArrayOrObject.js","./node_modules/rxjs/dist/esm/internal/util/arrRemove.js","./node_modules/rxjs/dist/esm/internal/util/createErrorClass.js","./node_modules/rxjs/dist/esm/internal/util/createObject.js","./node_modules/rxjs/dist/esm/internal/util/errorContext.js","./node_modules/rxjs/dist/esm/internal/util/executeSchedule.js","./node_modules/rxjs/dist/esm/internal/util/identity.js","./node_modules/rxjs/dist/esm/internal/util/isArrayLike.js","./node_modules/rxjs/dist/esm/internal/util/isAsyncIterable.js","./node_modules/rxjs/dist/esm/internal/util/isDate.js","./node_modules/rxjs/dist/esm/internal/util/isFunction.js","./node_modules/rxjs/dist/esm/internal/util/isInteropObservable.js","./node_modules/rxjs/dist/esm/internal/util/isIterable.js","./node_modules/rxjs/dist/esm/internal/util/isObservable.js","./node_modules/rxjs/dist/esm/internal/util/isPromise.js","./node_modules/rxjs/dist/esm/internal/util/isReadableStreamLike.js","./node_modules/rxjs/dist/esm/internal/util/isScheduler.js","./node_modules/rxjs/dist/esm/internal/util/lift.js","./node_modules/rxjs/dist/esm/internal/util/mapOneOrManyArgs.js","./node_modules/rxjs/dist/esm/internal/util/noop.js","./node_modules/rxjs/dist/esm/internal/util/reportUnhandledError.js","./node_modules/rxjs/dist/esm/internal/util/throwUnobservableError.js","./node_modules/@angular/animations/fesm2015/animations.mjs","./node_modules/@angular/cdk/fesm2015/a11y.mjs","./node_modules/@angular/cdk/fesm2015/bidi.mjs","./node_modules/@angular/cdk/fesm2015/coercion.mjs","./node_modules/@angular/cdk/fesm2015/collections.mjs","./node_modules/@angular/cdk/fesm2015/keycodes.mjs","./node_modules/@angular/cdk/fesm2015/layout.mjs","./node_modules/@angular/cdk/fesm2015/observers.mjs","./node_modules/@angular/cdk/fesm2015/overlay.mjs","./node_modules/rxjs/dist/esm/internal/operators/takeWhile.js","./node_modules/@angular/cdk/fesm2015/platform.mjs","./node_modules/@angular/cdk/fesm2015/portal.mjs","./node_modules/rxjs/dist/esm/internal/scheduler/animationFrameProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/animationFrame.js","./node_modules/rxjs/dist/esm/internal/scheduler/AnimationFrameScheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/AnimationFrameAction.js","./node_modules/@angular/cdk/fesm2015/scrolling.mjs","./node_modules/@angular/cdk/fesm2015/text-field.mjs","./node_modules/@angular/common/fesm2015/common.mjs","./node_modules/@angular/common/fesm2015/http.mjs","./node_modules/@angular/core/fesm2015/core.mjs","./node_modules/@angular/forms/fesm2015/forms.mjs","./node_modules/@angular/material/fesm2015/autocomplete.mjs","./node_modules/@angular/material/fesm2015/button-toggle.mjs","./node_modules/@angular/material/fesm2015/button.mjs","./node_modules/@angular/material/fesm2015/checkbox.mjs","./node_modules/@angular/material/fesm2015/core.mjs","./node_modules/@angular/material/fesm2015/datepicker.mjs","./node_modules/@angular/material/fesm2015/dialog.mjs","./node_modules/@angular/cdk/fesm2015/accordion.mjs","./node_modules/@angular/material/fesm2015/expansion.mjs","./node_modules/@angular/material/fesm2015/form-field.mjs","./node_modules/@angular/material/fesm2015/icon.mjs","./node_modules/@angular/material/fesm2015/input.mjs","./node_modules/@angular/material/fesm2015/menu.mjs","./node_modules/@angular/material/fesm2015/progress-spinner.mjs","./node_modules/@angular/material/fesm2015/radio.mjs","./node_modules/@angular/material/fesm2015/select.mjs","./node_modules/@angular/material/fesm2015/slide-toggle.mjs","./node_modules/@angular/material/fesm2015/slider.mjs","./node_modules/@angular/material/fesm2015/snack-bar.mjs","./node_modules/@angular/cdk/fesm2015/stepper.mjs","./node_modules/@angular/material/fesm2015/stepper.mjs","./node_modules/@angular/material/fesm2015/tooltip.mjs","./node_modules/@angular/animations/fesm2015/browser.mjs","./node_modules/@angular/platform-browser/fesm2015/animations.mjs","./node_modules/@angular/platform-browser/fesm2015/platform-browser.mjs","./node_modules/rxjs/dist/esm/internal/operators/takeLast.js","./node_modules/@angular/router/fesm2015/router.mjs","./node_modules/rxjs/dist/esm/internal/operators/last.js","./node_modules/@firebase/app-compat/dist/esm/index.esm2017.js","./node_modules/@firebase/app/node_modules/idb/build/wrap-idb-value.js","./node_modules/@firebase/app/node_modules/idb/build/index.js","./node_modules/@firebase/app/dist/esm/index.esm2017.js","./node_modules/@firebase/component/dist/esm/index.esm2017.js","./node_modules/@firebase/logger/dist/esm/index.esm2017.js","./node_modules/@ngrx/store-devtools/fesm2015/ngrx-store-devtools.mjs","./node_modules/@ngrx/store/fesm2015/ngrx-store.mjs","./node_modules/rxjs/dist/esm/internal/operators/pluck.js","./node_modules/@ngx-translate/core/fesm2015/ngx-translate-core.mjs","./node_modules/@ngx-translate/http-loader/fesm2015/ngx-translate-http-loader.mjs","./node_modules/firebase/app/dist/esm/index.esm.js","./node_modules/firebase/compat/app/dist/esm/index.esm.js","./node_modules/@firebase/auth/dist/esm2017/index-e3d5d3f4.js","./node_modules/@firebase/auth/dist/esm2017/internal.js","./node_modules/@firebase/auth-compat/dist/index.esm2017.js","./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","./node_modules/tslib/tslib.es6.mjs"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable, of } from 'rxjs';\nimport { services, immoServices } from 'src/app/core/data';\nimport { OrderInfosDTO } from 'src/app/core/models/OrderDTO';\nimport { environment } from 'src/environments/environment';\nimport { CompanyEmployeeDTO } from 'src/app/core/models/companyEmployeeDTO';\nimport { share, shareReplay } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ClientOrdersService {\n private apiGetOrderDocs = `${environment.CertiServices.primmo}/clientdocuments/`;\n assetsFolder = 'assets/images/';\n\n constructor(private http: HttpClient) {}\n\n getOrderDocs(orderid: string): Observable {\n if (!this.isGuid(orderid)) {\n return of(false);\n }\n return this.http.get(this.apiGetOrderDocs + orderid);\n }\n\n askActeToTrue(orderid: string): Observable {\n return this.http.post(environment.CertiCore.askActeToTrue.replace('{orderId}', orderid), null);\n }\n\n agreeToPay(orderid: string): Observable {\n return this.http.post(environment.CertiCore.agreeToPay.replace('{orderId}', orderid), null);\n }\n\n public isGuid(stringToTest) {\n const regexGuid = /^(\\{){0,1}[0-9a-fA-F]{8}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{12}(\\}){0,1}$/gi;\n return regexGuid.test(stringToTest);\n }\n\n serviceImgUrl(id: number, selected = false) {\n let url = this.assetsFolder;\n\n url += this.getFileName(id);\n url += selected ? '-selected.svg' : '.svg';\n return url;\n }\n\n getOrderRef(order: OrderInfosDTO) {\n return this.getIdFromGuid(order.OrderId);\n }\n\n getFileName(id: number): string {\n id = id === 8 || id === 36 ? 4 : id === 16 ? 15 : id;\n let s: any = services.find(sv => sv.id === id);\n if (s === undefined) {\n s = immoServices.find(serv => serv.id === id);\n }\n return s === undefined ? 'service-descriptif' : s.fileName;\n }\n\n getIdFromGuid(guid: string, length = 8) {\n return guid.slice(guid.length - length);\n }\n\n isOrderFromNotaria(orderMeansType: number): boolean {\n return orderMeansType === 12 || orderMeansType === 13 || orderMeansType === 14 || orderMeansType === 17;\n }\n\n isClientAndThirdPartyOrder(orderMeansType: number, isThirdParyNotaria) {\n return this.isOrderFromNotaria(orderMeansType) && !isThirdParyNotaria;\n }\n\n isDateToday(dateString: string) {\n const today = new Date();\n const date = new Date(dateString);\n return (\n date.getDate() === today.getDate() &&\n date.getMonth() === today.getMonth() &&\n date.getFullYear() === today.getFullYear()\n );\n }\n\n addDayToDate(dateString: string, days: number) {\n const result = new Date(dateString);\n result.setDate(result.getDate() + days);\n return result;\n }\n\n markNotificationsToRead(orderId: string) {\n return this.http.delete(environment.CertiCore.deleteNotifications.replace('{orderId}', orderId));\n }\n\n getElecAgents(): Observable {\n return this.http.get(environment.CertiCore.getElecAgents).pipe(shareReplay(1));\n }\n}\n","/**\n * CONST for EstateType\n **/\nexport const DEVIS = -2;\n\nexport const NONE = -1;\nexport const OTHER = 0;\n\nexport const MAISON_1 = 3;\nexport const MAISON_2 = 7;\nexport const MAISON_3 = 9;\nexport const MAISON_4 = 8;\nexport const MAISON_5 = 10;\nexport const VILLA = 5;\n\nexport const STUDIO = 4;\nexport const APPART_5075 = 11;\nexport const APPART = 1;\nexport const DUPLEX = 12;\nexport const TRIPLEX = 13;\nexport const TERRAIN = 14;\nexport const STORE = 15;\nexport const INDUSTRY = 16;\nexport const GARAGE = 17;\nexport const OFFICE = 18;\nexport const NON_RESI_OVER_250 = -2;\n\nexport const IMMEUBLE_APPART = 2;\n\nexport const HOUSE = 0;\nexport const FLAT = 1;\nexport const BUILDING = 2;\nexport const OLD_LAND = 3;\nexport const NON_RES = 4;\nexport const LAND = 14;\n\nexport const estatesName = [\n { id: OTHER, name: 'Autre' },\n { id: MAISON_2, name: 'Maison 2CH (<200m²)' },\n { id: MAISON_3, name: 'Maison 3CH (201- 250m²)' },\n { id: MAISON_4, name: 'Maison 4CH - 5CH (251 - 300m²)' },\n { id: MAISON_5, name: 'Maison > 5CH (301 - 400m²)' },\n { id: VILLA, name: 'Maison/villa > 5CH (401 - 600m²)' },\n { id: STUDIO, name: 'Studio (<50m²)' },\n { id: APPART_5075, name: 'Appart (51-75 m²)' },\n { id: APPART, name: 'Appart (76-125 m²)' },\n { id: DUPLEX, name: 'Appart (126-200 m²) ou duplex' },\n { id: TRIPLEX, name: 'Appart (> 201m2) ou Triplex' },\n { id: IMMEUBLE_APPART, name: 'Immeuble' },\n { id: TERRAIN, name: 'Terrain' },\n { id: STORE, name: 'Magasin' },\n { id: INDUSTRY, name: 'Industriel' },\n { id: GARAGE, name: 'Garage' },\n { id: OFFICE, name: 'Bureau' }\n];\n\nexport const estates = {\n m: [\n { buildingType: 'm', id: 2, text: '2 chambres', typeId: MAISON_2 },\n { buildingType: 'm', id: 3, text: '3 chambres', typeId: MAISON_3 },\n { buildingType: 'm', id: 4, text: '4 chambres', typeId: MAISON_4 },\n { buildingType: 'm', id: 5, text: '5 chambres & -350m2', typeId: MAISON_5 },\n { buildingType: 'm', id: 6, text: 'Entre 350m2 & 500m2', typeId: VILLA },\n { buildingType: 'm', id: 7, text: 'Plus de 500m²', typeId: DEVIS }\n /* {\n buildingType: 'm',\n id: 5,\n text: '+',\n typeId: MAISON_5,\n subOptions: [\n { buildingType: 'm', id: 6, text: '-350m²', typeId: MAISON_5 },\n { buildingType: 'm', id: 7, text: '+350m²', typeId: VILLA },\n { buildingType: 'm', id: 8, text: '+500m²', typeId: DEVIS }\n ]\n } */\n ],\n a: [\n { buildingType: 'a', id: 21, text: 'Studio (<50m²)', typeId: STUDIO },\n { buildingType: 'a', id: 22, text: '50-75m²', typeId: APPART_5075 },\n { buildingType: 'a', id: 23, text: '75-125m²', typeId: APPART },\n { buildingType: 'a', id: 24, text: '125-200m²', typeId: DUPLEX },\n { buildingType: 'a', id: 21, text: '+200m²/Triplex', typeId: TRIPLEX }\n ],\n i: [\n { id: 2, text: '2', typeId: IMMEUBLE_APPART },\n { id: 3, text: '3', typeId: IMMEUBLE_APPART },\n { id: 4, text: '4', typeId: IMMEUBLE_APPART },\n { id: 5, text: '5', typeId: IMMEUBLE_APPART },\n { id: 6, text: '6', typeId: IMMEUBLE_APPART },\n { id: 7, text: '7', typeId: IMMEUBLE_APPART },\n { id: 8, text: '8', typeId: IMMEUBLE_APPART },\n { id: 9, text: '9', typeId: IMMEUBLE_APPART },\n { id: 10, text: '10', typeId: IMMEUBLE_APPART },\n { id: 11, text: '11', typeId: IMMEUBLE_APPART },\n { id: 12, text: '12', typeId: IMMEUBLE_APPART },\n { id: 13, text: '13', typeId: IMMEUBLE_APPART },\n { id: 14, text: '14', typeId: IMMEUBLE_APPART },\n { id: 15, text: '15', typeId: IMMEUBLE_APPART },\n { id: 16, text: '16', typeId: IMMEUBLE_APPART },\n { id: 17, text: '17', typeId: IMMEUBLE_APPART },\n { id: 18, text: '18', typeId: IMMEUBLE_APPART },\n { id: 19, text: '19', typeId: IMMEUBLE_APPART },\n { id: 20, text: '20', typeId: IMMEUBLE_APPART }\n ],\n non: [\n { id: 1, text: 'Terrain', typeId: TERRAIN },\n { id: 2, text: 'Magasin', typeId: STORE },\n { id: 3, text: 'Industriel', typeId: INDUSTRY },\n { id: 4, text: 'Garage', typeId: GARAGE },\n { id: 5, text: 'Bureau', typeId: OFFICE },\n { id: 6, text: '+250m²', typeId: NON_RESI_OVER_250 }\n ]\n};\n\nexport const estatesOld = {\n a: [\n { id: 0, name: 'bien-appart-Studio (<50m2)' },\n { id: 1, name: 'bien-appart-50-75m2' },\n { id: 2, name: 'bien-appart-75-125m2' },\n { id: 3, name: 'bien-appart-125-200m2' },\n { id: 4, name: 'bien-appart-200-300m2' },\n { id: 5, name: 'bien-appart->300m2' }\n ],\n m: [\n { id: 1, name: 'bien-maison-2 chambres' },\n { id: 2, name: 'bien-maison-3 chambres' },\n { id: 3, name: 'bien-maison-4 chambres' },\n { id: 4, name: 'bien-maison-5 chambres' },\n { id: 5, name: 'bien-maison-6 chambres' },\n { id: 6, name: 'bien-maison-Villa' },\n { id: 7, name: 'bien-maison-GrandeVilla' },\n { id: 8, name: 'bien-maison-Villa' },\n { id: 9, name: 'bien-maison-GrandeVilla' },\n { id: 100, name: 'bien-maison-needtocall' }\n ],\n i: [\n { id: 1, name: 'immeuble' },\n { id: 2, name: 'immeuble' },\n { id: 3, name: 'immeuble' },\n { id: 4, name: 'immeuble' },\n { id: 5, name: 'immeuble' },\n { id: 6, name: 'immeuble' }\n ]\n};\n\n/**\n * TABLE for binding ui estate to estate type\n **/\nconst EstateTypes = [\n { buildingType: 'a', size: 0, typeId: STUDIO }, // studio <50m2\n { buildingType: 'a', size: 1, typeId: APPART_5075 }, // app 50-75m2\n { buildingType: 'a', size: 2, typeId: APPART }, // app 75-125m2\n { buildingType: 'a', size: 3, typeId: DUPLEX }, // app 125-200m2\n { buildingType: 'a', size: 4, typeId: TRIPLEX }, // app 200-300m2 duplex??\n { buildingType: 'a', size: 5, typeId: TRIPLEX }, // app +300m2 triplex??\n\n { buildingType: 'm', size: 1, typeId: MAISON_2 }, // maison 2 ch\n { buildingType: 'm', size: 2, typeId: MAISON_3 }, // maison 3 ch\n { buildingType: 'm', size: 3, typeId: MAISON_4 }, // maison 4 ch\n\n { buildingType: 'm', size: 6, typeId: MAISON_5 }, // maison 5 ch -350m2\n { buildingType: 'm', size: 7, typeId: VILLA }, // maison 5 ch +350m2\n { buildingType: 'm', size: 8, typeId: VILLA }, // maison + ch -350m2\n { buildingType: 'm', size: 9, typeId: VILLA }, // maison + ch +350m2\n\n { buildingType: 'i', count: 1, typeId: IMMEUBLE_APPART }, // immeuble\n { buildingType: 'i', count: 2, typeId: IMMEUBLE_APPART }, // immeuble\n { buildingType: 'i', count: 3, typeId: IMMEUBLE_APPART }, // immeuble\n { buildingType: 'i', count: 4, typeId: IMMEUBLE_APPART }, // immeuble\n { buildingType: 'i', count: 5, typeId: IMMEUBLE_APPART }, // immeuble\n { buildingType: 'i', count: 6, typeId: IMMEUBLE_APPART } // immeuble\n];\n","export const contactLinks = {\n ['fr']: 'https://www.certinergie.be/fr/contact/',\n ['nl']: 'https://www.certinergie.be/nl/contact-en-afspraak/',\n ['en']: 'https://www.certinergie.be/en/contact-and-appointment/',\n ['de']: 'https://www.certinergie.be/en/contact-and-appointment/'\n};\n","export const regions = [\n {\n id: -1,\n name: 'Sélectionnez une région',\n fileName: 'be'\n },\n {\n id: 0,\n name: 'Région wallonne',\n fileName: 'be-wal'\n },\n {\n id: 1,\n name: 'Région bruxelloise',\n fileName: 'be-bxl'\n },\n {\n id: 2,\n name: 'Région flamande',\n fileName: 'be-vl'\n }\n];\n","export const PEB = 1;\nexport const PEB_Partiel = 11;\nexport const AUDIT = 3;\nexport const PEB_BOOST = 108;\nexport const ASBESTOS = 118;\nexport const ELEC = 4;\nexport const ELEC_SUPP = 8;\nexport const DISCOUNT = 5;\nexport const CITERNE_ENTERREE = 9;\nexport const EXTRA = 10;\nexport const CITERNE_AERIENNE = 6;\nexport const DEPLACEMENT = 13;\nexport const PLAN = 14;\nexport const GAZ_CONTROLE = 15;\nexport const GAZ_SUPP = 16;\nexport const GAZ_CONTROLE_PERIO = 100;\nexport const BLOWER_DOOR = 141;\n\nexport const ISO = 17;\n\nexport const DESCRIPTIF = 27;\nexport const PLAN3D = 26;\nexport const VISITE360 = 21;\nexport const VISITMATTERPORT = 113;\nexport const PHOTO = 18;\nexport const PHOTODRONE = 19;\nexport const VIDEO_DRONE = 101;\nexport const VIDEO = 20;\nexport const VIDEO_TEASING = 111;\nexport const QR = 112;\nexport const RESP_PEB = 22;\nexport const ELEC_NONDOM_MAX125A = 23;\nexport const ELEC_NONDOM_OVER125A = 24;\nexport const PEBCHAUFFAGE = 28;\n\nexport const PANELBIDDIT = 29;\nexport const PANELBIDDIT_SUPPORT = 30;\nexport const PANEL = 32;\nexport const PANEL_SUPPORT = 33;\nexport const SMS = 34;\nexport const ELEC_PHOTOVOLTA = 37;\n\nexport const PANEL_STANDARD = 102;\nexport const PANEL_XL_CERTI = 103;\nexport const PANEL_DEVIS = 104;\n\nexport const IMMOCOMBI = 50;\nexport const VISIOCOMBI = 51;\nexport const CONTROLECOMBI = 52;\n\nexport const PEB_SUPP = 11111;\n// export const AUDIT_SUPP = 11112;\n\nexport const SPECIFIC = -1;\nexport const PLAQUETTE = -2;\nexport const VISIT = -5;\nexport const DESCRIPTIF_URBA = -6;\nexport const LIVRET = -7;\nexport const AFFICHETTE = -8;\nexport const AMIANTE = -11;\nexport const NETTMAISON = -13;\nexport const NETTJARDIN = -14;\nexport const VISITADVALORIS = 10023;\nexport const LOCKSMITH = 10024;\nexport const FRAIS_DOSSIER = -10;\nexport const URGENT_PRO = -12;\nexport const PRINT = -40;\nexport const PRINT_A_LA_CARTE = -41;\nexport const PRINT_A_LA_CARTE_BIS = -411;\nexport const PANEL_XL = -42;\n\nexport const PublicationNotaireBE = 10000;\nexport const PublicationImmowebXL = 10001;\nexport const ImmovlanOnline = 10002;\nexport const NotaireBEOnline = 10003;\nexport const BidditOnline = 10004;\nexport const Fees = 10005;\nexport const BidditFees = 10006;\nexport const FullPress = 10007;\nexport const PublicationVlan = 10008;\nexport const PublicationLeSoir = 10009;\nexport const PublicationNiewsblad = 10010;\nexport const PublicationHetLaatsteNieuws = 10011;\nexport const publicationLaLibre = 10012;\nexport const PublicationDezeWeekRingBXL = 10013;\nexport const PublicationBruzz = 10014;\nexport const PublicationDeZondag = 10015;\nexport const PublicationRondomVlaamsBrabant = 10016;\nexport const PublicationRomdomPajottenland = 10017;\nexport const PublicationRondomNoordrant = 10018;\nexport const PublicationProximag = 10019;\nexport const PublicationEcho = 10020;\nexport const PublicationDeTijd = 10021;\nexport const PublicationDeMorgen = 10022;\n\nexport const PublicationAvenir = 10025;\nexport const PublicationProximagAndenne = 10026;\nexport const PublicationProximagCiney_Condroz = 10027;\nexport const PublicationProximagDinant_Bauraing = 10028;\nexport const PublicationProximagGembloux = 10029;\nexport const PublicationProximagNamur = 10030;\nexport const PublicationProximagPhilippeville = 10031;\nexport const PublicationProximagCouvinChimay = 10032;\nexport const PublicationProximagCiney_Dinant_Beauraing = 10033;\nexport const PublicationProximagCharleroi = 10034;\nexport const PublicationProximagBrabantWallonEst = 10035;\nexport const PublicationProximagHuy = 10036;\nexport const PublicationProximagHesbaye = 10037;\nexport const PublicationProximagFamenne = 10038;\nexport const PublicationProximagArdennes = 10039;\n\nexport const VisitGil4S = 10040;\nexport const VisitGil6S = 10041;\nexport const VisitGilBoundless_3M = 10042;\nexport const VisitGil2Times_Bid = 10043;\nexport const VisitGilBoundless_Bid = 10044;\nexport const VlanEditionLocal = 10045;\n\nexport const ProximagNamurBW = 10050;\nexport const ProximagLuxembourg = 10051;\nexport const ProximagLiege = 10052;\nexport const ProximagHainautOcc = 10053;\nexport const ProximagHainautOutOfOcc = 10054;\nexport const PublicationNotaireBeZimmo = 10055;\nexport const PublicationFbIns = 10056;\nexport const ZYVA = 99999;\nexport const FireLvl2Check = 44; // INCENDIE NIV 2 - Contrôle de conformité du système de détection incendie\nexport const FireLvl1Periodical = 45; // INCENDIE NIV 1 - Périodique système de détection incendie\nexport const FireCheckGasDetectors = 136; // INCENDIE - Contrôle détecteurs de gaz\nexport const FireCheckHoseReelAndHydrant = 137; // INCENDIE - Contrôle dévidoirs et hydrants\nexport const FireCheckEmergencyLighting = 138; // INCENDIE - Contrôle éclairage de secours\nexport const FireCheckSmokeEvacuation = 139; // INCENDIE - Contrôle des évacuations de fumée\nexport const FireLvl1Or2TestFireDetection = 140; // INCENDIE NIV 1 OU 2 - Test de détection incendie\n","export enum Reasons {\n VENTE = 0,\n LOCATION = 1,\n RENOVATION = 2,\n CONTROLE = 3\n}\n","import * as estates from './estates';\nimport { UserType, UserRole } from '../models/user';\nimport { Reasons } from '../enums/reason.enum';\nimport { VENTES } from '../enums/vente.enum';\n\nimport * as PRODUCTS from '../data/products';\n\nexport const descriptifPacks = [52, 54];\nexport const displayedPacks = [];\n\nexport const ONLINE_REDUC = 10;\n\nexport const orderMeansType = 1;\n\nexport const specialPrices = [];\n\nexport const services = [\n {\n id: 1,\n name: 'Certificat PEB',\n regions: [0, 1, 2],\n biens: [estates.HOUSE, estates.FLAT, estates.BUILDING],\n fileName: 'service-peb',\n reasons: [Reasons.VENTE, Reasons.LOCATION, Reasons.CONTROLE]\n },\n {\n id: 4,\n name: 'Contrôle électrique',\n regions: [0, 1, 2],\n biens: [estates.HOUSE, estates.FLAT, estates.BUILDING],\n fileName: 'service-elec',\n reasons: [Reasons.VENTE, Reasons.CONTROLE]\n },\n {\n id: 9,\n name: 'Contrôle citerne',\n regions: [0, 1],\n biens: [estates.HOUSE],\n fileName: 'service-citerne',\n reasons: [Reasons.VENTE, Reasons.CONTROLE]\n },\n {\n id: 15,\n name: 'Ouverture de compteur Gaz + CERGA',\n regions: [0, 1, 2],\n biens: [estates.HOUSE, estates.FLAT, estates.BUILDING],\n fileName: 'service-gaz',\n reasons: [Reasons.CONTROLE]\n },\n {\n id: 28,\n name: 'PEB chauffage type 1',\n regions: [1],\n biens: [estates.HOUSE, estates.FLAT, estates.BUILDING],\n fileName: 'service-peb-chauffage',\n reasons: [Reasons.CONTROLE]\n },\n {\n id: 49,\n name: 'PEB chauffage type 2',\n regions: [1],\n biens: [estates.HOUSE, estates.FLAT, estates.BUILDING],\n fileName: 'service-peb-chauffage',\n reasons: [Reasons.CONTROLE]\n },\n {\n id: 100,\n name: 'Contrôle Gaz périodique',\n regions: [0, 1, 2],\n biens: [estates.HOUSE, estates.FLAT, estates.BUILDING],\n fileName: 'service-gaz',\n reasons: [Reasons.CONTROLE]\n },\n /* {\n id: 50,\n name: 'Entretien chaudière',\n regions: [1],\n biens: [estates.HOUSE, estates.FLAT, estates.BUILDING],\n fileName: 'service-chaudiere-entretien',\n reasons: [Reasons.CONTROLE]\n }, */\n {\n id: PRODUCTS.AUDIT,\n name: 'Audit',\n regions: [0],\n biens: [estates.HOUSE, estates.FLAT, estates.BUILDING],\n fileName: 'service-audit',\n reasons: [Reasons.RENOVATION]\n },\n {\n id: PRODUCTS.RESP_PEB,\n name: 'Responsabilité PEB / Conseil PEB',\n regions: [0, 1],\n biens: [estates.HOUSE, estates.APPART, estates.BUILDING, estates.INDUSTRY, estates.STORE, estates.OFFICE],\n fileName: 'service-descriptif',\n reasons: [Reasons.RENOVATION]\n },\n {\n id: PRODUCTS.ELEC_PHOTOVOLTA,\n name: 'Photovoltaïque - Borne recharge - Batterie',\n regions: [0, 1, 2],\n biens: [estates.HOUSE, estates.FLAT, estates.BUILDING],\n fileName: 'service-elec-battery',\n reasons: [Reasons.CONTROLE]\n },\n /* {\n id: PRODUCTS.AMIANTE,\n name: 'Amiante',\n regions: [0, 1],\n biens: [estates.HOUSE, estates.FLAT, estates.BUILDING],\n fileName: 'service-descriptif',\n reasons: [Reasons.CONTROLE]\n }, */\n {\n id: PRODUCTS.ELEC_NONDOM_MAX125A,\n name: 'Elec non résidentiel (<125A)',\n regions: [0, 1, 2],\n biens: [estates.OFFICE, estates.STORE, estates.INDUSTRY, estates.GARAGE],\n fileName: 'service-elec',\n reasons: []\n },\n {\n id: PRODUCTS.ELEC_NONDOM_OVER125A,\n name: 'Elec non résidentiel (>125A)',\n regions: [0, 1, 2],\n biens: [estates.OFFICE, estates.STORE, estates.INDUSTRY, estates.GARAGE],\n fileName: 'service-elec',\n reasons: []\n },\n {\n id: PRODUCTS.FireLvl2Check,\n name: 'Contrôle de conformité du système de détection incendie',\n regions: [],\n biens: [],\n fileName: 'service-fire',\n reasons: []\n },\n {\n id: PRODUCTS.FireLvl1Periodical,\n name: 'Périodique système de détection incendie',\n regions: [],\n biens: [],\n fileName: 'service-fire',\n reasons: []\n },\n {\n id: PRODUCTS.FireCheckGasDetectors,\n name: 'Contrôle détecteurs de gaz',\n regions: [],\n biens: [],\n fileName: 'service-fire',\n reasons: []\n },\n {\n id: PRODUCTS.FireCheckHoseReelAndHydrant,\n name: 'Contrôle dévidoirs et hydrants',\n regions: [],\n biens: [],\n fileName: 'service-fire',\n reasons: []\n },\n {\n id: PRODUCTS.FireCheckEmergencyLighting,\n name: 'Contrôle éclairage de secours',\n regions: [],\n biens: [],\n fileName: 'service-fire',\n reasons: []\n },\n {\n id: PRODUCTS.FireCheckSmokeEvacuation,\n name: 'Contrôle des évacuations de fumée',\n regions: [],\n biens: [],\n fileName: 'service-fire',\n reasons: []\n },\n {\n id: PRODUCTS.FireLvl1Or2TestFireDetection,\n name: 'Test de détection incendie',\n regions: [],\n biens: [],\n fileName: 'service-fire',\n reasons: []\n }\n];\n\nexport const servicesSupp = [\n {\n id: 6,\n name: 'Contrôle citerne aérienne',\n regions: [0, 1],\n biens: [estates.HOUSE],\n fileName: 'service-citerne',\n reasons: [Reasons.CONTROLE, Reasons.LOCATION]\n }\n];\n\nexport const immoServices = [\n {\n id: 14,\n name: 'Plan 2D',\n regions: [0, 1, 2],\n biens: [\n estates.HOUSE,\n estates.FLAT,\n estates.BUILDING,\n estates.OFFICE,\n estates.STORE,\n estates.INDUSTRY,\n estates.GARAGE\n ],\n fileName: 'service-plan',\n userTypes: [],\n reasons: [],\n venteTypes: [VENTES.VENTE_PUB, VENTES.GRE_A_GRE, VENTES.BIDDIT]\n },\n {\n id: 26,\n name: 'Plan 3D',\n regions: [0, 1, 2],\n biens: [estates.HOUSE, estates.FLAT, estates.BUILDING],\n fileName: 'service-3d',\n userTypes: [UserType.Notaire, UserType.Agence],\n reasons: [],\n venteTypes: [VENTES.VENTE_PUB, VENTES.GRE_A_GRE, VENTES.BIDDIT]\n },\n {\n id: 21,\n name: 'Visite 360°',\n regions: [0, 1, 2],\n biens: [estates.HOUSE, estates.OFFICE, estates.STORE, estates.INDUSTRY, estates.GARAGE],\n fileName: 'service-360',\n userTypes: [UserType.Notaire, UserType.Agence],\n reasons: [],\n venteTypes: [VENTES.VENTE_PUB, VENTES.GRE_A_GRE, VENTES.BIDDIT]\n },\n {\n id: 18,\n name: 'Photo [HDR]',\n regions: [0, 1, 2],\n biens: [\n estates.HOUSE,\n estates.FLAT,\n estates.BUILDING,\n estates.TERRAIN,\n estates.OFFICE,\n estates.STORE,\n estates.INDUSTRY,\n estates.GARAGE\n ],\n fileName: 'service-photo',\n userTypes: [UserType.Notaire, UserType.Agence],\n reasons: [],\n venteTypes: [VENTES.VENTE_PUB, VENTES.GRE_A_GRE, VENTES.BIDDIT]\n },\n {\n id: 19,\n name: 'Photos aériennes',\n regions: [0, 1],\n biens: [estates.HOUSE, estates.FLAT, estates.BUILDING, estates.LAND],\n fileName: 'service-drone',\n userTypes: [UserType.Notaire, UserType.Agence],\n reasons: [],\n venteTypes: [VENTES.VENTE_PUB, VENTES.GRE_A_GRE, VENTES.BIDDIT]\n },\n {\n id: 20,\n name: 'Vidéo descriptive',\n regions: [0, 1],\n biens: [estates.HOUSE, estates.FLAT, estates.BUILDING],\n fileName: 'service-video',\n userTypes: [UserType.Notaire, UserType.Agence],\n reasons: [],\n venteTypes: [VENTES.VENTE_PUB, VENTES.GRE_A_GRE, VENTES.BIDDIT]\n },\n {\n id: 111,\n name: 'Video Teasing',\n regions: [],\n biens: [],\n fileName: 'service-video',\n userTypes: [UserType.Notaire, UserType.Agence],\n reasons: [],\n venteTypes: []\n },\n {\n id: 27,\n name: 'Descriptif',\n regions: [0, 1, 2],\n biens: [estates.HOUSE, estates.FLAT, estates.BUILDING],\n fileName: 'service-descriptif',\n free: true,\n userTypes: [UserType.Notaire],\n reasons: [],\n venteTypes: [VENTES.VENTE_PUB, VENTES.GRE_A_GRE, VENTES.BIDDIT]\n },\n {\n id: 101,\n name: 'Vidéo avec vue drônes',\n regions: [0, 1],\n biens: [estates.HOUSE, estates.FLAT, estates.BUILDING, estates.LAND],\n fileName: 'service-drone',\n userTypes: [UserType.Notaire, UserType.Agence],\n reasons: [],\n venteTypes: [VENTES.VENTE_PUB, VENTES.GRE_A_GRE, VENTES.BIDDIT]\n },\n {\n id: -2,\n name: 'Web vitrine du bien',\n regions: [0, 1, 2],\n biens: [estates.HOUSE, estates.FLAT, estates.BUILDING],\n fileName: 'service-plaquette',\n free: true,\n userTypes: [UserType.Notaire],\n reasons: [],\n venteTypes: [VENTES.VENTE_PUB, VENTES.GRE_A_GRE, VENTES.BIDDIT]\n },\n {\n id: PRODUCTS.NETTMAISON,\n name: 'Nettoyage maison',\n regions: [0, 1],\n biens: [estates.HOUSE, estates.FLAT, estates.BUILDING],\n fileName: 'service-maison',\n userTypes: [UserType.Notaire],\n reasons: [],\n venteTypes: [VENTES.VENTE_PUB, VENTES.GRE_A_GRE, VENTES.BIDDIT]\n },\n {\n id: PRODUCTS.NETTJARDIN,\n name: 'Nettoyage Jardin',\n regions: [0, 1],\n biens: [estates.HOUSE, estates.FLAT, estates.BUILDING],\n fileName: 'service-jardin',\n userTypes: [UserType.Notaire],\n reasons: [],\n venteTypes: [VENTES.VENTE_PUB, VENTES.GRE_A_GRE, VENTES.BIDDIT]\n },\n {\n id: PRODUCTS.ZYVA,\n name: 'Visite by ZYVA',\n regions: [0, 1, 2],\n biens: [estates.HOUSE, estates.FLAT, estates.BUILDING],\n fileName: 'service-visite',\n userTypes: [UserType.Notaire],\n reasons: [],\n venteTypes: [VENTES.VENTE_PUB, VENTES.GRE_A_GRE, VENTES.BIDDIT]\n }\n];\n\nexport const panneauxServices = [\n /* {\n id: 29,\n name: 'Panneau Biddit',\n regions: [0, 1, 2],\n biens: [estates.HOUSE, estates.FLAT, estates.BUILDING, estates.TERRAIN],\n fileName: 'panneau-basic',\n userTypes: [],\n reasons: [],\n venteTypes: [VENTES.VENTE_PUB, VENTES.GRE_A_GRE, VENTES.BIDDIT]\n },\n {\n id: 30,\n name: 'Panneau pack',\n regions: [0, 1, 2],\n biens: [],\n fileName: 'panneau-basic',\n userTypes: [],\n reasons: [],\n venteTypes: []\n },\n {\n id: 102,\n name: 'Commande panneaux',\n regions: [0, 1, 2],\n biens: [estates.HOUSE, estates.FLAT, estates.BUILDING, estates.TERRAIN],\n fileName: 'panneau-placement-alone',\n userTypes: [],\n reasons: [],\n venteTypes: []\n }, */\n {\n id: -42,\n name: 'Panneau XL',\n regions: [0, 1, 2],\n biens: [],\n fileName: 'panneau-xl',\n userTypes: [],\n reasons: [],\n venteTypes: [VENTES.VENTE_PUB, VENTES.GRE_A_GRE, VENTES.BIDDIT]\n },\n {\n id: 32,\n name: 'Pose panneau collé',\n regions: [0, 1, 2],\n biens: [estates.HOUSE, estates.FLAT, estates.BUILDING, estates.TERRAIN],\n fileName: 'panneau-placement-alone',\n userTypes: [],\n reasons: [],\n venteTypes: [VENTES.VENTE_PUB, VENTES.GRE_A_GRE, VENTES.BIDDIT]\n },\n {\n id: 33,\n name: 'Pose panneau support',\n regions: [0, 1, 2],\n biens: [estates.HOUSE, estates.FLAT, estates.BUILDING, estates.TERRAIN],\n fileName: 'panneau-placement-alone',\n userTypes: [],\n reasons: [],\n venteTypes: []\n },\n {\n id: 34,\n name: 'SMS',\n regions: [0, 1, 2],\n biens: [estates.HOUSE],\n fileName: 'panneau-sms',\n free: true,\n userTypes: [],\n reasons: [],\n venteTypes: [VENTES.VENTE_PUB, VENTES.GRE_A_GRE, VENTES.BIDDIT]\n }\n];\n\nexport const immoPacks = [\n {\n id: 51,\n name: 'Contrôle combi peb elec',\n regions: [0, 1, 2],\n biens: [estates.HOUSE, estates.FLAT, estates.BUILDING],\n services: [1, 4],\n fileName: 'controle-combi.png',\n reduc: 10,\n userTypes: [\n UserType.Particulier,\n UserType.Agence,\n UserType.Certificateur,\n UserType.Notaire,\n UserType.Installateur,\n UserType.Avocat\n ],\n userRoles: [],\n show: true\n },\n {\n id: 55,\n name: 'Contrôle combi gaz élec',\n regions: [0, 1, 2],\n biens: [estates.HOUSE, estates.FLAT, estates.BUILDING],\n services: [4, 15],\n fileName: 'controle-combi.png',\n reduc: 35,\n userTypes: [\n UserType.Particulier,\n UserType.Agence,\n UserType.Certificateur,\n UserType.Notaire,\n UserType.Installateur,\n UserType.Avocat\n ],\n userRoles: [],\n show: true\n },\n {\n id: 52,\n name: 'Média combi',\n regions: [0, 1, 2],\n biens: [estates.HOUSE, estates.FLAT, estates.BUILDING],\n services: [14, 18, 21],\n fileName: 'media-combi.png',\n reduc: 181,\n userTypes: [\n UserType.Particulier,\n UserType.Agence,\n UserType.Certificateur,\n UserType.Notaire,\n UserType.Installateur,\n UserType.Avocat\n ],\n userRoles: [UserRole.ImmoAccess],\n show: true\n },\n {\n id: 53,\n name: 'Immo light combi',\n regions: [0, 1, 2],\n biens: [estates.HOUSE, estates.FLAT, estates.BUILDING],\n services: [1, 4, 18],\n fileName: 'immo-light-combi.png',\n reduc: 40,\n userTypes: [\n UserType.Particulier,\n UserType.Agence,\n UserType.Certificateur,\n UserType.Notaire,\n UserType.Installateur,\n UserType.Avocat\n ],\n userRoles: [UserRole.ImmoAccess],\n show: true\n },\n {\n id: 54,\n name: 'Immo combi',\n regions: [0, 1, 2],\n biens: [estates.HOUSE, estates.FLAT, estates.BUILDING],\n services: [1, 4, 14, 18, 21],\n fileName: 'immo-combi.png',\n reduc: 309,\n userTypes: [\n UserType.Particulier,\n UserType.Agence,\n UserType.Certificateur,\n UserType.Notaire,\n UserType.Installateur,\n UserType.Avocat\n ],\n userRoles: [UserRole.ImmoAccess],\n show: true\n }\n];\n\nexport const publicationServices = [\n {\n id: -41,\n name: 'Publication à la carte',\n regions: [0, 1, 2],\n biens: [estates.HOUSE, estates.FLAT, estates.BUILDING],\n fileName: 'lavenir',\n userTypes: [],\n venteTypes: [VENTES.VENTE_PUB, VENTES.GRE_A_GRE, VENTES.BIDDIT]\n }\n];\n\nexport const mdnServices = [];\n\nexport const estateStyles = [\n {\n id: -1,\n name: 'Sélectionnez un type de bien',\n type: '',\n fileName: 'type-estate'\n },\n {\n id: 0,\n name: 'Maison',\n type: 'house',\n fileName: 'type-maison'\n },\n {\n id: 1,\n name: 'Appartement',\n type: 'flat',\n fileName: 'type-appart'\n },\n {\n id: 2,\n name: 'Immeuble d’appartements',\n type: 'building',\n fileName: 'type-immeuble'\n },\n {\n id: 4,\n name: 'Non résidentiel',\n type: 'non-res',\n fileName: 'type-terrain'\n }\n];\n","export const projectID: 'default' | 'greenfish' | 'hainaut' | 'namur' | 'nvn' | 'liege' = 'default';\n\nexport const hasImmoAccessProject = false;\nexport const hasClientTypeChoice = true;\nexport const hasAccessAllPack = false;\n\nexport const displayHelpSection = true;\n\nexport const step1TitleImmo = false;\nexport const step1SubTitle = true;\nexport const step2HideDateButoir = false;\nexport const headerShowPhone = true;\nexport const showBigFooter = true;\nexport const showFinalOptions = true;\n\nexport const displayRegionSelection = true;\nexport const defaultRegion: -1 | 0 | 1 | 2 = -1;\n\nexport const filterNewUserTypes = [];\n\nexport const getPricesID = -1;\n\nexport const projectIDs = {\n packRoleID: ''\n};\n\nexport const forceConnection = false;\n\nexport const forceInvoiceToPro = false;\nexport const hasSplitInvoice = true;\nexport const themeColor = '#8ec640';\nexport const displayAskForExpertise = true;\n","export enum OrderStatus {\n All = 0,\n Attente = 1,\n Planifier = 2,\n Execute = 3,\n Annule = 4,\n Suspens = 5,\n AttenteFichiers = 6,\n AnnuleFacture = 7,\n Paid = 8,\n NotPaid = 9,\n BDCSigned = 10,\n BdcNotSigned = 30,\n OngoingOrders = 31,\n AllMissingFiles = 32,\n ExecutePastMonth = 33,\n NotPaidWithInvoice = 34,\n NotPaidWithCallback = 35,\n AllThisYear = 36,\n NewOrderPastMonth = 37,\n LatestOrders = 38\n}\n","/**\n * ENUM for PricingPlans\n **/\nexport enum PricingPlans {\n NONE = 0,\n BRONZE = 1,\n SILVER = 2,\n GOLD = 3,\n PLATINUM = 4,\n BRONZE_FLANDRE = 11,\n SILVER_FLANDRE = 12,\n GOLD_FLANDRE = 13,\n PLATINUM_FLANDRE = 14\n}\n","/**\n * ENUM for Packs\n **/\nexport enum Products {\n PEB = 1,\n PEB_Partiel = 11,\n ELEC = 4,\n ELEC_SUPP = 8,\n CITERNE_ENTERREE = 9,\n CITERNE_AERIENNE = 6,\n PLAN = 14,\n GAZ_CONTROLE = 15,\n GAZ_SUPP = 16,\n ISO = 17,\n PHOTO = 18,\n PHOTODRONE = 19,\n VIDEO = 20,\n VISITE360 = 21,\n DESCRIPTIF = 27,\n PLAN3D = 26,\n PEBCHAUFFAGE = 28,\n PEB_ELEC = 51,\n MEDIA = 52,\n IMMO_LIGHT = 53,\n IMMO = 54,\n GAZ_ELEC = 55,\n LIVRET = -7,\n AFFICHETTE = -8,\n TRIO_A = 59,\n TRIO_E = 60\n}\n","/**\n * ENUM for PricingPlans\n **/\nexport enum Regions {\n WALLONIE = 0,\n BRUSSELS = 1,\n FLANDRES = 2\n}\n","export enum VENTES {\n VENTE_PUB = 0,\n GRE_A_GRE = 1,\n BIDDIT = 2\n}\n","export class Address {\n addressid: string;\n street: string;\n number: string;\n zip: string;\n city: string;\n lat?: string;\n lng?: string;\n country?: string;\n company?: string;\n boxNumber?: string;\n apartmentNumber?: string;\n\n constructor() {\n this.street = '';\n this.number = '';\n this.zip = '';\n this.city = '';\n this.boxNumber = '';\n this.apartmentNumber = '';\n }\n}\n\nexport class AddressDB {\n AddressId: string;\n Street: string;\n Number: string;\n PostalCode: string;\n City: string;\n Latitude: string;\n Longitude: string;\n Country: string;\n VatNumber: string;\n BoxNumber: string;\n ApartmentNumber: string;\n CompanyName: string;\n}\n","import { Address } from './address';\n\nexport class Document {\n firstName: string;\n lastName: string;\n tva: string;\n companyName: string;\n address: Address;\n\n constructor() {\n this.firstName = '';\n this.lastName = '';\n this.tva = '';\n this.companyName = '';\n this.address = new Address();\n }\n}\n","import { ExecFileOptionsWithStringEncoding } from 'child_process';\nimport { Address, AddressDB } from './address';\n\nexport class User {\n userid: string;\n title: string;\n firstname: string;\n lastname: string;\n email: string;\n companyname: string;\n commercialname: string;\n phone: string;\n gsm: string;\n indicator: string;\n indicatorphone: string;\n address: Address;\n sendByMail: boolean;\n userType: UserType;\n hasCommission: boolean;\n pricingPlan: number;\n roles: Role[];\n hasImmoAccess: boolean;\n tva = '';\n status?: number;\n customPrices: CustomPrice[];\n notifications: string[];\n unpaidAmount: number;\n unpaidCount: number;\n unsignedBdc: number;\n pendingOrders: number;\n unpaidCallbackAmount: number;\n unpaidCallbackCount: number;\n yearlyOrdersCount: number;\n ongoingOrders: number;\n newOrdersCount: number;\n ordersCount: number;\n latestOrdersCount: number;\n suspensOrdersCount: number;\n canceledOrdersCount: number;\n orderId: string;\n consumerAddresses: Address[];\n\n constructor() {\n this.address = new Address();\n }\n}\n\nexport class CustomPrice {\n constructor(public price, public commission, public region, public estateType, public productTypeId) {}\n}\n\nexport enum UserType {\n Particulier = 1688,\n Agence = 1689,\n Certificateur = 1690,\n Notaire = 8122,\n Installateur = 1691,\n Avocat = 1692,\n Syndic = 1693,\n Promoteur = 1694,\n Public_AIS = 1695,\n Multipropriétaire = 1696,\n Banque = 1697,\n Architecte = 1698,\n DesignOffice = 1699,\n Certifier = 1700,\n Installateur_Chauffage = 1701,\n General_Contractor = 1702,\n Surveyor = 1703,\n Expert_Immobilier = 1704,\n Administration_Communale = 1705,\n OrderRequestor = 1687,\n Other = 0\n}\n\nexport enum ReasonType {\n Vente = 0,\n Location = 1,\n Renovation = 2,\n Controle = 3\n}\n\nexport enum UserRole {\n ImmoAccess = 'c8909f2b-1e5d-4758-b920-a2b4f6114c90',\n BillingAdmin = '9bb5e6cd-bf3c-4370-8a4e-d00dd9ec38e4'\n}\n\nexport class UserDB {\n UserID: string;\n Title: string;\n FirstName: string;\n Name: string;\n Email: string;\n PhoneNumber: string;\n TelNumber: string;\n Address: AddressDB;\n Consumer: ConsumerDB;\n Roles: Role[];\n Notifications: string[];\n UnpaidAmount: number;\n UnpaidCount: number;\n UnsignedBdc: number;\n UnpaidCallbackAmount: number;\n UnpaidCallbackCount: number;\n YearlyOrdersCount: number;\n OngoingOrders: number;\n PendingOrders: number;\n NewOrdersCount: number;\n OrdersCount: number;\n LatestOrdersCount: number;\n CanceledOrdersCount: number;\n SuspensOrdersCount: number;\n OrderID: string;\n ConsumerAddresses: AddressDB[];\n\n constructor() {\n this.Address = new AddressDB();\n }\n}\n\nexport class Role {\n constructor(public RoleID: UserRole, public Name: string) {}\n}\n\nexport interface Notification {\n NotificationId: string;\n UserId: string;\n User: User;\n CommentId: string;\n Comment: Comment;\n}\n\nexport class ConsumerDB {\n CommercialName: string;\n ConsumerType: number;\n Commission: boolean;\n Status: number;\n ReceiveByEmail: boolean;\n ConsumerPrices: ConsumerPriceDB[];\n\n constructor() {\n this.ConsumerType = 1688;\n this.Commission = false;\n this.Status = 0;\n this.ReceiveByEmail = true;\n }\n}\n\nclass ConsumerPriceDB {\n constructor(\n public ConsumerAmount,\n public ConsumerCommission,\n public ConsumerRegion,\n public EstateType,\n public ProductTypeId\n ) {}\n}\n\nexport class Contact {\n description: string;\n firstname: string;\n lastname: string;\n phone: string;\n gsm: string;\n\n constructor() {\n this.firstname = '';\n this.lastname = '';\n this.phone = '';\n this.description = '';\n this.gsm = '';\n }\n}\n\nexport class Owner {\n firstname: string;\n lastname: string;\n phone: string;\n gsm: string;\n indicator: string;\n indicatorphone: string;\n email: string;\n tva?: string;\n companyname?: string;\n commercialname?: string;\n title?: string;\n\n constructor() {\n this.firstname = '';\n this.lastname = '';\n this.phone = '';\n this.gsm = '';\n this.indicator = '';\n this.indicatorphone = '';\n this.email = '';\n this.tva = '';\n this.companyname = '';\n this.commercialname = '';\n this.title = '';\n }\n}\n\nexport class UserForm extends Owner {\n tva?: string;\n address?: Address;\n companyname: string;\n constructor() {\n super();\n this.address = new Address();\n }\n}\n","export interface VenteInfo {\n street: string;\n num: string;\n city: string;\n zip: string;\n division: string;\n section: string;\n numCadastre: string;\n rcni: string;\n comment: string;\n references: string;\n ventePub: {\n venteStatut: {\n id: number;\n name: string;\n };\n date: Date;\n date_DateTime: Date;\n startPrice: number;\n };\n greAgre: {\n askedPrice: number;\n };\n biddit: {\n venteStatut: {\n id: number;\n name: string;\n };\n date: Date;\n venteForced: number;\n venteDate_DateTime: Date;\n startDate: Date;\n startDate_DateTime: Date;\n endDate: Date;\n endDate_DateTime: Date;\n adjuDate_DateTime: Date;\n infoDate_DateTime: Date;\n miseAPrix: number;\n minPrice: number;\n };\n}\n\nexport const defaultVenteInfo: VenteInfo = {\n street: '',\n num: '',\n city: '',\n zip: '',\n division: '',\n section: '',\n numCadastre: '',\n rcni: '',\n comment: '',\n references: '',\n ventePub: {\n venteStatut: {\n id: 0,\n name: 'Première séance'\n },\n date: null,\n startPrice: 0,\n date_DateTime: null\n },\n greAgre: {\n askedPrice: 0\n },\n biddit: {\n venteStatut: {\n id: 0,\n name: 'Vente online'\n },\n date: null,\n venteForced: -1,\n venteDate_DateTime: null,\n startDate: null,\n startDate_DateTime: null,\n endDate: null,\n endDate_DateTime: null,\n adjuDate_DateTime: null,\n infoDate_DateTime: null,\n miseAPrix: 0,\n minPrice: 0\n }\n};\n","import * as i0 from '@angular/core';\nimport { Injectable, Inject, PLATFORM_ID } from '@angular/core';\nimport * as i1 from '@angular/common';\nimport { isPlatformBrowser, DOCUMENT } from '@angular/common';\n\n// This service is based on the `ng2-cookies` package which sadly is not a service and does\nimport * as ɵngcc0 from '@angular/core';\nclass CookieService {\n constructor(document, \n // Get the `PLATFORM_ID` so we can check if we're in a browser.\n platformId) {\n this.document = document;\n this.platformId = platformId;\n this.documentIsAccessible = isPlatformBrowser(this.platformId);\n }\n /**\n * Get cookie Regular Expression\n *\n * @param name Cookie name\n * @returns property RegExp\n */\n static getCookieRegExp(name) {\n const escapedName = name.replace(/([\\[\\]\\{\\}\\(\\)\\|\\=\\;\\+\\?\\,\\.\\*\\^\\$])/gi, '\\\\$1');\n return new RegExp('(?:^' + escapedName + '|;\\\\s*' + escapedName + ')=(.*?)(?:;|$)', 'g');\n }\n static safeDecodeURIComponent(encodedURIComponent) {\n try {\n return decodeURIComponent(encodedURIComponent);\n }\n catch (_a) {\n // probably it is not uri encoded. return as is\n return encodedURIComponent;\n }\n }\n /**\n * Return `true` if {@link Document} is accessible, otherwise return `false`\n *\n * @param name Cookie name\n * @returns boolean - whether cookie with specified name exists\n */\n check(name) {\n if (!this.documentIsAccessible) {\n return false;\n }\n name = encodeURIComponent(name);\n const regExp = CookieService.getCookieRegExp(name);\n return regExp.test(this.document.cookie);\n }\n /**\n * Get cookies by name\n *\n * @param name Cookie name\n * @returns property value\n */\n get(name) {\n if (this.documentIsAccessible && this.check(name)) {\n name = encodeURIComponent(name);\n const regExp = CookieService.getCookieRegExp(name);\n const result = regExp.exec(this.document.cookie);\n return result[1] ? CookieService.safeDecodeURIComponent(result[1]) : '';\n }\n else {\n return '';\n }\n }\n /**\n * Get all cookies in JSON format\n *\n * @returns all the cookies in json\n */\n getAll() {\n if (!this.documentIsAccessible) {\n return {};\n }\n const cookies = {};\n const document = this.document;\n if (document.cookie && document.cookie !== '') {\n document.cookie.split(';').forEach((currentCookie) => {\n const [cookieName, cookieValue] = currentCookie.split('=');\n cookies[CookieService.safeDecodeURIComponent(cookieName.replace(/^ /, ''))] = CookieService.safeDecodeURIComponent(cookieValue);\n });\n }\n return cookies;\n }\n set(name, value, expiresOrOptions, path, domain, secure, sameSite) {\n if (!this.documentIsAccessible) {\n return;\n }\n if (typeof expiresOrOptions === 'number' || expiresOrOptions instanceof Date || path || domain || secure || sameSite) {\n const optionsBody = {\n expires: expiresOrOptions,\n path,\n domain,\n secure,\n sameSite: sameSite ? sameSite : 'Lax',\n };\n this.set(name, value, optionsBody);\n return;\n }\n let cookieString = encodeURIComponent(name) + '=' + encodeURIComponent(value) + ';';\n const options = expiresOrOptions ? expiresOrOptions : {};\n if (options.expires) {\n if (typeof options.expires === 'number') {\n const dateExpires = new Date(new Date().getTime() + options.expires * 1000 * 60 * 60 * 24);\n cookieString += 'expires=' + dateExpires.toUTCString() + ';';\n }\n else {\n cookieString += 'expires=' + options.expires.toUTCString() + ';';\n }\n }\n if (options.path) {\n cookieString += 'path=' + options.path + ';';\n }\n if (options.domain) {\n cookieString += 'domain=' + options.domain + ';';\n }\n if (options.secure === false && options.sameSite === 'None') {\n options.secure = true;\n console.warn(`[ngx-cookie-service] Cookie ${name} was forced with secure flag because sameSite=None.` +\n `More details : https://github.com/stevermeister/ngx-cookie-service/issues/86#issuecomment-597720130`);\n }\n if (options.secure) {\n cookieString += 'secure;';\n }\n if (!options.sameSite) {\n options.sameSite = 'Lax';\n }\n cookieString += 'sameSite=' + options.sameSite + ';';\n this.document.cookie = cookieString;\n }\n /**\n * Delete cookie by name\n *\n * @param name Cookie name\n * @param path Cookie path\n * @param domain Cookie domain\n * @param secure Cookie secure flag\n * @param sameSite Cookie sameSite flag - https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite\n */\n delete(name, path, domain, secure, sameSite = 'Lax') {\n if (!this.documentIsAccessible) {\n return;\n }\n const expiresDate = new Date('Thu, 01 Jan 1970 00:00:01 GMT');\n this.set(name, '', { expires: expiresDate, path, domain, secure, sameSite });\n }\n /**\n * Delete all cookies\n *\n * @param path Cookie path\n * @param domain Cookie domain\n * @param secure Is the Cookie secure\n * @param sameSite Is the cookie same site\n */\n deleteAll(path, domain, secure, sameSite = 'Lax') {\n if (!this.documentIsAccessible) {\n return;\n }\n const cookies = this.getAll();\n for (const cookieName in cookies) {\n if (cookies.hasOwnProperty(cookieName)) {\n this.delete(cookieName, path, domain, secure, sameSite);\n }\n }\n }\n}\nCookieService.ɵfac = function CookieService_Factory(t) { return new (t || CookieService)(ɵngcc0.ɵɵinject(DOCUMENT), ɵngcc0.ɵɵinject(PLATFORM_ID)); };\nCookieService.ɵprov = i0.ɵɵdefineInjectable({ factory: function CookieService_Factory() { return new CookieService(i0.ɵɵinject(i1.DOCUMENT), i0.ɵɵinject(i0.PLATFORM_ID)); }, token: CookieService, providedIn: \"root\" });\nCookieService.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: undefined, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CookieService, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; }, null); })();\n\n/*\n * Public API Surface of ngx-cookie-service\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CookieService };\n\n","import { Injectable } from '@angular/core';\nimport { AppState } from '../../interfaces';\nimport { Store } from '@ngrx/store';\nimport * as orderSelector from '../store/order/order.selectors';\n\nimport { HttpClient, HttpHeaders, HttpErrorResponse, HttpParams } from '@angular/common/http';\nimport { catchError, delay, map, shareReplay, take, switchMap, tap, filter } from 'rxjs/operators';\nimport { throwError, Observable, Subject, of, from, MonoTypeOperatorFunction, combineLatest } from 'rxjs';\nimport { User, UserDB, Role, CustomPrice, UserType } from '../models/user';\nimport { ResetOrderState, SetUserInfo, ResetUserInfo, SetToken, ResetOrderForm, CompleteNotaireLandingDialog } from '../store/order';\nimport { Router } from '@angular/router';\nimport { SetResetStepper, ResetUI, SetLoginError } from '../store/ui';\nimport { projectID } from '../data/theme-config';\nimport { environment } from 'src/environments/environment';\nimport { NotificationDto } from '../models/OrderDTO';\nimport { DataService } from './data.service';\nimport { OrderStatus } from '../enums/order-status.enum';\nimport { getToken } from '../store/order/order.selectors';\nimport { Address } from '../models/address';\nimport { CookieService } from 'ngx-cookie-service';\n\n// const loginURL = `https://systems.certinergie.be/api/LoginWeb/LoginUser`;\n// const loginWithUserIDURL = `https://systems.certinergie.be/api/LoginWeb/LoginUserID`;\nconst emailCheckURL = `${environment.CertiSystems.loginWeb}/CheckEmailAlreadyInUse`;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthService {\n immoAccess: boolean;\n userId: string;\n userEmail: string;\n public loginStatus = new Subject();\n\n constructor(\n private cookieService: CookieService,\n private http: HttpClient,\n private store: Store,\n private router: Router,\n private dataService: DataService\n ) {\n this.store.select(orderSelector.getUserID)?.subscribe(u => (this.userId = u));\n this.store.select(orderSelector.getUserEmail)?.subscribe(u => (this.userEmail = u));\n }\n\n public isLoggedIn(): Observable {\n return this.store.select(orderSelector.getIsLoggedIn);\n }\n\n public get isAgency(): Observable {\n return this.store.select(orderSelector.getUserType).pipe(map(ut => ut === UserType.Agence));\n }\n\n public get isNotary(): Observable {\n return this.store.select(orderSelector.getUserType).pipe(map(ut => ut === UserType.Notaire));\n }\n\n public get isInstallateur(): Observable {\n return this.store.select(orderSelector.getUserType).pipe(map(ut => ut === UserType.Installateur));\n }\n\n public get isParticulier(): Observable {\n return this.store.select(orderSelector.getUserType).pipe(map(ut => ut === UserType.Particulier));\n }\n\n public get isNotAgencyNotaryInstallator(): Observable {\n return this.store\n .select(orderSelector.getUserType)\n .pipe(map(ut => ut != UserType.Agence && ut != UserType.Notaire && ut != UserType.Installateur));\n }\n\n public get isFromNVN(): Observable {\n return this.store.select(orderSelector.getUserZip).pipe(map(code => +code >= 1000 && +code <= 1299));\n }\n\n public get isFromHainaut(): Observable {\n return this.store\n .select(orderSelector.getUserZip)\n .pipe(map(code => (+code >= 6000 && +code <= 6599) || (+code >= 7000 && +code <= 7999)));\n }\n\n public get isFromNamur(): Observable {\n return this.store.select(orderSelector.getUserZip).pipe(map(code => +code >= 5000 && +code <= 5999));\n }\n\n public login(email: string, password: string, redirectUrl?: string): void {\n this.isLoggedIn()\n .pipe(\n take(1), // Take only the first emission and then complete\n switchMap(logged => {\n if (logged) {\n return of(false); // Already logged in, no further action needed\n }\n return this.logoutRedirect().pipe(switchMap(() => this.postLoginEmailPassword(email, password)));\n })\n )\n ?.subscribe(\n () => {\n // Handle successful login if necessary\n this.router.navigateByUrl(redirectUrl || '/customer')\n },\n error => {\n // Handle errors, e.g., login failed\n console.error('Login failed', error);\n }\n );\n }\n\n private postLoginEmailPassword(email: string, password: string): Observable {\n const httpParams = new HttpParams().append('login', email).append('password', password);\n\n const httpOptions = {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n params: httpParams\n };\n\n return this.http\n .post(\n environment.CertiCore.loginUrl,\n {\n Email: email,\n Password: password\n },\n httpOptions\n )\n .pipe(\n catchError((err: HttpErrorResponse) => {\n this.store.dispatch(new SetLoginError(true));\n return this.handleError(err);\n }),\n tap(data => {\n const userDB: UserDB = data.User;\n const token: string = data.Token;\n\n const loginStatus = data.LoginStatus;\n this.loginStatus.next(loginStatus);\n\n if (loginStatus === 1) {\n if (projectID === 'greenfish' && userDB.Consumer.ConsumerType !== UserType.Particulier) {\n return;\n }\n if (\n (projectID === 'hainaut' || projectID === 'namur' || projectID === 'nvn' || projectID === 'liege') &&\n (userDB.Consumer.ConsumerType !== UserType.Particulier &&\n userDB.Consumer.ConsumerType !== UserType.Notaire)\n ) {\n return;\n }\n const user = this.mapUserdbToUser(userDB);\n this.store.dispatch(new SetUserInfo(user));\n this.store.dispatch(new SetToken(token));\n this.store.dispatch(new SetLoginError(false));\n this.store.dispatch(new CompleteNotaireLandingDialog(false))\n }\n })\n );\n }\n\n public loginWithUserIDAsync(userid: string, logout = true, delayms = 0, redirectUrl = ''): Promise {\n return new Promise((resolve, reject) => {\n if (!userid || (this.userId === userid && this.userEmail)) {\n return resolve(); // Nothing to do if the user is already logged in with the same ID\n }\n \n this.isLoggedIn()\n .pipe(\n take(1),\n switchMap((logged) => {\n if (logout) {\n return this.logoutRedirect(); // Perform logout if necessary\n }\n return of(logged); // Continue if no logout is required\n }),\n switchMap(() => this.postLoginUserId(userid, delayms, redirectUrl)) // Proceed with login\n )\n .subscribe({\n next: () => {\n resolve(); // Resolve the promise on success\n },\n error: (error) => {\n console.error('Login failed', error); // Log the error\n reject(error); // Reject the promise with the error\n },\n });\n });\n }\n\n private postLoginUserId(userid: string, delayms = 0, redirectUrl?: string): Observable {\n return this.http.post(environment.CertiCore.loginUrl + userid, null).pipe(\n delay(delayms),\n catchError(this.handleError),\n tap((data: { User: UserDB; Token: string; LoginStatus: any }) => {\n const userDB: UserDB = data.User;\n const token: string = data.Token;\n\n const loginStatus = data.LoginStatus;\n this.loginStatus.next(loginStatus);\n\n if (loginStatus === 1) {\n const user = this.mapUserdbToUser(userDB);\n this.store.dispatch(new SetUserInfo(user));\n this.store.dispatch(new SetToken(token));\n this.store.dispatch(new CompleteNotaireLandingDialog(false))\n\n if (redirectUrl) {\n this.navigateToSubUrl(redirectUrl);\n }\n }\n })\n );\n }\n\n public refreshUserInfo(): void {\n this.store\n .select(getToken)\n .pipe(\n take(1), // Automatically unsubscribes after the first emission\n filter(t => !!t), // Proceed only if the token is truthy\n switchMap(() => {\n const observable = this.http.get(environment.CertiCore.refreshUserInfo).pipe(\n catchError(err => {\n console.error('An error occurred:', err);\n return of(null); // Return an observable to prevent errors\n })\n );\n return observable;\n }),\n filter(data => data !== null) // Ensure the data is valid before proceeding\n )\n ?.subscribe(data => {\n const userDB: UserDB = data;\n const user = this.mapUserdbToUser(userDB);\n\n if (!user.ongoingOrders) {\n this.dataService.filterOptionsDefault.orderStatus = OrderStatus.LatestOrders;\n }\n\n this.store.dispatch(new SetUserInfo(user));\n });\n }\n\n public refreshToken(userid: string) {\n this.http\n .post(environment.CertiCore.refresToken + userid, null)\n .pipe(\n take(1),\n catchError(this.handleError)\n )\n ?.subscribe(data => {\n const token: string = data.Token;\n this.store.dispatch(new SetToken(token));\n });\n }\n\n resetOrderForm() {\n combineLatest([\n this.store.select(orderSelector.getToken),\n this.store.select(orderSelector.getUser)\n ]).pipe(\n take(1),\n filter(([token, user]) => token != null && user != null)\n ).subscribe(([token, user]) => {\n this.store.dispatch(new ResetOrderForm({ token, user }));\n }); \n }\n\n public mapUserdbToUser(userDB: UserDB): User {\n const user = new User();\n\n user.userid = userDB.UserID;\n user.title = userDB.Title;\n user.firstname = userDB.FirstName;\n user.lastname = userDB.Name;\n user.email = userDB.Email;\n user.tva = userDB.Address.VatNumber;\n user.phone = userDB.PhoneNumber;\n user.gsm = userDB.TelNumber;\n user.commercialname = userDB.Consumer.CommercialName;\n user.companyname = userDB.Address.CompanyName;\n user.address.addressid = userDB.Address.AddressId;\n user.address.street = userDB.Address.Street;\n user.address.number = userDB.Address.Number;\n user.address.city = userDB.Address.City;\n user.address.zip = userDB.Address.PostalCode;\n user.address.boxNumber = userDB.Address.BoxNumber;\n user.address.apartmentNumber = userDB.Address.ApartmentNumber;\n\n user.sendByMail = !userDB.Consumer.ReceiveByEmail;\n user.userType = userDB.Consumer.ConsumerType;\n user.hasCommission = userDB.Consumer.Commission;\n user.pricingPlan = userDB.Consumer.Status;\n user.roles = userDB.Roles.map(r => new Role(r.RoleID, r.Name));\n user.notifications = userDB.Notifications;\n user.pendingOrders = userDB.PendingOrders;\n user.unpaidAmount = userDB.UnpaidAmount;\n user.unpaidCount = userDB.UnpaidCount;\n user.unsignedBdc = userDB.UnsignedBdc;\n user.pendingOrders = userDB.PendingOrders;\n user.unpaidCallbackAmount = userDB.UnpaidCallbackAmount;\n user.unpaidCallbackCount = userDB.UnpaidCallbackCount;\n user.yearlyOrdersCount = userDB.YearlyOrdersCount;\n user.ongoingOrders = userDB.OngoingOrders;\n user.newOrdersCount = userDB.NewOrdersCount;\n user.ordersCount = userDB.OrdersCount;\n user.latestOrdersCount = userDB.LatestOrdersCount;\n user.canceledOrdersCount = userDB.CanceledOrdersCount;\n user.suspensOrdersCount = userDB.SuspensOrdersCount;\n user.orderId = userDB.OrderID;\n user.consumerAddresses = userDB.ConsumerAddresses.map(\n c =>\n
{\n addressid: c.AddressId,\n city: c.City,\n street: c.Street,\n zip: c.PostalCode,\n number: c.Number,\n boxNumber: c.BoxNumber,\n apartmentNumber: c.ApartmentNumber\n }\n );\n\n user.customPrices = userDB.Consumer.ConsumerPrices.map(\n c =>\n {\n price: c.ConsumerAmount,\n commission: c.ConsumerCommission,\n estateType: c.EstateType,\n region: c.ConsumerRegion,\n productTypeId: c.ProductTypeId\n }\n );\n\n return user;\n }\n\n public logout() {\n localStorage.clear();\n this.cookieService.deleteAll();\n return this.logoutRedirect(true)?.subscribe({\n next: (success) => {\n // Handle the success scenario if necessary, e.g., update UI or state\n },\n error: (error) => {\n // Handle the error scenario appropriately, such as showing a message to the user\n },\n });\n }\n\n public logoutRedirect(redirect = false, ): Observable {\n return this.isLoggedIn().pipe(\n take(1), // Ensure we only get the first emission and then complete\n switchMap(logged => {\n // Dispatch all necessary actions in sequence or as needed\n this.store.dispatch(new ResetUserInfo(null));\n this.store.dispatch(new ResetOrderState(null));\n this.store.dispatch(new SetResetStepper(true));\n this.store.dispatch(new ResetUI(true));\n\n if (redirect) {\n return from(this.router.navigate(['/'])).pipe(\n map(() => {\n return logged;\n }),\n catchError(err => {\n return of(logged);\n })\n );\n }\n return of(logged);\n })\n );\n }\n\n public fetchUserNotifications() {\n return this.http.get(environment.CertiCore.notifications).pipe(shareReplay(1));\n }\n\n isEmailAlreadyInUse(email: string) {\n if (!email || email.length < 3) {\n return of({});\n }\n\n const httpParams = new HttpParams().append('email', email);\n\n const httpOptions = {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n params: httpParams\n };\n\n return this.http.post(emailCheckURL, null, httpOptions).pipe(catchError(this.handleError));\n }\n\n navigateToSubUrl(subUrl) {\n this.router.navigate([subUrl], { queryParamsHandling: 'merge' });\n }\n\n private handleError(error: HttpErrorResponse) {\n if (error.error instanceof ErrorEvent) {\n // A client-side or network error occurred. Handle it accordingly.\n console.error('An error occurred:', error.error.message);\n } else {\n // The backend returned an unsuccessful response code.\n // The response body may contain clues as to what went wrong,\n console.error(`Backend returned code ${error.status}, ` + `body was: ${error.error}`);\n }\n // return an observable with a user-facing error message\n return throwError('Something bad happened; please try again later.');\n }\n}\n","export class ProductDB {\n OrderPriceID: number;\n Region?: number;\n EstateType?: number;\n ProductType: number;\n Price: number;\n Reduction: number;\n ReductionPro: number;\n ReductionBronze: number;\n ReductionSilver: number;\n ReductionGold: number;\n ReductionPlatinum: number;\n OrderType: number;\n Commission?: number;\n SaleType?: number;\n WithPhoto?: boolean;\n StartPostalCode?: number;\n EndPostalCode?: number;\n}\n","export const packsTheme = [\n {\n description: '51',\n estate: 3,\n id: null,\n name: 'Combi PEB + ELEC ',\n reduc: 4,\n region: null,\n services: [4, 1],\n show: true,\n userRoles: [],\n userTypes: [1688, 1689, 8122, 1691],\n servicesPrice: 0,\n servicesRed: 0,\n totalWithReduc: 0\n },\n {\n description: '51',\n estate: 11,\n id: null,\n name: 'Combi PEB + ELEC ',\n reduc: 4,\n region: null,\n services: [4, 1],\n show: true,\n userRoles: [],\n userTypes: [1688, 1689, 8122, 1691],\n servicesPrice: 0,\n servicesRed: 0,\n totalWithReduc: 0\n },\n {\n description: '51',\n estate: 1,\n id: null,\n name: 'Combi PEB + ELEC ',\n reduc: 4,\n region: null,\n services: [4, 1],\n show: true,\n userRoles: [],\n userTypes: [1688, 1689, 8122, 1691],\n servicesPrice: 0,\n servicesRed: 0,\n totalWithReduc: 0\n },\n {\n description: '51',\n estate: 12,\n id: null,\n name: 'Combi PEB + ELEC ',\n reduc: 14,\n region: null,\n services: [4, 1],\n show: true,\n userRoles: [],\n userTypes: [1688, 1689, 8122, 1691],\n servicesPrice: 0,\n servicesRed: 0,\n totalWithReduc: 0\n },\n {\n description: '51',\n estate: 13,\n id: null,\n name: 'Combi PEB + ELEC ',\n reduc: 24,\n region: null,\n services: [4, 1],\n show: true,\n userRoles: [],\n userTypes: [1688, 1689, 8122, 1691],\n servicesPrice: 0,\n servicesRed: 0,\n totalWithReduc: 0\n },\n {\n description: '51',\n estate: 4,\n id: null,\n name: 'Combi PEB + ELEC ',\n reduc: 4,\n region: null,\n services: [4, 1],\n show: true,\n userRoles: [],\n userTypes: [1688, 1689, 8122, 1691],\n servicesPrice: 0,\n servicesRed: 0,\n totalWithReduc: 0\n },\n {\n description: '51',\n estate: 7,\n id: null,\n name: 'Combi PEB + ELEC ',\n reduc: 4,\n region: null,\n services: [4, 1],\n show: true,\n userRoles: [],\n userTypes: [1688, 1689, 8122, 1691],\n servicesPrice: 0,\n servicesRed: 0,\n totalWithReduc: 0\n },\n {\n description: '51',\n estate: 8,\n id: null,\n name: 'Combi PEB + ELEC ',\n reduc: 34,\n region: null,\n services: [4, 1],\n show: true,\n userRoles: [],\n userTypes: [1688, 1689, 8122, 1691],\n servicesPrice: 0,\n servicesRed: 0,\n totalWithReduc: 0\n },\n {\n description: '51',\n estate: 9,\n id: null,\n name: 'Combi PEB + ELEC ',\n reduc: 34,\n region: null,\n services: [4, 1],\n show: true,\n userRoles: [],\n userTypes: [1688, 1689, 8122, 1691],\n servicesPrice: 0,\n servicesRed: 0,\n totalWithReduc: 0\n },\n {\n description: '51',\n estate: 10,\n id: null,\n name: 'Combi PEB + ELEC ',\n reduc: 34,\n region: null,\n services: [4, 1],\n show: true,\n userRoles: [],\n userTypes: [1688, 1689, 8122, 1691],\n servicesPrice: 0,\n servicesRed: 0,\n totalWithReduc: 0\n },\n {\n description: '51',\n estate: 5,\n id: null,\n name: 'Combi PEB + ELEC ',\n reduc: 24,\n region: null,\n services: [4, 1],\n show: true,\n userRoles: [],\n userTypes: [1688, 1689, 8122, 1691],\n servicesPrice: 0,\n servicesRed: 0,\n totalWithReduc: 0\n },\n {\n description: '51',\n estate: null,\n id: null,\n name: 'Combi PEB + ELEC ',\n reduc: 0,\n region: null,\n services: [4, 1],\n show: true,\n userRoles: [],\n userTypes: [1688, 1689, 8122, 1691],\n servicesPrice: 0,\n servicesRed: 0,\n totalWithReduc: 0\n }\n];\n","import { VisitAdValoris } from './../models/visitAdValoris';\nimport { PackDB } from './../models/PackDB';\nimport { Injectable } from '@angular/core';\nimport { catchError, first, switchMap , map, tap, shareReplay } from 'rxjs/operators';\nimport { BehaviorSubject, throwError , Observable, of, from, Subject, timer, ReplaySubject } from 'rxjs';\nimport {\n estates,\n services,\n immoServices,\n regions,\n estateStyles,\n servicesSupp,\n displayedPacks,\n TERRAIN\n} from '../data/';\nimport * as PRODUCTS from '../data/products';\n\nimport { HttpClient, HttpHeaders, HttpErrorResponse } from '@angular/common/http';\nimport { ProductDB } from '../models/productDB';\nimport { Store } from '@ngrx/store';\nimport { AppState } from '../../interfaces';\n\nimport * as orderSelector from '../store/order/order.selectors';\nimport { Region } from '../models/region';\nimport { PromoCodeDB } from '../models/PromoCodeDB';\nimport { ServiceType } from '../models/serviceType';\nimport { CustomPrice, UserType, Owner, Role } from '../models/user';\nimport {\n SetCommission,\n SetRegion,\n SetEstateType,\n SetGazChoice,\n SetServices,\n SetNbOfElec,\n SetNbOfGaz,\n SetNumberOfAppartments,\n SetAddress,\n SetOwner,\n SetNbOfIso\n} from '../store/order';\nimport { Products } from '../enums/product.enum';\nimport { PricingPlans } from '../enums/pricing-plan.enum';\nimport { getPricesID, projectID, projectIDs, hasAccessAllPack } from '../data/theme-config';\nimport { packsTheme } from '../data/packs';\nimport { PreloadOrderInfoDTO } from '../models/PreloadOrderInfoDTO';\nimport { Address } from '../models/address';\nimport { LoggerService } from './logger.service';\nimport { Print } from '../models/print';\nimport { VENTES } from '../enums/vente.enum';\nimport { getLanguage } from '../store/ui/ui.selectors';\nimport { OrdersPaymentState } from 'src/app/client-space/models/ordersPaymentState';\nimport { OrderStatus } from '../enums/order-status.enum';\nimport { certiCoreBaseUrl, certiServicesBaseUrl, environment } from 'src/environments/environment';\nimport { AddressDTO, OrderInfosDTO, EspaceClientOrderDTO } from '../models/OrderDTO';\nimport { getToken } from '../store/order/order.selectors';\nimport { joinPaths } from '../utils/paths/join';\nimport { OrderInfoDTO } from '../models/OrderInfoDTO';\n\nconst REFRESH_INTERVAL = 10000;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DataService {\n dev = false;\n apiUrl = this.dev ? 'http://localhost:52646' : certiServicesBaseUrl;\n apiCoreUrl = this.dev\n ? 'https://localhost:44364/api/v1/espaceclient/'\n : joinPaths(certiCoreBaseUrl, 'api/v1/espaceclient/');\n apiCoreProfile = certiCoreBaseUrl;\n promoCodeURL = joinPaths(environment.CertiSystems.packPromo, 'GetPromocode');\n packsURL = joinPaths(environment.CertiSystems.packPromo, 'Getpack');\n // apiPricesURL = 'https://systems.certinergie.be/api/PackPromo/GetPrices';\n apiPricesURL = joinPaths(environment.CertiSystems.packPromo, `GetPrices?ordertype=${getPricesID}`);\n apiGetOrderInfoURL = joinPaths(environment.CertiSystems.packPromo, 'GetOrder?OrderID=');\n // apiGetMoreOrderInfoURL = 'https://certiservices.azurewebsites.net/api/Order/GetOrderInfo?orderid=';\n apiGetuserOrdersUrl = joinPaths(this.apiUrl, 'api/Order/GetUserOrders?userID=');\n apiGetPreloadOrderURL = joinPaths(environment.CertiServices.order, 'GetPreloadOrder?OrderID=');\n apiDeleteFileURL = joinPaths(this.apiUrl, 'api/Order/DeleteFile?fileid=');\n apiPostCommentUrl = joinPaths(this.apiUrl, 'api/Order/AddComment');\n userOrdersUrl = environment.CertiCore.userOrdersUrl;\n apiGetMoreOrderInfoURL = joinPaths(this.apiCoreUrl, 'orders/');\n apiProfile = 'api/v1/espaceclient/users/me/accountdetails';\n apiStats = 'api/v1/statistics/consumers/me?language=0';\n apiStatsNl = 'api/v1/statistics/consumers/me?language=1';\n apiComissions = 'api/v1/espaceclient/users/me/commissions';\n apiCreateAdress = 'api/v1/espaceclient/users/me/accountdetails/address';\n apiEditPassword = 'api/v1/users/password';\n apiCreateContact = 'api/v1/espaceclient/users/me/accountdetails/contact';\n apiDeleteAdress = 'api/v1/espaceclient/users/me/accountdetails/address/';\n apiDeleteContact = 'api/v1/espaceclient/users/me/accountdetails/contact/';\n apiEditInfo = 'api/v1/espaceclient/users/me/accountdetails';\n apiEditAdress = 'api/v1/espaceclient/users/me/accountdetails/address/';\n invoiceOrderURL = joinPaths(this.apiCoreUrl, 'orders/{orderid}/invoicelink');\n apiEditContact = 'api/v1/espaceclient/users/me/accountdetails/contact/';\n regionId: number;\n estateId: number;\n reason: number;\n venteType: number;\n products: ProductDB[] | undefined;\n services: number[];\n customPrices: CustomPrice[];\n packsDB: PackDB[];\n defaultPacksDB: PackDB[];\n promoCodes: PromoCodeDB[];\n userPricingPlan: number;\n userType: number;\n nbOfApp: number;\n userid: string;\n orderid: string;\n language: string;\n orderInfo$: Observable;\n publicInfo: OrderInfosDTO;\n ordersInfo$: Observable;\n token: any;\n userRoles: Role[];\n debouncer: any;\n hasAccessAllPack = hasAccessAllPack;\n projectID = projectID;\n parutions: Print[];\n packsTheme = packsTheme;\n adValoris: VisitAdValoris;\n profile$ = new BehaviorSubject(null);\n stats$ = new BehaviorSubject(null);\n editPassword$ = new BehaviorSubject(null);\n comissions$ = new BehaviorSubject(null);\n private usersSubject: Subject;\n filterOptionsDefault = {\n searchString: '',\n paid: false,\n notPaid: false,\n waitingPayment: false,\n cancelled: false,\n displayCount: 1000,\n orderStatus: OrderStatus.LatestOrders\n };\n displayCountOptions = [20, 40, 100];\n\n constructor(private http: HttpClient, private store: Store, private logger: LoggerService) {\n this.store.select(orderSelector.getRegion)?.subscribe(r => (this.regionId = r));\n this.store.select(orderSelector.getEstateID)?.subscribe(e => (this.estateId = e));\n this.store.select(orderSelector.getUserType)?.subscribe(u => (this.userType = u));\n this.store.select(orderSelector.getReason)?.subscribe(r => (this.reason = r));\n this.store.select(orderSelector.getVenteType)?.subscribe(v => (this.venteType = v));\n this.store.select(orderSelector.getCustomPrices)?.subscribe(cp => (this.customPrices = cp));\n this.store.select(orderSelector.getNbOfAppartments)?.subscribe(n => (this.nbOfApp = n));\n this.store.select(orderSelector.getPricingPlan)?.subscribe(pp => (this.userPricingPlan = pp));\n this.store.select(orderSelector.getUserID)?.subscribe(u => (this.userid = u));\n this.store.select(orderSelector.getServices)?.subscribe(s => (this.services = s));\n this.store.select(orderSelector.getParutions)?.subscribe(p => (this.parutions = p));\n this.store.select(orderSelector.getVisitAdValoris)?.subscribe(av => (this.adValoris = av));\n this.store.select(orderSelector.getUserRoles)?.subscribe(ur => (this.userRoles = ur));\n this.store.select(getLanguage)?.subscribe(ln => (this.language = ln));\n\n this.usersSubject = new ReplaySubject(1);\n }\n\n isGreenfish() {\n return this.projectID === 'greenfish';\n }\n getLangue() {\n this.store.select(getLanguage)?.subscribe(ln => (this.language = ln));\n return this.language;\n }\n updatePricesOnResolve(pr: ProductDB[]) {\n this.products = pr;\n }\n\n getOrderInfo(orderid: string): Observable {\n if (!this.isGuid(orderid)) {\n return new Observable(subscriber => {\n subscriber.error('Invalid order ID');\n subscriber.complete();\n });\n }\n\n return this.http.get(environment?.CertiCore?.checkoutInfo?.replace('{orderId}', orderid));\n }\n\n setOrderId(orderid: string) {\n this.orderid = orderid;\n }\n\n fetchOrderInfo(orderid: string): Observable {\n if (!this.isGuid(orderid)) {\n return new Observable(subscriber => {\n subscriber.error('Invalid order ID');\n subscriber.complete();\n });\n }\n\n const fetchPromise = fetch(environment?.CertiCore?.checkoutInfo?.replace('{orderId}', orderid)).then(response => {\n if (!response.ok) {\n throw new Error('Network response was not ok');\n }\n return response.json();\n });\n return from(fetchPromise);\n }\n\n loadUserOrdersInfo(options: OrdersPaymentState = this.filterOptionsDefault): Observable {\n this.ordersInfo$ = this.http\n ?.get(\n joinPaths(\n this.userOrdersUrl,\n `?SortBy=1&FilterBy=${options?.orderStatus}&PageSize=${options?.displayCount}&PageNumber=1&SearchBy=${options.searchString}`\n )\n )\n ?.pipe(\n tap(this.logger.log),\n shareReplay(1)\n );\n\n return this.ordersInfo$;\n }\n\n // This method is responsible for fetching the data.\n // The first one who calls this function will initiate\n // the process of fetching data.\n orderInfoNow(orderid = this.orderid, refresh = false) {\n if (refresh || !this.orderInfo$) {\n // Set up timer that ticks every X milliseconds\n const timer$ = timer(0, REFRESH_INTERVAL);\n\n // For each timer tick make an http request to fetch new data\n // We use shareReplay(X) to multicast the cache so that all\n // subscribers share one underlying source and don't re-create\n // the source over and over again. We use takeUntil to complete\n // this stream when the user forces an update.\n this.orderInfo$ = this.http?.get(joinPaths(environment.CertiCore.orderInfo, orderid)).pipe(\n map(data => data),\n tap(d => this.logger.log('httpGet orderInfo', d))\n );\n this.orderInfo$?.subscribe(\n result => {\n this.usersSubject.next(result);\n },\n err => this.usersSubject.error(err)\n );\n }\n return this.usersSubject?.asObservable();\n }\n\n publicOrderInfo(orderid = this.orderid) {\n return this.http?.get(joinPaths(environment.CertiCore.publicOrderInfo, orderid)).pipe(map(data => data));\n }\n\n loadOrderInfo(orderid: string): Observable {\n if (!this.isGuid(orderid)) {\n return of(false);\n }\n return this.http?.get(joinPaths(environment.CertiCore.orderInfo, orderid)).pipe(\n map(data => data),\n tap(d => this.logger.log('httpGet orderInfo', d))\n );\n\n /* this.orderInfo$ = this.refreshOrderData$.pipe(\n tap(this.logger.log),\n switchMap(() =>\n this.http.get(environment.CertiCore.orderInfo + orderid).pipe(\n map(data => data.Data),\n tap(this.logger.log),\n shareReplay(1)\n )\n )\n ); */\n }\n\n // Public facing API to force the cache to reload the data\n /* forceReload() {\n this.ordersInfo$ = null;\n this.refreshOrderData$.next(undefined);\n } */\n\n forceReload(orderID: string) {\n this.orderInfoNow(this.orderid, true);\n }\n\n getPreloadOrderInfo(orderid: string): Observable {\n if (!this.isGuid(orderid)) {\n return of(false);\n }\n return this.http?.get(joinPaths(this.apiGetPreloadOrderURL, orderid));\n }\n\n createContact(body): Observable {\n this.store.select(getToken)?.subscribe(t => (this.token = t));\n const url = joinPaths(this.apiCoreProfile, this.apiCreateContact);\n const httpOptions = {\n headers: new HttpHeaders({\n Authorization: `Bearer ${this.token}`\n }),\n observe: 'response' as const\n };\n return this.http?.post(url, body, httpOptions).pipe(catchError(this.handleError));\n }\n editInfo(body): Observable {\n this.store.select(getToken)?.subscribe(t => (this.token = t));\n const url = joinPaths(this.apiCoreProfile, this.apiEditInfo);\n const httpOptions = {\n headers: new HttpHeaders({\n Authorization: `Bearer ${this.token}`\n }),\n observe: 'response' as const\n };\n return this.http?.patch(url, body, httpOptions).pipe(catchError(this.handleError));\n }\n editAdress(body, id): Observable {\n this.store.select(getToken)?.subscribe(t => (this.token = t));\n const url = joinPaths(this.apiCoreProfile, this.apiEditAdress, id);\n const httpOptions = {\n headers: new HttpHeaders({\n Authorization: `Bearer ${this.token}`\n }),\n observe: 'response' as const\n };\n return this.http?.patch(url, body, httpOptions).pipe(catchError(this.handleError));\n }\n editContact(body, id): Observable {\n this.store.select(getToken)?.subscribe(t => (this.token = t));\n const url = joinPaths(this.apiCoreProfile, this.apiEditContact, id);\n const httpOptions = {\n headers: new HttpHeaders({\n Authorization: `Bearer ${this.token}`\n }),\n observe: 'response' as const\n };\n return this.http.patch(url, body, httpOptions).pipe(catchError(this.handleError));\n }\n createAdress(body): Observable {\n this.store.select(getToken)?.subscribe(t => (this.token = t));\n const url = joinPaths(this.apiCoreProfile, this.apiCreateAdress);\n const httpOptions = {\n headers: new HttpHeaders({\n Authorization: `Bearer ${this.token}`\n }),\n observe: 'response' as const\n };\n return this.http.post(url, body, httpOptions).pipe(catchError(this.handleError));\n }\n editPassword(body) {\n this.store.select(getToken)?.subscribe(t => (this.token = t));\n const url = joinPaths(this.apiCoreProfile, this.apiEditPassword);\n const httpOptions = {\n headers: new HttpHeaders({\n Authorization: `Bearer ${this.token}`\n }),\n observe: 'response' as const\n };\n return this.http.post(url, body, httpOptions);\n }\n\n deleteAdress(id): Observable {\n this.store.select(getToken)?.subscribe(t => (this.token = t));\n const url = joinPaths(this.apiCoreProfile, this.apiDeleteAdress, id);\n const httpOptions = {\n headers: new HttpHeaders({\n Authorization: `Bearer ${this.token}`\n }),\n observe: 'response' as const\n };\n return this.http.delete(url, httpOptions).pipe(catchError(this.handleError));\n }\n deleteContact(id): Observable {\n this.store.select(getToken)?.subscribe(t => (this.token = t));\n const url = joinPaths(this.apiCoreProfile, this.apiDeleteContact, id);\n const httpOptions = {\n headers: new HttpHeaders({\n Authorization: `Bearer ${this.token}`\n }),\n observe: 'response' as const\n };\n return this.http.delete(url, httpOptions).pipe(catchError(this.handleError));\n }\n getComissions(): void {\n this.store.select(getToken)?.subscribe(t => (this.token = t));\n const httpOptions = {\n headers: new HttpHeaders({\n Authorization: `Bearer ${this.token}`\n })\n };\n this.http\n .get(joinPaths(this.apiCoreProfile, this.apiComissions), httpOptions)\n .pipe(catchError(this.handleError))\n ?.subscribe(data => {\n this.comissions$.next(data);\n });\n }\n\n getProfile(): Observable {\n return this.store.select(getToken).pipe(\n tap(token => {\n this.token = token;\n }),\n switchMap(() => {\n const httpOptions = {\n headers: new HttpHeaders({\n Authorization: `Bearer ${this.token}`,\n }),\n };\n\n return this.http\n .get(joinPaths(this.apiCoreProfile, this.apiProfile), httpOptions)\n .pipe(\n tap(data => {\n this.profile$.next(data); // Emit the data to the profile$ subject\n }),\n catchError(this.handleError) // Handle errors\n );\n })\n );\n }\n\n getStats(): void {\n this.store.select(getToken)?.subscribe(t => (this.token = t));\n const httpOptions = {\n headers: new HttpHeaders({\n Authorization: `Bearer ${this.token}`\n })\n };\n let stats = this.language == 'fr' ? this.apiStats : this.apiStatsNl;\n this.http\n .get(joinPaths(this.apiCoreProfile, stats), httpOptions)\n .pipe(catchError(this.handleError))\n ?.subscribe(data => {\n this.stats$.next(data);\n });\n }\n private handleError(error: HttpErrorResponse) {\n if (error.error instanceof ErrorEvent) {\n // A client-side or network error occurred. Handle it accordingly.\n console.error('An error occurred:', error.error.message);\n } else {\n // The backend returned an unsuccessful response code.\n // The response body may contain clues as to what went wrong,\n console.error(`Backend returned code ${error.status}, ` + `body was: ${error.error}`);\n }\n // return an observable with a user-facing error message\n return throwError('Something bad happened; please try again later.');\n }\n\n getPriceFromAPI({consumerType}: {consumerType: UserType}): Observable {\n const url = new URL(this.apiPricesURL);\n const SPECIAL_PRICING_USER_TYPES: UserType[] = [UserType.Notaire, UserType.Particulier];\n if (SPECIAL_PRICING_USER_TYPES.includes(consumerType)) url.searchParams.append('consumerType', consumerType.toString());\n const observable = this.http.get(url.toString()).pipe(map(data => data.Data));\n observable.pipe().subscribe(pr => this.products = pr)\n return observable;\n }\n\n getPacksFromAPI(): Observable {\n let res = from([this.packsTheme]);\n if (['default', 'namur', 'hainaut', 'nvn', 'liege', 'greenfish'].includes(this.projectID)) {\n if (this.defaultPacksDB) {\n this.logger.log('this.defaultPacksDB', this.defaultPacksDB);\n return of(this.defaultPacksDB);\n }\n res = this.http.get(this.packsURL).pipe(\n map(data => {\n const result =\n displayedPacks.length > 0\n ? data.Data.filter(p => displayedPacks.some(id => id === +p.description))\n : data.Data;\n\n this.defaultPacksDB = result;\n return result;\n }),\n shareReplay(1)\n );\n }\n return res.pipe(tap());\n }\n\n getPromoCodesFromAPI(): Observable {\n return this.http.get(this.promoCodeURL).pipe(map(data => data.Data));\n }\n\n postComment(userID: string, orderID: string, commentTextContent: string) {\n const url = joinPaths(environment.CertiCore.clientComment, orderID);\n return this.http\n .post(url, {\n Comment: commentTextContent\n })\n ?.subscribe(data => {\n this.logger.log(data);\n this.orderInfoNow(orderID, true);\n });\n }\n\n isPromoCodeValid(promoCode: string, productsID: number[], region: number, estate: number): Promise {\n clearTimeout(this.debouncer);\n\n return new Promise((resolve, reject) => {\n this.debouncer = setTimeout(() => {\n if (promoCode && promoCode !== '') {\n if (this.promoCodes) {\n const found = this.checkIfCodeFound(this.promoCodes, promoCode, region, productsID, estate);\n resolve(found);\n } else {\n this.getPromoCodesFromAPI()?.subscribe(\n (data) => {\n if (data) {\n this.promoCodes = data;\n const found = this.checkIfCodeFound(data, promoCode, region, productsID, estate);\n resolve(found);\n } else {\n resolve(null);\n }\n },\n (error) => {\n this.logger.error(error); // Log the error\n reject(error); // Reject the promise with the error\n }\n );\n }\n } else {\n resolve(null);\n }\n }, 200);\n });\n }\n\n private checkIfCodeFound(\n data: PromoCodeDB[],\n promoCode: string,\n region: number,\n productsID: number[],\n estate: number\n ) {\n const f = data.filter(\n p =>\n p.KeyWord === promoCode &&\n (p.PromoCode.region === region || !p.PromoCode.region) &&\n (p.PromoCode.estate === estate || !p.PromoCode.estate)\n );\n const found = f.filter(p => p.PromoCode.expertises.every(pr => productsID.indexOf(pr) >= 0))[0];\n return found;\n }\n\n getProduct(productTypeId: number): ProductDB {\n // hard coded product cause not exist in backend\n if (productTypeId === PRODUCTS.ZYVA) {\n return {\n Price: 495 * 1.21,\n Reduction: 0,\n OrderPriceID: 0,\n OrderType: getPricesID,\n ProductType: PRODUCTS.ZYVA\n } as ProductDB;\n }\n const prices = this.products;\n if (!prices) {\n return new ProductDB();\n }\n const tmp = prices;\n const filteredPrices = [...tmp];\n\n const regionId = this.regionId;\n const estateTypeId = this.estateId;\n\n const filteredPrices1 = filteredPrices.find(\n p => p.Region === regionId && p.EstateType === estateTypeId && p.ProductType === productTypeId\n );\n const filteredPrices2 = filteredPrices.find(\n p =>\n (p.Region === regionId || p.Region === null) &&\n (p.EstateType === estateTypeId || p.EstateType === null) &&\n (p.ProductType === productTypeId || p.ProductType === null)\n );\n\n const dbPrice = !filteredPrices1\n ? !filteredPrices2\n ? { Price: 0, Reduction: 0, OrderPriceID: 0, OrderType: 1, ProductType: 27 }\n : filteredPrices2\n : filteredPrices1;\n\n // this.logger.log(dbPrice);\n return dbPrice;\n }\n\n getParuPrice(productTypeId: number): { price: number; commission: number } {\n const paru = this.parutions.find(p => p.id === productTypeId) || { price: 0, commission: 0 };\n\n return { price: paru.price, commission: paru.commission };\n }\n\n getProductPrice(id: number) {\n if (id === 11111) {\n // peb extra\n return { price: 150, reduc: 0, commission: 0 };\n }\n if (id === PRODUCTS.EXTRA) {\n return { name: 'Frais de dossier Certinergie', price: 25, reduc: 0, commission: 0 };\n }\n if (id === PRODUCTS.URGENT_PRO) {\n return { name: 'Frais urgence NVN', price: 250 * 1.21, reduc: 0, commission: 0 };\n }\n if (id === PRODUCTS.PRINT) {\n let paruPrice = 0;\n this.parutions.filter(p => p.id === PRODUCTS.FullPress).forEach(paru => (paruPrice += paru.price));\n return { price: paruPrice, reduc: 0, commission: 0 };\n }\n if (\n id >= PRODUCTS.PublicationVlan &&\n id <= PRODUCTS.PublicationProximagArdennes &&\n id !== PRODUCTS.VISITADVALORIS &&\n id !== PRODUCTS.LOCKSMITH\n ) {\n return { ...this.getParuPrice(id), reduc: 0 };\n }\n if (id === PRODUCTS.PublicationNotaireBE && !!this.products) {\n const ipl =\n this.products.find(\n p =>\n p.ProductType === PRODUCTS.PublicationNotaireBE &&\n p.SaleType === (this.venteType === VENTES.VENTE_PUB ? 3 : this.venteType)\n ) || this.products.find(p => p.ProductType === PRODUCTS.PublicationNotaireBE);\n return ipl\n ? { price: ipl.Price, reduc: ipl.Reduction, commission: ipl.Commission }\n : { price: 0, reduc: 0, commission: 0 };\n }\n let prod = this.getProduct(id);\n prod.Reduction = this.getStatutReduc(prod.ProductType, prod.Reduction, prod, this.userType);\n\n const newDbPrice = this.checkCustomPrice(id, prod);\n prod = newDbPrice ? newDbPrice : prod;\n\n /* if (id === PRODUCTS.PEB && this.estateId === estateTypes.IMMEUBLE_APPART && this.nbOfApp > 0) {\n const newPrice = prod.Price + 100 * (this.nbOfApp - 1);\n return { price: newPrice, reduc: prod.Reduction };\n } */\n\n return { price: prod.Price, reduc: prod.Reduction, commission: prod.Commission };\n }\n\n checkCustomPrice(productTypeId, dbPrice) {\n let newDbPrice = null;\n\n const customP = this.customPrices\n ? this.customPrices.find(\n cp =>\n (cp.region === this.regionId || cp.region == null) &&\n (cp.estateType === this.estateId || cp.estateType == null) &&\n cp.productTypeId === productTypeId\n )\n : null;\n\n if (customP) {\n newDbPrice = { ...dbPrice };\n newDbPrice.Price = customP.price;\n newDbPrice.Reduction = 0;\n\n if (customP.commission > 0) {\n newDbPrice.Price = customP.price + customP.commission;\n newDbPrice.Reduction = customP.commission;\n this.store.dispatch(new SetCommission(customP.commission));\n }\n }\n\n return newDbPrice;\n }\n\n getEstateTypes() {\n return estates;\n }\n\n getEstateStyles() {\n return estateStyles;\n }\n\n getServiceTypes(): ServiceType[] {\n return [...services, ...servicesSupp];\n }\n\n getImmoServiceTypes(): ServiceType[] {\n return immoServices;\n }\n\n getImmoPacks(): Observable {\n return this.getPacksFromAPI().pipe(\n map(p => {\n if (this.regionId === -1 || this.estateId === -1) {\n return null;\n }\n let packsDB;\n\n if (['namur', 'hainaut', 'nvn', 'liege', 'greenfish'].includes(projectID)) {\n packsDB = p.filter(pa => pa.userRoles.some(ur => ur === projectIDs.packRoleID));\n this.logger.log('Role pack,', this.packsDB);\n } else {\n packsDB = p;\n }\n\n let p1: PackDB[] = [];\n let p2: PackDB[] = [];\n let p3: PackDB[] = [];\n let p4: PackDB[] = [];\n\n const tmp = packsDB\n .filter(pa => pa.description !== null)\n .sort((a, b) => parseInt(a.description, 10) - parseInt(b.description, 10));\n p1 = tmp.filter(pa => pa.region === this.regionId && pa.estate === this.estateId);\n p2 = tmp.filter(pa => pa.region === this.regionId && (pa.estate === -1 || pa.estate === null));\n p3 = tmp.filter(pa => pa.region === null && pa.estate === this.estateId);\n p4 = tmp.filter(pa => pa.region === null && pa.estate === null);\n\n let packs: PackDB[] = [...p1, ...p2, ...p3, ...p4];\n this.packsDB = [...packs];\n\n if (projectID === 'nvn' && this.estateId === TERRAIN) {\n packs = packs.filter(pa => pa.description !== '9994');\n }\n return packs;\n }),\n shareReplay(1) // Cache and share the result with subsequent subscribers\n );\n }\n\n getPacksToDisplay() {\n if (this.regionId === -1 || this.estateId === -1) {\n return null;\n }\n const filteredPacks = [...this.packsDB].filter(p => p.description !== null);\n const p1 = filteredPacks.filter(p => p.region === this.regionId && p.estate === this.estateId);\n const p2 = filteredPacks.filter(p => p.region === this.regionId && p.estate === -1);\n const p3 = filteredPacks.filter(p => p.region === null && p.estate === this.estateId);\n const p4 = filteredPacks.filter(p => p.region === null && p.estate === null);\n\n const packs: PackDB[] = [...p1, ...p2, ...p3, ...p4];\n\n return packs;\n }\n\n getPackPrice(packID: number): PackDB {\n if (this.regionId === -1 || this.estateId === -1) {\n return null;\n }\n const p1 = this.packsDB.filter(p => p.region === this.regionId && p.estate === this.estateId);\n const p2 = this.packsDB.filter(p => p.region === this.regionId && p.estate === -1);\n const p3 = this.packsDB.filter(p => p.region === null && p.estate === this.estateId);\n const p4 = this.packsDB.filter(p => p.region === null && p.estate === null);\n\n const packs: PackDB[] = [...p1, ...p2, ...p3, ...p4];\n\n const pack = packs.find(p => parseInt(p.id, 10) === packID);\n\n return pack;\n }\n\n getProductsForPack(id: string) {\n return this.getImmoPacks().pipe(\n map(packs => {\n if (!packs) {\n return [];\n }\n const pack = packs.filter(p => p.description === id);\n return pack[0] && pack[0].services ? pack[0].services : [];\n })\n );\n }\n\n getProductsAllIn() {\n return [\n PRODUCTS.PEB,\n PRODUCTS.ELEC,\n PRODUCTS.PHOTO,\n PRODUCTS.VISITE360,\n PRODUCTS.PLAN,\n PRODUCTS.PublicationNotaireBE,\n PRODUCTS.PublicationImmowebXL,\n PRODUCTS.ImmovlanOnline,\n PRODUCTS.NotaireBEOnline\n ];\n }\n\n getProductsPresquIn() {\n return [\n PRODUCTS.PEB,\n PRODUCTS.ELEC,\n PRODUCTS.PHOTO,\n PRODUCTS.VISITE360,\n PRODUCTS.PLAN,\n PRODUCTS.PublicationNotaireBE,\n PRODUCTS.PublicationImmowebXL,\n PRODUCTS.ImmovlanOnline,\n PRODUCTS.NotaireBEOnline\n ];\n }\n\n getRegionTypes(): Region[] {\n return regions;\n }\n\n getRegionByID(id: number) {\n return this.getRegionTypes().find(r => r.id === id);\n }\n\n getStatutReduc(id: number, reduc: number, prod: ProductDB, userType: UserType): number {\n const isPro = userType > UserType.Particulier;\n const plandID = this.userPricingPlan;\n var reduction = reduc;\n if (id < 51 || id >= 100) {\n switch (plandID) {\n case PricingPlans.BRONZE:\n reduction = prod.ReductionBronze;\n break;\n case PricingPlans.SILVER:\n reduction = prod.ReductionSilver;\n break;\n case PricingPlans.GOLD:\n reduction = prod.ReductionGold;\n break;\n case PricingPlans.PLATINUM:\n reduction = prod.ReductionPlatinum;\n break;\n case PricingPlans.BRONZE_FLANDRE:\n reduction = prod.ReductionBronze;\n break;\n case PricingPlans.SILVER_FLANDRE:\n reduction = prod.ReductionSilver;\n break;\n case PricingPlans.GOLD_FLANDRE:\n reduction = prod.ReductionGold;\n break;\n case PricingPlans.PLATINUM:\n reduction = prod.ReductionPlatinum;\n break;\n default:\n if (isPro && prod.ReductionPro) {\n reduction = prod.ReductionPro;\n } else {\n reduction = reduc;\n }\n break;\n }\n } else if (id === Products.PEB_ELEC && isPro && userType !== UserType.Notaire) {\n reduction = 25;\n } else if ((id === Products.TRIO_A || id === Products.TRIO_E) && isPro) {\n reduction = 35;\n }\n\n return reduction;\n }\n\n public deleteOrderFile(fileid: string): Observable {\n if (!this.isGuid(fileid)) {\n return of(false);\n }\n this.logger.log(this.apiDeleteFileURL, fileid);\n return this.http.get(this.apiDeleteFileURL + fileid);\n }\n\n public preloadOrder(id: string) {\n this.getPreloadOrderInfo(id)\n .pipe(map(d => d.Data))\n ?.subscribe((o: PreloadOrderInfoDTO) => {\n this.logger.log('Preload order info ', [{ order: o }, { orderid: id }]);\n\n if (!isNaN(o.Region)) {\n this.store.dispatch(new SetRegion(o.Region));\n\n if (!isNaN(o.EstateType)) {\n this.store.dispatch(new SetEstateType(o.EstateType));\n if (o.OrderProducts && o.OrderProducts.length > 0 && o.OrderProducts[0]) {\n this.store.dispatch(new SetServices([]));\n const op = o.OrderProducts.map(d => d.ProductTypeID);\n\n const nbElecSupp = op.filter(p => p === PRODUCTS.ELEC_SUPP).length;\n const nbGazSupp = op.filter(p => p === PRODUCTS.GAZ_SUPP).length;\n let nbApp = nbElecSupp > nbGazSupp ? nbElecSupp : nbGazSupp;\n nbApp = +nbApp + 1;\n\n const hasGazInUrl = op.some(p => +p === PRODUCTS.GAZ_CONTROLE);\n if (hasGazInUrl) {\n this.store.dispatch(new SetGazChoice(0));\n }\n op.forEach(element => {\n const prod = +element;\n if (!isNaN(prod)) {\n this.setService(prod);\n }\n });\n\n if (o.EstateType === 2) {\n if (nbApp > 0) {\n this.store.dispatch(new SetNumberOfAppartments(nbApp));\n if (nbElecSupp > 0) {\n this.setElecSupp(nbApp);\n }\n if (nbGazSupp > 0) {\n this.setGazSupp(nbApp);\n }\n }\n }\n }\n }\n\n if (o.AddressVisit.Street && o.AddressVisit.Street !== '') {\n const add = new Address();\n add.street = o.AddressVisit.Street;\n add.number = o.AddressVisit.Number;\n add.zip = o.AddressVisit.Zip + '';\n add.city = o.AddressVisit.City;\n add.boxNumber = o.AddressVisit.BoxNumber;\n add.apartmentNumber = o.AddressVisit.ApartmentNumber;\n this.store.dispatch(new SetAddress(add));\n }\n\n if (o.Owner.LastName && o.Owner.LastName !== '') {\n const owner = new Owner();\n owner.firstname = o.Owner.FirstName;\n owner.lastname = o.Owner.LastName;\n owner.email = o.Owner.Email;\n owner.phone = o.Owner.Phone;\n this.store.dispatch(new SetOwner(owner));\n }\n }\n });\n }\n\n removeService(id) {\n this.services = [...this.services].filter(pr => pr !== id);\n this.store.dispatch(new SetServices(this.services));\n }\n\n setService(id) {\n if (id === PRODUCTS.GAZ_SUPP || id === PRODUCTS.ELEC_SUPP) {\n return;\n }\n this.services = [...this.services];\n const index = this.services.indexOf(id);\n\n const indexCiterneE = this.services.indexOf(PRODUCTS.CITERNE_ENTERREE);\n const indexCiterneA = this.services.indexOf(PRODUCTS.CITERNE_AERIENNE);\n\n const indexPlan2D = this.services.indexOf(PRODUCTS.PLAN);\n const indexPlan3D = this.services.indexOf(PRODUCTS.PLAN3D);\n const indexVisite360 = this.services.indexOf(PRODUCTS.VISITE360);\n\n const indexSMS = this.services.indexOf(PRODUCTS.SMS);\n\n const indexPanel =\n this.services.indexOf(PRODUCTS.PANEL) > -1 ||\n this.services.indexOf(PRODUCTS.PANEL_SUPPORT) > -1 ||\n this.services.indexOf(PRODUCTS.PANELBIDDIT) > -1 ||\n this.services.indexOf(PRODUCTS.PANELBIDDIT_SUPPORT) > -1;\n\n if (indexCiterneE > -1 && id === PRODUCTS.CITERNE_AERIENNE) {\n this.services.splice(indexCiterneE, 1);\n } else if (indexCiterneA > -1 && id === PRODUCTS.CITERNE_ENTERREE) {\n this.services.splice(indexCiterneA, 1);\n }\n if (indexSMS > -1 && (id === PRODUCTS.PANEL || id === PRODUCTS.PANEL_SUPPORT)) {\n this.services.splice(indexSMS, 1);\n }\n\n if (id === 1) {\n // this.services = this.services.filter(pr => pr !== 14);\n }\n\n if (\n id === PRODUCTS.PANEL ||\n id === PRODUCTS.PANEL_SUPPORT ||\n id === PRODUCTS.PANELBIDDIT ||\n id === PRODUCTS.PANELBIDDIT_SUPPORT\n ) {\n this.services = this.services.filter(\n pr =>\n pr !== PRODUCTS.SMS &&\n pr !== PRODUCTS.PANEL &&\n pr !== PRODUCTS.PANEL_SUPPORT &&\n pr !== PRODUCTS.PANELBIDDIT &&\n pr !== PRODUCTS.PANELBIDDIT_SUPPORT\n );\n }\n\n if (id === PRODUCTS.PEB) {\n this.services = this.services.filter(pr => pr !== PRODUCTS.PEB_SUPP);\n this.services = this.services.filter(pr => pr !== PRODUCTS.PEB_Partiel);\n }\n\n if (id === PRODUCTS.ELEC) {\n this.services = this.services.filter(pr => pr !== PRODUCTS.ELEC_SUPP);\n }\n\n if (id === PRODUCTS.GAZ_CONTROLE || id === PRODUCTS.GAZ_CONTROLE_PERIO) {\n this.services = this.services.filter(pr => pr !== PRODUCTS.GAZ_SUPP && pr !== PRODUCTS.ISO);\n }\n\n if (indexPlan2D < 0 && id === PRODUCTS.PLAN3D) {\n this.setService(PRODUCTS.PLAN);\n }\n\n if (!indexPanel && (id === PRODUCTS.PANEL || id === PRODUCTS.PANEL_SUPPORT)) {\n this.setService(PRODUCTS.SMS);\n }\n\n if (indexPlan2D < 0 && id === PRODUCTS.VISITE360) {\n this.setService(PRODUCTS.PLAN);\n }\n\n if (indexPlan2D > -1 && indexPlan3D > -1 && id === PRODUCTS.PLAN) {\n this.services = this.services.filter(pr => pr !== PRODUCTS.PLAN3D);\n }\n\n if (indexPlan2D > -1 && indexVisite360 > -1 && id === PRODUCTS.PLAN) {\n this.services = this.services.filter(pr => pr !== PRODUCTS.VISITE360);\n }\n\n if (index > -1) {\n // this.services.splice(index, 1);\n this.services = this.services.filter(pr => pr !== id);\n } else {\n this.services = [...this.services, id];\n\n if (id === PRODUCTS.GAZ_CONTROLE) {\n this.setGazSupp(this.nbOfApp);\n }\n if (id === PRODUCTS.ELEC) {\n this.setElecSupp(this.nbOfApp);\n }\n if (id === PRODUCTS.GAZ_CONTROLE || id === PRODUCTS.GAZ_CONTROLE_PERIO) {\n this.setPlanIso(0);\n }\n }\n this.store.dispatch(new SetServices(this.services));\n }\n\n setPlanIso(nb: number) {\n this.services = this.services.filter(pr => pr !== PRODUCTS.ISO);\n\n if (nb > 0) {\n const isoArray = [...Array(nb).fill(PRODUCTS.ISO)];\n this.services = this.services.concat(isoArray);\n }\n\n this.store.dispatch(new SetServices(this.services));\n this.store.dispatch(new SetNbOfIso(nb));\n }\n\n setPebSupp(nb) {\n this.services = this.services.filter(pr => pr !== PRODUCTS.PEB_SUPP);\n\n if (nb > 1) {\n const pebSuppArray = [...Array(nb - 1).fill(PRODUCTS.PEB_SUPP)];\n this.services = this.services.concat(pebSuppArray);\n }\n\n this.store.dispatch(new SetServices(this.services));\n }\n\n setAuditSupp(nb: number) {\n this.services = this.services.filter(pr => pr !== PRODUCTS.AUDIT);\n\n const auditSuppArray = [...Array(nb).fill(PRODUCTS.AUDIT)];\n this.services = this.services.concat(auditSuppArray);\n\n this.store.dispatch(new SetServices(this.services));\n }\n\n setElecSupp(nb) {\n this.services = this.services.filter(pr => pr !== PRODUCTS.ELEC_SUPP);\n\n if (nb > 1) {\n const elecSuppArray = [...Array(nb - 1).fill(PRODUCTS.ELEC_SUPP)];\n this.services = this.services.concat(elecSuppArray);\n }\n\n this.store.dispatch(new SetServices(this.services));\n this.store.dispatch(new SetNbOfElec(nb));\n }\n\n setGazSupp(nb) {\n this.services = this.services.filter(pr => pr !== PRODUCTS.GAZ_SUPP);\n\n if (nb > 1) {\n const gazSuppArray = [...Array(nb - 1).fill(PRODUCTS.GAZ_SUPP)];\n this.services = this.services.concat(gazSuppArray);\n }\n\n this.store.dispatch(new SetServices(this.services));\n this.store.dispatch(new SetNbOfGaz(nb));\n }\n\n formatAddress(address: AddressDTO) {\n return address.Number && address.Street\n ? `${address.Street} ${address.Number} ${address.Zip} ${address.City}`\n : address.Street\n ? `${address.Street} ${address.Zip} ${address.City}`\n : `${address.Zip} ${address.City}`;\n }\n\n getInvoiceLink(orderId: string): Observable<{ Link: string }> {\n return this.http.get<{ Link: string }>(this.invoiceOrderURL.replace('{orderid}', orderId));\n }\n\n public isGuid(stringToTest) {\n const regexGuid = /^(\\{){0,1}[0-9a-fA-F]{8}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{12}(\\}){0,1}$/gi;\n return regexGuid.test(stringToTest);\n }\n\n checkTva(vatNumber: string): Observable {\n vatNumber = vatNumber.replace(/\\D/g, '');\n return this.http.get(`${environment.CertiCore.checkVat}?countryCode=BE&vatNumber=${vatNumber}`);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\n\ninterface DataLayerEvent {\n event: string;\n [index: string]: string | number;\n}\n\ntype DomEventParams = { event_target: string; event_label: string };\n\ndeclare var dataLayer: Array;\n\nexport class PurchaseEventParams {\n constructor(\n public transaction_id: string,\n public affiliation: string,\n public value: number,\n public currency: string,\n public items: Partial[]\n ) {}\n}\n\nexport class PurchaseEventItemParams {\n constructor(\n public item_id: string,\n public item_name: string,\n public list_name: string,\n public item_brand: string,\n public item_category: string,\n public item_variant: string,\n public list_position: number,\n public quantity: number,\n public price: number,\n public discount: number\n ) {}\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class GtmService {\n constructor(public router: Router) {}\n\n emit(eventName: string, params?: T) {\n dataLayer.push({ event: eventName, ...(params || {}) });\n }\n\n emitPurchase(eventParameters: Partial, extraParameters: { is_new_customer: boolean }) {\n this.emit('purchase', {\n ecommerce: eventParameters,\n ...extraParameters\n });\n }\n\n emitDomEvent(eventName: string, params: DomEventParams) {\n this.emit(eventName, {\n ...params\n });\n }\n\n emitClick(params: DomEventParams) {\n this.emitDomEvent('click', params);\n }\n}\n","import { Injectable, ErrorHandler } from '@angular/core';\nimport { environment } from 'src/environments/environment';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LoggerService {\n constructor(private errorHandler: ErrorHandler) {}\n\n log(value: any, ...rest: any[]) {\n if (!environment.production) {\n console.log(value, ...rest);\n }\n }\n\n error(error: Error) {\n this.errorHandler.handleError(error);\n }\n\n warn(value: any, ...rest: any[]) {\n console.warn(value, ...rest);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Router, NavigationEnd, RoutesRecognized } from '@angular/router';\nimport { filter, pairwise } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PreviousRouteService {\n private previousUrl: string;\n\n constructor(private router: Router) {\n this.router.events\n .pipe(\n filter((evt: any) => evt instanceof RoutesRecognized),\n pairwise()\n )\n .subscribe((events: RoutesRecognized[]) => {\n this.previousUrl = events[0].urlAfterRedirects;\n });\n }\n\n public setPreviousUrl(url: string) {\n this.previousUrl = url;\n }\n\n public getPreviousUrl() {\n return this.previousUrl;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { LoggerService } from './logger.service';\nimport { Address } from '../models/address';\nimport { projectID } from '../data/theme-config';\nimport * as PRODUCTS from '../../core/data/products';\nimport { SendBrochure } from '../models/brochure';\nimport { environment as ENV, environment } from 'src/environments/environment';\nimport { VisitZyva } from '../models/visitZyva';\nimport { ZyvaHelper } from './zyva.helper';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SendEmailService {\n mathieu = 'mh@certinergie.be';\n guido = 'guido@certinergie.be';\n geoffroy = 'gdb@certinergie.be';\n frederic = 'frederic.lemaire@certinergie.be';\n nabil = 'nabil@certinergie.be';\n apiURL = `${environment.CertiSystems.mailSending}/sendMail`;\n apiWithTemplateURL = `${environment.CertiSystems.emailWithTemplate}/SendMail`;\n certiEmail = 'info@certinergie.be';\n graphisme = 'graphisme@certinergie.be';\n zyvaMail = 'hello@zyva.immo';\n notaryEmail =\n projectID === 'hainaut'\n ? 'mons@maisondesnotaires.be'\n : projectID === 'namur'\n ? 'maison.notaires.namur@belnot.be'\n : projectID === 'nvn'\n ? 'not@nvn.be'\n : 'nabil@certinergie.be';\n\n constructor(private http: HttpClient, private logger: LoggerService) {}\n\n getListHtml(links: string[]) {\n if (!links || links.length === 0) {\n return '';\n }\n const formattedLinks = links.map(link => `
  • ${link}
  • `).join('');\n return `
    • Links:
        ${formattedLinks}
    `;\n }\n\n public sendDevis(\n value: {\n email: string;\n firstName: string;\n lastName: string;\n phone: string;\n remarks: string;\n userCity?: string;\n userNum?: string;\n userStreet?: string;\n userZip?: string;\n },\n title?: string,\n links?: string[],\n serviceId?: number,\n toFred = false\n ): Observable {\n this.logger.log('email data: ', value);\n this.logger.log('email data: ', title);\n this.logger.log('email data: ', links);\n const data = {\n user: {\n name: `${value.firstName} ${value.lastName}`,\n mail: value.email,\n phone: value.phone\n },\n estate: {\n street: value.userStreet,\n zip: value.userZip,\n numbox: value.userNum,\n city: value.userCity\n },\n message: {\n subject: 'Demande de devis',\n message: value.remarks.replace(new RegExp('\\n', 'g'), '
    ')\n },\n title: title\n };\n\n const subject = `${data.message.subject} ${data.title ? data.title : ''}`;\n\n let message = `\n

    ${subject}

    \n

    Nom: ${data.user.name}

    \n

    Email: ${data.user.mail}

    \n

    Tel: ${data.user.phone}

    \n ${\n data.estate.street && data.estate.street !== ''\n ? `

    Adresse: ${data.estate.street} ${data.estate.numbox} ${data.estate.zip} ${data.estate.city}

    `\n : ''\n }\n ${links && links.length > 0 ? this.getListHtml(links) : ''}\n

    ${data.message.message}

    \n `;\n if (!toFred) {\n message += `

    Une copie de cet email a été envoyée à ${this.certiEmail}

    `;\n }\n\n this.sendMail(data.user.mail, 'Confirmation ' + subject, message).subscribe();\n const emailDepartment = this.getEmailDepartment(serviceId);\n if (emailDepartment) {\n this.sendMail(emailDepartment, subject, message).subscribe();\n }\n if (serviceId === PRODUCTS.NETTJARDIN || serviceId === PRODUCTS.NETTMAISON) {\n this.sendMail('jerome.paquot@xlg.eu', subject, message).subscribe();\n }\n\n return this.sendMail(toFred ? this.frederic : this.certiEmail, subject, message);\n }\n\n getEmailDepartment(serviceId: number) {\n switch (serviceId) {\n case PRODUCTS.RESP_PEB:\n return 'rpeb@certinergie.be';\n case PRODUCTS.ELEC_NONDOM_MAX125A:\n return 'mh@certinergie.be';\n case PRODUCTS.ELEC_NONDOM_OVER125A:\n return 'mh@certinergie.be';\n case PRODUCTS.AMIANTE:\n return 'mh@certinergie.be';\n case PRODUCTS.NETTJARDIN:\n return 'simon.desmedt@xlg.eu';\n case PRODUCTS.NETTMAISON:\n return 'simon.desmedt@xlg.eu';\n case PRODUCTS.ZYVA:\n return 'hello@zyva.immo';\n default:\n return 'nabil@certinergie.be';\n }\n }\n\n public sendNotaryRequest(value: {\n email: string;\n firstName: string;\n lastName: string;\n phone: string;\n subject: string;\n address: Address;\n message: string;\n }): Observable {\n this.logger.log('email data: ', value);\n const data = {\n user: {\n name: `${value.firstName} ${value.lastName}`,\n mail: value.email,\n phone: value.phone\n },\n estate: {\n street: value.address.street,\n zip: value.address.zip,\n numbox: value.address.number,\n city: value.address.city\n },\n message: {\n subject: value.subject,\n message: value.message\n }\n };\n\n const subject = data.message.subject;\n let message =\n '

    ' +\n data.message.subject +\n '

    ' +\n 'Nom: ' +\n data.user.name +\n '
    ' +\n 'Email: ' +\n data.user.mail +\n '
    ' +\n 'Tel: ' +\n data.user.phone +\n '
    ' +\n 'Adresse: ' +\n data.estate.street +\n ' ' +\n data.estate.numbox +\n ' ' +\n data.estate.zip +\n ' ' +\n data.estate.city +\n '

    ' +\n data.message.message;\n\n message += '

    ';\n\n this.sendMail(data.user.mail, 'Confirmation ' + subject, message).subscribe();\n this.sendMail(this.certiEmail, '[COPY - NO ACTION REQUIRED] ' + subject, message).subscribe();\n\n return this.sendMail(this.notaryEmail, subject, message);\n }\n\n public sendRequest(value: {\n email: string;\n userId: string;\n firstName: string;\n lastName: string;\n subject: string;\n message: string;\n }): Observable {\n this.logger.log('email data: ', value);\n const data = {\n user: {\n name: `${value.firstName} ${value.lastName}`,\n mail: value.email,\n userId: value.userId\n },\n message: {\n subject: value.subject,\n message: value.message\n }\n };\n\n const subject = data.message.subject;\n const userLink = `${environment.certiAdminBaseUrl}/Users/EditNew/${data.user.userId}`;\n let message =\n '

    ' +\n data.message.subject +\n '

    ' +\n 'Nom: ' +\n data.user.name +\n '
    ' +\n 'Email: ' +\n data.user.mail +\n '
    ' +\n 'User: ' +\n `Lien user` +\n '

    ' +\n data.message.message;\n\n message += '

    ';\n\n this.sendMail(data.user.mail, 'Confirmation ' + subject, message).subscribe();\n this.sendMail(this.certiEmail, '[COPY - NO ACTION REQUIRED] ' + subject, message).subscribe();\n return this.sendMail(this.graphisme, subject, message);\n }\n\n private sendMail(email, subject, message) {\n this.logger.log(email);\n this.logger.log(subject);\n this.logger.log(message);\n return this.http.post(this.apiURL, {\n to: [email],\n subject: subject,\n body: message\n });\n }\n\n private sendMails(emails, subject, message) {\n this.logger.log(emails);\n this.logger.log(subject);\n this.logger.log(message);\n return this.http.post(this.apiURL, {\n to: [...emails],\n subject: subject,\n body: message\n });\n }\n\n sendPaymentInviteMail(email, orderId) {\n return this.http.post(this.apiWithTemplateURL, {\n OrderID: orderId,\n EmailType: 18,\n Recipient: email\n });\n }\n\n sendComplain(data) {\n return this.http.post(this.apiWithTemplateURL, data);\n }\n\n sendBrochure(brochure: SendBrochure): Observable {\n return this.http.post(ENV.API.SEND_BROCHURE, brochure);\n }\n\n sendLegalShare(email, orderId): Observable {\n return this.http.post(this.apiWithTemplateURL, {\n OrderID: orderId,\n EmailType: 19,\n Sender: email,\n Recipient: email\n });\n }\n\n get websiteTitle(): string {\n return projectID === 'greenfish'\n ? 'Greenfish'\n : projectID === 'hainaut'\n ? 'MDN Hainaut'\n : projectID === 'namur'\n ? 'MDN Namur'\n : projectID === 'liege'\n ? 'MDN Liège'\n : projectID === 'nvn'\n ? 'NVN'\n : 'Certinergie';\n }\n\n public sendRequestZyva(\n orderZyva: VisitZyva,\n userName: string,\n userEmail: string,\n userId: string,\n ownerName: string,\n ownerAddress: string\n ): Observable {\n const subject = `Demande de visite By Zyva - Certinergie - ${this.websiteTitle}`;\n const message = ZyvaHelper.getMailTemplate(\n subject,\n orderZyva,\n userName,\n userEmail,\n userId,\n ownerName,\n ownerAddress\n );\n\n this.sendMail(this.certiEmail, '[COPY - NO ACTION REQUIRED] ' + subject, message).subscribe();\n return this.sendMail(this.zyvaMail, subject, message);\n }\n}\n","import { VisitZyva } from \"../models/visitZyva\";\n\nexport class ZyvaHelper {\n static getMailTemplate(\n subject: string,\n orderZyva: VisitZyva,\n userName: string,\n userEmail: string,\n userId: string,\n ownerName: string,\n ownerAddress: string\n ) {\n const links = (orderZyva.uploadLinks?.length ? '

    Liens des fichiers :

    ' + orderZyva.uploadLinks.join('
    ') : '')\n\n return `\n

    ${subject}

    \n

    Données de l'utilisateur qui a effectué la commande

    \n

    Nom : ${userName}

    \n

    Email : ${userEmail}

    \n

    Identifiant de l'utilisateur : ${userId}

    \n

    \n

    Données concernant le bien et le propriétaire

    \n

    Nom : ${ownerName}

    \n

    Lieu : ${ownerAddress}

    \n

    Clés disponibles en l'étude ? ${orderZyva.option.active ? 'OUI' : 'NON'}

    \n

    Instruction(s) particulière(s) : ${orderZyva.instructions ?? 'Aucune'}

    \n ` + links;\n }\n}","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { LoaderState } from '../models/loaderState';\n@Injectable({\n providedIn: 'root'\n})\nexport class SpinnerOverlayService {\n private loaderSubject = new Subject();\n loaderState = this.loaderSubject.asObservable();\n constructor() {}\n show() {\n this.loaderSubject.next({ show: true });\n }\n hide() {\n this.loaderSubject.next({ show: false });\n }\n}\n","import { VisitAdValoris } from './../../models/visitAdValoris';\nimport { Action } from '@ngrx/store';\nimport { Product } from '../../models/product';\nimport { Reduction } from '../../models/reduction';\nimport { Address } from '../../models/address';\nimport { Owner, Contact, UserForm, UserType, User } from '../../models/user';\nimport { Document } from '../../models/document';\nimport { Region } from '../../models/region';\nimport { Print } from '../../models/print';\nimport { Visit } from '../../models/visit';\nimport { VisitContact } from '../../models/visitContact';\nimport { Panel } from '../../models/paper';\nimport { IOrder } from './order.reducer';\n\nexport class ActionTypes {\n static SET_REGION = '[Order] SET_REGION';\n static SET_REGIONINFO = '[Order] SET_REGIONINFO';\n static SET_ESTATETYPE = '[Order] SET_ESTATETYPE';\n static SET_ESTATESTYLE = '[Order] SET_ESTATESTYLE';\n static SET_NUMBEROFAPPARTMENTS = '[Order] SET_NUMBEROFAPPARTMENTS';\n static SET_PRODUCTS = '[Order] SET_PRODUCTS';\n static SET_SERVICES = '[Order] SET_SERVICES';\n static SET_NBOFELEC = '[Order] SET_NBOFELEC';\n static SET_NBOFGAZ = '[Order] SET_NBOFGAZ';\n static SET_GAZCHOICE = '[Order] SET_GAZCHOICE';\n static SET_PAYMENTTYPE = '[Order] SET_PAYMENTTYPE';\n static SET_ACTETYPE = '[Order] SET_ACTETYPE';\n static TOGGLE_SENDBYMAIL = '[Order] TOGGLE_SENDBYMAIL';\n\n static SET_SENDBYMAIL = '[Order] SET_SENDBYMAIL';\n static SET_REMARKS = '[Order] SET_REMARKS';\n static SET_INVOICETO = '[Order] SET_INVOICETO';\n static SET_IMMOPACK = '[Order] SET_IMMOPACK';\n static SET_IMMOPACKIDS = '[Order] SET_IMMOPACKIDS';\n static SET_REDUCTIONS = '[Order] SET_REDUCTIONS';\n static TOGGLE_ONLINEPAYMENT = '[Order] TOGGLE_ONLINEPAYMENT';\n static SET_PROMOCODE = '[Order] SET_PROMOCODE';\n static TOGGLE_URGENCE = '[Order] TOGGLE_URGENCE';\n static TOGGLE_URGENCE_PRO = '[Order] TOGGLE_URGENCE_PRO';\n static SET_ADDRESS = '[Order] SET_ADDRESS';\n static SET_ZIPCODE = '[Order] SET_ZIPCODE';\n static SET_OWNER = '[Order] SET_OWNER';\n static SET_CONTACT = '[Order] SET_CONTACT';\n static SET_CONTACTS = '[Order] SET_CONTACTS';\n static SET_USERFORM = '[Order] SET_USERFORM';\n static SET_DATEBUTOIR = '[Order] SET_DATEBUTOIR';\n static SET_DOCUMENT = '[Order] SET_DOCUMENT';\n static RESET_ORDERSTATE = '[Order] RESET_ORDERSTATE';\n static RESET_ORDER_FORM = '[Order] RESET_ORDERFORM';\n static SET_NEWUSERTYPE = '[Order] SET_NEWUSERTYPE';\n static COPY_CONTACT = '[Order] COPY_CONTACT';\n static SET_GOGETKEYS = '[Order] SET_GOGETKEYS';\n static SET_COMMISSION = '[Order] SET_COMMISSION';\n static SET_CONTACTCHOICE = '[Order] SET_CONTACTCHOICE';\n static SET_NN = '[Order] SET_NN';\n static SET_PROMOCODEID = '[Order] SET_PROMOCODEID';\n static SET_PEBNB = '[Order] SET_PEBNB';\n static SET_PACKID = '[Order] SET_PACKID';\n static SET_PACKNAME = '[Order] SET_PACKNAME';\n static SET_NBOFISO = '[Order] SET_NBOFISO';\n static SET_REASON = '[Order] SET_REASON';\n static SET_CLIENTTYPE = '[Order] SET_CLIENTTYPE';\n static SET_IMMOORCTRL = '[Order] SET_IMMOORCTRL';\n static SET_VENTETYPE = '[Order] SET_VENTETYPE';\n static SET_VENTEINFO = '[Order] SET_VENTEINFO';\n static SET_PARUTIONS = '[Order] SET_PARUTIONS';\n static SET_PANELS = '[Order] SET_PANELS';\n static SET_PANELSINFO = '[Order] SET_PANELSINFO';\n static SET_PARUTION_LINKS = '[Order] SET_PARUTION_LINKS';\n static SET_PARUTION_COMMENT = '[Order] SET_PARUTION_COMMENT';\n static SET_VISITS = '[Order] SET_VISITS';\n static SET_VISITCONTACT = '[Order] SET_VISITCONTACT';\n static SET_VISITADVALORIS = '[Order] SET_VISITADVALORIS';\n static RESET_PACK = '[Order] RESET_PACK';\n static SET_SPLIT_INVOICE = '[Order] SET_SPLIT_INVOICE';\n static SET_AGENCY_PRODUCTS = '[Order] SET_AGENCY_PRODUCTS';\n static SET_ASKFOREXPERTISE = '[Order] SET_ASKFOREXPERTISE';\n static SET_ASKFOROFFER = '[Order] SET_ASKFOROFFER';\n static SET_ADDRESSKEY = '[Order] SET_ADDRESSKEY';\n\n static SET_GUID = '[User] SET_GUID';\n static SET_TOKEN = '[User] SET_TOKEN';\n static SET_USERINFO = '[User] SET_USERINFO';\n static SET_ISLOGGEDIN = '[User] SET_ISLOGGEDIN';\n static RESET_USERINFO = '[User] RESET_USERINFO';\n static COMPLETE_NOTAIRE_LANDING_DIALOG = '[User] COMPLETE_NOTAIRE_LANDING_DIALOG';\n}\n\nexport class SetRegion implements Action {\n public type = ActionTypes.SET_REGION;\n constructor(public payload: number) {}\n}\nexport class SetRegionInfo implements Action {\n public type = ActionTypes.SET_REGIONINFO;\n constructor(public payload: Region) {}\n}\nexport class SetEstateType implements Action {\n public type = ActionTypes.SET_ESTATETYPE;\n constructor(public payload: number) {}\n}\nexport class SetEstateStyle implements Action {\n public type = ActionTypes.SET_ESTATESTYLE;\n constructor(public payload: number) {}\n}\nexport class SetNumberOfAppartments implements Action {\n public type = ActionTypes.SET_NUMBEROFAPPARTMENTS;\n constructor(public payload: number) {}\n}\nexport class SetServices implements Action {\n public type = ActionTypes.SET_SERVICES;\n constructor(public payload: number[]) {}\n}\nexport class SetProducts implements Action {\n public type = ActionTypes.SET_PRODUCTS;\n constructor(public payload: Product[]) {}\n}\nexport class SetNbOfElec implements Action {\n public type = ActionTypes.SET_NBOFELEC;\n constructor(public payload: number) {}\n}\nexport class SetNbOfGaz implements Action {\n public type = ActionTypes.SET_NBOFGAZ;\n constructor(public payload: number) {}\n}\nexport class SetGazChoice implements Action {\n public type = ActionTypes.SET_GAZCHOICE;\n constructor(public payload: number) {}\n}\nexport class SetPaymentType implements Action {\n public type = ActionTypes.SET_PAYMENTTYPE;\n constructor(public payload: string) {}\n}\nexport class SetActeType implements Action {\n public type = ActionTypes.SET_ACTETYPE;\n constructor(public payload: string) {}\n}\nexport class ToggleSendByMail implements Action {\n public type = ActionTypes.TOGGLE_SENDBYMAIL;\n constructor(public payload: boolean) {}\n}\nexport class SetSendByMail implements Action {\n public type = ActionTypes.SET_SENDBYMAIL;\n constructor(public payload: boolean) {}\n}\nexport class SetRemarks implements Action {\n public type = ActionTypes.SET_REMARKS;\n constructor(public payload: string) {}\n}\nexport class SetInvoiceTo implements Action {\n public type = ActionTypes.SET_INVOICETO;\n constructor(public payload: string) {}\n}\nexport class SetImmoPack implements Action {\n public type = ActionTypes.SET_IMMOPACK;\n constructor(public payload: number) {}\n}\nexport class SetImmoPackIds implements Action {\n public type = ActionTypes.SET_IMMOPACKIDS;\n constructor(public payload: number[]) {}\n}\nexport class SetReductions implements Action {\n public type = ActionTypes.SET_REDUCTIONS;\n constructor(public payload: Reduction[]) {}\n}\nexport class ToggleOnlinePayment implements Action {\n public type = ActionTypes.TOGGLE_ONLINEPAYMENT;\n constructor(public payload: boolean) {}\n}\nexport class SetPromoCode implements Action {\n public type = ActionTypes.SET_PROMOCODE;\n constructor(public payload: string) {}\n}\nexport class ToggleUrgence implements Action {\n public type = ActionTypes.TOGGLE_URGENCE;\n constructor(public payload: boolean) {}\n}\nexport class ToggleUrgencePro implements Action {\n public type = ActionTypes.TOGGLE_URGENCE_PRO;\n constructor(public payload: boolean) {}\n}\nexport class SetAddress implements Action {\n public type = ActionTypes.SET_ADDRESS;\n constructor(public payload: Address) {}\n}\nexport class SetZipCode implements Action {\n public type = ActionTypes.SET_ZIPCODE;\n constructor(public payload: string) {}\n}\nexport class SetOwner implements Action {\n public type = ActionTypes.SET_OWNER;\n constructor(public payload: Owner) {}\n}\nexport class SetContact implements Action {\n public type = ActionTypes.SET_CONTACT;\n constructor(public payload: Contact) {}\n}\nexport class SetContacts implements Action {\n public type = ActionTypes.SET_CONTACTS;\n constructor(public payload: Contact[]) {}\n}\nexport class SetUserForm implements Action {\n public type = ActionTypes.SET_USERFORM;\n constructor(public payload: UserForm) {}\n}\nexport class SetDateButoir implements Action {\n public type = ActionTypes.SET_DATEBUTOIR;\n constructor(public payload: Date) {}\n}\nexport class SetDocument implements Action {\n public type = ActionTypes.SET_DOCUMENT;\n constructor(public payload: Document) {}\n}\nexport class ResetOrderState implements Action {\n public type = ActionTypes.RESET_ORDERSTATE;\n constructor(public payload) {}\n}\nexport class ResetOrderForm implements Action {\n public type = ActionTypes.RESET_ORDER_FORM;\n constructor(public payload: { user: IOrder['user']; token: IOrder['token'] }) {}\n}\nexport class SetNewUserType implements Action {\n public type = ActionTypes.SET_NEWUSERTYPE;\n constructor(public payload: UserType) {}\n}\nexport class CopyContact implements Action {\n public type = ActionTypes.COPY_CONTACT;\n constructor(public payload: any) {}\n}\nexport class SetGoGetKeys implements Action {\n public type = ActionTypes.SET_GOGETKEYS;\n constructor(public payload: boolean) {}\n}\nexport class SetCommission implements Action {\n public type = ActionTypes.SET_COMMISSION;\n constructor(public payload: number) {}\n}\nexport class SetContactChoice implements Action {\n public type = ActionTypes.SET_CONTACTCHOICE;\n constructor(public payload: string) {}\n}\nexport class SetGuid implements Action {\n public type = ActionTypes.SET_GUID;\n constructor(public payload: string) {}\n}\nexport class SetUserInfo implements Action {\n public type = ActionTypes.SET_USERINFO;\n constructor(public payload: User) {}\n}\nexport class ResetUserInfo implements Action {\n public type = ActionTypes.RESET_USERINFO;\n constructor(public payload: User) {}\n}\nexport class SetNN implements Action {\n public type = ActionTypes.SET_NN;\n constructor(public payload: string) {}\n}\nexport class SetPromoCodeID implements Action {\n public type = ActionTypes.SET_PROMOCODEID;\n constructor(public payload: string) {}\n}\nexport class SetPebNb implements Action {\n public type = ActionTypes.SET_PEBNB;\n constructor(public payload: string) {}\n}\nexport class SetPackID implements Action {\n public type = ActionTypes.SET_PACKID;\n constructor(public payload: string) {}\n}\nexport class SetPackName implements Action {\n public type = ActionTypes.SET_PACKNAME;\n constructor(public payload: string) {}\n}\nexport class SetNbOfIso implements Action {\n public type = ActionTypes.SET_NBOFISO;\n constructor(public payload: number) {}\n}\n\nexport class SetReason implements Action {\n public type = ActionTypes.SET_REASON;\n constructor(public payload: number) {}\n}\n\nexport class SetClientType implements Action {\n public type = ActionTypes.SET_CLIENTTYPE;\n constructor(public payload: number) {}\n}\n\nexport class SetImmoOrCtrl implements Action {\n public type = ActionTypes.SET_IMMOORCTRL;\n constructor(public payload: number) {}\n}\n\nexport class SetVenteType implements Action {\n public type = ActionTypes.SET_VENTETYPE;\n constructor(public payload: string) {}\n}\n\nexport class SetVenteInfo implements Action {\n public type = ActionTypes.SET_VENTEINFO;\n constructor(public payload: any) {}\n}\n\nexport class SetParutions implements Action {\n public type = ActionTypes.SET_PARUTIONS;\n constructor(public payload: Print[]) {}\n}\n\nexport class SetPanels implements Action {\n public type = ActionTypes.SET_PANELS;\n constructor(public payload: Panel[]) {}\n}\n\nexport class SetPanelsInfo implements Action {\n public type = ActionTypes.SET_PANELSINFO;\n constructor(public payload: string) {}\n}\n\nexport class SetParutionFileLinks implements Action {\n public type = ActionTypes.SET_PARUTION_LINKS;\n constructor(public payload: string[]) {}\n}\n\nexport class SetParutionComment implements Action {\n public type = ActionTypes.SET_PARUTION_COMMENT;\n constructor(public payload: string) {}\n}\n\nexport class SetVisits implements Action {\n public type = ActionTypes.SET_VISITS;\n constructor(public payload: Visit[]) {}\n}\n\nexport class SetVisitContact implements Action {\n public type = ActionTypes.SET_VISITCONTACT;\n constructor(public payload: VisitContact) {}\n}\n\nexport class SetVisitAdValoris implements Action {\n public type = ActionTypes.SET_VISITADVALORIS;\n constructor(public payload: VisitAdValoris) {}\n}\n\nexport class ResetPack implements Action {\n public type = ActionTypes.RESET_PACK;\n constructor(public payload: any) {}\n}\n\nexport class SetSplitInvoice implements Action {\n public type = ActionTypes.SET_SPLIT_INVOICE;\n constructor(public payload: boolean) {}\n}\n\nexport class SetAskForExpertise implements Action {\n public type = ActionTypes.SET_ASKFOREXPERTISE;\n constructor(public payload: boolean) {}\n}\n\nexport class SetAskForOffer implements Action {\n public type = ActionTypes.SET_ASKFOROFFER;\n constructor(public payload: boolean) {}\n}\n\nexport class SetAgencyProducts implements Action {\n public type = ActionTypes.SET_AGENCY_PRODUCTS;\n constructor(public payload: Product[]) {}\n}\n\nexport class SetToken implements Action {\n public type = ActionTypes.SET_TOKEN;\n constructor(public payload: string) {}\n}\n\nexport class SetAddressKey implements Action {\n public type = ActionTypes.SET_ADDRESSKEY;\n constructor(public payload: { id: string; price: number }) {}\n}\n\nexport class CompleteNotaireLandingDialog implements Action {\n public type = ActionTypes.COMPLETE_NOTAIRE_LANDING_DIALOG;\n constructor(public payload: boolean) {}\n}\n\nexport type Actions =\n | SetRegion\n | SetRegionInfo\n | SetEstateType\n | SetEstateStyle\n | SetNumberOfAppartments\n | SetServices\n | SetProducts\n | SetPanels\n | SetNbOfElec\n | SetPaymentType\n | SetActeType\n | ToggleSendByMail\n | SetSendByMail\n | SetRemarks\n | SetInvoiceTo\n | SetImmoPack\n | SetImmoPackIds\n | SetReductions\n | ToggleOnlinePayment\n | ToggleUrgence\n | ToggleUrgencePro\n | SetPromoCode\n | SetAddress\n | SetZipCode\n | SetOwner\n | SetContact\n | SetContacts\n | SetUserForm\n | SetDateButoir\n | SetDocument\n | ResetOrderState\n | SetNewUserType\n | CopyContact\n | SetGoGetKeys\n | SetCommission\n | SetContactChoice\n | SetGuid\n | SetUserInfo\n | ResetUserInfo\n | SetNN\n | SetPromoCodeID\n | SetGazChoice\n | SetPebNb\n | SetNbOfIso\n | SetReason\n | SetClientType\n | SetVenteType\n | SetVenteInfo\n | SetParutions\n | SetParutionFileLinks\n | SetVisits\n | SetVisitContact\n | SetVisitAdValoris\n | ResetPack\n | SetSplitInvoice\n | SetAgencyProducts\n | SetImmoOrCtrl\n | SetAskForExpertise\n | SetToken\n | SetAddressKey\n | SetPanelsInfo\n | SetAskForOffer\n | CompleteNotaireLandingDialog;\n","import { ActionTypes, Actions } from './order.actions';\n\nimport * as estates from '../../data/estates';\nimport { Product } from '../../models/product';\n\nimport * as PRODUCTS from '../../data/products';\nimport { Reduction } from '../../models/reduction';\nimport { Document } from '../../models/document';\nimport { Contact, Owner, UserForm, UserType, User, Role, UserRole } from '../../models/user';\nimport { Address } from '../../models/address';\nimport { Region } from '../../models/region';\n\nimport { defaultRegion, projectID } from '../../data/theme-config';\nimport { Print } from '../../models/print';\nimport { Visit } from '../../models/visit';\nimport { VisitContact } from '../../models/visitContact';\nimport { VenteInfo, defaultVenteInfo } from '../../models/venteInfo';\nimport { VisitAdValoris } from '../../models/visitAdValoris';\nimport { Panel } from '../../models/paper';\n\nimport { forceInvoiceToPro } from '../../data/theme-config';\nimport { stat } from 'fs';\n\nexport interface IOrder {\n id: string;\n regionType: number;\n region: Region;\n estateType: number;\n estateStyle: number;\n estateName: string;\n nbOfAppartments: number;\n services: number[];\n immoServices: number[];\n products: Product[];\n productsForAgency: Product[];\n hasPeb: boolean;\n hasAudit: boolean;\n hasPebPartiel: boolean;\n hasElec: boolean;\n hasCiterne: boolean;\n hasPlan: boolean;\n hasGaz: boolean;\n pebNb: string;\n nbOfElec: number;\n nbOfGaz: number;\n gazChoice: number;\n paymentType: string;\n acteType: string;\n sendByMail: boolean;\n remarks: string;\n invoiceTo: string;\n immoPack: number;\n immoPackIds: number[];\n reductions: Reduction[];\n reduction: number;\n reductionWithoutComm: number;\n price: number;\n onlinePayment: boolean;\n promoCode: string;\n urgence: boolean;\n urgencePro: boolean;\n address: Address;\n owner: Owner;\n contact: Contact;\n contacts: Contact[];\n dateButoir: Date;\n document: Document;\n goGetKeys: boolean;\n commission: number;\n contactChoice: string;\n nn: string;\n nbOfIso: number;\n promoCodeID: string;\n packID: string;\n packName: string;\n reason: number;\n clientType: number;\n immoOrCtrl: number;\n venteType: number;\n venteInfo: VenteInfo;\n parutions: Print[];\n panels: Panel[];\n panelsInfo: string;\n parutionFileLinks: string[];\n parutionsComment: string;\n visits: Visit[];\n visitContact: VisitContact;\n visitAdValoris: VisitAdValoris;\n splitInvoice: boolean;\n askForExpertise: boolean;\n askForOffer: boolean;\n addressKeyID: string;\n addressKeyPrice: number;\n\n newUser: UserForm;\n user: User;\n token: string;\n hasCompletedNotaireLandingDialog: boolean;\n}\n\nexport const initialOrderState: IOrder = {\n id: '',\n regionType: defaultRegion,\n region:\n defaultRegion === 0\n ? { id: 0, name: 'Région wallonne', fileName: 'be-wal' }\n : defaultRegion === 1\n ? { id: 1, name: 'Région bruxelloise', fileName: 'be-bxl' }\n : defaultRegion === 2\n ? { id: 2, name: 'Région flamande', fileName: 'be-vl' }\n : new Region(),\n estateType: -1,\n estateStyle: -1,\n estateName: '',\n nbOfAppartments: -1,\n services: [],\n immoServices: [],\n products: [],\n productsForAgency: [],\n hasPeb: false,\n hasAudit: false,\n hasPebPartiel: false,\n hasElec: false,\n hasCiterne: false,\n hasPlan: false,\n hasGaz: false,\n pebNb: '',\n nbOfElec: 0,\n nbOfGaz: 0,\n gazChoice: 1,\n paymentType: 'classic',\n acteType: 'ILLPAY',\n sendByMail: false,\n remarks: '',\n invoiceTo: forceInvoiceToPro ? 'toPro' : 'toProprio',\n immoPack: -1,\n immoPackIds: [],\n reductions: [],\n reduction: 0,\n reductionWithoutComm: 0,\n price: 0,\n onlinePayment: false,\n promoCode: '',\n urgence: false,\n urgencePro: false,\n address: new Address(),\n owner: new Owner(),\n contact: new Contact(),\n contacts: [],\n dateButoir: null,\n document: new Document(),\n goGetKeys: false,\n commission: 0,\n contactChoice: 'sameAsOwner',\n nn: '',\n nbOfIso: 0,\n promoCodeID: '',\n packID: '',\n packName: '',\n reason: -1,\n clientType: UserType.Particulier,\n immoOrCtrl: -1,\n venteType: -1,\n venteInfo: defaultVenteInfo,\n parutions: [],\n panels: [],\n panelsInfo: '',\n parutionFileLinks: [],\n parutionsComment: '',\n visits: [],\n visitContact: new VisitContact(),\n visitAdValoris: {\n forfaits: [\n {\n id: -1,\n description: '',\n active: false,\n devis: false,\n price: 0\n }\n ],\n options: [\n {\n id: -1,\n description: '',\n active: false,\n devis: false,\n price: 0\n }\n ],\n instructions: ''\n },\n splitInvoice: false,\n askForExpertise: false,\n askForOffer: false,\n addressKeyID: '',\n addressKeyPrice: 0,\n\n newUser: new UserForm(),\n user: {\n userid: '',\n title: '',\n firstname: '',\n lastname: '',\n email: '',\n commercialname: '',\n companyname: '',\n phone: '',\n gsm: '',\n indicator: '',\n indicatorphone: '',\n address: new Address(),\n sendByMail: false,\n hasImmoAccess: false,\n userType: UserType.Particulier,\n hasCommission: false,\n pricingPlan: 0,\n roles: [],\n tva: '',\n customPrices: [],\n notifications: [],\n pendingOrders: 0,\n unpaidAmount: 0,\n unpaidCount: 0,\n unpaidCallbackAmount: 0,\n unpaidCallbackCount: 0,\n yearlyOrdersCount: 0,\n ongoingOrders: 0,\n unsignedBdc: 0,\n newOrdersCount: 0,\n ordersCount: 0,\n latestOrdersCount: 0,\n canceledOrdersCount: 0,\n suspensOrdersCount: 0,\n orderId: '',\n consumerAddresses: []\n },\n token: '',\n hasCompletedNotaireLandingDialog: false\n};\n\nexport function reducer(state: IOrder = initialOrderState, action: Actions): IOrder {\n switch (action.type) {\n case ActionTypes.SET_REGION:\n return { ...state, regionType: action.payload as number };\n\n case ActionTypes.SET_REGIONINFO:\n return { ...state, region: action.payload as Region };\n\n case ActionTypes.SET_ESTATETYPE:\n return {\n ...state,\n estateType: action.payload as number,\n estateName: getEstateName(action.payload as number),\n nbOfAppartments: action.payload === estates.IMMEUBLE_APPART ? 1 : -1,\n estateStyle: getEstateStyle(action.payload)\n };\n\n case ActionTypes.SET_ESTATESTYLE:\n return {\n ...state,\n estateStyle: action.payload as number,\n estateType: action.payload === 3 ? estates.TERRAIN : -1,\n nbOfAppartments: -1,\n venteType:\n projectID === 'namur' || projectID === 'hainaut' || projectID === 'liege' || projectID === 'nvn'\n ? -1\n : state.venteType\n };\n\n case ActionTypes.SET_NUMBEROFAPPARTMENTS:\n return {\n ...state,\n nbOfAppartments: action.payload as number,\n estateType: estates.BUILDING,\n estateStyle: estates.BUILDING,\n estateName: 'IMMEUBLE_APPART'\n };\n\n case ActionTypes.SET_SERVICES:\n return {\n ...state,\n services: [...(action.payload as number[])],\n parutions: action.payload.length > 0 ? state.parutions : [],\n visits: action.payload.length > 0 ? state.visits : []\n };\n\n case ActionTypes.SET_PRODUCTS:\n return {\n ...state,\n products: [...(action.payload as Product[])],\n hasPeb: (action.payload as Product[]).some(p => p.id === PRODUCTS.PEB),\n hasAudit: (action.payload as Product[]).some(p => p.id === PRODUCTS.AUDIT),\n hasPebPartiel: (action.payload as Product[]).some(p => p.id === PRODUCTS.PEB_Partiel),\n hasElec: (action.payload as Product[]).some(p => p.id === PRODUCTS.ELEC),\n hasCiterne: (action.payload as Product[]).some(\n p => p.id === PRODUCTS.CITERNE_AERIENNE || p.id === PRODUCTS.CITERNE_ENTERREE\n ),\n hasPlan: (action.payload as Product[]).some(p => p.id === PRODUCTS.PLAN),\n hasGaz: (action.payload as Product[]).some(\n p => p.id === PRODUCTS.GAZ_CONTROLE || p.id === PRODUCTS.GAZ_CONTROLE_PERIO\n ),\n nbOfElec: (action.payload as Product[]).some(p => p.id === PRODUCTS.ELEC)\n ? state.nbOfElec > 0\n ? state.nbOfElec\n : 1\n : 0,\n nbOfGaz: (action.payload as Product[]).some(\n p => p.id === PRODUCTS.GAZ_CONTROLE || p.id === PRODUCTS.GAZ_CONTROLE_PERIO\n )\n ? state.nbOfGaz > 0\n ? state.nbOfGaz\n : 1\n : 0,\n price: checkPriceWithoutReduction(action.payload as Product[])\n };\n\n case ActionTypes.SET_NBOFELEC:\n return {\n ...state,\n nbOfElec: action.payload as number\n };\n\n case ActionTypes.SET_NBOFGAZ:\n return {\n ...state,\n nbOfGaz: action.payload as number\n };\n\n case ActionTypes.SET_GAZCHOICE:\n return {\n ...state,\n gazChoice: action.payload as number\n };\n\n case ActionTypes.SET_PAYMENTTYPE:\n return {\n ...state,\n paymentType: action.payload as string,\n onlinePayment: action.payload === 'online' ? true : state.onlinePayment\n };\n\n case ActionTypes.SET_ACTETYPE:\n return {\n ...state,\n acteType: action.payload as string\n };\n\n case ActionTypes.TOGGLE_SENDBYMAIL:\n return {\n ...state,\n sendByMail: !state.sendByMail as boolean\n };\n case ActionTypes.SET_SENDBYMAIL:\n return {\n ...state,\n sendByMail: action.payload as boolean\n };\n case ActionTypes.SET_REMARKS:\n return {\n ...state,\n remarks: action.payload as string\n };\n\n case ActionTypes.SET_INVOICETO:\n return {\n ...state,\n invoiceTo: action.payload as string\n };\n\n case ActionTypes.SET_IMMOPACK:\n return {\n ...state,\n immoPack: action.payload as number\n };\n\n case ActionTypes.SET_REDUCTIONS:\n const redWithoutComm = checkReduction(action.payload);\n const maxComm = checkMaxCommission(checkReduction(action.payload) as number, state.commission) as number;\n const red = (redWithoutComm - maxComm) as number;\n return {\n ...state,\n reductions: action.payload as Reduction[],\n reduction: red,\n reductionWithoutComm: redWithoutComm,\n commission: maxComm\n };\n\n case ActionTypes.SET_COMMISSION:\n return {\n ...state,\n commission: action.payload as number,\n reduction: state.reductionWithoutComm - action.payload\n };\n\n case ActionTypes.TOGGLE_ONLINEPAYMENT:\n return {\n ...state,\n onlinePayment: !state.onlinePayment as boolean\n };\n\n case ActionTypes.SET_PROMOCODE:\n return {\n ...state,\n promoCode: action.payload as string\n };\n\n case ActionTypes.SET_PEBNB:\n return {\n ...state,\n pebNb: action.payload as string\n };\n\n case ActionTypes.TOGGLE_URGENCE:\n return {\n ...state,\n urgence: !state.urgence as boolean\n };\n\n case ActionTypes.TOGGLE_URGENCE_PRO:\n return {\n ...state,\n urgencePro: action.payload as boolean\n };\n\n case ActionTypes.SET_ADDRESS:\n return {\n ...state,\n address: { ...state.address, ...(action.payload as Address) }\n };\n\n case ActionTypes.SET_ZIPCODE:\n return {\n ...state,\n address: { ...state.address, zip: action.payload as string }\n };\n\n case ActionTypes.SET_OWNER:\n return {\n ...state,\n owner: action.payload as Owner\n };\n\n case ActionTypes.SET_USERFORM:\n return {\n ...state,\n newUser: action.payload as User,\n user: { ...state.user, ...(action.payload as User) }\n };\n\n case ActionTypes.SET_DATEBUTOIR:\n return {\n ...state,\n dateButoir: action.payload as Date\n };\n\n case ActionTypes.SET_DOCUMENT:\n return {\n ...state,\n document: action.payload as Document\n };\n\n case ActionTypes.RESET_ORDERSTATE:\n return {\n ...initialOrderState,\n services: [],\n reductions: [],\n products: [],\n immoServices: []\n };\n\n case ActionTypes.RESET_ORDER_FORM:\n return {\n ...initialOrderState,\n ...action.payload\n };\n\n case ActionTypes.SET_NEWUSERTYPE:\n return {\n ...state,\n user: { ...state.user, userType: action.payload as UserType }\n };\n\n case ActionTypes.SET_CONTACTCHOICE:\n return {\n ...state,\n contactChoice: action.payload as string\n };\n\n case ActionTypes.SET_CONTACT:\n return {\n ...state,\n contact: action.payload as Contact\n };\n\n case ActionTypes.SET_CONTACTS:\n return {\n ...state,\n contacts: action.payload as Contact[]\n };\n\n case ActionTypes.COPY_CONTACT:\n return {\n ...state,\n contact:\n state.owner.firstname || state.owner.lastname || state.owner.phone || state.owner.gsm\n ? ({\n firstname: state.owner.firstname,\n lastname: state.owner.lastname,\n phone: state.owner.phone,\n gsm: state.owner.gsm\n } as Contact)\n : ({\n firstname: state.user.firstname,\n lastname: state.user.lastname,\n phone: state.user.phone,\n gsm: state.user.gsm\n } as Contact)\n };\n\n case ActionTypes.SET_GOGETKEYS:\n return {\n ...state,\n goGetKeys: action.payload as boolean\n };\n\n case ActionTypes.SET_GUID:\n return { ...state, user: { ...state.user, userid: action.payload as string } };\n\n case ActionTypes.SET_USERINFO:\n return {\n ...state,\n user: {\n ...state.user,\n ...(action.payload as User),\n hasImmoAccess: checkHasImmoAccess((action.payload as User).roles)\n }\n };\n\n case ActionTypes.RESET_USERINFO:\n return {\n ...state,\n user: { ...initialOrderState.user }\n };\n\n case ActionTypes.SET_NN:\n return {\n ...state,\n nn: action.payload as string\n };\n\n case ActionTypes.SET_PROMOCODEID:\n return {\n ...state,\n promoCodeID: action.payload as string\n };\n\n case ActionTypes.SET_PACKID:\n return {\n ...state,\n packID: action.payload as string\n };\n\n case ActionTypes.SET_PACKNAME:\n return {\n ...state,\n packName: action.payload as string\n };\n\n case ActionTypes.SET_NBOFISO:\n return {\n ...state,\n nbOfIso: action.payload as number\n };\n\n case ActionTypes.SET_REASON:\n return {\n ...state,\n reason: action.payload as number\n };\n\n case ActionTypes.SET_CLIENTTYPE:\n return {\n ...state,\n clientType: action.payload as number\n };\n\n case ActionTypes.SET_IMMOORCTRL:\n return {\n ...state,\n reason: -1,\n immoOrCtrl: action.payload as number\n };\n\n case ActionTypes.SET_VENTETYPE:\n return {\n ...state,\n venteType: action.payload as number\n };\n\n case ActionTypes.SET_VENTEINFO:\n return {\n ...state,\n venteInfo: action.payload as any\n };\n\n case ActionTypes.SET_PARUTIONS:\n return {\n ...state,\n parutions: action.payload as Print[]\n };\n\n case ActionTypes.SET_PANELS:\n return {\n ...state,\n panels: action.payload as Panel[]\n };\n\n case ActionTypes.SET_PANELSINFO:\n return {\n ...state,\n panelsInfo: action.payload as string\n };\n\n case ActionTypes.SET_PARUTION_LINKS:\n return {\n ...state,\n parutionFileLinks: action.payload as string[]\n };\n\n case ActionTypes.SET_PARUTION_COMMENT:\n return {\n ...state,\n parutionsComment: action.payload as string\n };\n\n case ActionTypes.SET_VISITS:\n return {\n ...state,\n visits: action.payload as Visit[]\n };\n\n case ActionTypes.SET_VISITCONTACT:\n return {\n ...state,\n visitContact: action.payload as VisitContact\n };\n\n case ActionTypes.SET_VISITADVALORIS:\n return {\n ...state,\n visitAdValoris: action.payload as VisitAdValoris\n };\n\n case ActionTypes.RESET_PACK:\n return {\n ...state,\n packID: '',\n immoPack: -1\n };\n\n case ActionTypes.SET_IMMOPACKIDS:\n return {\n ...state,\n immoPackIds: action.payload as number[]\n };\n\n case ActionTypes.SET_SPLIT_INVOICE:\n return {\n ...state,\n splitInvoice: action.payload as boolean\n };\n\n case ActionTypes.SET_ASKFOREXPERTISE:\n return {\n ...state,\n askForExpertise: action.payload as boolean\n };\n\n case ActionTypes.SET_ASKFOROFFER:\n return {\n ...state,\n askForOffer: action.payload as boolean\n };\n\n case ActionTypes.SET_AGENCY_PRODUCTS:\n return {\n ...state,\n productsForAgency: action.payload as Product[]\n };\n\n case ActionTypes.SET_TOKEN:\n return {\n ...state,\n token: action.payload as string\n };\n\n case ActionTypes.SET_ADDRESSKEY:\n return {\n ...state,\n addressKeyID: action.payload.id as string,\n addressKeyPrice: action.payload.price as number\n };\n case ActionTypes.COMPLETE_NOTAIRE_LANDING_DIALOG:\n return { ...state, hasCompletedNotaireLandingDialog: action.payload };\n\n default:\n return { ...state };\n }\n}\n\n/* function setServ(payload: number[]) {\n let services = [...payload];\n const indexCiterneE = services.indexOf(PRODUCTS.CITERNE_ENTERREE);\n const indexCiterneA = services.indexOf(PRODUCTS.CITERNE_AERIENNE);\n\n if (indexCiterneE)\n} */\n\nfunction checkHasImmoAccess(roles: Role[]): boolean {\n const hasImmoAccess = roles ? roles.some(r => r.RoleID === UserRole.ImmoAccess) : false;\n return hasImmoAccess;\n}\n\nfunction checkPriceWithoutReduction(products: Product[]) {\n let price = 0;\n\n products.forEach(product => {\n price += Number(product.price);\n });\n\n return Math.round(price * 100) / 100;\n}\n\nfunction checkReduction(reductions: Reduction[]) {\n let reduction = 0;\n if (reductions.length > 0) {\n reductions.forEach(reduc => {\n reduction += Number(reduc.price);\n });\n }\n return reduction;\n}\n\nfunction checkMaxCommission(reduc: number, comm: number) {\n let maxCom = 0;\n maxCom = comm > reduc ? reduc : comm;\n return maxCom;\n}\n\nfunction getEstateStyle(estateId): number {\n switch (estateId) {\n case estates.MAISON_1:\n case estates.MAISON_2:\n case estates.MAISON_3:\n case estates.MAISON_4:\n case estates.MAISON_5:\n case estates.VILLA:\n return estates.HOUSE;\n\n case estates.STUDIO:\n case estates.APPART_5075:\n case estates.APPART:\n case estates.DUPLEX:\n case estates.TRIPLEX:\n return estates.FLAT;\n\n case estates.IMMEUBLE_APPART:\n return estates.BUILDING;\n\n case estates.TERRAIN:\n case estates.STORE:\n case estates.INDUSTRY:\n case estates.GARAGE:\n case estates.OFFICE:\n return 4;\n\n default:\n return -1;\n }\n}\n\nfunction getEstateName(id: number): string {\n // const key = Object.keys(estates).find(k => estates[k] === id);\n if (id === -1) {\n return '';\n }\n\n return estates.estatesName.find(e => e.id === id).name;\n}\n","export class Region {\n id: number;\n name: string;\n fileName: string;\n}\n","export class VisitContact {\n constructor(\n public lastName: string = '',\n public firstName: string = '',\n public email: string = '',\n public tel: string = ''\n ) {}\n}\n","export function inRange(num: number, start: number, end: number): boolean {\n // Ensure start is always less than end for consistent comparison\n const [min, max] = start < end ? [start, end] : [end, start];\n\n return num >= min && num <= max;\n}\n","import { createSelector } from '@ngrx/store';\n\nimport { IOrder } from './order.reducer';\nimport { AppState } from '../../../interfaces';\n\nimport { services, immoServices, panneauxServices, publicationServices } from '../../data/services';\nimport { User, UserType } from '../../models/user';\nimport { IUI } from '../ui';\nimport { projectID } from '../../data/theme-config';\nimport { ServiceType } from '../../models/serviceType';\nimport * as PRODUCTS from '../../../core/data/products';\nimport { inRange } from '../../utils/number';\n\nexport const getOrder = (state: AppState): IOrder => state.order;\nexport const getUser = (state: AppState): User => state.order.user;\nexport const getState = (state: AppState): AppState => state;\n\n// *** PUBLIC API's ***\nexport const getRegion = createSelector(\n getOrder,\n (order: IOrder) => order.regionType\n);\nexport const getRegionInfo = createSelector(\n getOrder,\n (order: IOrder) => order.region\n);\nexport const getEstateID = createSelector(\n getOrder,\n (order: IOrder) => order.estateType\n);\nexport const getEstateStyle = createSelector(\n getOrder,\n (order: IOrder) => order.estateStyle\n);\nexport const getEstateName = createSelector(\n getOrder,\n (order: IOrder) => order.estateName\n);\nexport const getNbOfAppartments = createSelector(\n getOrder,\n (order: IOrder) => order.nbOfAppartments\n);\nexport const getFilteredServices = createSelector(\n getState,\n (state: AppState) => filterServices(state.order, state.order.user, state.ui)\n);\nexport const getFilteredImmoServices = createSelector(\n getState,\n (state: AppState) => filterImmoServices(state.order, state.order.user, state.ui)\n);\nexport const getServices = createSelector(\n getOrder,\n (order: IOrder) => order.services\n);\nexport const getProducts = createSelector(\n getOrder,\n (order: IOrder) => order.products\n);\nexport const getImmoPack = createSelector(\n getOrder,\n (order: IOrder) => order.immoPack\n);\nexport const getImmoPackIds = createSelector(\n getOrder,\n (order: IOrder) => order.immoPackIds\n);\nexport const getReductions = createSelector(\n getOrder,\n (order: IOrder) => order.reductions\n);\nexport const getOnlinePayment = createSelector(\n getOrder,\n (order: IOrder) => order.onlinePayment\n);\nexport const getPromoCode = createSelector(\n getOrder,\n (order: IOrder) => order.promoCode\n);\nexport const getPromoCodeID = createSelector(\n getOrder,\n (order: IOrder) => order.promoCodeID\n);\nexport const getPriceWithoutReduction = createSelector(\n getOrder,\n (order: IOrder) => order.price\n);\nexport const getReduction = createSelector(\n getOrder,\n (order: IOrder) => order.reduction\n);\nexport const getReductionWithoutComm = createSelector(\n getOrder,\n (order: IOrder) => order.reductionWithoutComm\n);\nexport const getUrgence = createSelector(\n getOrder,\n (order: IOrder) => order.urgence\n);\nexport const getUrgencePro = createSelector(\n getOrder,\n (order: IOrder) => order.urgencePro\n);\nexport const hasDescUrba = createSelector(\n getOrder,\n (order: IOrder) => !!order.products.find(p => p.id === PRODUCTS.DESCRIPTIF_URBA)\n);\nexport const hasPeb = createSelector(\n getOrder,\n (order: IOrder) => order.hasPeb\n);\nexport const hasAudit = createSelector(\n getOrder,\n (order: IOrder) => order.hasAudit\n);\nexport const hasPebPartiel = createSelector(\n getOrder,\n (order: IOrder) => order.hasPebPartiel\n);\nexport const hasElec = createSelector(\n getOrder,\n (order: IOrder) => order.hasElec\n);\nexport const hasCiterne = createSelector(\n getOrder,\n (order: IOrder) => order.hasCiterne\n);\nexport const hasPlan = createSelector(\n getOrder,\n (order: IOrder) => order.hasPlan\n);\nexport const hasGaz = createSelector(\n getOrder,\n (order: IOrder) => order.hasGaz\n);\nexport const nbOfElec = createSelector(\n getOrder,\n (order: IOrder) => order.nbOfElec\n);\nexport const nbOfGaz = createSelector(\n getOrder,\n (order: IOrder) => order.nbOfGaz\n);\nexport const gazChoice = createSelector(\n getOrder,\n (order: IOrder) => order.gazChoice\n);\nexport const getUserForm = createSelector(\n getOrder,\n (order: IOrder) => order.newUser\n);\nexport const getOwner = createSelector(\n getOrder,\n (order: IOrder) => order.owner\n);\nexport const getContact = createSelector(\n getOrder,\n (order: IOrder) => order.contact\n);\nexport const getAddress = createSelector(\n getOrder,\n (order: IOrder) => order.address\n);\nexport const getAddressZipcode = createSelector(\n getOrder,\n (order: IOrder) => order.address.zip\n);\nexport const getPaymentType = createSelector(\n getOrder,\n (order: IOrder) => order.paymentType\n);\nexport const getActeType = createSelector(\n getOrder,\n (order: IOrder) => order.acteType\n);\nexport const getSendByMail = createSelector(\n getOrder,\n (order: IOrder) => order.sendByMail\n);\nexport const getRemarks = createSelector(\n getOrder,\n (order: IOrder) => order.remarks\n);\nexport const getInvoiceTo = createSelector(\n getOrder,\n (order: IOrder) => order.invoiceTo\n);\nexport const getDocument = createSelector(\n getOrder,\n (order: IOrder) => order.document\n);\n/* export const getNewUserType = createSelector(\n getOrder,\n (order: IOrder) => order.newUserType\n); */\nexport const getGoGeyKeys = createSelector(\n getOrder,\n (order: IOrder) => order.goGetKeys\n);\nexport const getAddressKeyPrice = createSelector(\n getOrder,\n (order: IOrder) => order.addressKeyPrice\n);\nexport const getCommission = createSelector(\n getOrder,\n (order: IOrder) => order.commission\n);\nexport const getContactChoice = createSelector(\n getOrder,\n (order: IOrder) => order.contactChoice\n);\nexport const getDateButoir = createSelector(\n getOrder,\n (order: IOrder) => order.dateButoir\n);\nexport const getCustomPrices = createSelector(\n getUser,\n (user: User) => user.customPrices\n);\nexport const getPricingPlan = createSelector(\n getUser,\n (user: User) => user.pricingPlan\n);\nexport const getFilteredPanneauxServices = createSelector(\n getState,\n (state: AppState) => filterPanneauxServices(state.order, state.ui)\n);\nexport const getFilteredPublicationsServices = createSelector(\n getState,\n (state: AppState) => filterPublicationsServices(state.order)\n);\n\n// *** PUBLIC USER API's ***\nexport const getUserInfo = createSelector(\n getUser,\n (user: User) => {\n const u = new User();\n u.title = user.title;\n u.firstname = user.firstname;\n u.lastname = user.lastname;\n u.phone = user.phone;\n u.gsm = user.gsm;\n u.userType = user.userType;\n u.sendByMail = user.sendByMail;\n u.email = user.email;\n u.address = user.address;\n u.userid = user.userid;\n u.companyname = user.companyname;\n u.commercialname = user.commercialname;\n u.tva = user.tva;\n return u;\n }\n);\nexport const getUserNotifications = createSelector(\n getUser,\n (user: User) => user.notifications\n);\nexport const getUnpaidAmount = createSelector(\n getUser,\n (user: User) => user.unpaidAmount\n);\nexport const getUnpaidCount = createSelector(\n getUser,\n (user: User) => user.unpaidCount\n);\nexport const getPendingOrdersCount = createSelector(\n getUser,\n (user: User) => user.pendingOrders\n);\nexport const getUnpaidCallbackAmount = createSelector(\n getUser,\n (user: User) => user.unpaidCallbackAmount\n);\nexport const getUnpaidCallbackCount = createSelector(\n getUser,\n (user: User) => user.unpaidCallbackCount\n);\nexport const getYearlyOrdersCount = createSelector(\n getUser,\n (user: User) => user.yearlyOrdersCount\n);\nexport const getOngoingOrdersCount = createSelector(\n getUser,\n (user: User) => user.ongoingOrders\n);\nexport const getNewOrdersCount = createSelector(\n getUser,\n (user: User) => user.newOrdersCount\n);\nexport const getLatestOrdersCount = createSelector(\n getUser,\n (user: User) => user.latestOrdersCount\n);\nexport const getCanceledOrdersCount = createSelector(\n getUser,\n (user: User) => user.canceledOrdersCount\n);\nexport const getSuspensOrdersCount = createSelector(\n getUser,\n (user: User) => user.suspensOrdersCount\n);\nexport const getSingleOrderId = createSelector(\n getUser,\n (user: User) => user.orderId\n);\nexport const getOrdersCount = createSelector(\n getUser,\n (user: User) => user.ordersCount\n);\nexport const getUnsignedBdc = createSelector(\n getUser,\n (user: User) => user.unsignedBdc\n);\nexport const getPendingOrders = createSelector(\n getUser,\n (user: User) => user.pendingOrders\n);\nexport const getUserID = createSelector(\n getUser,\n (user: User) => user.userid\n);\nexport const getHasImmoAccess = createSelector(\n getUser,\n (user: User) => user.hasImmoAccess\n);\nexport const getIsLoggedIn = createSelector(\n getUser,\n (user: User) => user.userid !== ''\n);\nexport const getUserType = createSelector(\n getUser,\n (user: User) => user.userType\n);\nexport const getUserRoles = createSelector(\n getUser,\n (user: User) => user.roles\n);\nexport const getHasCommission = createSelector(\n getUser,\n (user: User) => user.hasCommission\n);\nexport const getUserEmail = createSelector(\n getUser,\n (user: User) => user.email\n);\nexport const getUserZip = createSelector(\n getUser,\n (user: User) => user.address.zip\n);\nexport const getUserName = createSelector(\n getUser,\n (user: User) => (user.commercialname ? user.commercialname : user.lastname + ' ' + user.firstname)\n);\nexport const getNN = createSelector(\n getOrder,\n (order: IOrder) => order.nn\n);\nexport const pebNb = createSelector(\n getOrder,\n (order: IOrder) => order.pebNb\n);\n\nexport const packID = createSelector(\n getOrder,\n (order: IOrder) => order.packID\n);\n\nexport const getNbOfIso = createSelector(\n getOrder,\n (order: IOrder) => order.nbOfIso\n);\n\nexport const getReason = createSelector(\n getOrder,\n (order: IOrder) => order.reason\n);\n\nexport const getClientType = createSelector(\n getOrder,\n (order: IOrder) => order.clientType\n);\n\nexport const getVenteType = createSelector(\n getOrder,\n (order: IOrder) => order.venteType\n);\n\nexport const getVenteStatut = createSelector(\n getOrder,\n (order: IOrder) => order.venteInfo.ventePub.venteStatut\n);\n\nexport const getVenteInfo = createSelector(\n getOrder,\n (order: IOrder) => order.venteInfo\n);\n\nexport const getParutions = createSelector(\n getOrder,\n (order: IOrder) => order.parutions\n);\n\nexport const getParutionsComment = createSelector(\n getOrder,\n (order: IOrder) => order.parutionsComment\n);\n\nexport const getVisits = createSelector(\n getOrder,\n (order: IOrder) => order.visits\n);\n\nexport const getParutionsLength = createSelector(\n getOrder,\n (order: IOrder) => order.parutions && order.parutions.length\n);\n\nexport const getVisitsLength = createSelector(\n getOrder,\n (order: IOrder) => order.visits && order.visits.length\n);\n\nexport const getVisitContact = createSelector(\n getOrder,\n (order: IOrder) => order.visitContact\n);\n\nexport const getVisitAdValoris = createSelector(\n getOrder,\n (order: IOrder) => order.visitAdValoris\n);\n\nexport const getPackID = createSelector(\n getOrder,\n (order: IOrder) => order.immoPack\n);\n\nexport const getPackName = createSelector(\n getOrder,\n (order: IOrder) => order.packName\n);\n\nexport const getImmoOrCtrl = createSelector(\n getOrder,\n (order: IOrder) => order.immoOrCtrl\n);\n\nexport const getSplitInvoice = createSelector(\n getOrder,\n (order: IOrder) => order.splitInvoice\n);\n\nexport const getProductsForAgency = createSelector(\n getOrder,\n (order: IOrder) => order.productsForAgency\n);\n\nexport const getAskForExpertise = createSelector(\n getOrder,\n (order: IOrder) => order.askForExpertise\n);\n\nexport const getAskForOffer = createSelector(\n getOrder,\n (order: IOrder) => order.askForOffer\n);\n\nexport const getToken = createSelector(\n getOrder,\n (order: IOrder) => order.token\n);\n\nexport const getConsumerAddresses = createSelector(\n getUser,\n (user: User) => user.consumerAddresses\n);\n\nexport const getAddressKey = createSelector(\n getOrder,\n (order: IOrder) => order.addressKeyID\n);\n\nexport const getPanels = createSelector(\n getOrder,\n (order: IOrder) => order.panels\n);\n\nexport const getPanelsInfo = createSelector(\n getOrder,\n (order: IOrder) => order.panelsInfo\n);\n\nexport const getIsThirdPartyNotaria = createSelector(\n getUser,\n (user: User) =>\n user.userid === '29c0bd36-3c99-4d5d-b8d2-a2e8e63b3ca8' ||\n user.userid === 'f1b27b67-0242-4343-91b7-01a076044b72' ||\n user.userid === '1733a3e5-fdd8-4f7a-a294-c13b92ce37aa' ||\n user.userid === '9c72e6a2-2fbc-4dc3-9c00-08b25c683b6c'\n);\n\nexport const getThirdParyNotariaName = createSelector(\n getUser,\n (user: User) =>\n user.userid === '29c0bd36-3c99-4d5d-b8d2-a2e8e63b3ca8'\n ? 'NVN'\n : user.userid === 'f1b27b67-0242-4343-91b7-01a076044b72'\n ? 'Maison du notariat du Hainaut'\n : user.userid === '1733a3e5-fdd8-4f7a-a294-c13b92ce37aa'\n ? 'Maison du notariat de Namur'\n : user.userid === '9c72e6a2-2fbc-4dc3-9c00-08b25c683b6c'\n ? 'Maison du notariat de Liege'\n : ''\n);\n\nexport const getHasCompletedNotaireLandingDialog = createSelector(\n getOrder,\n (order: IOrder) => order.hasCompletedNotaireLandingDialog\n);\n\nconst SERVICE_RESTRICTIONS_BY_ZIPCODE_MANIFEST: Record boolean }> = {\n [PRODUCTS.AUDIT]: {\n isUnavailable: zipcode => {\n return (\n inRange(zipcode, 5537, 5576) ||\n inRange(zipcode, 5600, 5680) ||\n inRange(zipcode, 6440, 6470) ||\n inRange(zipcode, 6590, 6596) ||\n inRange(zipcode, 6600, 6890) ||\n inRange(zipcode, 6920, 6997) ||\n inRange(zipcode, 7300, 7784) ||\n inRange(zipcode, 7880, 7973)\n );\n }\n }\n};\n\nfunction filterServices(order: IOrder, user: User, ui: IUI) {\n let serv: ServiceType[] = services;\n\n if (order.address.zip) {\n // Apply restrictions by zip code\n serv = services.filter(({ id: productId }) => {\n return Object.keys(SERVICE_RESTRICTIONS_BY_ZIPCODE_MANIFEST).every(productIdConcernedByRestriction => {\n const { isUnavailable } = SERVICE_RESTRICTIONS_BY_ZIPCODE_MANIFEST[productIdConcernedByRestriction];\n\n if (productId != +productIdConcernedByRestriction) return true; // Product is not concerned by this restriction\n return !isUnavailable(+order.address.zip);\n });\n });\n }\n\n if (user.userType === UserType.Installateur) {\n serv = serv.filter(\n s =>\n s.id === PRODUCTS.ELEC ||\n s.id === PRODUCTS.ELEC_SUPP ||\n s.id === PRODUCTS.ELEC_NONDOM_MAX125A ||\n s.id === PRODUCTS.ELEC_NONDOM_OVER125A ||\n s.id === PRODUCTS.GAZ_CONTROLE ||\n s.id === PRODUCTS.GAZ_SUPP ||\n s.id === PRODUCTS.GAZ_CONTROLE_PERIO ||\n s.id === PRODUCTS.ELEC_PHOTOVOLTA\n );\n } else {\n if (order.estateType === -1) {\n return [];\n }\n if (order.regionType > -1) {\n serv = serv.filter(service => service.regions.indexOf(order.regionType) > -1);\n }\n if (order.estateStyle !== -1 && order.estateStyle !== 4) {\n serv = serv.filter(service => service.biens.indexOf(order.estateStyle) > -1);\n }\n if (order.estateStyle === 4) {\n serv = serv.filter(service => service.biens.indexOf(order.estateType) > -1);\n }\n if (!ui.showMoreServices && order.reason > -1 && order.estateStyle !== 4) {\n serv = serv.filter(service => service.reasons && service.reasons.indexOf(order.reason) > -1);\n }\n /* if (order.venteType > -1) {\n serv = serv.filter(service => service.venteTypes && service.venteTypes.indexOf(order.venteType) > -1);\n } */\n }\n\n if (\n (projectID === 'namur' || projectID === 'hainaut' || projectID === 'liege' || projectID === 'nvn') &&\n order.immoPack !== -1\n ) {\n const selectedPackIds = order.immoPack !== -1 ? order.immoPackIds : [];\n serv = serv.filter(\n service => !selectedPackIds.some(id => id === service.id) || !order.products.some(pr => pr.id === service.id)\n );\n }\n if (!ui.showMoreServices && order.immoOrCtrl === 0) {\n serv = serv.filter(\n service =>\n (service.id > 0 && service.id < 10) ||\n service.id === PRODUCTS.ELEC_NONDOM_MAX125A ||\n service.id === PRODUCTS.ELEC_NONDOM_OVER125A\n );\n }\n\n return serv;\n}\n\nfunction filterImmoServices(order: IOrder, user: User, ui: IUI) {\n let serv: ServiceType[] = user.userType === UserType.Installateur ? [] : immoServices;\n if (order.regionType > -1) {\n serv = serv.filter(service => service.regions.indexOf(order.regionType) > -1);\n }\n if (order.estateStyle !== -1 && order.estateStyle !== 4) {\n serv = serv.filter(service => service.biens.indexOf(order.estateStyle) > -1);\n }\n if (order.estateStyle === 4) {\n serv = serv.filter(service => service.biens.indexOf(order.estateType) > -1);\n }\n if (!order.user.hasImmoAccess && order.user.userType) {\n serv = serv.filter(\n s => !s.userTypes || s.userTypes.length === 0 || s.userTypes.some(ut => ut === order.user.userType)\n );\n }\n if (!ui.showMoreServices && order.reason > -1 && order.estateStyle !== 4) {\n serv = serv.filter(service => service.reasons && service.reasons.indexOf(order.reason) > -1);\n }\n if (order.venteType > -1) {\n serv = serv.filter(service => service.venteTypes && service.venteTypes.indexOf(order.venteType) > -1);\n }\n if (\n (projectID === 'namur' || projectID === 'hainaut' || projectID === 'liege' || projectID === 'nvn') &&\n order.immoPack !== -1\n ) {\n const selectedPackIds = order.immoPack !== -1 ? order.immoPackIds : [];\n serv = serv.filter(\n service => !selectedPackIds.some(id => id === service.id) || !order.products.some(pr => pr.id === service.id)\n );\n }\n if (!ui.showMoreServices) {\n // serv = [];\n }\n\n return serv;\n}\n\nfunction filterPanneauxServices(order: IOrder, ui: IUI) {\n let serv = panneauxServices;\n if (order.regionType > -1) {\n serv = serv.filter(service => service.regions.indexOf(order.regionType) > -1);\n }\n if (order.estateStyle !== -1 && order.estateStyle < 4) {\n serv = serv.filter(service => service.biens.indexOf(order.estateStyle) > -1);\n } else if (order.estateStyle !== -1) {\n serv = serv.filter(service => service.biens.indexOf(order.estateType) > -1);\n }\n if (\n !(projectID === 'namur' || projectID === 'hainaut' || projectID === 'nvn' || projectID === 'liege') &&\n !ui.showMoreServices\n ) {\n serv = [];\n }\n\n return serv;\n}\n\nfunction filterPublicationsServices(order: IOrder) {\n let serv = publicationServices;\n if (order.regionType > -1) {\n serv = serv.filter(service => service.regions.indexOf(order.regionType) > -1);\n }\n if (order.estateStyle !== -1) {\n serv = serv.filter(service => service.biens.indexOf(order.estateStyle) > -1);\n }\n\n return serv;\n}\n","import { Action } from '@ngrx/store';\n\nexport class ActionTypes {\n static SET_SHOWPACKS = '[UI] SET_SHOWPACKS';\n static SET_ISMOBILE = '[UI] SET_ISMOBILE';\n static SET_ISTABLETTE = '[UI] SET_ISTABLETTE';\n static SET_LANGUAGE = '[UI] SET_LANGUAGE';\n static SET_STEP1VALID = '[UI] SET_STEP1VALID';\n static SET_STEP2VALID = '[UI] SET_STEP2VALID';\n static SET_STEP3VALID = '[UI] SET_STEP3VALID';\n static SET_STEP4VALID = '[UI] SET_STEP4VALID';\n static SET_IAGREE = '[UI] SET_IAGREE';\n static SET_PACKSWITHPRICES = '[UI] SET_PACKSWITHPRICES';\n static SET_PACKSWITHPRICES_NOFILT = '[UI] SET_PACKSWITHPRICES_NOFILT';\n static SET_ONLINE = '[UI] SET_ONLINE';\n static StartOnlineOfflineCheck = '[UI] StartOnlineOfflineCheck';\n static SET_RESETSTEPPER = '[UI] SET_RESETSTEPPER';\n static RESET_UI = '[UI] RESET_UI';\n static SHOWMORESERVICES = '[UI] SHOWMORESERVICES';\n static SET_LOGIN_ERROR = '[UI] SET_LOGIN_ERROR';\n}\n\nexport class SetShowPacks implements Action {\n public type = ActionTypes.SET_SHOWPACKS;\n constructor(public payload: boolean) {}\n}\nexport class SetIsMobile implements Action {\n public type = ActionTypes.SET_ISMOBILE;\n constructor(public payload: boolean) {}\n}\nexport class SetIsTablette implements Action {\n public type = ActionTypes.SET_ISTABLETTE;\n constructor(public payload: boolean) {}\n}\nexport class SetLanguage implements Action {\n public type = ActionTypes.SET_LANGUAGE;\n constructor(public payload: 'fr' | 'nl' | 'de' | 'en') {}\n}\nexport class SetStep1Valid implements Action {\n public type = ActionTypes.SET_STEP1VALID;\n constructor(public payload: boolean) {}\n}\nexport class SetStep2Valid implements Action {\n public type = ActionTypes.SET_STEP2VALID;\n constructor(public payload: boolean) {}\n}\nexport class SetStep3Valid implements Action {\n public type = ActionTypes.SET_STEP3VALID;\n constructor(public payload: boolean) {}\n}\nexport class SetStep4Valid implements Action {\n public type = ActionTypes.SET_STEP4VALID;\n constructor(public payload: boolean) {}\n}\nexport class SetIAgree implements Action {\n public type = ActionTypes.SET_IAGREE;\n constructor(public payload: boolean) {}\n}\nexport class SetPacksWithPrices implements Action {\n public type = ActionTypes.SET_PACKSWITHPRICES;\n constructor(public payload: any) {}\n}\nexport class SetPacksWithPricesNoFilt implements Action {\n public type = ActionTypes.SET_PACKSWITHPRICES_NOFILT;\n constructor(public payload: any) {}\n}\nexport class StartOnlineOfflineCheck implements Action {\n readonly type = ActionTypes.StartOnlineOfflineCheck;\n constructor(public payload?: any) {}\n}\nexport class SetOnline implements Action {\n public type = ActionTypes.SET_ONLINE;\n constructor(public payload: boolean) {}\n}\nexport class SetResetStepper implements Action {\n public type = ActionTypes.SET_RESETSTEPPER;\n constructor(public payload: boolean) {}\n}\nexport class ResetUI implements Action {\n public type = ActionTypes.RESET_UI;\n constructor(public payload: boolean) {}\n}\nexport class ShowMoreServices implements Action {\n public type = ActionTypes.SHOWMORESERVICES;\n constructor(public payload: boolean) {}\n}\nexport class SetLoginError implements Action {\n public type = ActionTypes.SET_LOGIN_ERROR;\n constructor(public payload: boolean) {}\n}\n\nexport type Actions =\n | SetShowPacks\n | SetIsMobile\n | SetIsTablette\n | SetLanguage\n | SetStep1Valid\n | SetStep2Valid\n | SetStep3Valid\n | SetStep4Valid\n | SetIAgree\n | SetPacksWithPrices\n | SetPacksWithPricesNoFilt\n | StartOnlineOfflineCheck\n | SetOnline\n | SetResetStepper\n | ResetUI\n | ShowMoreServices\n | SetLoginError;\n","import { ActionTypes, Actions } from './ui.actions';\n\nexport interface IUI {\n showpacks: boolean;\n isMobile: boolean;\n isTablette: boolean;\n language: 'fr' | 'nl' | 'de' | 'en';\n step1IsValid: boolean;\n step2IsValid: boolean;\n step3IsValid: boolean;\n step4IsValid: boolean;\n iAgree: boolean;\n packsWithPrices: any;\n packsWithPricesNoFilt: any;\n isOnline: boolean;\n resetStepper: boolean;\n showMoreServices: boolean;\n loginError: boolean;\n}\n\nconst initialUIState: IUI = {\n showpacks: false,\n isMobile: false,\n isTablette: false,\n language: 'fr',\n step1IsValid: false,\n step2IsValid: false,\n step3IsValid: false,\n step4IsValid: false,\n iAgree: false,\n packsWithPrices: {},\n packsWithPricesNoFilt: {},\n isOnline: navigator.onLine,\n resetStepper: false,\n showMoreServices: false,\n loginError: false\n};\n\nexport function reducer(state: IUI = initialUIState, action: Actions): IUI {\n switch (action.type) {\n case ActionTypes.SET_SHOWPACKS:\n return { ...state, showpacks: action.payload as boolean };\n\n case ActionTypes.SET_ISMOBILE:\n return { ...state, isMobile: action.payload as boolean };\n\n case ActionTypes.SET_ISTABLETTE:\n return { ...state, isTablette: action.payload as boolean };\n\n case ActionTypes.SET_LANGUAGE:\n return { ...state, language: action.payload as 'fr' | 'nl' | 'de' | 'en' };\n\n case ActionTypes.SET_STEP1VALID:\n return { ...state, step1IsValid: action.payload as boolean };\n\n case ActionTypes.SET_STEP2VALID:\n return { ...state, step2IsValid: action.payload as boolean };\n\n case ActionTypes.SET_STEP3VALID:\n return { ...state, step3IsValid: action.payload as boolean };\n\n case ActionTypes.SET_STEP4VALID:\n return { ...state, step4IsValid: action.payload as boolean };\n\n case ActionTypes.SET_IAGREE:\n return { ...state, iAgree: !state.iAgree as boolean };\n\n case ActionTypes.SET_PACKSWITHPRICES:\n return { ...state, packsWithPrices: action.payload };\n\n case ActionTypes.SET_PACKSWITHPRICES_NOFILT:\n return { ...state, packsWithPricesNoFilt: action.payload };\n\n case ActionTypes.SET_ONLINE:\n return handleIsOnline(state, action);\n\n case ActionTypes.SET_RESETSTEPPER:\n return { ...state, resetStepper: action.payload as boolean };\n\n case ActionTypes.RESET_UI:\n return { ...state, showpacks: false, iAgree: false, packsWithPrices: {} };\n\n case ActionTypes.SHOWMORESERVICES:\n return { ...state, showMoreServices: action.payload };\n\n case ActionTypes.SET_LOGIN_ERROR:\n return { ...state, loginError: action.payload };\n\n default:\n return { ...state };\n }\n}\n\nfunction handleIsOnline(state: IUI, action: Actions): IUI {\n return {\n ...state,\n isOnline: action.payload\n };\n}\n","import { createSelector } from '@ngrx/store';\n\nimport { AppState } from '../../../interfaces';\nimport { IUI } from './ui.reducer';\n\nexport const getUI = (state: AppState): IUI => state.ui;\n\n// *** PUBLIC API's ***\nexport const getShowPacks = createSelector(\n getUI,\n (ui: IUI) => ui.showpacks\n);\nexport const getIsMobile = createSelector(\n getUI,\n (ui: IUI) => ui.isMobile\n);\nexport const getIsTablette = createSelector(\n getUI,\n (ui: IUI) => ui.isTablette\n);\nexport const getLanguage = createSelector(\n getUI,\n (ui: IUI) => ui.language\n);\nexport const getStep1IsValid = createSelector(\n getUI,\n (ui: IUI) => ui.step1IsValid\n);\nexport const getStep2IsValid = createSelector(\n getUI,\n (ui: IUI) => ui.step2IsValid\n);\nexport const getStep3IsValid = createSelector(\n getUI,\n (ui: IUI) => ui.step3IsValid\n);\nexport const getStep4IsValid = createSelector(\n getUI,\n (ui: IUI) => ui.step4IsValid\n);\nexport const getIAgree = createSelector(\n getUI,\n (ui: IUI) => ui.iAgree\n);\nexport const getPacksWithPrices = createSelector(\n getUI,\n (ui: IUI) => ui.packsWithPrices\n);\nexport const getPacksWithPricesNoFilt = createSelector(\n getUI,\n (ui: IUI) => ui.packsWithPricesNoFilt\n);\nexport const getOnline = createSelector(\n getUI,\n (ui: IUI) => ui.isOnline\n);\nexport const getResetStepper = createSelector(\n getUI,\n (ui: IUI) => ui.resetStepper\n);\nexport const getShowMoreServices = createSelector(\n getUI,\n (ui: IUI) => ui.showMoreServices\n);\nexport const getLoginError = createSelector(\n getUI,\n (ui: IUI) => ui.loginError\n);\n","/**\n * Joins multiple paths together, removing leading and trailing slashes\n * while keeping the first part (protocol) intact.\n */\nexport function joinPaths(...paths: string[]): string {\n return paths\n .map((part, index) => {\n // Keep the first part (protocol) intact\n if (index === 0) return part.replace(/\\/+$/, '');\n\n // For subsequent parts, remove leading and trailing slashes\n return part.replace(/^\\/+|\\/+$/g, '');\n })\n .join('/');\n}\n","import * as i0 from '@angular/core';\nimport { Directive, Optional, Inject, Input, NgModule } from '@angular/core';\nimport { mixinDisabled, MatCommonModule } from '@angular/material/core';\nimport * as i1 from '@angular/cdk/a11y';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\n\nlet nextId = 0;\n// Boilerplate for applying mixins to MatBadge.\n/** @docs-private */\nconst _MatBadgeBase = mixinDisabled(class {\n});\nconst BADGE_CONTENT_CLASS = 'mat-badge-content';\n/** Directive to display a text badge. */\nclass MatBadge extends _MatBadgeBase {\n constructor(_ngZone, _elementRef, _ariaDescriber, _renderer, _animationMode) {\n super();\n this._ngZone = _ngZone;\n this._elementRef = _elementRef;\n this._ariaDescriber = _ariaDescriber;\n this._renderer = _renderer;\n this._animationMode = _animationMode;\n this._color = 'primary';\n this._overlap = true;\n /**\n * Position the badge should reside.\n * Accepts any combination of 'above'|'below' and 'before'|'after'\n */\n this.position = 'above after';\n /** Size of the badge. Can be 'small', 'medium', or 'large'. */\n this.size = 'medium';\n /** Unique id for the badge */\n this._id = nextId++;\n /** Whether the OnInit lifecycle hook has run yet */\n this._isInitialized = false;\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const nativeElement = _elementRef.nativeElement;\n if (nativeElement.nodeType !== nativeElement.ELEMENT_NODE) {\n throw Error('matBadge must be attached to an element node.');\n }\n }\n }\n /** The color of the badge. Can be `primary`, `accent`, or `warn`. */\n get color() {\n return this._color;\n }\n set color(value) {\n this._setColor(value);\n this._color = value;\n }\n /** Whether the badge should overlap its contents or not */\n get overlap() {\n return this._overlap;\n }\n set overlap(val) {\n this._overlap = coerceBooleanProperty(val);\n }\n /** The content for the badge */\n get content() {\n return this._content;\n }\n set content(newContent) {\n this._updateRenderedContent(newContent);\n }\n /** Message used to describe the decorated element via aria-describedby */\n get description() {\n return this._description;\n }\n set description(newDescription) {\n this._updateHostAriaDescription(newDescription);\n }\n /** Whether the badge is hidden. */\n get hidden() {\n return this._hidden;\n }\n set hidden(val) {\n this._hidden = coerceBooleanProperty(val);\n }\n /** Whether the badge is above the host or not */\n isAbove() {\n return this.position.indexOf('below') === -1;\n }\n /** Whether the badge is after the host or not */\n isAfter() {\n return this.position.indexOf('before') === -1;\n }\n /**\n * Gets the element into which the badge's content is being rendered. Undefined if the element\n * hasn't been created (e.g. if the badge doesn't have content).\n */\n getBadgeElement() {\n return this._badgeElement;\n }\n ngOnInit() {\n // We may have server-side rendered badge that we need to clear.\n // We need to do this in ngOnInit because the full content of the component\n // on which the badge is attached won't necessarily be in the DOM until this point.\n this._clearExistingBadges();\n if (this.content && !this._badgeElement) {\n this._badgeElement = this._createBadgeElement();\n this._updateRenderedContent(this.content);\n }\n this._isInitialized = true;\n }\n ngOnDestroy() {\n // ViewEngine only: when creating a badge through the Renderer, Angular remembers its index.\n // We have to destroy it ourselves, otherwise it'll be retained in memory.\n if (this._renderer.destroyNode) {\n this._renderer.destroyNode(this._badgeElement);\n }\n this._ariaDescriber.removeDescription(this._elementRef.nativeElement, this.description);\n }\n /** Creates the badge element */\n _createBadgeElement() {\n const badgeElement = this._renderer.createElement('span');\n const activeClass = 'mat-badge-active';\n badgeElement.setAttribute('id', `mat-badge-content-${this._id}`);\n // The badge is aria-hidden because we don't want it to appear in the page's navigation\n // flow. Instead, we use the badge to describe the decorated element with aria-describedby.\n badgeElement.setAttribute('aria-hidden', 'true');\n badgeElement.classList.add(BADGE_CONTENT_CLASS);\n if (this._animationMode === 'NoopAnimations') {\n badgeElement.classList.add('_mat-animation-noopable');\n }\n this._elementRef.nativeElement.appendChild(badgeElement);\n // animate in after insertion\n if (typeof requestAnimationFrame === 'function' && this._animationMode !== 'NoopAnimations') {\n this._ngZone.runOutsideAngular(() => {\n requestAnimationFrame(() => {\n badgeElement.classList.add(activeClass);\n });\n });\n }\n else {\n badgeElement.classList.add(activeClass);\n }\n return badgeElement;\n }\n /** Update the text content of the badge element in the DOM, creating the element if necessary. */\n _updateRenderedContent(newContent) {\n const newContentNormalized = `${newContent !== null && newContent !== void 0 ? newContent : ''}`.trim();\n // Don't create the badge element if the directive isn't initialized because we want to\n // append the badge element to the *end* of the host element's content for backwards\n // compatibility.\n if (this._isInitialized && newContentNormalized && !this._badgeElement) {\n this._badgeElement = this._createBadgeElement();\n }\n if (this._badgeElement) {\n this._badgeElement.textContent = newContentNormalized;\n }\n this._content = newContentNormalized;\n }\n /** Updates the host element's aria description via AriaDescriber. */\n _updateHostAriaDescription(newDescription) {\n this._ariaDescriber.removeDescription(this._elementRef.nativeElement, this.description);\n if (newDescription) {\n this._ariaDescriber.describe(this._elementRef.nativeElement, newDescription);\n }\n this._description = newDescription;\n }\n /** Adds css theme class given the color to the component host */\n _setColor(colorPalette) {\n const classList = this._elementRef.nativeElement.classList;\n classList.remove(`mat-badge-${this._color}`);\n if (colorPalette) {\n classList.add(`mat-badge-${colorPalette}`);\n }\n }\n /** Clears any existing badges that might be left over from server-side rendering. */\n _clearExistingBadges() {\n // Only check direct children of this host element in order to avoid deleting\n // any badges that might exist in descendant elements.\n const badges = this._elementRef.nativeElement.querySelectorAll(`:scope > .${BADGE_CONTENT_CLASS}`);\n for (const badgeElement of Array.from(badges)) {\n if (badgeElement !== this._badgeElement) {\n badgeElement.remove();\n }\n }\n }\n}\nMatBadge.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatBadge, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }, { token: i1.AriaDescriber }, { token: i0.Renderer2 }, { token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nMatBadge.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatBadge, selector: \"[matBadge]\", inputs: { disabled: [\"matBadgeDisabled\", \"disabled\"], color: [\"matBadgeColor\", \"color\"], overlap: [\"matBadgeOverlap\", \"overlap\"], position: [\"matBadgePosition\", \"position\"], content: [\"matBadge\", \"content\"], description: [\"matBadgeDescription\", \"description\"], size: [\"matBadgeSize\", \"size\"], hidden: [\"matBadgeHidden\", \"hidden\"] }, host: { properties: { \"class.mat-badge-overlap\": \"overlap\", \"class.mat-badge-above\": \"isAbove()\", \"class.mat-badge-below\": \"!isAbove()\", \"class.mat-badge-before\": \"!isAfter()\", \"class.mat-badge-after\": \"isAfter()\", \"class.mat-badge-small\": \"size === \\\"small\\\"\", \"class.mat-badge-medium\": \"size === \\\"medium\\\"\", \"class.mat-badge-large\": \"size === \\\"large\\\"\", \"class.mat-badge-hidden\": \"hidden || !content\", \"class.mat-badge-disabled\": \"disabled\" }, classAttribute: \"mat-badge\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatBadge, decorators: [{\n type: Directive,\n args: [{\n selector: '[matBadge]',\n inputs: ['disabled: matBadgeDisabled'],\n host: {\n 'class': 'mat-badge',\n '[class.mat-badge-overlap]': 'overlap',\n '[class.mat-badge-above]': 'isAbove()',\n '[class.mat-badge-below]': '!isAbove()',\n '[class.mat-badge-before]': '!isAfter()',\n '[class.mat-badge-after]': 'isAfter()',\n '[class.mat-badge-small]': 'size === \"small\"',\n '[class.mat-badge-medium]': 'size === \"medium\"',\n '[class.mat-badge-large]': 'size === \"large\"',\n '[class.mat-badge-hidden]': 'hidden || !content',\n '[class.mat-badge-disabled]': 'disabled',\n },\n }]\n }], ctorParameters: function () {\n return [{ type: i0.NgZone }, { type: i0.ElementRef }, { type: i1.AriaDescriber }, { type: i0.Renderer2 }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }];\n }, propDecorators: { color: [{\n type: Input,\n args: ['matBadgeColor']\n }], overlap: [{\n type: Input,\n args: ['matBadgeOverlap']\n }], position: [{\n type: Input,\n args: ['matBadgePosition']\n }], content: [{\n type: Input,\n args: ['matBadge']\n }], description: [{\n type: Input,\n args: ['matBadgeDescription']\n }], size: [{\n type: Input,\n args: ['matBadgeSize']\n }], hidden: [{\n type: Input,\n args: ['matBadgeHidden']\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 MatBadgeModule {\n}\nMatBadgeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatBadgeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatBadgeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatBadgeModule, declarations: [MatBadge], imports: [A11yModule, MatCommonModule], exports: [MatBadge, MatCommonModule] });\nMatBadgeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatBadgeModule, imports: [[A11yModule, MatCommonModule], MatCommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatBadgeModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [A11yModule, MatCommonModule],\n exports: [MatBadge, MatCommonModule],\n declarations: [MatBadge],\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/**\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 { MatBadge, MatBadgeModule };\n","import * as i0 from '@angular/core';\nimport { Directive, Input, Component, ViewEncapsulation, ChangeDetectionStrategy, Optional, Inject, NgModule } from '@angular/core';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\nimport { MatCommonModule } from '@angular/material/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 */\n/**\n * Content of a card, needed as it's used as a selector in the API.\n * @docs-private\n */\nclass MatCardContent {\n}\nMatCardContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatCardContent, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatCardContent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatCardContent, selector: \"mat-card-content, [mat-card-content], [matCardContent]\", host: { classAttribute: \"mat-card-content\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatCardContent, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-card-content, [mat-card-content], [matCardContent]',\n host: { 'class': 'mat-card-content' },\n }]\n }] });\n/**\n * Title of a card, needed as it's used as a selector in the API.\n * @docs-private\n */\nclass MatCardTitle {\n}\nMatCardTitle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatCardTitle, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatCardTitle.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatCardTitle, selector: \"mat-card-title, [mat-card-title], [matCardTitle]\", host: { classAttribute: \"mat-card-title\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatCardTitle, decorators: [{\n type: Directive,\n args: [{\n selector: `mat-card-title, [mat-card-title], [matCardTitle]`,\n host: {\n 'class': 'mat-card-title',\n },\n }]\n }] });\n/**\n * Sub-title of a card, needed as it's used as a selector in the API.\n * @docs-private\n */\nclass MatCardSubtitle {\n}\nMatCardSubtitle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatCardSubtitle, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatCardSubtitle.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatCardSubtitle, selector: \"mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]\", host: { classAttribute: \"mat-card-subtitle\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatCardSubtitle, decorators: [{\n type: Directive,\n args: [{\n selector: `mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]`,\n host: {\n 'class': 'mat-card-subtitle',\n },\n }]\n }] });\n/**\n * Action section of a card, needed as it's used as a selector in the API.\n * @docs-private\n */\nclass MatCardActions {\n constructor() {\n /** Position of the actions inside the card. */\n this.align = 'start';\n }\n}\nMatCardActions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatCardActions, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatCardActions.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatCardActions, selector: \"mat-card-actions\", inputs: { align: \"align\" }, host: { properties: { \"class.mat-card-actions-align-end\": \"align === \\\"end\\\"\" }, classAttribute: \"mat-card-actions\" }, exportAs: [\"matCardActions\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatCardActions, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-card-actions',\n exportAs: 'matCardActions',\n host: {\n 'class': 'mat-card-actions',\n '[class.mat-card-actions-align-end]': 'align === \"end\"',\n },\n }]\n }], propDecorators: { align: [{\n type: Input\n }] } });\n/**\n * Footer of a card, needed as it's used as a selector in the API.\n * @docs-private\n */\nclass MatCardFooter {\n}\nMatCardFooter.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatCardFooter, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatCardFooter.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatCardFooter, selector: \"mat-card-footer\", host: { classAttribute: \"mat-card-footer\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatCardFooter, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-card-footer',\n host: { 'class': 'mat-card-footer' },\n }]\n }] });\n/**\n * Image used in a card, needed to add the mat- CSS styling.\n * @docs-private\n */\nclass MatCardImage {\n}\nMatCardImage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatCardImage, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatCardImage.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatCardImage, selector: \"[mat-card-image], [matCardImage]\", host: { classAttribute: \"mat-card-image\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatCardImage, decorators: [{\n type: Directive,\n args: [{\n selector: '[mat-card-image], [matCardImage]',\n host: { 'class': 'mat-card-image' },\n }]\n }] });\n/**\n * Image used in a card, needed to add the mat- CSS styling.\n * @docs-private\n */\nclass MatCardSmImage {\n}\nMatCardSmImage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatCardSmImage, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatCardSmImage.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatCardSmImage, selector: \"[mat-card-sm-image], [matCardImageSmall]\", host: { classAttribute: \"mat-card-sm-image\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatCardSmImage, decorators: [{\n type: Directive,\n args: [{\n selector: '[mat-card-sm-image], [matCardImageSmall]',\n host: { 'class': 'mat-card-sm-image' },\n }]\n }] });\n/**\n * Image used in a card, needed to add the mat- CSS styling.\n * @docs-private\n */\nclass MatCardMdImage {\n}\nMatCardMdImage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatCardMdImage, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatCardMdImage.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatCardMdImage, selector: \"[mat-card-md-image], [matCardImageMedium]\", host: { classAttribute: \"mat-card-md-image\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatCardMdImage, decorators: [{\n type: Directive,\n args: [{\n selector: '[mat-card-md-image], [matCardImageMedium]',\n host: { 'class': 'mat-card-md-image' },\n }]\n }] });\n/**\n * Image used in a card, needed to add the mat- CSS styling.\n * @docs-private\n */\nclass MatCardLgImage {\n}\nMatCardLgImage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatCardLgImage, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatCardLgImage.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatCardLgImage, selector: \"[mat-card-lg-image], [matCardImageLarge]\", host: { classAttribute: \"mat-card-lg-image\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatCardLgImage, decorators: [{\n type: Directive,\n args: [{\n selector: '[mat-card-lg-image], [matCardImageLarge]',\n host: { 'class': 'mat-card-lg-image' },\n }]\n }] });\n/**\n * Large image used in a card, needed to add the mat- CSS styling.\n * @docs-private\n */\nclass MatCardXlImage {\n}\nMatCardXlImage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatCardXlImage, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatCardXlImage.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatCardXlImage, selector: \"[mat-card-xl-image], [matCardImageXLarge]\", host: { classAttribute: \"mat-card-xl-image\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatCardXlImage, decorators: [{\n type: Directive,\n args: [{\n selector: '[mat-card-xl-image], [matCardImageXLarge]',\n host: { 'class': 'mat-card-xl-image' },\n }]\n }] });\n/**\n * Avatar image used in a card, needed to add the mat- CSS styling.\n * @docs-private\n */\nclass MatCardAvatar {\n}\nMatCardAvatar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatCardAvatar, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nMatCardAvatar.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatCardAvatar, selector: \"[mat-card-avatar], [matCardAvatar]\", host: { classAttribute: \"mat-card-avatar\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatCardAvatar, decorators: [{\n type: Directive,\n args: [{\n selector: '[mat-card-avatar], [matCardAvatar]',\n host: { 'class': 'mat-card-avatar' },\n }]\n }] });\n/**\n * A basic content container component that adds the styles of a Material design card.\n *\n * While this component can be used alone, it also provides a number\n * of preset styles for common card sections, including:\n * - mat-card-title\n * - mat-card-subtitle\n * - mat-card-content\n * - mat-card-actions\n * - mat-card-footer\n */\nclass MatCard {\n // @breaking-change 9.0.0 `_animationMode` parameter to be made required.\n constructor(_animationMode) {\n this._animationMode = _animationMode;\n }\n}\nMatCard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatCard, deps: [{ token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nMatCard.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatCard, selector: \"mat-card\", host: { properties: { \"class._mat-animation-noopable\": \"_animationMode === \\\"NoopAnimations\\\"\" }, classAttribute: \"mat-card mat-focus-indicator\" }, exportAs: [\"matCard\"], ngImport: i0, template: \"\\n\\n\", styles: [\".mat-card{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);display:block;position:relative;padding:16px;border-radius:4px}._mat-animation-noopable.mat-card{transition:none;animation:none}.mat-card .mat-divider-horizontal{position:absolute;left:0;width:100%}[dir=rtl] .mat-card .mat-divider-horizontal{left:auto;right:0}.mat-card .mat-divider-horizontal.mat-divider-inset{position:static;margin:0}[dir=rtl] .mat-card .mat-divider-horizontal.mat-divider-inset{margin-right:0}.cdk-high-contrast-active .mat-card{outline:solid 1px}.mat-card-actions,.mat-card-subtitle,.mat-card-content{display:block;margin-bottom:16px}.mat-card-title{display:block;margin-bottom:8px}.mat-card-actions{margin-left:-8px;margin-right:-8px;padding:8px 0}.mat-card-actions-align-end{display:flex;justify-content:flex-end}.mat-card-image{width:calc(100% + 32px);margin:0 -16px 16px -16px;display:block;overflow:hidden}.mat-card-image img{width:100%}.mat-card-footer{display:block;margin:0 -16px -16px -16px}.mat-card-actions .mat-button,.mat-card-actions .mat-raised-button,.mat-card-actions .mat-stroked-button{margin:0 8px}.mat-card-header{display:flex;flex-direction:row}.mat-card-header .mat-card-title{margin-bottom:12px}.mat-card-header-text{margin:0 16px}.mat-card-avatar{height:40px;width:40px;border-radius:50%;flex-shrink:0;object-fit:cover}.mat-card-title-group{display:flex;justify-content:space-between}.mat-card-sm-image{width:80px;height:80px}.mat-card-md-image{width:112px;height:112px}.mat-card-lg-image{width:152px;height:152px}.mat-card-xl-image{width:240px;height:240px;margin:-8px}.mat-card-title-group>.mat-card-xl-image{margin:-8px 0 8px}@media(max-width: 599px){.mat-card-title-group{margin:0}.mat-card-xl-image{margin-left:0;margin-right:0}}.mat-card>:first-child,.mat-card-content>:first-child{margin-top:0}.mat-card>:last-child:not(.mat-card-footer),.mat-card-content>:last-child:not(.mat-card-footer){margin-bottom:0}.mat-card-image:first-child{margin-top:-16px;border-top-left-radius:inherit;border-top-right-radius:inherit}.mat-card>.mat-card-actions:last-child{margin-bottom:-8px;padding-bottom:0}.mat-card-actions:not(.mat-card-actions-align-end) .mat-button:first-child,.mat-card-actions:not(.mat-card-actions-align-end) .mat-raised-button:first-child,.mat-card-actions:not(.mat-card-actions-align-end) .mat-stroked-button:first-child{margin-left:0;margin-right:0}.mat-card-actions-align-end .mat-button:last-child,.mat-card-actions-align-end .mat-raised-button:last-child,.mat-card-actions-align-end .mat-stroked-button:last-child{margin-left:0;margin-right:0}.mat-card-title:not(:first-child),.mat-card-subtitle:not(:first-child){margin-top:-4px}.mat-card-header .mat-card-subtitle:not(:first-child){margin-top:-8px}.mat-card>.mat-card-xl-image:first-child{margin-top:-8px}.mat-card>.mat-card-xl-image:last-child{margin-bottom:-8px}\\n\"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatCard, decorators: [{\n type: Component,\n args: [{ selector: 'mat-card', exportAs: 'matCard', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {\n 'class': 'mat-card mat-focus-indicator',\n '[class._mat-animation-noopable]': '_animationMode === \"NoopAnimations\"',\n }, template: \"\\n\\n\", styles: [\".mat-card{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);display:block;position:relative;padding:16px;border-radius:4px}._mat-animation-noopable.mat-card{transition:none;animation:none}.mat-card .mat-divider-horizontal{position:absolute;left:0;width:100%}[dir=rtl] .mat-card .mat-divider-horizontal{left:auto;right:0}.mat-card .mat-divider-horizontal.mat-divider-inset{position:static;margin:0}[dir=rtl] .mat-card .mat-divider-horizontal.mat-divider-inset{margin-right:0}.cdk-high-contrast-active .mat-card{outline:solid 1px}.mat-card-actions,.mat-card-subtitle,.mat-card-content{display:block;margin-bottom:16px}.mat-card-title{display:block;margin-bottom:8px}.mat-card-actions{margin-left:-8px;margin-right:-8px;padding:8px 0}.mat-card-actions-align-end{display:flex;justify-content:flex-end}.mat-card-image{width:calc(100% + 32px);margin:0 -16px 16px -16px;display:block;overflow:hidden}.mat-card-image img{width:100%}.mat-card-footer{display:block;margin:0 -16px -16px -16px}.mat-card-actions .mat-button,.mat-card-actions .mat-raised-button,.mat-card-actions .mat-stroked-button{margin:0 8px}.mat-card-header{display:flex;flex-direction:row}.mat-card-header .mat-card-title{margin-bottom:12px}.mat-card-header-text{margin:0 16px}.mat-card-avatar{height:40px;width:40px;border-radius:50%;flex-shrink:0;object-fit:cover}.mat-card-title-group{display:flex;justify-content:space-between}.mat-card-sm-image{width:80px;height:80px}.mat-card-md-image{width:112px;height:112px}.mat-card-lg-image{width:152px;height:152px}.mat-card-xl-image{width:240px;height:240px;margin:-8px}.mat-card-title-group>.mat-card-xl-image{margin:-8px 0 8px}@media(max-width: 599px){.mat-card-title-group{margin:0}.mat-card-xl-image{margin-left:0;margin-right:0}}.mat-card>:first-child,.mat-card-content>:first-child{margin-top:0}.mat-card>:last-child:not(.mat-card-footer),.mat-card-content>:last-child:not(.mat-card-footer){margin-bottom:0}.mat-card-image:first-child{margin-top:-16px;border-top-left-radius:inherit;border-top-right-radius:inherit}.mat-card>.mat-card-actions:last-child{margin-bottom:-8px;padding-bottom:0}.mat-card-actions:not(.mat-card-actions-align-end) .mat-button:first-child,.mat-card-actions:not(.mat-card-actions-align-end) .mat-raised-button:first-child,.mat-card-actions:not(.mat-card-actions-align-end) .mat-stroked-button:first-child{margin-left:0;margin-right:0}.mat-card-actions-align-end .mat-button:last-child,.mat-card-actions-align-end .mat-raised-button:last-child,.mat-card-actions-align-end .mat-stroked-button:last-child{margin-left:0;margin-right:0}.mat-card-title:not(:first-child),.mat-card-subtitle:not(:first-child){margin-top:-4px}.mat-card-header .mat-card-subtitle:not(:first-child){margin-top:-8px}.mat-card>.mat-card-xl-image:first-child{margin-top:-8px}.mat-card>.mat-card-xl-image:last-child{margin-bottom:-8px}\\n\"] }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }];\n } });\n/**\n * Component intended to be used within the `` component. It adds styles for a\n * preset header section (i.e. a title, subtitle, and avatar layout).\n * @docs-private\n */\nclass MatCardHeader {\n}\nMatCardHeader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatCardHeader, deps: [], target: i0.ɵɵFactoryTarget.Component });\nMatCardHeader.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatCardHeader, selector: \"mat-card-header\", host: { classAttribute: \"mat-card-header\" }, ngImport: i0, template: \"\\n
    \\n \\n
    \\n\\n\", changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatCardHeader, decorators: [{\n type: Component,\n args: [{ selector: 'mat-card-header', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: { 'class': 'mat-card-header' }, template: \"\\n
    \\n \\n
    \\n\\n\" }]\n }] });\n/**\n * Component intended to be used within the `` component. It adds styles for a preset\n * layout that groups an image with a title section.\n * @docs-private\n */\nclass MatCardTitleGroup {\n}\nMatCardTitleGroup.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatCardTitleGroup, deps: [], target: i0.ɵɵFactoryTarget.Component });\nMatCardTitleGroup.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatCardTitleGroup, selector: \"mat-card-title-group\", host: { classAttribute: \"mat-card-title-group\" }, ngImport: i0, template: \"
    \\n \\n
    \\n\\n\\n\", changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatCardTitleGroup, decorators: [{\n type: Component,\n args: [{ selector: 'mat-card-title-group', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: { 'class': 'mat-card-title-group' }, template: \"
    \\n \\n
    \\n\\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 */\nclass MatCardModule {\n}\nMatCardModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatCardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatCardModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatCardModule, declarations: [MatCard,\n MatCardHeader,\n MatCardTitleGroup,\n MatCardContent,\n MatCardTitle,\n MatCardSubtitle,\n MatCardActions,\n MatCardFooter,\n MatCardSmImage,\n MatCardMdImage,\n MatCardLgImage,\n MatCardImage,\n MatCardXlImage,\n MatCardAvatar], imports: [MatCommonModule], exports: [MatCard,\n MatCardHeader,\n MatCardTitleGroup,\n MatCardContent,\n MatCardTitle,\n MatCardSubtitle,\n MatCardActions,\n MatCardFooter,\n MatCardSmImage,\n MatCardMdImage,\n MatCardLgImage,\n MatCardImage,\n MatCardXlImage,\n MatCardAvatar,\n MatCommonModule] });\nMatCardModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatCardModule, imports: [[MatCommonModule], MatCommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatCardModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [MatCommonModule],\n exports: [\n MatCard,\n MatCardHeader,\n MatCardTitleGroup,\n MatCardContent,\n MatCardTitle,\n MatCardSubtitle,\n MatCardActions,\n MatCardFooter,\n MatCardSmImage,\n MatCardMdImage,\n MatCardLgImage,\n MatCardImage,\n MatCardXlImage,\n MatCardAvatar,\n MatCommonModule,\n ],\n declarations: [\n MatCard,\n MatCardHeader,\n MatCardTitleGroup,\n MatCardContent,\n MatCardTitle,\n MatCardSubtitle,\n MatCardActions,\n MatCardFooter,\n MatCardSmImage,\n MatCardMdImage,\n MatCardLgImage,\n MatCardImage,\n MatCardXlImage,\n MatCardAvatar,\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/**\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 { MatCard, MatCardActions, MatCardAvatar, MatCardContent, MatCardFooter, MatCardHeader, MatCardImage, MatCardLgImage, MatCardMdImage, MatCardModule, MatCardSmImage, MatCardSubtitle, MatCardTitle, MatCardTitleGroup, MatCardXlImage };\n","import * as i7 from '@angular/cdk/a11y';\nimport { FocusKeyManager, A11yModule } from '@angular/cdk/a11y';\nimport * as i5 from '@angular/cdk/observers';\nimport { ObserversModule } from '@angular/cdk/observers';\nimport * as i7$1 from '@angular/cdk/portal';\nimport { CdkPortal, TemplatePortal, CdkPortalOutlet, PortalModule } from '@angular/cdk/portal';\nimport * as i3$1 from '@angular/common';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, Directive, Inject, Optional, TemplateRef, Component, ChangeDetectionStrategy, ViewEncapsulation, ContentChild, ViewChild, Input, forwardRef, EventEmitter, Output, ContentChildren, QueryList, Attribute, NgModule } from '@angular/core';\nimport * as i4 from '@angular/material/core';\nimport { mixinDisabled, mixinColor, mixinDisableRipple, mixinTabIndex, MAT_RIPPLE_GLOBAL_OPTIONS, RippleRenderer, MatCommonModule, MatRippleModule } from '@angular/material/core';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\nimport { take, startWith, distinctUntilChanged, takeUntil, switchMap, skip } from 'rxjs/operators';\nimport { Subject, Subscription, fromEvent, of, merge, EMPTY, Observable, timer } from 'rxjs';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport * as i1 from '@angular/cdk/bidi';\nimport { coerceNumberProperty, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { hasModifierKey, SPACE, ENTER } from '@angular/cdk/keycodes';\nimport * as i3 from '@angular/cdk/platform';\nimport { normalizePassiveListenerOptions } from '@angular/cdk/platform';\nimport * as i1$1 from '@angular/cdk/scrolling';\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/** Injection token for the MatInkBar's Positioner. */\nconst _MAT_INK_BAR_POSITIONER = new InjectionToken('MatInkBarPositioner', {\n providedIn: 'root',\n factory: _MAT_INK_BAR_POSITIONER_FACTORY,\n});\n/**\n * The default positioner function for the MatInkBar.\n * @docs-private\n */\nfunction _MAT_INK_BAR_POSITIONER_FACTORY() {\n const method = (element) => ({\n left: element ? (element.offsetLeft || 0) + 'px' : '0',\n width: element ? (element.offsetWidth || 0) + 'px' : '0',\n });\n return method;\n}\n/**\n * The ink-bar is used to display and animate the line underneath the current active tab label.\n * @docs-private\n */\nclass MatInkBar {\n constructor(_elementRef, _ngZone, _inkBarPositioner, _animationMode) {\n this._elementRef = _elementRef;\n this._ngZone = _ngZone;\n this._inkBarPositioner = _inkBarPositioner;\n this._animationMode = _animationMode;\n }\n /**\n * Calculates the styles from the provided element in order to align the ink-bar to that element.\n * Shows the ink bar if previously set as hidden.\n * @param element\n */\n alignToElement(element) {\n this.show();\n this._ngZone.onStable.pipe(take(1)).subscribe(() => {\n const positions = this._inkBarPositioner(element);\n const inkBar = this._elementRef.nativeElement;\n inkBar.style.left = positions.left;\n inkBar.style.width = positions.width;\n });\n }\n /** Shows the ink bar. */\n show() {\n this._elementRef.nativeElement.style.visibility = 'visible';\n }\n /** Hides the ink bar. */\n hide() {\n this._elementRef.nativeElement.style.visibility = 'hidden';\n }\n}\nMatInkBar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatInkBar, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: _MAT_INK_BAR_POSITIONER }, { token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nMatInkBar.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatInkBar, selector: \"mat-ink-bar\", host: { properties: { \"class._mat-animation-noopable\": \"_animationMode === 'NoopAnimations'\" }, classAttribute: \"mat-ink-bar\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatInkBar, decorators: [{\n type: Directive,\n args: [{\n selector: 'mat-ink-bar',\n host: {\n 'class': 'mat-ink-bar',\n '[class._mat-animation-noopable]': `_animationMode === 'NoopAnimations'`,\n },\n }]\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [_MAT_INK_BAR_POSITIONER]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\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 * Injection token that can be used to reference instances of `MatTabContent`. It serves as\n * alternative token to the actual `MatTabContent` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst MAT_TAB_CONTENT = new InjectionToken('MatTabContent');\n/** Decorates the `ng-template` tags and reads out the template from it. */\nclass MatTabContent {\n constructor(/** Content for the tab. */ template) {\n this.template = template;\n }\n}\nMatTabContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTabContent, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nMatTabContent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatTabContent, selector: \"[matTabContent]\", providers: [{ provide: MAT_TAB_CONTENT, useExisting: MatTabContent }], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTabContent, decorators: [{\n type: Directive,\n args: [{\n selector: '[matTabContent]',\n providers: [{ provide: MAT_TAB_CONTENT, useExisting: MatTabContent }],\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }]; } });\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 * Injection token that can be used to reference instances of `MatTabLabel`. It serves as\n * alternative token to the actual `MatTabLabel` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nconst MAT_TAB_LABEL = new InjectionToken('MatTabLabel');\n/**\n * Used to provide a tab label to a tab without causing a circular dependency.\n * @docs-private\n */\nconst MAT_TAB = new InjectionToken('MAT_TAB');\n/** Used to flag tab labels for use with the portal directive */\nclass MatTabLabel extends CdkPortal {\n constructor(templateRef, viewContainerRef, _closestTab) {\n super(templateRef, viewContainerRef);\n this._closestTab = _closestTab;\n }\n}\nMatTabLabel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTabLabel, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: MAT_TAB, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nMatTabLabel.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatTabLabel, selector: \"[mat-tab-label], [matTabLabel]\", providers: [{ provide: MAT_TAB_LABEL, useExisting: MatTabLabel }], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTabLabel, decorators: [{\n type: Directive,\n args: [{\n selector: '[mat-tab-label], [matTabLabel]',\n providers: [{ provide: MAT_TAB_LABEL, useExisting: MatTabLabel }],\n }]\n }], ctorParameters: function () {\n return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_TAB]\n }, {\n type: Optional\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// Boilerplate for applying mixins to MatTab.\n/** @docs-private */\nconst _MatTabBase = mixinDisabled(class {\n});\n/**\n * Used to provide a tab group to a tab without causing a circular dependency.\n * @docs-private\n */\nconst MAT_TAB_GROUP = new InjectionToken('MAT_TAB_GROUP');\nclass MatTab extends _MatTabBase {\n constructor(_viewContainerRef, _closestTabGroup) {\n super();\n this._viewContainerRef = _viewContainerRef;\n this._closestTabGroup = _closestTabGroup;\n /** Plain text label for the tab, used when there is no template label. */\n this.textLabel = '';\n /** Portal that will be the hosted content of the tab */\n this._contentPortal = null;\n /** Emits whenever the internal state of the tab changes. */\n this._stateChanges = new Subject();\n /**\n * The relatively indexed position where 0 represents the center, negative is left, and positive\n * represents the right.\n */\n this.position = null;\n /**\n * The initial relatively index origin of the tab if it was created and selected after there\n * was already a selected tab. Provides context of what position the tab should originate from.\n */\n this.origin = null;\n /**\n * Whether the tab is currently active.\n */\n this.isActive = false;\n }\n /** Content for the tab label given by ``. */\n get templateLabel() {\n return this._templateLabel;\n }\n set templateLabel(value) {\n this._setTemplateLabelInput(value);\n }\n /** @docs-private */\n get content() {\n return this._contentPortal;\n }\n ngOnChanges(changes) {\n if (changes.hasOwnProperty('textLabel') || changes.hasOwnProperty('disabled')) {\n this._stateChanges.next();\n }\n }\n ngOnDestroy() {\n this._stateChanges.complete();\n }\n ngOnInit() {\n this._contentPortal = new TemplatePortal(this._explicitContent || this._implicitContent, this._viewContainerRef);\n }\n /**\n * This has been extracted to a util because of TS 4 and VE.\n * View Engine doesn't support property rename inheritance.\n * TS 4.0 doesn't allow properties to override accessors or vice-versa.\n * @docs-private\n */\n _setTemplateLabelInput(value) {\n // Only update the label if the query managed to find one. This works around an issue where a\n // user may have manually set `templateLabel` during creation mode, which would then get\n // clobbered by `undefined` when the query resolves. Also note that we check that the closest\n // tab matches the current one so that we don't pick up labels from nested tabs.\n if (value && value._closestTab === this) {\n this._templateLabel = value;\n }\n }\n}\nMatTab.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTab, deps: [{ token: i0.ViewContainerRef }, { token: MAT_TAB_GROUP, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nMatTab.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatTab, selector: \"mat-tab\", inputs: { disabled: \"disabled\", textLabel: [\"label\", \"textLabel\"], ariaLabel: [\"aria-label\", \"ariaLabel\"], ariaLabelledby: [\"aria-labelledby\", \"ariaLabelledby\"], labelClass: \"labelClass\", bodyClass: \"bodyClass\" }, providers: [{ provide: MAT_TAB, useExisting: MatTab }], queries: [{ propertyName: \"templateLabel\", first: true, predicate: MAT_TAB_LABEL, descendants: true }, { propertyName: \"_explicitContent\", first: true, predicate: MAT_TAB_CONTENT, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: \"_implicitContent\", first: true, predicate: TemplateRef, descendants: true, static: true }], exportAs: [\"matTab\"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: \"\\n\\n\", changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTab, decorators: [{\n type: Component,\n args: [{ selector: 'mat-tab', inputs: ['disabled'], changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, exportAs: 'matTab', providers: [{ provide: MAT_TAB, useExisting: MatTab }], template: \"\\n\\n\" }]\n }], ctorParameters: function () {\n return [{ type: i0.ViewContainerRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_TAB_GROUP]\n }, {\n type: Optional\n }] }];\n }, propDecorators: { templateLabel: [{\n type: ContentChild,\n args: [MAT_TAB_LABEL]\n }], _explicitContent: [{\n type: ContentChild,\n args: [MAT_TAB_CONTENT, { read: TemplateRef, static: true }]\n }], _implicitContent: [{\n type: ViewChild,\n args: [TemplateRef, { static: true }]\n }], textLabel: [{\n type: Input,\n args: ['label']\n }], ariaLabel: [{\n type: Input,\n args: ['aria-label']\n }], ariaLabelledby: [{\n type: Input,\n args: ['aria-labelledby']\n }], labelClass: [{\n type: Input\n }], bodyClass: [{\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 * Animations used by the Material tabs.\n * @docs-private\n */\nconst matTabsAnimations = {\n /** Animation translates a tab along the X axis. */\n translateTab: trigger('translateTab', [\n // Note: transitions to `none` instead of 0, because some browsers might blur the content.\n state('center, void, left-origin-center, right-origin-center', style({ transform: 'none' })),\n // If the tab is either on the left or right, we additionally add a `min-height` of 1px\n // in order to ensure that the element has a height before its state changes. This is\n // necessary because Chrome does seem to skip the transition in RTL mode if the element does\n // not have a static height and is not rendered. See related issue: #9465\n state('left', style({ transform: 'translate3d(-100%, 0, 0)', minHeight: '1px' })),\n state('right', style({ transform: 'translate3d(100%, 0, 0)', minHeight: '1px' })),\n transition('* => left, * => right, left => center, right => center', animate('{{animationDuration}} cubic-bezier(0.35, 0, 0.25, 1)')),\n transition('void => left-origin-center', [\n style({ transform: 'translate3d(-100%, 0, 0)' }),\n animate('{{animationDuration}} cubic-bezier(0.35, 0, 0.25, 1)'),\n ]),\n transition('void => right-origin-center', [\n style({ transform: 'translate3d(100%, 0, 0)' }),\n animate('{{animationDuration}} cubic-bezier(0.35, 0, 0.25, 1)'),\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 * The portal host directive for the contents of the tab.\n * @docs-private\n */\nclass MatTabBodyPortal extends CdkPortalOutlet {\n constructor(componentFactoryResolver, viewContainerRef, _host, _document) {\n super(componentFactoryResolver, viewContainerRef, _document);\n this._host = _host;\n /** Subscription to events for when the tab body begins centering. */\n this._centeringSub = Subscription.EMPTY;\n /** Subscription to events for when the tab body finishes leaving from center position. */\n this._leavingSub = Subscription.EMPTY;\n }\n /** Set initial visibility or set up subscription for changing visibility. */\n ngOnInit() {\n super.ngOnInit();\n this._centeringSub = this._host._beforeCentering\n .pipe(startWith(this._host._isCenterPosition(this._host._position)))\n .subscribe((isCentering) => {\n if (isCentering && !this.hasAttached()) {\n this.attach(this._host._content);\n }\n });\n this._leavingSub = this._host._afterLeavingCenter.subscribe(() => {\n this.detach();\n });\n }\n /** Clean up centering subscription. */\n ngOnDestroy() {\n super.ngOnDestroy();\n this._centeringSub.unsubscribe();\n this._leavingSub.unsubscribe();\n }\n}\nMatTabBodyPortal.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTabBodyPortal, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.ViewContainerRef }, { token: forwardRef(() => MatTabBody) }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive });\nMatTabBodyPortal.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatTabBodyPortal, selector: \"[matTabBodyHost]\", usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTabBodyPortal, decorators: [{\n type: Directive,\n args: [{\n selector: '[matTabBodyHost]',\n }]\n }], ctorParameters: function () {\n return [{ type: i0.ComponentFactoryResolver }, { type: i0.ViewContainerRef }, { type: MatTabBody, decorators: [{\n type: Inject,\n args: [forwardRef(() => MatTabBody)]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }];\n } });\n/**\n * Base class with all of the `MatTabBody` functionality.\n * @docs-private\n */\nclass _MatTabBodyBase {\n constructor(_elementRef, _dir, changeDetectorRef) {\n this._elementRef = _elementRef;\n this._dir = _dir;\n /** Subscription to the directionality change observable. */\n this._dirChangeSubscription = Subscription.EMPTY;\n /** Emits when an animation on the tab is complete. */\n this._translateTabComplete = new Subject();\n /** Event emitted when the tab begins to animate towards the center as the active tab. */\n this._onCentering = new EventEmitter();\n /** Event emitted before the centering of the tab begins. */\n this._beforeCentering = new EventEmitter();\n /** Event emitted before the centering of the tab begins. */\n this._afterLeavingCenter = new EventEmitter();\n /** Event emitted when the tab completes its animation towards the center. */\n this._onCentered = new EventEmitter(true);\n // Note that the default value will always be overwritten by `MatTabBody`, but we need one\n // anyway to prevent the animations module from throwing an error if the body is used on its own.\n /** Duration for the tab's animation. */\n this.animationDuration = '500ms';\n if (_dir) {\n this._dirChangeSubscription = _dir.change.subscribe((dir) => {\n this._computePositionAnimationState(dir);\n changeDetectorRef.markForCheck();\n });\n }\n // Ensure that we get unique animation events, because the `.done` callback can get\n // invoked twice in some browsers. See https://github.com/angular/angular/issues/24084.\n this._translateTabComplete\n .pipe(distinctUntilChanged((x, y) => {\n return x.fromState === y.fromState && x.toState === y.toState;\n }))\n .subscribe(event => {\n // If the transition to the center is complete, emit an event.\n if (this._isCenterPosition(event.toState) && this._isCenterPosition(this._position)) {\n this._onCentered.emit();\n }\n if (this._isCenterPosition(event.fromState) && !this._isCenterPosition(this._position)) {\n this._afterLeavingCenter.emit();\n }\n });\n }\n /** The shifted index position of the tab body, where zero represents the active center tab. */\n set position(position) {\n this._positionIndex = position;\n this._computePositionAnimationState();\n }\n /**\n * After initialized, check if the content is centered and has an origin. If so, set the\n * special position states that transition the tab from the left or right before centering.\n */\n ngOnInit() {\n if (this._position == 'center' && this.origin != null) {\n this._position = this._computePositionFromOrigin(this.origin);\n }\n }\n ngOnDestroy() {\n this._dirChangeSubscription.unsubscribe();\n this._translateTabComplete.complete();\n }\n _onTranslateTabStarted(event) {\n const isCentering = this._isCenterPosition(event.toState);\n this._beforeCentering.emit(isCentering);\n if (isCentering) {\n this._onCentering.emit(this._elementRef.nativeElement.clientHeight);\n }\n }\n /** The text direction of the containing app. */\n _getLayoutDirection() {\n return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n }\n /** Whether the provided position state is considered center, regardless of origin. */\n _isCenterPosition(position) {\n return (position == 'center' || position == 'left-origin-center' || position == 'right-origin-center');\n }\n /** Computes the position state that will be used for the tab-body animation trigger. */\n _computePositionAnimationState(dir = this._getLayoutDirection()) {\n if (this._positionIndex < 0) {\n this._position = dir == 'ltr' ? 'left' : 'right';\n }\n else if (this._positionIndex > 0) {\n this._position = dir == 'ltr' ? 'right' : 'left';\n }\n else {\n this._position = 'center';\n }\n }\n /**\n * Computes the position state based on the specified origin position. This is used if the\n * tab is becoming visible immediately after creation.\n */\n _computePositionFromOrigin(origin) {\n const dir = this._getLayoutDirection();\n if ((dir == 'ltr' && origin <= 0) || (dir == 'rtl' && origin > 0)) {\n return 'left-origin-center';\n }\n return 'right-origin-center';\n }\n}\n_MatTabBodyBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: _MatTabBodyBase, deps: [{ token: i0.ElementRef }, { token: i1.Directionality, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });\n_MatTabBodyBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: _MatTabBodyBase, inputs: { _content: [\"content\", \"_content\"], origin: \"origin\", animationDuration: \"animationDuration\", position: \"position\" }, outputs: { _onCentering: \"_onCentering\", _beforeCentering: \"_beforeCentering\", _afterLeavingCenter: \"_afterLeavingCenter\", _onCentered: \"_onCentered\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: _MatTabBodyBase, decorators: [{\n type: Directive\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: i1.Directionality, decorators: [{\n type: Optional\n }] }, { type: i0.ChangeDetectorRef }];\n }, propDecorators: { _onCentering: [{\n type: Output\n }], _beforeCentering: [{\n type: Output\n }], _afterLeavingCenter: [{\n type: Output\n }], _onCentered: [{\n type: Output\n }], _content: [{\n type: Input,\n args: ['content']\n }], origin: [{\n type: Input\n }], animationDuration: [{\n type: Input\n }], position: [{\n type: Input\n }] } });\n/**\n * Wrapper for the contents of a tab.\n * @docs-private\n */\nclass MatTabBody extends _MatTabBodyBase {\n constructor(elementRef, dir, changeDetectorRef) {\n super(elementRef, dir, changeDetectorRef);\n }\n}\nMatTabBody.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTabBody, deps: [{ token: i0.ElementRef }, { token: i1.Directionality, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });\nMatTabBody.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatTabBody, selector: \"mat-tab-body\", host: { classAttribute: \"mat-tab-body\" }, viewQueries: [{ propertyName: \"_portalHost\", first: true, predicate: CdkPortalOutlet, descendants: true }], usesInheritance: true, ngImport: i0, template: \"
    \\n \\n
    \\n\", styles: [\".mat-tab-body-content{height:100%;overflow:auto}.mat-tab-group-dynamic-height .mat-tab-body-content{overflow:hidden}.mat-tab-body-content[style*=\\\"visibility: hidden\\\"]{display:none}\\n\"], directives: [{ type: MatTabBodyPortal, selector: \"[matTabBodyHost]\" }], animations: [matTabsAnimations.translateTab], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTabBody, decorators: [{\n type: Component,\n args: [{ selector: 'mat-tab-body', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.Default, animations: [matTabsAnimations.translateTab], host: {\n 'class': 'mat-tab-body',\n }, template: \"
    \\n \\n
    \\n\", styles: [\".mat-tab-body-content{height:100%;overflow:auto}.mat-tab-group-dynamic-height .mat-tab-body-content{overflow:hidden}.mat-tab-body-content[style*=\\\"visibility: hidden\\\"]{display:none}\\n\"] }]\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: i1.Directionality, decorators: [{\n type: Optional\n }] }, { type: i0.ChangeDetectorRef }];\n }, propDecorators: { _portalHost: [{\n type: ViewChild,\n args: [CdkPortalOutlet]\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/** Injection token that can be used to provide the default options the tabs module. */\nconst MAT_TABS_CONFIG = new InjectionToken('MAT_TABS_CONFIG');\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// Boilerplate for applying mixins to MatTabLabelWrapper.\n/** @docs-private */\nconst _MatTabLabelWrapperBase = mixinDisabled(class {\n});\n/**\n * Used in the `mat-tab-group` view to display tab labels.\n * @docs-private\n */\nclass MatTabLabelWrapper extends _MatTabLabelWrapperBase {\n constructor(elementRef) {\n super();\n this.elementRef = elementRef;\n }\n /** Sets focus on the wrapper element */\n focus() {\n this.elementRef.nativeElement.focus();\n }\n getOffsetLeft() {\n return this.elementRef.nativeElement.offsetLeft;\n }\n getOffsetWidth() {\n return this.elementRef.nativeElement.offsetWidth;\n }\n}\nMatTabLabelWrapper.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTabLabelWrapper, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nMatTabLabelWrapper.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatTabLabelWrapper, selector: \"[matTabLabelWrapper]\", inputs: { disabled: \"disabled\" }, host: { properties: { \"class.mat-tab-disabled\": \"disabled\", \"attr.aria-disabled\": \"!!disabled\" } }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTabLabelWrapper, decorators: [{\n type: Directive,\n args: [{\n selector: '[matTabLabelWrapper]',\n inputs: ['disabled'],\n host: {\n '[class.mat-tab-disabled]': 'disabled',\n '[attr.aria-disabled]': '!!disabled',\n },\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });\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/** Config used to bind passive event listeners */\nconst passiveEventListenerOptions = normalizePassiveListenerOptions({\n passive: true,\n});\n/**\n * The distance in pixels that will be overshot when scrolling a tab label into view. This helps\n * provide a small affordance to the label next to it.\n */\nconst EXAGGERATED_OVERSCROLL = 60;\n/**\n * Amount of milliseconds to wait before starting to scroll the header automatically.\n * Set a little conservatively in order to handle fake events dispatched on touch devices.\n */\nconst HEADER_SCROLL_DELAY = 650;\n/**\n * Interval in milliseconds at which to scroll the header\n * while the user is holding their pointer.\n */\nconst HEADER_SCROLL_INTERVAL = 100;\n/**\n * Base class for a tab header that supported pagination.\n * @docs-private\n */\nclass MatPaginatedTabHeader {\n constructor(_elementRef, _changeDetectorRef, _viewportRuler, _dir, _ngZone, _platform, _animationMode) {\n this._elementRef = _elementRef;\n this._changeDetectorRef = _changeDetectorRef;\n this._viewportRuler = _viewportRuler;\n this._dir = _dir;\n this._ngZone = _ngZone;\n this._platform = _platform;\n this._animationMode = _animationMode;\n /** The distance in pixels that the tab labels should be translated to the left. */\n this._scrollDistance = 0;\n /** Whether the header should scroll to the selected index after the view has been checked. */\n this._selectedIndexChanged = false;\n /** Emits when the component is destroyed. */\n this._destroyed = new Subject();\n /** Whether the controls for pagination should be displayed */\n this._showPaginationControls = false;\n /** Whether the tab list can be scrolled more towards the end of the tab label list. */\n this._disableScrollAfter = true;\n /** Whether the tab list can be scrolled more towards the beginning of the tab label list. */\n this._disableScrollBefore = true;\n /** Stream that will stop the automated scrolling. */\n this._stopScrolling = new Subject();\n /**\n * Whether pagination should be disabled. This can be used to avoid unnecessary\n * layout recalculations if it's known that pagination won't be required.\n */\n this.disablePagination = false;\n this._selectedIndex = 0;\n /** Event emitted when the option is selected. */\n this.selectFocusedIndex = new EventEmitter();\n /** Event emitted when a label is focused. */\n this.indexFocused = new EventEmitter();\n // Bind the `mouseleave` event on the outside since it doesn't change anything in the view.\n _ngZone.runOutsideAngular(() => {\n fromEvent(_elementRef.nativeElement, 'mouseleave')\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => {\n this._stopInterval();\n });\n });\n }\n /** The index of the active tab. */\n get selectedIndex() {\n return this._selectedIndex;\n }\n set selectedIndex(value) {\n value = coerceNumberProperty(value);\n if (this._selectedIndex != value) {\n this._selectedIndexChanged = true;\n this._selectedIndex = value;\n if (this._keyManager) {\n this._keyManager.updateActiveItem(value);\n }\n }\n }\n ngAfterViewInit() {\n // We need to handle these events manually, because we want to bind passive event listeners.\n fromEvent(this._previousPaginator.nativeElement, 'touchstart', passiveEventListenerOptions)\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => {\n this._handlePaginatorPress('before');\n });\n fromEvent(this._nextPaginator.nativeElement, 'touchstart', passiveEventListenerOptions)\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => {\n this._handlePaginatorPress('after');\n });\n }\n ngAfterContentInit() {\n const dirChange = this._dir ? this._dir.change : of('ltr');\n const resize = this._viewportRuler.change(150);\n const realign = () => {\n this.updatePagination();\n this._alignInkBarToSelectedTab();\n };\n this._keyManager = new FocusKeyManager(this._items)\n .withHorizontalOrientation(this._getLayoutDirection())\n .withHomeAndEnd()\n .withWrap();\n this._keyManager.updateActiveItem(this._selectedIndex);\n // Defer the first call in order to allow for slower browsers to lay out the elements.\n // This helps in cases where the user lands directly on a page with paginated tabs.\n // Note that we use `onStable` instead of `requestAnimationFrame`, because the latter\n // can hold up tests that are in a background tab.\n this._ngZone.onStable.pipe(take(1)).subscribe(realign);\n // On dir change or window resize, realign the ink bar and update the orientation of\n // the key manager if the direction has changed.\n merge(dirChange, resize, this._items.changes, this._itemsResized())\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => {\n // We need to defer this to give the browser some time to recalculate\n // the element dimensions. The call has to be wrapped in `NgZone.run`,\n // because the viewport change handler runs outside of Angular.\n this._ngZone.run(() => {\n Promise.resolve().then(() => {\n // Clamp the scroll distance, because it can change with the number of tabs.\n this._scrollDistance = Math.max(0, Math.min(this._getMaxScrollDistance(), this._scrollDistance));\n realign();\n });\n });\n this._keyManager.withHorizontalOrientation(this._getLayoutDirection());\n });\n // If there is a change in the focus key manager we need to emit the `indexFocused`\n // event in order to provide a public event that notifies about focus changes. Also we realign\n // the tabs container by scrolling the new focused tab into the visible section.\n this._keyManager.change.pipe(takeUntil(this._destroyed)).subscribe(newFocusIndex => {\n this.indexFocused.emit(newFocusIndex);\n this._setTabFocus(newFocusIndex);\n });\n }\n /** Sends any changes that could affect the layout of the items. */\n _itemsResized() {\n if (typeof ResizeObserver !== 'function') {\n return EMPTY;\n }\n return this._items.changes.pipe(startWith(this._items), switchMap((tabItems) => new Observable((observer) => this._ngZone.runOutsideAngular(() => {\n const resizeObserver = new ResizeObserver(() => {\n observer.next();\n });\n tabItems.forEach(item => {\n resizeObserver.observe(item.elementRef.nativeElement);\n });\n return () => {\n resizeObserver.disconnect();\n };\n }))), \n // Skip the first emit since the resize observer emits when an item\n // is observed for new items when the tab is already inserted\n skip(1));\n }\n ngAfterContentChecked() {\n // If the number of tab labels have changed, check if scrolling should be enabled\n if (this._tabLabelCount != this._items.length) {\n this.updatePagination();\n this._tabLabelCount = this._items.length;\n this._changeDetectorRef.markForCheck();\n }\n // If the selected index has changed, scroll to the label and check if the scrolling controls\n // should be disabled.\n if (this._selectedIndexChanged) {\n this._scrollToLabel(this._selectedIndex);\n this._checkScrollingControls();\n this._alignInkBarToSelectedTab();\n this._selectedIndexChanged = false;\n this._changeDetectorRef.markForCheck();\n }\n // If the scroll distance has been changed (tab selected, focused, scroll controls activated),\n // then translate the header to reflect this.\n if (this._scrollDistanceChanged) {\n this._updateTabScrollPosition();\n this._scrollDistanceChanged = false;\n this._changeDetectorRef.markForCheck();\n }\n }\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n this._stopScrolling.complete();\n }\n /** Handles keyboard events on the header. */\n _handleKeydown(event) {\n // We don't handle any key bindings with a modifier key.\n if (hasModifierKey(event)) {\n return;\n }\n switch (event.keyCode) {\n case ENTER:\n case SPACE:\n if (this.focusIndex !== this.selectedIndex) {\n this.selectFocusedIndex.emit(this.focusIndex);\n this._itemSelected(event);\n }\n break;\n default:\n this._keyManager.onKeydown(event);\n }\n }\n /**\n * Callback for when the MutationObserver detects that the content has changed.\n */\n _onContentChanges() {\n const textContent = this._elementRef.nativeElement.textContent;\n // We need to diff the text content of the header, because the MutationObserver callback\n // will fire even if the text content didn't change which is inefficient and is prone\n // to infinite loops if a poorly constructed expression is passed in (see #14249).\n if (textContent !== this._currentTextContent) {\n this._currentTextContent = textContent || '';\n // The content observer runs outside the `NgZone` by default, which\n // means that we need to bring the callback back in ourselves.\n this._ngZone.run(() => {\n this.updatePagination();\n this._alignInkBarToSelectedTab();\n this._changeDetectorRef.markForCheck();\n });\n }\n }\n /**\n * Updates the view whether pagination should be enabled or not.\n *\n * WARNING: Calling this method can be very costly in terms of performance. It should be called\n * as infrequently as possible from outside of the Tabs component as it causes a reflow of the\n * page.\n */\n updatePagination() {\n this._checkPaginationEnabled();\n this._checkScrollingControls();\n this._updateTabScrollPosition();\n }\n /** Tracks which element has focus; used for keyboard navigation */\n get focusIndex() {\n return this._keyManager ? this._keyManager.activeItemIndex : 0;\n }\n /** When the focus index is set, we must manually send focus to the correct label */\n set focusIndex(value) {\n if (!this._isValidIndex(value) || this.focusIndex === value || !this._keyManager) {\n return;\n }\n this._keyManager.setActiveItem(value);\n }\n /**\n * Determines if an index is valid. If the tabs are not ready yet, we assume that the user is\n * providing a valid index and return true.\n */\n _isValidIndex(index) {\n if (!this._items) {\n return true;\n }\n const tab = this._items ? this._items.toArray()[index] : null;\n return !!tab && !tab.disabled;\n }\n /**\n * Sets focus on the HTML element for the label wrapper and scrolls it into the view if\n * scrolling is enabled.\n */\n _setTabFocus(tabIndex) {\n if (this._showPaginationControls) {\n this._scrollToLabel(tabIndex);\n }\n if (this._items && this._items.length) {\n this._items.toArray()[tabIndex].focus();\n // Do not let the browser manage scrolling to focus the element, this will be handled\n // by using translation. In LTR, the scroll left should be 0. In RTL, the scroll width\n // should be the full width minus the offset width.\n const containerEl = this._tabListContainer.nativeElement;\n const dir = this._getLayoutDirection();\n if (dir == 'ltr') {\n containerEl.scrollLeft = 0;\n }\n else {\n containerEl.scrollLeft = containerEl.scrollWidth - containerEl.offsetWidth;\n }\n }\n }\n /** The layout direction of the containing app. */\n _getLayoutDirection() {\n return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';\n }\n /** Performs the CSS transformation on the tab list that will cause the list to scroll. */\n _updateTabScrollPosition() {\n if (this.disablePagination) {\n return;\n }\n const scrollDistance = this.scrollDistance;\n const translateX = this._getLayoutDirection() === 'ltr' ? -scrollDistance : scrollDistance;\n // Don't use `translate3d` here because we don't want to create a new layer. A new layer\n // seems to cause flickering and overflow in Internet Explorer. For example, the ink bar\n // and ripples will exceed the boundaries of the visible tab bar.\n // See: https://github.com/angular/components/issues/10276\n // We round the `transform` here, because transforms with sub-pixel precision cause some\n // browsers to blur the content of the element.\n this._tabList.nativeElement.style.transform = `translateX(${Math.round(translateX)}px)`;\n // Setting the `transform` on IE will change the scroll offset of the parent, causing the\n // position to be thrown off in some cases. We have to reset it ourselves to ensure that\n // it doesn't get thrown off. Note that we scope it only to IE and Edge, because messing\n // with the scroll position throws off Chrome 71+ in RTL mode (see #14689).\n if (this._platform.TRIDENT || this._platform.EDGE) {\n this._tabListContainer.nativeElement.scrollLeft = 0;\n }\n }\n /** Sets the distance in pixels that the tab header should be transformed in the X-axis. */\n get scrollDistance() {\n return this._scrollDistance;\n }\n set scrollDistance(value) {\n this._scrollTo(value);\n }\n /**\n * Moves the tab list in the 'before' or 'after' direction (towards the beginning of the list or\n * the end of the list, respectively). The distance to scroll is computed to be a third of the\n * length of the tab list view window.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n */\n _scrollHeader(direction) {\n const viewLength = this._tabListContainer.nativeElement.offsetWidth;\n // Move the scroll distance one-third the length of the tab list's viewport.\n const scrollAmount = ((direction == 'before' ? -1 : 1) * viewLength) / 3;\n return this._scrollTo(this._scrollDistance + scrollAmount);\n }\n /** Handles click events on the pagination arrows. */\n _handlePaginatorClick(direction) {\n this._stopInterval();\n this._scrollHeader(direction);\n }\n /**\n * Moves the tab list such that the desired tab label (marked by index) is moved into view.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n */\n _scrollToLabel(labelIndex) {\n if (this.disablePagination) {\n return;\n }\n const selectedLabel = this._items ? this._items.toArray()[labelIndex] : null;\n if (!selectedLabel) {\n return;\n }\n // The view length is the visible width of the tab labels.\n const viewLength = this._tabListContainer.nativeElement.offsetWidth;\n const { offsetLeft, offsetWidth } = selectedLabel.elementRef.nativeElement;\n let labelBeforePos, labelAfterPos;\n if (this._getLayoutDirection() == 'ltr') {\n labelBeforePos = offsetLeft;\n labelAfterPos = labelBeforePos + offsetWidth;\n }\n else {\n labelAfterPos = this._tabListInner.nativeElement.offsetWidth - offsetLeft;\n labelBeforePos = labelAfterPos - offsetWidth;\n }\n const beforeVisiblePos = this.scrollDistance;\n const afterVisiblePos = this.scrollDistance + viewLength;\n if (labelBeforePos < beforeVisiblePos) {\n // Scroll header to move label to the before direction\n this.scrollDistance -= beforeVisiblePos - labelBeforePos + EXAGGERATED_OVERSCROLL;\n }\n else if (labelAfterPos > afterVisiblePos) {\n // Scroll header to move label to the after direction\n this.scrollDistance += labelAfterPos - afterVisiblePos + EXAGGERATED_OVERSCROLL;\n }\n }\n /**\n * Evaluate whether the pagination controls should be displayed. If the scroll width of the\n * tab list is wider than the size of the header container, then the pagination controls should\n * be shown.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n */\n _checkPaginationEnabled() {\n if (this.disablePagination) {\n this._showPaginationControls = false;\n }\n else {\n const isEnabled = this._tabListInner.nativeElement.scrollWidth > this._elementRef.nativeElement.offsetWidth;\n if (!isEnabled) {\n this.scrollDistance = 0;\n }\n if (isEnabled !== this._showPaginationControls) {\n this._changeDetectorRef.markForCheck();\n }\n this._showPaginationControls = isEnabled;\n }\n }\n /**\n * Evaluate whether the before and after controls should be enabled or disabled.\n * If the header is at the beginning of the list (scroll distance is equal to 0) then disable the\n * before button. If the header is at the end of the list (scroll distance is equal to the\n * maximum distance we can scroll), then disable the after button.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n */\n _checkScrollingControls() {\n if (this.disablePagination) {\n this._disableScrollAfter = this._disableScrollBefore = true;\n }\n else {\n // Check if the pagination arrows should be activated.\n this._disableScrollBefore = this.scrollDistance == 0;\n this._disableScrollAfter = this.scrollDistance == this._getMaxScrollDistance();\n this._changeDetectorRef.markForCheck();\n }\n }\n /**\n * Determines what is the maximum length in pixels that can be set for the scroll distance. This\n * is equal to the difference in width between the tab list container and tab header container.\n *\n * This is an expensive call that forces a layout reflow to compute box and scroll metrics and\n * should be called sparingly.\n */\n _getMaxScrollDistance() {\n const lengthOfTabList = this._tabListInner.nativeElement.scrollWidth;\n const viewLength = this._tabListContainer.nativeElement.offsetWidth;\n return lengthOfTabList - viewLength || 0;\n }\n /** Tells the ink-bar to align itself to the current label wrapper */\n _alignInkBarToSelectedTab() {\n const selectedItem = this._items && this._items.length ? this._items.toArray()[this.selectedIndex] : null;\n const selectedLabelWrapper = selectedItem ? selectedItem.elementRef.nativeElement : null;\n if (selectedLabelWrapper) {\n this._inkBar.alignToElement(selectedLabelWrapper);\n }\n else {\n this._inkBar.hide();\n }\n }\n /** Stops the currently-running paginator interval. */\n _stopInterval() {\n this._stopScrolling.next();\n }\n /**\n * Handles the user pressing down on one of the paginators.\n * Starts scrolling the header after a certain amount of time.\n * @param direction In which direction the paginator should be scrolled.\n */\n _handlePaginatorPress(direction, mouseEvent) {\n // Don't start auto scrolling for right mouse button clicks. Note that we shouldn't have to\n // null check the `button`, but we do it so we don't break tests that use fake events.\n if (mouseEvent && mouseEvent.button != null && mouseEvent.button !== 0) {\n return;\n }\n // Avoid overlapping timers.\n this._stopInterval();\n // Start a timer after the delay and keep firing based on the interval.\n timer(HEADER_SCROLL_DELAY, HEADER_SCROLL_INTERVAL)\n // Keep the timer going until something tells it to stop or the component is destroyed.\n .pipe(takeUntil(merge(this._stopScrolling, this._destroyed)))\n .subscribe(() => {\n const { maxScrollDistance, distance } = this._scrollHeader(direction);\n // Stop the timer if we've reached the start or the end.\n if (distance === 0 || distance >= maxScrollDistance) {\n this._stopInterval();\n }\n });\n }\n /**\n * Scrolls the header to a given position.\n * @param position Position to which to scroll.\n * @returns Information on the current scroll distance and the maximum.\n */\n _scrollTo(position) {\n if (this.disablePagination) {\n return { maxScrollDistance: 0, distance: 0 };\n }\n const maxScrollDistance = this._getMaxScrollDistance();\n this._scrollDistance = Math.max(0, Math.min(maxScrollDistance, position));\n // Mark that the scroll distance has changed so that after the view is checked, the CSS\n // transformation can move the header.\n this._scrollDistanceChanged = true;\n this._checkScrollingControls();\n return { maxScrollDistance, distance: this._scrollDistance };\n }\n}\nMatPaginatedTabHeader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatPaginatedTabHeader, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1$1.ViewportRuler }, { token: i1.Directionality, optional: true }, { token: i0.NgZone }, { token: i3.Platform }, { token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nMatPaginatedTabHeader.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatPaginatedTabHeader, inputs: { disablePagination: \"disablePagination\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatPaginatedTabHeader, decorators: [{\n type: Directive\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1$1.ViewportRuler }, { type: i1.Directionality, decorators: [{\n type: Optional\n }] }, { type: i0.NgZone }, { type: i3.Platform }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }];\n }, propDecorators: { disablePagination: [{\n type: Input\n }] } });\n\n/**\n * Base class with all of the `MatTabHeader` functionality.\n * @docs-private\n */\nclass _MatTabHeaderBase extends MatPaginatedTabHeader {\n constructor(elementRef, changeDetectorRef, viewportRuler, dir, ngZone, platform, animationMode) {\n super(elementRef, changeDetectorRef, viewportRuler, dir, ngZone, platform, animationMode);\n this._disableRipple = false;\n }\n /** Whether the ripple effect is disabled or not. */\n get disableRipple() {\n return this._disableRipple;\n }\n set disableRipple(value) {\n this._disableRipple = coerceBooleanProperty(value);\n }\n _itemSelected(event) {\n event.preventDefault();\n }\n}\n_MatTabHeaderBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: _MatTabHeaderBase, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1$1.ViewportRuler }, { token: i1.Directionality, optional: true }, { token: i0.NgZone }, { token: i3.Platform }, { token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\n_MatTabHeaderBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: _MatTabHeaderBase, inputs: { disableRipple: \"disableRipple\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: _MatTabHeaderBase, decorators: [{\n type: Directive\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1$1.ViewportRuler }, { type: i1.Directionality, decorators: [{\n type: Optional\n }] }, { type: i0.NgZone }, { type: i3.Platform }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }];\n }, propDecorators: { disableRipple: [{\n type: Input\n }] } });\n/**\n * The header of the tab group which displays a list of all the tabs in the tab group. Includes\n * an ink bar that follows the currently selected tab. When the tabs list's width exceeds the\n * width of the header container, then arrows will be displayed to allow the user to scroll\n * left and right across the header.\n * @docs-private\n */\nclass MatTabHeader extends _MatTabHeaderBase {\n constructor(elementRef, changeDetectorRef, viewportRuler, dir, ngZone, platform, animationMode) {\n super(elementRef, changeDetectorRef, viewportRuler, dir, ngZone, platform, animationMode);\n }\n}\nMatTabHeader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTabHeader, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1$1.ViewportRuler }, { token: i1.Directionality, optional: true }, { token: i0.NgZone }, { token: i3.Platform }, { token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nMatTabHeader.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatTabHeader, selector: \"mat-tab-header\", inputs: { selectedIndex: \"selectedIndex\" }, outputs: { selectFocusedIndex: \"selectFocusedIndex\", indexFocused: \"indexFocused\" }, host: { properties: { \"class.mat-tab-header-pagination-controls-enabled\": \"_showPaginationControls\", \"class.mat-tab-header-rtl\": \"_getLayoutDirection() == 'rtl'\" }, classAttribute: \"mat-tab-header\" }, queries: [{ propertyName: \"_items\", predicate: MatTabLabelWrapper }], viewQueries: [{ propertyName: \"_inkBar\", first: true, predicate: MatInkBar, descendants: true, static: true }, { propertyName: \"_tabListContainer\", first: true, predicate: [\"tabListContainer\"], descendants: true, static: true }, { propertyName: \"_tabList\", first: true, predicate: [\"tabList\"], descendants: true, static: true }, { propertyName: \"_tabListInner\", first: true, predicate: [\"tabListInner\"], descendants: true, static: true }, { propertyName: \"_nextPaginator\", first: true, predicate: [\"nextPaginator\"], descendants: true }, { propertyName: \"_previousPaginator\", first: true, predicate: [\"previousPaginator\"], descendants: true }], usesInheritance: true, ngImport: i0, template: \"\\n\\n
    \\n \\n
    \\n \\n
    \\n \\n
    \\n\\n\\n\\n\", styles: [\".mat-tab-header{display:flex;overflow:hidden;position:relative;flex-shrink:0}.mat-tab-header-pagination{-webkit-user-select:none;user-select:none;position:relative;display:none;justify-content:center;align-items:center;min-width:32px;cursor:pointer;z-index:2;-webkit-tap-highlight-color:transparent;touch-action:none;box-sizing:content-box;background:none;border:none;outline:0;padding:0}.mat-tab-header-pagination::-moz-focus-inner{border:0}.mat-tab-header-pagination-controls-enabled .mat-tab-header-pagination{display:flex}.mat-tab-header-pagination-before,.mat-tab-header-rtl .mat-tab-header-pagination-after{padding-left:4px}.mat-tab-header-pagination-before .mat-tab-header-pagination-chevron,.mat-tab-header-rtl .mat-tab-header-pagination-after .mat-tab-header-pagination-chevron{transform:rotate(-135deg)}.mat-tab-header-rtl .mat-tab-header-pagination-before,.mat-tab-header-pagination-after{padding-right:4px}.mat-tab-header-rtl .mat-tab-header-pagination-before .mat-tab-header-pagination-chevron,.mat-tab-header-pagination-after .mat-tab-header-pagination-chevron{transform:rotate(45deg)}.mat-tab-header-pagination-chevron{border-style:solid;border-width:2px 2px 0 0;height:8px;width:8px}.mat-tab-header-pagination-disabled{box-shadow:none;cursor:default}.mat-tab-list{flex-grow:1;position:relative;transition:transform 500ms cubic-bezier(0.35, 0, 0.25, 1)}.mat-ink-bar{position:absolute;bottom:0;height:2px;transition:500ms cubic-bezier(0.35, 0, 0.25, 1)}._mat-animation-noopable.mat-ink-bar{transition:none;animation:none}.mat-tab-group-inverted-header .mat-ink-bar{bottom:auto;top:0}.cdk-high-contrast-active .mat-ink-bar{outline:solid 2px;height:0}.mat-tab-labels{display:flex}[mat-align-tabs=center]>.mat-tab-header .mat-tab-labels{justify-content:center}[mat-align-tabs=end]>.mat-tab-header .mat-tab-labels{justify-content:flex-end}.mat-tab-label-container{display:flex;flex-grow:1;overflow:hidden;z-index:1}._mat-animation-noopable.mat-tab-list{transition:none;animation:none}.mat-tab-label{height:48px;padding:0 24px;cursor:pointer;box-sizing:border-box;opacity:.6;min-width:160px;text-align:center;display:inline-flex;justify-content:center;align-items:center;white-space:nowrap;position:relative}.mat-tab-label:focus{outline:none}.mat-tab-label:focus:not(.mat-tab-disabled){opacity:1}.cdk-high-contrast-active .mat-tab-label:focus{outline:dotted 2px;outline-offset:-2px}.mat-tab-label.mat-tab-disabled{cursor:default}.cdk-high-contrast-active .mat-tab-label.mat-tab-disabled{opacity:.5}.mat-tab-label .mat-tab-label-content{display:inline-flex;justify-content:center;align-items:center;white-space:nowrap}.cdk-high-contrast-active .mat-tab-label{opacity:1}@media(max-width: 599px){.mat-tab-label{min-width:72px}}\\n\"], directives: [{ type: i4.MatRipple, selector: \"[mat-ripple], [matRipple]\", inputs: [\"matRippleColor\", \"matRippleUnbounded\", \"matRippleCentered\", \"matRippleRadius\", \"matRippleAnimation\", \"matRippleDisabled\", \"matRippleTrigger\"], exportAs: [\"matRipple\"] }, { type: i5.CdkObserveContent, selector: \"[cdkObserveContent]\", inputs: [\"cdkObserveContentDisabled\", \"debounce\"], outputs: [\"cdkObserveContent\"], exportAs: [\"cdkObserveContent\"] }, { type: MatInkBar, selector: \"mat-ink-bar\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTabHeader, decorators: [{\n type: Component,\n args: [{ selector: 'mat-tab-header', inputs: ['selectedIndex'], outputs: ['selectFocusedIndex', 'indexFocused'], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.Default, host: {\n 'class': 'mat-tab-header',\n '[class.mat-tab-header-pagination-controls-enabled]': '_showPaginationControls',\n '[class.mat-tab-header-rtl]': \"_getLayoutDirection() == 'rtl'\",\n }, template: \"\\n\\n
    \\n \\n
    \\n \\n
    \\n \\n
    \\n\\n\\n\\n\", styles: [\".mat-tab-header{display:flex;overflow:hidden;position:relative;flex-shrink:0}.mat-tab-header-pagination{-webkit-user-select:none;user-select:none;position:relative;display:none;justify-content:center;align-items:center;min-width:32px;cursor:pointer;z-index:2;-webkit-tap-highlight-color:transparent;touch-action:none;box-sizing:content-box;background:none;border:none;outline:0;padding:0}.mat-tab-header-pagination::-moz-focus-inner{border:0}.mat-tab-header-pagination-controls-enabled .mat-tab-header-pagination{display:flex}.mat-tab-header-pagination-before,.mat-tab-header-rtl .mat-tab-header-pagination-after{padding-left:4px}.mat-tab-header-pagination-before .mat-tab-header-pagination-chevron,.mat-tab-header-rtl .mat-tab-header-pagination-after .mat-tab-header-pagination-chevron{transform:rotate(-135deg)}.mat-tab-header-rtl .mat-tab-header-pagination-before,.mat-tab-header-pagination-after{padding-right:4px}.mat-tab-header-rtl .mat-tab-header-pagination-before .mat-tab-header-pagination-chevron,.mat-tab-header-pagination-after .mat-tab-header-pagination-chevron{transform:rotate(45deg)}.mat-tab-header-pagination-chevron{border-style:solid;border-width:2px 2px 0 0;height:8px;width:8px}.mat-tab-header-pagination-disabled{box-shadow:none;cursor:default}.mat-tab-list{flex-grow:1;position:relative;transition:transform 500ms cubic-bezier(0.35, 0, 0.25, 1)}.mat-ink-bar{position:absolute;bottom:0;height:2px;transition:500ms cubic-bezier(0.35, 0, 0.25, 1)}._mat-animation-noopable.mat-ink-bar{transition:none;animation:none}.mat-tab-group-inverted-header .mat-ink-bar{bottom:auto;top:0}.cdk-high-contrast-active .mat-ink-bar{outline:solid 2px;height:0}.mat-tab-labels{display:flex}[mat-align-tabs=center]>.mat-tab-header .mat-tab-labels{justify-content:center}[mat-align-tabs=end]>.mat-tab-header .mat-tab-labels{justify-content:flex-end}.mat-tab-label-container{display:flex;flex-grow:1;overflow:hidden;z-index:1}._mat-animation-noopable.mat-tab-list{transition:none;animation:none}.mat-tab-label{height:48px;padding:0 24px;cursor:pointer;box-sizing:border-box;opacity:.6;min-width:160px;text-align:center;display:inline-flex;justify-content:center;align-items:center;white-space:nowrap;position:relative}.mat-tab-label:focus{outline:none}.mat-tab-label:focus:not(.mat-tab-disabled){opacity:1}.cdk-high-contrast-active .mat-tab-label:focus{outline:dotted 2px;outline-offset:-2px}.mat-tab-label.mat-tab-disabled{cursor:default}.cdk-high-contrast-active .mat-tab-label.mat-tab-disabled{opacity:.5}.mat-tab-label .mat-tab-label-content{display:inline-flex;justify-content:center;align-items:center;white-space:nowrap}.cdk-high-contrast-active .mat-tab-label{opacity:1}@media(max-width: 599px){.mat-tab-label{min-width:72px}}\\n\"] }]\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1$1.ViewportRuler }, { type: i1.Directionality, decorators: [{\n type: Optional\n }] }, { type: i0.NgZone }, { type: i3.Platform }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }];\n }, propDecorators: { _items: [{\n type: ContentChildren,\n args: [MatTabLabelWrapper, { descendants: false }]\n }], _inkBar: [{\n type: ViewChild,\n args: [MatInkBar, { static: true }]\n }], _tabListContainer: [{\n type: ViewChild,\n args: ['tabListContainer', { static: true }]\n }], _tabList: [{\n type: ViewChild,\n args: ['tabList', { static: true }]\n }], _tabListInner: [{\n type: ViewChild,\n args: ['tabListInner', { static: true }]\n }], _nextPaginator: [{\n type: ViewChild,\n args: ['nextPaginator']\n }], _previousPaginator: [{\n type: ViewChild,\n args: ['previousPaginator']\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/** Used to generate unique ID's for each tab component */\nlet nextId = 0;\n/** A simple change event emitted on focus or selection changes. */\nclass MatTabChangeEvent {\n}\n// Boilerplate for applying mixins to MatTabGroup.\n/** @docs-private */\nconst _MatTabGroupMixinBase = mixinColor(mixinDisableRipple(class {\n constructor(_elementRef) {\n this._elementRef = _elementRef;\n }\n}), 'primary');\n/**\n * Base class with all of the `MatTabGroupBase` functionality.\n * @docs-private\n */\nclass _MatTabGroupBase extends _MatTabGroupMixinBase {\n constructor(elementRef, _changeDetectorRef, defaultConfig, _animationMode) {\n var _a;\n super(elementRef);\n this._changeDetectorRef = _changeDetectorRef;\n this._animationMode = _animationMode;\n /** All of the tabs that belong to the group. */\n this._tabs = new QueryList();\n /** The tab index that should be selected after the content has been checked. */\n this._indexToSelect = 0;\n /** Index of the tab that was focused last. */\n this._lastFocusedTabIndex = null;\n /** Snapshot of the height of the tab body wrapper before another tab is activated. */\n this._tabBodyWrapperHeight = 0;\n /** Subscription to tabs being added/removed. */\n this._tabsSubscription = Subscription.EMPTY;\n /** Subscription to changes in the tab labels. */\n this._tabLabelSubscription = Subscription.EMPTY;\n this._selectedIndex = null;\n /** Position of the tab header. */\n this.headerPosition = 'above';\n /** Output to enable support for two-way binding on `[(selectedIndex)]` */\n this.selectedIndexChange = new EventEmitter();\n /** Event emitted when focus has changed within a tab group. */\n this.focusChange = new EventEmitter();\n /** Event emitted when the body animation has completed */\n this.animationDone = new EventEmitter();\n /** Event emitted when the tab selection has changed. */\n this.selectedTabChange = new EventEmitter(true);\n this._groupId = nextId++;\n this.animationDuration =\n defaultConfig && defaultConfig.animationDuration ? defaultConfig.animationDuration : '500ms';\n this.disablePagination =\n defaultConfig && defaultConfig.disablePagination != null\n ? defaultConfig.disablePagination\n : false;\n this.dynamicHeight =\n defaultConfig && defaultConfig.dynamicHeight != null ? defaultConfig.dynamicHeight : false;\n this.contentTabIndex = (_a = defaultConfig === null || defaultConfig === void 0 ? void 0 : defaultConfig.contentTabIndex) !== null && _a !== void 0 ? _a : null;\n }\n /** Whether the tab group should grow to the size of the active tab. */\n get dynamicHeight() {\n return this._dynamicHeight;\n }\n set dynamicHeight(value) {\n this._dynamicHeight = coerceBooleanProperty(value);\n }\n /** The index of the active tab. */\n get selectedIndex() {\n return this._selectedIndex;\n }\n set selectedIndex(value) {\n this._indexToSelect = coerceNumberProperty(value, null);\n }\n /** Duration for the tab animation. Will be normalized to milliseconds if no units are set. */\n get animationDuration() {\n return this._animationDuration;\n }\n set animationDuration(value) {\n this._animationDuration = /^\\d+$/.test(value + '') ? value + 'ms' : value;\n }\n /**\n * `tabindex` to be set on the inner element that wraps the tab content. Can be used for improved\n * accessibility when the tab does not have focusable elements or if it has scrollable content.\n * The `tabindex` will be removed automatically for inactive tabs.\n * Read more at https://www.w3.org/TR/wai-aria-practices/examples/tabs/tabs-2/tabs.html\n */\n get contentTabIndex() {\n return this._contentTabIndex;\n }\n set contentTabIndex(value) {\n this._contentTabIndex = coerceNumberProperty(value, null);\n }\n /** Background color of the tab group. */\n get backgroundColor() {\n return this._backgroundColor;\n }\n set backgroundColor(value) {\n const nativeElement = this._elementRef.nativeElement;\n nativeElement.classList.remove(`mat-background-${this.backgroundColor}`);\n if (value) {\n nativeElement.classList.add(`mat-background-${value}`);\n }\n this._backgroundColor = value;\n }\n /**\n * After the content is checked, this component knows what tabs have been defined\n * and what the selected index should be. This is where we can know exactly what position\n * each tab should be in according to the new selected index, and additionally we know how\n * a new selected tab should transition in (from the left or right).\n */\n ngAfterContentChecked() {\n // Don't clamp the `indexToSelect` immediately in the setter because it can happen that\n // the amount of tabs changes before the actual change detection runs.\n const indexToSelect = (this._indexToSelect = this._clampTabIndex(this._indexToSelect));\n // If there is a change in selected index, emit a change event. Should not trigger if\n // the selected index has not yet been initialized.\n if (this._selectedIndex != indexToSelect) {\n const isFirstRun = this._selectedIndex == null;\n if (!isFirstRun) {\n this.selectedTabChange.emit(this._createChangeEvent(indexToSelect));\n // Preserve the height so page doesn't scroll up during tab change.\n // Fixes https://stackblitz.com/edit/mat-tabs-scroll-page-top-on-tab-change\n const wrapper = this._tabBodyWrapper.nativeElement;\n wrapper.style.minHeight = wrapper.clientHeight + 'px';\n }\n // Changing these values after change detection has run\n // since the checked content may contain references to them.\n Promise.resolve().then(() => {\n this._tabs.forEach((tab, index) => (tab.isActive = index === indexToSelect));\n if (!isFirstRun) {\n this.selectedIndexChange.emit(indexToSelect);\n // Clear the min-height, this was needed during tab change to avoid\n // unnecessary scrolling.\n this._tabBodyWrapper.nativeElement.style.minHeight = '';\n }\n });\n }\n // Setup the position for each tab and optionally setup an origin on the next selected tab.\n this._tabs.forEach((tab, index) => {\n tab.position = index - indexToSelect;\n // If there is already a selected tab, then set up an origin for the next selected tab\n // if it doesn't have one already.\n if (this._selectedIndex != null && tab.position == 0 && !tab.origin) {\n tab.origin = indexToSelect - this._selectedIndex;\n }\n });\n if (this._selectedIndex !== indexToSelect) {\n this._selectedIndex = indexToSelect;\n this._lastFocusedTabIndex = null;\n this._changeDetectorRef.markForCheck();\n }\n }\n ngAfterContentInit() {\n this._subscribeToAllTabChanges();\n this._subscribeToTabLabels();\n // Subscribe to changes in the amount of tabs, in order to be\n // able to re-render the content as new tabs are added or removed.\n this._tabsSubscription = this._tabs.changes.subscribe(() => {\n const indexToSelect = this._clampTabIndex(this._indexToSelect);\n // Maintain the previously-selected tab if a new tab is added or removed and there is no\n // explicit change that selects a different tab.\n if (indexToSelect === this._selectedIndex) {\n const tabs = this._tabs.toArray();\n let selectedTab;\n for (let i = 0; i < tabs.length; i++) {\n if (tabs[i].isActive) {\n // Assign both to the `_indexToSelect` and `_selectedIndex` so we don't fire a changed\n // event, otherwise the consumer may end up in an infinite loop in some edge cases like\n // adding a tab within the `selectedIndexChange` event.\n this._indexToSelect = this._selectedIndex = i;\n this._lastFocusedTabIndex = null;\n selectedTab = tabs[i];\n break;\n }\n }\n // If we haven't found an active tab and a tab exists at the selected index, it means\n // that the active tab was swapped out. Since this won't be picked up by the rendering\n // loop in `ngAfterContentChecked`, we need to sync it up manually.\n if (!selectedTab && tabs[indexToSelect]) {\n Promise.resolve().then(() => {\n tabs[indexToSelect].isActive = true;\n this.selectedTabChange.emit(this._createChangeEvent(indexToSelect));\n });\n }\n }\n this._changeDetectorRef.markForCheck();\n });\n }\n /** Listens to changes in all of the tabs. */\n _subscribeToAllTabChanges() {\n // Since we use a query with `descendants: true` to pick up the tabs, we may end up catching\n // some that are inside of nested tab groups. We filter them out manually by checking that\n // the closest group to the tab is the current one.\n this._allTabs.changes.pipe(startWith(this._allTabs)).subscribe((tabs) => {\n this._tabs.reset(tabs.filter(tab => {\n return tab._closestTabGroup === this || !tab._closestTabGroup;\n }));\n this._tabs.notifyOnChanges();\n });\n }\n ngOnDestroy() {\n this._tabs.destroy();\n this._tabsSubscription.unsubscribe();\n this._tabLabelSubscription.unsubscribe();\n }\n /** Re-aligns the ink bar to the selected tab element. */\n realignInkBar() {\n if (this._tabHeader) {\n this._tabHeader._alignInkBarToSelectedTab();\n }\n }\n /**\n * Recalculates the tab group's pagination dimensions.\n *\n * WARNING: Calling this method can be very costly in terms of performance. It should be called\n * as infrequently as possible from outside of the Tabs component as it causes a reflow of the\n * page.\n */\n updatePagination() {\n if (this._tabHeader) {\n this._tabHeader.updatePagination();\n }\n }\n /**\n * Sets focus to a particular tab.\n * @param index Index of the tab to be focused.\n */\n focusTab(index) {\n const header = this._tabHeader;\n if (header) {\n header.focusIndex = index;\n }\n }\n _focusChanged(index) {\n this._lastFocusedTabIndex = index;\n this.focusChange.emit(this._createChangeEvent(index));\n }\n _createChangeEvent(index) {\n const event = new MatTabChangeEvent();\n event.index = index;\n if (this._tabs && this._tabs.length) {\n event.tab = this._tabs.toArray()[index];\n }\n return event;\n }\n /**\n * Subscribes to changes in the tab labels. This is needed, because the @Input for the label is\n * on the MatTab component, whereas the data binding is inside the MatTabGroup. In order for the\n * binding to be updated, we need to subscribe to changes in it and trigger change detection\n * manually.\n */\n _subscribeToTabLabels() {\n if (this._tabLabelSubscription) {\n this._tabLabelSubscription.unsubscribe();\n }\n this._tabLabelSubscription = merge(...this._tabs.map(tab => tab._stateChanges)).subscribe(() => this._changeDetectorRef.markForCheck());\n }\n /** Clamps the given index to the bounds of 0 and the tabs length. */\n _clampTabIndex(index) {\n // Note the `|| 0`, which ensures that values like NaN can't get through\n // and which would otherwise throw the component into an infinite loop\n // (since Math.max(NaN, 0) === NaN).\n return Math.min(this._tabs.length - 1, Math.max(index || 0, 0));\n }\n /** Returns a unique id for each tab label element */\n _getTabLabelId(i) {\n return `mat-tab-label-${this._groupId}-${i}`;\n }\n /** Returns a unique id for each tab content element */\n _getTabContentId(i) {\n return `mat-tab-content-${this._groupId}-${i}`;\n }\n /**\n * Sets the height of the body wrapper to the height of the activating tab if dynamic\n * height property is true.\n */\n _setTabBodyWrapperHeight(tabHeight) {\n if (!this._dynamicHeight || !this._tabBodyWrapperHeight) {\n return;\n }\n const wrapper = this._tabBodyWrapper.nativeElement;\n wrapper.style.height = this._tabBodyWrapperHeight + 'px';\n // This conditional forces the browser to paint the height so that\n // the animation to the new height can have an origin.\n if (this._tabBodyWrapper.nativeElement.offsetHeight) {\n wrapper.style.height = tabHeight + 'px';\n }\n }\n /** Removes the height of the tab body wrapper. */\n _removeTabBodyWrapperHeight() {\n const wrapper = this._tabBodyWrapper.nativeElement;\n this._tabBodyWrapperHeight = wrapper.clientHeight;\n wrapper.style.height = '';\n this.animationDone.emit();\n }\n /** Handle click events, setting new selected index if appropriate. */\n _handleClick(tab, tabHeader, index) {\n if (!tab.disabled) {\n this.selectedIndex = tabHeader.focusIndex = index;\n }\n }\n /** Retrieves the tabindex for the tab. */\n _getTabIndex(tab, index) {\n var _a;\n if (tab.disabled) {\n return null;\n }\n const targetIndex = (_a = this._lastFocusedTabIndex) !== null && _a !== void 0 ? _a : this.selectedIndex;\n return index === targetIndex ? 0 : -1;\n }\n /** Callback for when the focused state of a tab has changed. */\n _tabFocusChanged(focusOrigin, index) {\n // Mouse/touch focus happens during the `mousedown`/`touchstart` phase which\n // can cause the tab to be moved out from under the pointer, interrupting the\n // click sequence (see #21898). We don't need to scroll the tab into view for\n // such cases anyway, because it will be done when the tab becomes selected.\n if (focusOrigin && focusOrigin !== 'mouse' && focusOrigin !== 'touch') {\n this._tabHeader.focusIndex = index;\n }\n }\n}\n_MatTabGroupBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: _MatTabGroupBase, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: MAT_TABS_CONFIG, optional: true }, { token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\n_MatTabGroupBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: _MatTabGroupBase, inputs: { dynamicHeight: \"dynamicHeight\", selectedIndex: \"selectedIndex\", headerPosition: \"headerPosition\", animationDuration: \"animationDuration\", contentTabIndex: \"contentTabIndex\", disablePagination: \"disablePagination\", backgroundColor: \"backgroundColor\" }, outputs: { selectedIndexChange: \"selectedIndexChange\", focusChange: \"focusChange\", animationDone: \"animationDone\", selectedTabChange: \"selectedTabChange\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: _MatTabGroupBase, decorators: [{\n type: Directive\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_TABS_CONFIG]\n }, {\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }];\n }, propDecorators: { dynamicHeight: [{\n type: Input\n }], selectedIndex: [{\n type: Input\n }], headerPosition: [{\n type: Input\n }], animationDuration: [{\n type: Input\n }], contentTabIndex: [{\n type: Input\n }], disablePagination: [{\n type: Input\n }], backgroundColor: [{\n type: Input\n }], selectedIndexChange: [{\n type: Output\n }], focusChange: [{\n type: Output\n }], animationDone: [{\n type: Output\n }], selectedTabChange: [{\n type: Output\n }] } });\n/**\n * Material design tab-group component. Supports basic tab pairs (label + content) and includes\n * animated ink-bar, keyboard navigation, and screen reader.\n * See: https://material.io/design/components/tabs.html\n */\nclass MatTabGroup extends _MatTabGroupBase {\n constructor(elementRef, changeDetectorRef, defaultConfig, animationMode) {\n super(elementRef, changeDetectorRef, defaultConfig, animationMode);\n }\n}\nMatTabGroup.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTabGroup, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: MAT_TABS_CONFIG, optional: true }, { token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nMatTabGroup.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatTabGroup, selector: \"mat-tab-group\", inputs: { color: \"color\", disableRipple: \"disableRipple\" }, host: { properties: { \"class.mat-tab-group-dynamic-height\": \"dynamicHeight\", \"class.mat-tab-group-inverted-header\": \"headerPosition === \\\"below\\\"\" }, classAttribute: \"mat-tab-group\" }, providers: [\n {\n provide: MAT_TAB_GROUP,\n useExisting: MatTabGroup,\n },\n ], queries: [{ propertyName: \"_allTabs\", predicate: MatTab, descendants: true }], viewQueries: [{ propertyName: \"_tabBodyWrapper\", first: true, predicate: [\"tabBodyWrapper\"], descendants: true }, { propertyName: \"_tabHeader\", first: true, predicate: [\"tabHeader\"], descendants: true }], exportAs: [\"matTabGroup\"], usesInheritance: true, ngImport: i0, template: \"\\n
    \\n\\n\\n
    \\n \\n \\n \\n \\n\\n \\n {{tab.textLabel}}\\n
    \\n
    \\n
    \\n\\n\\n \\n \\n\\n\", styles: [\".mat-tab-group{display:flex;flex-direction:column;max-width:100%}.mat-tab-group.mat-tab-group-inverted-header{flex-direction:column-reverse}.mat-tab-label{height:48px;padding:0 24px;cursor:pointer;box-sizing:border-box;opacity:.6;min-width:160px;text-align:center;display:inline-flex;justify-content:center;align-items:center;white-space:nowrap;position:relative}.mat-tab-label:focus{outline:none}.mat-tab-label:focus:not(.mat-tab-disabled){opacity:1}.cdk-high-contrast-active .mat-tab-label:focus{outline:dotted 2px;outline-offset:-2px}.mat-tab-label.mat-tab-disabled{cursor:default}.cdk-high-contrast-active .mat-tab-label.mat-tab-disabled{opacity:.5}.mat-tab-label .mat-tab-label-content{display:inline-flex;justify-content:center;align-items:center;white-space:nowrap}.cdk-high-contrast-active .mat-tab-label{opacity:1}@media(max-width: 599px){.mat-tab-label{padding:0 12px}}@media(max-width: 959px){.mat-tab-label{padding:0 12px}}.mat-tab-group[mat-stretch-tabs]>.mat-tab-header .mat-tab-label{flex-basis:0;flex-grow:1}.mat-tab-body-wrapper{position:relative;overflow:hidden;display:flex;transition:height 500ms cubic-bezier(0.35, 0, 0.25, 1)}._mat-animation-noopable.mat-tab-body-wrapper{transition:none;animation:none}.mat-tab-body{top:0;left:0;right:0;bottom:0;position:absolute;display:block;overflow:hidden;outline:0;flex-basis:100%}.mat-tab-body.mat-tab-body-active{position:relative;overflow-x:hidden;overflow-y:auto;z-index:1;flex-grow:1}.mat-tab-group.mat-tab-group-dynamic-height .mat-tab-body.mat-tab-body-active{overflow-y:hidden}\\n\"], components: [{ type: MatTabHeader, selector: \"mat-tab-header\", inputs: [\"selectedIndex\"], outputs: [\"selectFocusedIndex\", \"indexFocused\"] }, { type: MatTabBody, selector: \"mat-tab-body\" }], directives: [{ type: i3$1.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }, { type: MatTabLabelWrapper, selector: \"[matTabLabelWrapper]\", inputs: [\"disabled\"] }, { type: i4.MatRipple, selector: \"[mat-ripple], [matRipple]\", inputs: [\"matRippleColor\", \"matRippleUnbounded\", \"matRippleCentered\", \"matRippleRadius\", \"matRippleAnimation\", \"matRippleDisabled\", \"matRippleTrigger\"], exportAs: [\"matRipple\"] }, { type: i7.CdkMonitorFocus, selector: \"[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]\", outputs: [\"cdkFocusChange\"] }, { type: i3$1.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i3$1.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i7$1.CdkPortalOutlet, selector: \"[cdkPortalOutlet]\", inputs: [\"cdkPortalOutlet\"], outputs: [\"attached\"], exportAs: [\"cdkPortalOutlet\"] }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTabGroup, decorators: [{\n type: Component,\n args: [{ selector: 'mat-tab-group', exportAs: 'matTabGroup', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.Default, inputs: ['color', 'disableRipple'], providers: [\n {\n provide: MAT_TAB_GROUP,\n useExisting: MatTabGroup,\n },\n ], host: {\n 'class': 'mat-tab-group',\n '[class.mat-tab-group-dynamic-height]': 'dynamicHeight',\n '[class.mat-tab-group-inverted-header]': 'headerPosition === \"below\"',\n }, template: \"\\n
    \\n\\n\\n
    \\n \\n \\n \\n \\n\\n \\n {{tab.textLabel}}\\n
    \\n
    \\n
    \\n\\n\\n \\n \\n\\n\", styles: [\".mat-tab-group{display:flex;flex-direction:column;max-width:100%}.mat-tab-group.mat-tab-group-inverted-header{flex-direction:column-reverse}.mat-tab-label{height:48px;padding:0 24px;cursor:pointer;box-sizing:border-box;opacity:.6;min-width:160px;text-align:center;display:inline-flex;justify-content:center;align-items:center;white-space:nowrap;position:relative}.mat-tab-label:focus{outline:none}.mat-tab-label:focus:not(.mat-tab-disabled){opacity:1}.cdk-high-contrast-active .mat-tab-label:focus{outline:dotted 2px;outline-offset:-2px}.mat-tab-label.mat-tab-disabled{cursor:default}.cdk-high-contrast-active .mat-tab-label.mat-tab-disabled{opacity:.5}.mat-tab-label .mat-tab-label-content{display:inline-flex;justify-content:center;align-items:center;white-space:nowrap}.cdk-high-contrast-active .mat-tab-label{opacity:1}@media(max-width: 599px){.mat-tab-label{padding:0 12px}}@media(max-width: 959px){.mat-tab-label{padding:0 12px}}.mat-tab-group[mat-stretch-tabs]>.mat-tab-header .mat-tab-label{flex-basis:0;flex-grow:1}.mat-tab-body-wrapper{position:relative;overflow:hidden;display:flex;transition:height 500ms cubic-bezier(0.35, 0, 0.25, 1)}._mat-animation-noopable.mat-tab-body-wrapper{transition:none;animation:none}.mat-tab-body{top:0;left:0;right:0;bottom:0;position:absolute;display:block;overflow:hidden;outline:0;flex-basis:100%}.mat-tab-body.mat-tab-body-active{position:relative;overflow-x:hidden;overflow-y:auto;z-index:1;flex-grow:1}.mat-tab-group.mat-tab-group-dynamic-height .mat-tab-body.mat-tab-body-active{overflow-y:hidden}\\n\"] }]\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_TABS_CONFIG]\n }, {\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }];\n }, propDecorators: { _allTabs: [{\n type: ContentChildren,\n args: [MatTab, { descendants: true }]\n }], _tabBodyWrapper: [{\n type: ViewChild,\n args: ['tabBodyWrapper']\n }], _tabHeader: [{\n type: ViewChild,\n args: ['tabHeader']\n }] } });\n\n// Increasing integer for generating unique ids for tab nav components.\nlet nextUniqueId = 0;\n/**\n * Base class with all of the `MatTabNav` functionality.\n * @docs-private\n */\nclass _MatTabNavBase extends MatPaginatedTabHeader {\n constructor(elementRef, dir, ngZone, changeDetectorRef, viewportRuler, platform, animationMode) {\n super(elementRef, changeDetectorRef, viewportRuler, dir, ngZone, platform, animationMode);\n this._disableRipple = false;\n /** Theme color of the nav bar. */\n this.color = 'primary';\n }\n /** Background color of the tab nav. */\n get backgroundColor() {\n return this._backgroundColor;\n }\n set backgroundColor(value) {\n const classList = this._elementRef.nativeElement.classList;\n classList.remove(`mat-background-${this.backgroundColor}`);\n if (value) {\n classList.add(`mat-background-${value}`);\n }\n this._backgroundColor = value;\n }\n /** Whether the ripple effect is disabled or not. */\n get disableRipple() {\n return this._disableRipple;\n }\n set disableRipple(value) {\n this._disableRipple = coerceBooleanProperty(value);\n }\n _itemSelected() {\n // noop\n }\n ngAfterContentInit() {\n // We need this to run before the `changes` subscription in parent to ensure that the\n // selectedIndex is up-to-date by the time the super class starts looking for it.\n this._items.changes.pipe(startWith(null), takeUntil(this._destroyed)).subscribe(() => {\n this.updateActiveLink();\n });\n super.ngAfterContentInit();\n }\n /** Notifies the component that the active link has been changed. */\n updateActiveLink() {\n if (!this._items) {\n return;\n }\n const items = this._items.toArray();\n for (let i = 0; i < items.length; i++) {\n if (items[i].active) {\n this.selectedIndex = i;\n this._changeDetectorRef.markForCheck();\n if (this.tabPanel) {\n this.tabPanel._activeTabId = items[i].id;\n }\n return;\n }\n }\n // The ink bar should hide itself if no items are active.\n this.selectedIndex = -1;\n this._inkBar.hide();\n }\n _getRole() {\n return this.tabPanel ? 'tablist' : this._elementRef.nativeElement.getAttribute('role');\n }\n}\n_MatTabNavBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: _MatTabNavBase, deps: [{ token: i0.ElementRef }, { token: i1.Directionality, optional: true }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i1$1.ViewportRuler }, { token: i3.Platform }, { token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\n_MatTabNavBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: _MatTabNavBase, inputs: { backgroundColor: \"backgroundColor\", disableRipple: \"disableRipple\", color: \"color\", tabPanel: \"tabPanel\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: _MatTabNavBase, decorators: [{\n type: Directive\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: i1.Directionality, decorators: [{\n type: Optional\n }] }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i1$1.ViewportRuler }, { type: i3.Platform }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }];\n }, propDecorators: { backgroundColor: [{\n type: Input\n }], disableRipple: [{\n type: Input\n }], color: [{\n type: Input\n }], tabPanel: [{\n type: Input\n }] } });\n/**\n * Navigation component matching the styles of the tab group header.\n * Provides anchored navigation with animated ink bar.\n */\nclass MatTabNav extends _MatTabNavBase {\n constructor(elementRef, dir, ngZone, changeDetectorRef, viewportRuler, platform, animationMode) {\n super(elementRef, dir, ngZone, changeDetectorRef, viewportRuler, platform, animationMode);\n }\n}\nMatTabNav.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTabNav, deps: [{ token: i0.ElementRef }, { token: i1.Directionality, optional: true }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: i1$1.ViewportRuler }, { token: i3.Platform }, { token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Component });\nMatTabNav.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatTabNav, selector: \"[mat-tab-nav-bar]\", inputs: { color: \"color\" }, host: { properties: { \"attr.role\": \"_getRole()\", \"class.mat-tab-header-pagination-controls-enabled\": \"_showPaginationControls\", \"class.mat-tab-header-rtl\": \"_getLayoutDirection() == 'rtl'\", \"class.mat-primary\": \"color !== \\\"warn\\\" && color !== \\\"accent\\\"\", \"class.mat-accent\": \"color === \\\"accent\\\"\", \"class.mat-warn\": \"color === \\\"warn\\\"\" }, classAttribute: \"mat-tab-nav-bar mat-tab-header\" }, queries: [{ propertyName: \"_items\", predicate: i0.forwardRef(function () { return MatTabLink; }), descendants: true }], viewQueries: [{ propertyName: \"_inkBar\", first: true, predicate: MatInkBar, descendants: true, static: true }, { propertyName: \"_tabListContainer\", first: true, predicate: [\"tabListContainer\"], descendants: true, static: true }, { propertyName: \"_tabList\", first: true, predicate: [\"tabList\"], descendants: true, static: true }, { propertyName: \"_tabListInner\", first: true, predicate: [\"tabListInner\"], descendants: true, static: true }, { propertyName: \"_nextPaginator\", first: true, predicate: [\"nextPaginator\"], descendants: true }, { propertyName: \"_previousPaginator\", first: true, predicate: [\"previousPaginator\"], descendants: true }], exportAs: [\"matTabNavBar\", \"matTabNav\"], usesInheritance: true, ngImport: i0, template: \"\\n\\n\\n\\n\\n\\n\", styles: [\".mat-tab-header{display:flex;overflow:hidden;position:relative;flex-shrink:0}.mat-tab-header-pagination{-webkit-user-select:none;user-select:none;position:relative;display:none;justify-content:center;align-items:center;min-width:32px;cursor:pointer;z-index:2;-webkit-tap-highlight-color:transparent;touch-action:none;box-sizing:content-box;background:none;border:none;outline:0;padding:0}.mat-tab-header-pagination::-moz-focus-inner{border:0}.mat-tab-header-pagination-controls-enabled .mat-tab-header-pagination{display:flex}.mat-tab-header-pagination-before,.mat-tab-header-rtl .mat-tab-header-pagination-after{padding-left:4px}.mat-tab-header-pagination-before .mat-tab-header-pagination-chevron,.mat-tab-header-rtl .mat-tab-header-pagination-after .mat-tab-header-pagination-chevron{transform:rotate(-135deg)}.mat-tab-header-rtl .mat-tab-header-pagination-before,.mat-tab-header-pagination-after{padding-right:4px}.mat-tab-header-rtl .mat-tab-header-pagination-before .mat-tab-header-pagination-chevron,.mat-tab-header-pagination-after .mat-tab-header-pagination-chevron{transform:rotate(45deg)}.mat-tab-header-pagination-chevron{border-style:solid;border-width:2px 2px 0 0;height:8px;width:8px}.mat-tab-header-pagination-disabled{box-shadow:none;cursor:default}.mat-tab-list{flex-grow:1;position:relative;transition:transform 500ms cubic-bezier(0.35, 0, 0.25, 1)}.mat-tab-links{display:flex}[mat-align-tabs=center]>.mat-tab-link-container .mat-tab-links{justify-content:center}[mat-align-tabs=end]>.mat-tab-link-container .mat-tab-links{justify-content:flex-end}.mat-ink-bar{position:absolute;bottom:0;height:2px;transition:500ms cubic-bezier(0.35, 0, 0.25, 1)}._mat-animation-noopable.mat-ink-bar{transition:none;animation:none}.mat-tab-group-inverted-header .mat-ink-bar{bottom:auto;top:0}.cdk-high-contrast-active .mat-ink-bar{outline:solid 2px;height:0}.mat-tab-link-container{display:flex;flex-grow:1;overflow:hidden;z-index:1}.mat-tab-link{height:48px;padding:0 24px;cursor:pointer;box-sizing:border-box;opacity:.6;min-width:160px;text-align:center;display:inline-flex;justify-content:center;align-items:center;white-space:nowrap;vertical-align:top;text-decoration:none;position:relative;overflow:hidden;-webkit-tap-highlight-color:transparent}.mat-tab-link:focus{outline:none}.mat-tab-link:focus:not(.mat-tab-disabled){opacity:1}.cdk-high-contrast-active .mat-tab-link:focus{outline:dotted 2px;outline-offset:-2px}.mat-tab-link.mat-tab-disabled{cursor:default}.cdk-high-contrast-active .mat-tab-link.mat-tab-disabled{opacity:.5}.mat-tab-link .mat-tab-label-content{display:inline-flex;justify-content:center;align-items:center;white-space:nowrap}.cdk-high-contrast-active .mat-tab-link{opacity:1}[mat-stretch-tabs] .mat-tab-link{flex-basis:0;flex-grow:1}.mat-tab-link.mat-tab-disabled{pointer-events:none}@media(max-width: 599px){.mat-tab-link{min-width:72px}}\\n\"], directives: [{ type: i4.MatRipple, selector: \"[mat-ripple], [matRipple]\", inputs: [\"matRippleColor\", \"matRippleUnbounded\", \"matRippleCentered\", \"matRippleRadius\", \"matRippleAnimation\", \"matRippleDisabled\", \"matRippleTrigger\"], exportAs: [\"matRipple\"] }, { type: i5.CdkObserveContent, selector: \"[cdkObserveContent]\", inputs: [\"cdkObserveContentDisabled\", \"debounce\"], outputs: [\"cdkObserveContent\"], exportAs: [\"cdkObserveContent\"] }, { type: MatInkBar, selector: \"mat-ink-bar\" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTabNav, decorators: [{\n type: Component,\n args: [{ selector: '[mat-tab-nav-bar]', exportAs: 'matTabNavBar, matTabNav', inputs: ['color'], host: {\n '[attr.role]': '_getRole()',\n 'class': 'mat-tab-nav-bar mat-tab-header',\n '[class.mat-tab-header-pagination-controls-enabled]': '_showPaginationControls',\n '[class.mat-tab-header-rtl]': \"_getLayoutDirection() == 'rtl'\",\n '[class.mat-primary]': 'color !== \"warn\" && color !== \"accent\"',\n '[class.mat-accent]': 'color === \"accent\"',\n '[class.mat-warn]': 'color === \"warn\"',\n }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.Default, template: \"\\n\\n\\n\\n\\n\\n\", styles: [\".mat-tab-header{display:flex;overflow:hidden;position:relative;flex-shrink:0}.mat-tab-header-pagination{-webkit-user-select:none;user-select:none;position:relative;display:none;justify-content:center;align-items:center;min-width:32px;cursor:pointer;z-index:2;-webkit-tap-highlight-color:transparent;touch-action:none;box-sizing:content-box;background:none;border:none;outline:0;padding:0}.mat-tab-header-pagination::-moz-focus-inner{border:0}.mat-tab-header-pagination-controls-enabled .mat-tab-header-pagination{display:flex}.mat-tab-header-pagination-before,.mat-tab-header-rtl .mat-tab-header-pagination-after{padding-left:4px}.mat-tab-header-pagination-before .mat-tab-header-pagination-chevron,.mat-tab-header-rtl .mat-tab-header-pagination-after .mat-tab-header-pagination-chevron{transform:rotate(-135deg)}.mat-tab-header-rtl .mat-tab-header-pagination-before,.mat-tab-header-pagination-after{padding-right:4px}.mat-tab-header-rtl .mat-tab-header-pagination-before .mat-tab-header-pagination-chevron,.mat-tab-header-pagination-after .mat-tab-header-pagination-chevron{transform:rotate(45deg)}.mat-tab-header-pagination-chevron{border-style:solid;border-width:2px 2px 0 0;height:8px;width:8px}.mat-tab-header-pagination-disabled{box-shadow:none;cursor:default}.mat-tab-list{flex-grow:1;position:relative;transition:transform 500ms cubic-bezier(0.35, 0, 0.25, 1)}.mat-tab-links{display:flex}[mat-align-tabs=center]>.mat-tab-link-container .mat-tab-links{justify-content:center}[mat-align-tabs=end]>.mat-tab-link-container .mat-tab-links{justify-content:flex-end}.mat-ink-bar{position:absolute;bottom:0;height:2px;transition:500ms cubic-bezier(0.35, 0, 0.25, 1)}._mat-animation-noopable.mat-ink-bar{transition:none;animation:none}.mat-tab-group-inverted-header .mat-ink-bar{bottom:auto;top:0}.cdk-high-contrast-active .mat-ink-bar{outline:solid 2px;height:0}.mat-tab-link-container{display:flex;flex-grow:1;overflow:hidden;z-index:1}.mat-tab-link{height:48px;padding:0 24px;cursor:pointer;box-sizing:border-box;opacity:.6;min-width:160px;text-align:center;display:inline-flex;justify-content:center;align-items:center;white-space:nowrap;vertical-align:top;text-decoration:none;position:relative;overflow:hidden;-webkit-tap-highlight-color:transparent}.mat-tab-link:focus{outline:none}.mat-tab-link:focus:not(.mat-tab-disabled){opacity:1}.cdk-high-contrast-active .mat-tab-link:focus{outline:dotted 2px;outline-offset:-2px}.mat-tab-link.mat-tab-disabled{cursor:default}.cdk-high-contrast-active .mat-tab-link.mat-tab-disabled{opacity:.5}.mat-tab-link .mat-tab-label-content{display:inline-flex;justify-content:center;align-items:center;white-space:nowrap}.cdk-high-contrast-active .mat-tab-link{opacity:1}[mat-stretch-tabs] .mat-tab-link{flex-basis:0;flex-grow:1}.mat-tab-link.mat-tab-disabled{pointer-events:none}@media(max-width: 599px){.mat-tab-link{min-width:72px}}\\n\"] }]\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: i1.Directionality, decorators: [{\n type: Optional\n }] }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: i1$1.ViewportRuler }, { type: i3.Platform }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }];\n }, propDecorators: { _items: [{\n type: ContentChildren,\n args: [forwardRef(() => MatTabLink), { descendants: true }]\n }], _inkBar: [{\n type: ViewChild,\n args: [MatInkBar, { static: true }]\n }], _tabListContainer: [{\n type: ViewChild,\n args: ['tabListContainer', { static: true }]\n }], _tabList: [{\n type: ViewChild,\n args: ['tabList', { static: true }]\n }], _tabListInner: [{\n type: ViewChild,\n args: ['tabListInner', { static: true }]\n }], _nextPaginator: [{\n type: ViewChild,\n args: ['nextPaginator']\n }], _previousPaginator: [{\n type: ViewChild,\n args: ['previousPaginator']\n }] } });\n// Boilerplate for applying mixins to MatTabLink.\nconst _MatTabLinkMixinBase = mixinTabIndex(mixinDisableRipple(mixinDisabled(class {\n})));\n/** Base class with all of the `MatTabLink` functionality. */\nclass _MatTabLinkBase extends _MatTabLinkMixinBase {\n constructor(_tabNavBar, \n /** @docs-private */ elementRef, globalRippleOptions, tabIndex, _focusMonitor, animationMode) {\n super();\n this._tabNavBar = _tabNavBar;\n this.elementRef = elementRef;\n this._focusMonitor = _focusMonitor;\n /** Whether the tab link is active or not. */\n this._isActive = false;\n /** Unique id for the tab. */\n this.id = `mat-tab-link-${nextUniqueId++}`;\n this.rippleConfig = globalRippleOptions || {};\n this.tabIndex = parseInt(tabIndex) || 0;\n if (animationMode === 'NoopAnimations') {\n this.rippleConfig.animation = { enterDuration: 0, exitDuration: 0 };\n }\n }\n /** Whether the link is active. */\n get active() {\n return this._isActive;\n }\n set active(value) {\n const newValue = coerceBooleanProperty(value);\n if (newValue !== this._isActive) {\n this._isActive = newValue;\n this._tabNavBar.updateActiveLink();\n }\n }\n /**\n * Whether ripples are disabled on interaction.\n * @docs-private\n */\n get rippleDisabled() {\n return (this.disabled ||\n this.disableRipple ||\n this._tabNavBar.disableRipple ||\n !!this.rippleConfig.disabled);\n }\n /** Focuses the tab link. */\n focus() {\n this.elementRef.nativeElement.focus();\n }\n ngAfterViewInit() {\n this._focusMonitor.monitor(this.elementRef);\n }\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this.elementRef);\n }\n _handleFocus() {\n // Since we allow navigation through tabbing in the nav bar, we\n // have to update the focused index whenever the link receives focus.\n this._tabNavBar.focusIndex = this._tabNavBar._items.toArray().indexOf(this);\n }\n _handleKeydown(event) {\n if (this._tabNavBar.tabPanel && event.keyCode === SPACE) {\n this.elementRef.nativeElement.click();\n }\n }\n _getAriaControls() {\n var _a;\n return this._tabNavBar.tabPanel\n ? (_a = this._tabNavBar.tabPanel) === null || _a === void 0 ? void 0 : _a.id\n : this.elementRef.nativeElement.getAttribute('aria-controls');\n }\n _getAriaSelected() {\n if (this._tabNavBar.tabPanel) {\n return this.active ? 'true' : 'false';\n }\n else {\n return this.elementRef.nativeElement.getAttribute('aria-selected');\n }\n }\n _getAriaCurrent() {\n return this.active && !this._tabNavBar.tabPanel ? 'page' : null;\n }\n _getRole() {\n return this._tabNavBar.tabPanel ? 'tab' : this.elementRef.nativeElement.getAttribute('role');\n }\n _getTabIndex() {\n if (this._tabNavBar.tabPanel) {\n return this._isActive ? 0 : -1;\n }\n else {\n return this.tabIndex;\n }\n }\n}\n_MatTabLinkBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: _MatTabLinkBase, deps: [{ token: _MatTabNavBase }, { token: i0.ElementRef }, { token: MAT_RIPPLE_GLOBAL_OPTIONS, optional: true }, { token: 'tabindex', attribute: true }, { token: i7.FocusMonitor }, { token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\n_MatTabLinkBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: _MatTabLinkBase, inputs: { active: \"active\", id: \"id\" }, usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: _MatTabLinkBase, decorators: [{\n type: Directive\n }], ctorParameters: function () {\n return [{ type: _MatTabNavBase }, { type: i0.ElementRef }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_RIPPLE_GLOBAL_OPTIONS]\n }] }, { type: undefined, decorators: [{\n type: Attribute,\n args: ['tabindex']\n }] }, { type: i7.FocusMonitor }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }];\n }, propDecorators: { active: [{\n type: Input\n }], id: [{\n type: Input\n }] } });\n/**\n * Link inside of a `mat-tab-nav-bar`.\n */\nclass MatTabLink extends _MatTabLinkBase {\n constructor(tabNavBar, elementRef, ngZone, platform, globalRippleOptions, tabIndex, focusMonitor, animationMode) {\n super(tabNavBar, elementRef, globalRippleOptions, tabIndex, focusMonitor, animationMode);\n this._tabLinkRipple = new RippleRenderer(this, ngZone, elementRef, platform);\n this._tabLinkRipple.setupTriggerEvents(elementRef.nativeElement);\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n this._tabLinkRipple._removeTriggerEvents();\n }\n}\nMatTabLink.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTabLink, deps: [{ token: MatTabNav }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i3.Platform }, { token: MAT_RIPPLE_GLOBAL_OPTIONS, optional: true }, { token: 'tabindex', attribute: true }, { token: i7.FocusMonitor }, { token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nMatTabLink.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatTabLink, selector: \"[mat-tab-link], [matTabLink]\", inputs: { disabled: \"disabled\", disableRipple: \"disableRipple\", tabIndex: \"tabIndex\" }, host: { listeners: { \"focus\": \"_handleFocus()\", \"keydown\": \"_handleKeydown($event)\" }, properties: { \"attr.aria-controls\": \"_getAriaControls()\", \"attr.aria-current\": \"_getAriaCurrent()\", \"attr.aria-disabled\": \"disabled\", \"attr.aria-selected\": \"_getAriaSelected()\", \"attr.id\": \"id\", \"attr.tabIndex\": \"_getTabIndex()\", \"attr.role\": \"_getRole()\", \"class.mat-tab-disabled\": \"disabled\", \"class.mat-tab-label-active\": \"active\" }, classAttribute: \"mat-tab-link mat-focus-indicator\" }, exportAs: [\"matTabLink\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTabLink, decorators: [{\n type: Directive,\n args: [{\n selector: '[mat-tab-link], [matTabLink]',\n exportAs: 'matTabLink',\n inputs: ['disabled', 'disableRipple', 'tabIndex'],\n host: {\n 'class': 'mat-tab-link mat-focus-indicator',\n '[attr.aria-controls]': '_getAriaControls()',\n '[attr.aria-current]': '_getAriaCurrent()',\n '[attr.aria-disabled]': 'disabled',\n '[attr.aria-selected]': '_getAriaSelected()',\n '[attr.id]': 'id',\n '[attr.tabIndex]': '_getTabIndex()',\n '[attr.role]': '_getRole()',\n '[class.mat-tab-disabled]': 'disabled',\n '[class.mat-tab-label-active]': 'active',\n '(focus)': '_handleFocus()',\n '(keydown)': '_handleKeydown($event)',\n },\n }]\n }], ctorParameters: function () {\n return [{ type: MatTabNav }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i3.Platform }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_RIPPLE_GLOBAL_OPTIONS]\n }] }, { type: undefined, decorators: [{\n type: Attribute,\n args: ['tabindex']\n }] }, { type: i7.FocusMonitor }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }];\n } });\n/**\n * Tab panel component associated with MatTabNav.\n */\nclass MatTabNavPanel {\n constructor() {\n /** Unique id for the tab panel. */\n this.id = `mat-tab-nav-panel-${nextUniqueId++}`;\n }\n}\nMatTabNavPanel.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTabNavPanel, deps: [], target: i0.ɵɵFactoryTarget.Component });\nMatTabNavPanel.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: MatTabNavPanel, selector: \"mat-tab-nav-panel\", inputs: { id: \"id\" }, host: { attributes: { \"role\": \"tabpanel\" }, properties: { \"attr.aria-labelledby\": \"_activeTabId\", \"attr.id\": \"id\" }, classAttribute: \"mat-tab-nav-panel\" }, exportAs: [\"matTabNavPanel\"], ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTabNavPanel, decorators: [{\n type: Component,\n args: [{\n selector: 'mat-tab-nav-panel',\n exportAs: 'matTabNavPanel',\n template: '',\n host: {\n '[attr.aria-labelledby]': '_activeTabId',\n '[attr.id]': 'id',\n 'class': 'mat-tab-nav-panel',\n 'role': 'tabpanel',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n }]\n }], propDecorators: { id: [{\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 */\nclass MatTabsModule {\n}\nMatTabsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTabsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nMatTabsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTabsModule, declarations: [MatTabGroup,\n MatTabLabel,\n MatTab,\n MatInkBar,\n MatTabLabelWrapper,\n MatTabNav,\n MatTabNavPanel,\n MatTabLink,\n MatTabBody,\n MatTabBodyPortal,\n MatTabHeader,\n MatTabContent], imports: [CommonModule,\n MatCommonModule,\n PortalModule,\n MatRippleModule,\n ObserversModule,\n A11yModule], exports: [MatCommonModule,\n MatTabGroup,\n MatTabLabel,\n MatTab,\n MatTabNav,\n MatTabNavPanel,\n MatTabLink,\n MatTabContent] });\nMatTabsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTabsModule, imports: [[\n CommonModule,\n MatCommonModule,\n PortalModule,\n MatRippleModule,\n ObserversModule,\n A11yModule,\n ], MatCommonModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MatTabsModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [\n CommonModule,\n MatCommonModule,\n PortalModule,\n MatRippleModule,\n ObserversModule,\n A11yModule,\n ],\n // Don't export all components because some are only to be used internally.\n exports: [\n MatCommonModule,\n MatTabGroup,\n MatTabLabel,\n MatTab,\n MatTabNav,\n MatTabNavPanel,\n MatTabLink,\n MatTabContent,\n ],\n declarations: [\n MatTabGroup,\n MatTabLabel,\n MatTab,\n MatInkBar,\n MatTabLabelWrapper,\n MatTabNav,\n MatTabNavPanel,\n MatTabLink,\n MatTabBody,\n MatTabBodyPortal,\n MatTabHeader,\n MatTabContent,\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/**\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/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_TAB, MAT_TABS_CONFIG, MAT_TAB_GROUP, MatInkBar, MatTab, MatTabBody, MatTabBodyPortal, MatTabChangeEvent, MatTabContent, MatTabGroup, MatTabHeader, MatTabLabel, MatTabLabelWrapper, MatTabLink, MatTabNav, MatTabNavPanel, MatTabsModule, _MAT_INK_BAR_POSITIONER, _MatTabBodyBase, _MatTabGroupBase, _MatTabHeaderBase, _MatTabLinkBase, _MatTabNavBase, matTabsAnimations };\n","import { __decorate, __param } from 'tslib';\nimport { InjectionToken, Optional, Inject, ɵɵdefineInjectable, ɵɵinject, Injectable, EventEmitter, ElementRef, ChangeDetectorRef, Input, Output, HostListener, Directive, NgModule } from '@angular/core';\nimport { Platform, PlatformModule } from '@angular/cdk/platform';\nimport { DOCUMENT } from '@angular/common';\nimport { Meta } from '@angular/platform-browser';\nimport { Observable, of, EMPTY, BehaviorSubject, Subject } from 'rxjs';\nimport { tap, delay, take, catchError, takeUntil } from 'rxjs/operators';\n\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/platform-browser';\nimport * as ɵngcc2 from '@angular/cdk/platform';\nconst SHARE_BUTTONS_CONFIG = new InjectionToken('shareButtonsConfig');\nclass IShareButton {\n}\nvar SharerMethod;\n(function (SharerMethod) {\n SharerMethod[\"Anchor\"] = \"anchor\";\n SharerMethod[\"Window\"] = \"window\";\n})(SharerMethod || (SharerMethod = {}));\n\n/**\n * Simple object check.\n */\nfunction isObject(item) {\n return (item && typeof item === 'object' && !Array.isArray(item));\n}\n/**\n * Deep merge two objects.\n */\nfunction mergeDeep(target, ...sources) {\n if (!sources.length) {\n return target;\n }\n const source = sources.shift();\n if (isObject(target) && isObject(source)) {\n for (const key in source) {\n if (isObject(source[key])) {\n if (!target[key]) {\n Object.assign(target, { [key]: {} });\n }\n mergeDeep(target[key], source[key]);\n }\n else {\n Object.assign(target, { [key]: source[key] });\n }\n }\n }\n return mergeDeep(target, ...sources);\n}\n/** Returns a valid URL or falls back to current URL */\nfunction getValidUrl(url, fallbackUrl) {\n if (url) {\n const r = /(http|https):\\/\\/(\\w+:{0,1}\\w*@)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%@!\\-\\/]))?/;\n if (r.test(url)) {\n return url;\n }\n console.warn(`[ShareButtons]: Sharing link '${url}' is invalid!`);\n }\n return fallbackUrl;\n}\nfunction printPage() {\n return new Observable((sub) => document.defaultView.print());\n}\nfunction copyToClipboard({ params, data, platform, updater }) {\n return of(null).pipe(tap(() => {\n const textArea = document.createElement('textarea');\n textArea.value = decodeURIComponent(params.url);\n document.body.appendChild(textArea);\n // highlight TextArea to copy the sharing link\n if (platform.IOS) {\n const range = document.createRange();\n range.selectNodeContents(textArea);\n const selection = document.defaultView.getSelection();\n selection.removeAllRanges();\n selection.addRange(range);\n textArea.readOnly = true;\n textArea.setSelectionRange(0, 999999);\n }\n else {\n textArea.select();\n }\n document.execCommand('copy');\n document.body.removeChild(textArea);\n // Disable copy button\n updater.next({ icon: data.successIcon, text: data.successText, disabled: true });\n }), delay(data.delay), tap(() => updater.next({ icon: data.icon, text: data.text, disabled: false })), take(1), catchError(err => {\n console.warn('Copy link failed!', err.message);\n return EMPTY;\n }));\n}\n\nconst ɵ0 = (p) => {\n return p.description ? `${p.description}\\r\\n${p.url}` : p.url;\n};\n// Create message body that includes the sharing link used for Email, SMS and WhatsApp buttons\nconst linkInDescription = {\n description: ɵ0\n};\nconst ɵ1 = {\n text: 'Copy link',\n icon: ['fas', 'link'],\n successText: 'Copied',\n successIcon: ['fas', 'check'],\n delay: 2000\n};\nconst SHARE_BUTTONS = {\n facebook: {\n type: 'facebook',\n text: 'Facebook',\n ariaLabel: 'Share on Facebook',\n icon: ['fab', 'facebook-f'],\n color: '#4267B2',\n share: {\n desktop: 'https://www.facebook.com/sharer/sharer.php?'\n },\n params: {\n url: 'u'\n }\n },\n twitter: {\n type: 'twitter',\n text: 'Twitter',\n ariaLabel: 'Share on Twitter',\n icon: ['fab', 'twitter'],\n color: '#00acee',\n share: {\n desktop: 'https://twitter.com/intent/tweet?'\n },\n params: {\n url: 'url',\n description: 'text',\n tags: 'hashtags',\n via: 'via'\n }\n },\n linkedin: {\n type: 'linkedin',\n text: 'LinkedIn',\n ariaLabel: 'Share on LinkedIn',\n icon: ['fab', 'linkedin-in'],\n color: '#006fa6',\n share: {\n desktop: 'https://www.linkedin.com/shareArticle?'\n },\n params: {\n url: 'url',\n title: 'title',\n description: 'summary'\n }\n },\n pinterest: {\n type: 'pinterest',\n text: 'Pinterest',\n ariaLabel: 'Share on Pinterest',\n icon: ['fab', 'pinterest-p'],\n color: '#BD091D',\n share: {\n desktop: 'https://in.pinterest.com/pin/create/button/?'\n },\n params: {\n url: 'url',\n description: 'description',\n image: 'media'\n }\n },\n reddit: {\n type: 'reddit',\n text: 'Reddit',\n ariaLabel: 'Share on Reddit',\n icon: ['fab', 'reddit-alien'],\n color: '#FF4006',\n share: {\n desktop: 'https://www.reddit.com/submit?'\n },\n params: {\n url: 'url',\n title: 'title'\n }\n },\n tumblr: {\n type: 'tumblr',\n text: 'Tumblr',\n ariaLabel: 'Share on Tumblr',\n icon: ['fab', 'tumblr'],\n color: '#36465D',\n share: {\n desktop: 'https://tumblr.com/widgets/share/tool?'\n },\n params: {\n url: 'canonicalUrl',\n description: 'caption',\n tags: 'tags'\n }\n },\n mix: {\n type: 'mix',\n text: 'Mix',\n ariaLabel: 'Share on Mix',\n icon: ['fab', 'mix'],\n color: '#eb4924',\n share: {\n desktop: 'https://mix.com/add?'\n },\n params: {\n url: 'url'\n }\n },\n vk: {\n type: 'vk',\n text: 'VKontakte',\n ariaLabel: 'Share on VKontakte',\n icon: ['fab', 'vk'],\n color: '#4C75A3',\n share: {\n desktop: 'https://vk.com/share.php?'\n },\n params: {\n url: 'url'\n }\n },\n telegram: {\n type: 'telegram',\n text: 'Telegram',\n ariaLabel: 'Share on Telegram',\n icon: ['fab', 'telegram-plane'],\n color: '#0088cc',\n share: {\n desktop: 'https://t.me/share/url?'\n },\n params: {\n url: 'url',\n description: 'text'\n }\n },\n messenger: {\n type: 'messenger',\n text: 'Messenger',\n ariaLabel: 'Share on Messenger',\n icon: ['fab', 'facebook-messenger'],\n color: '#0080FF',\n share: {\n android: 'fb-messenger://share/?',\n ios: 'fb-messenger://share/?'\n },\n params: {\n url: 'link'\n }\n },\n whatsapp: {\n type: 'whatsapp',\n text: 'WhatsApp',\n ariaLabel: 'Share on WhatsApp',\n icon: ['fab', 'whatsapp'],\n color: '#25D366',\n share: {\n desktop: 'https://web.whatsapp.com/send?',\n android: 'whatsapp://send?',\n ios: 'https://api.whatsapp.com/send?'\n },\n params: {\n description: 'text'\n },\n paramsFunc: linkInDescription\n },\n xing: {\n type: 'xing',\n text: 'Xing',\n ariaLabel: 'Share on Xing',\n icon: ['fab', 'xing'],\n color: '#006567',\n share: {\n desktop: 'https://www.xing.com/app/user?op=share&'\n },\n params: {\n url: 'url'\n }\n },\n line: {\n type: 'line',\n text: 'Line',\n ariaLabel: 'Share on Line',\n icon: ['fab', 'line'],\n color: '#00b900',\n share: {\n desktop: 'https://social-plugins.line.me/lineit/share?'\n },\n params: {\n url: 'url'\n }\n },\n sms: {\n type: 'sms',\n text: 'SMS',\n ariaLabel: 'Share link via SMS',\n icon: ['fas', 'sms'],\n color: '#20c16c',\n share: {\n desktop: 'sms:?',\n ios: 'sms:&'\n },\n params: {\n description: 'body'\n },\n paramsFunc: linkInDescription\n },\n email: {\n type: 'email',\n text: 'Email',\n ariaLabel: 'Share link via email',\n icon: ['fas', 'envelope'],\n color: '#FF961C',\n share: {\n desktop: 'mailto:?'\n },\n params: {\n title: 'subject',\n description: 'body'\n },\n paramsFunc: linkInDescription\n },\n print: {\n type: 'print',\n text: 'Print',\n ariaLabel: 'Print page',\n icon: ['fas', 'print'],\n color: '#765AA2',\n func: printPage\n },\n copy: {\n type: 'copy',\n text: 'Copy link',\n ariaLabel: 'Copy link',\n icon: ['fas', 'link'],\n color: '#607D8B',\n data: ɵ1,\n func: copyToClipboard\n }\n};\n\nlet ShareService = class ShareService {\n constructor(config, _document) {\n this._document = _document;\n /** Global config that applies on all share buttons in the app */\n this.config = {\n sharerMethod: SharerMethod.Anchor,\n sharerTarget: '_blank',\n windowObj: this._document.defaultView,\n windowFuncName: 'open',\n prop: SHARE_BUTTONS,\n theme: 'default',\n include: [],\n exclude: [],\n size: 0,\n autoSetMeta: true,\n windowWidth: 800,\n windowHeight: 500,\n moreButtonIcon: 'ellipsis-h',\n lessButtonIcon: 'minus'\n };\n /** Stream that emits when config changes */\n this.config$ = new BehaviorSubject(this.config);\n if (config) {\n this.setConfig(config);\n }\n }\n /**\n * Share buttons properties, used to get the text, color and icon of each button.\n */\n get prop() {\n return this.config.prop;\n }\n get windowSize() {\n return `width=${this.config.windowWidth}, height=${this.config.windowHeight}`;\n }\n setConfig(config) {\n this.config = mergeDeep(this.config, config);\n this.config$.next(this.config);\n }\n addButton(name, props) {\n this.setConfig({\n prop: {\n [name]: props\n }\n });\n }\n};\nShareService.ɵfac = function ShareService_Factory(t) { return new (t || ShareService)(ɵngcc0.ɵɵinject(SHARE_BUTTONS_CONFIG, 8), ɵngcc0.ɵɵinject(DOCUMENT)); };\nShareService.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [SHARE_BUTTONS_CONFIG,] }] },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\n];\nShareService.ɵprov = ɵɵdefineInjectable({ factory: function ShareService_Factory() { return new ShareService(ɵɵinject(SHARE_BUTTONS_CONFIG, 8), ɵɵinject(DOCUMENT)); }, token: ShareService, providedIn: \"root\" });\nShareService = __decorate([ __param(0, Optional()), __param(0, Inject(SHARE_BUTTONS_CONFIG)), __param(1, Inject(DOCUMENT))\n], ShareService);\n\nlet ShareDirective = class ShareDirective {\n constructor(_el, _meta, _platform, _share, _cd, _document) {\n this._meta = _meta;\n this._platform = _platform;\n this._share = _share;\n this._cd = _cd;\n this._document = _document;\n /** Stream that emits when button is destroyed */\n this._destroyed = new Subject();\n /** Stream that emit when share button need to be updated */\n this._updater = new Subject();\n /** Set meta tags from document head, useful when SEO is supported */\n this.autoSetMeta = this._share.config.autoSetMeta;\n /** Sharing link */\n this.url = this._share.config.url;\n /** Sets the title parameter */\n this.title = this._share.config.title;\n /** Sets the description parameter */\n this.description = this._share.config.description;\n /** Sets the image parameter for sharing on Pinterest */\n this.image = this._share.config.image;\n /** Sets the tags parameter for sharing on Twitter and Tumblr */\n this.tags = this._share.config.tags;\n /** Stream that emits when share dialog is opened */\n this.opened = new EventEmitter();\n /** Stream that emits when share dialog is closed */\n this.closed = new EventEmitter();\n this._el = _el.nativeElement;\n }\n /**\n * Share the link\n */\n share() {\n // Avoid SSR error\n if (this._platform.isBrowser && this.shareButton) {\n // Prepare sharer url params\n const params = this.autoSetMeta ? this.getParamsFromMetaTags() : this.getParamsFromInputs();\n // Prepare share button click\n const click = this.shareButton.share ? this.open(params) : this.shareButton.func({\n params,\n data: this.shareButton.data,\n platform: this._platform,\n updater: this._updater\n });\n click.pipe(takeUntil(this._destroyed)).subscribe();\n }\n else {\n console.warn(`${this.text} button is not compatible on this Platform`);\n }\n }\n ngOnInit() {\n // This stream is mainly used to update the copy button text and icon when it is being clicked\n this._updater.pipe(tap((data) => {\n this.icon = data.icon;\n this.text = data.text;\n this._el.style.pointerEvents = data.disabled ? 'none' : 'auto';\n this._cd.markForCheck();\n }), takeUntil(this._destroyed)).subscribe();\n }\n ngOnChanges(changes) {\n // Avoid SSR error\n if (this._platform.isBrowser) {\n // Create share button\n if (this._shareButtonChanged(changes.shareButtonName)) {\n this._createShareButton();\n }\n // Prepare share url\n if (this._urlChanged(changes.url)) {\n this.url = getValidUrl(this.autoSetMeta\n ? this.url || this._getMetaTagContent('og:url')\n : this.url, this._document.defaultView.location.href);\n }\n }\n }\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n }\n _createShareButton() {\n const button = this._share.config.prop[this.shareButtonName];\n if (button) {\n // Set share button properties\n this.shareButton = button;\n // Remove previous button class\n this._el.classList.remove(`sb-${this._buttonClass}`);\n // Add new button class\n this._el.classList.add(`sb-${this.shareButtonName}`);\n // Set button css color variable\n this._el.style.setProperty('--button-color', this.shareButton.color);\n // Keep a copy of the class for future replacement\n this._buttonClass = this.shareButtonName;\n this.color = this.shareButton.color;\n this.text = this.shareButton.text;\n this.icon = this.shareButton.icon;\n // Set aria-label attribute\n this._el.setAttribute('aria-label', button.ariaLabel);\n }\n else {\n console.error(`[ShareButtons]: The share button '${this.shareButtonName}' does not exist!`);\n }\n }\n /**\n * Get meta tag content\n */\n _getMetaTagContent(key) {\n const metaUsingProperty = this._meta.getTag(`property=\"${key}\"`);\n if (metaUsingProperty) {\n return metaUsingProperty.getAttribute('content');\n }\n const metaUsingName = this._meta.getTag(`name=\"${key}\"`);\n if (metaUsingName) {\n return metaUsingName.getAttribute('content');\n }\n }\n _shareButtonChanged(change) {\n return change && (change.firstChange || change.previousValue !== change.currentValue);\n }\n _urlChanged(change) {\n return !this.url || (change && change.previousValue !== change.currentValue);\n }\n /**\n * Get share params from meta tags first and fallback to user inputs\n */\n getParamsFromMetaTags() {\n return {\n url: this.url,\n title: this.title || this._getMetaTagContent('og:title'),\n description: this.description || this._getMetaTagContent('og:description'),\n image: this.image || this._getMetaTagContent('og:image'),\n via: this._share.config.twitterAccount,\n tags: this.tags\n };\n }\n /**\n * Get share params from user inputs\n */\n getParamsFromInputs() {\n return {\n url: this.url,\n title: this.title,\n description: this.description,\n image: this.image,\n tags: this.tags,\n via: this._share.config.twitterAccount,\n };\n }\n open(params) {\n // Set sharer link based on user's device\n let sharerLink;\n if (this._platform.IOS && this.shareButton.share.ios) {\n sharerLink = this.shareButton.share.ios;\n }\n else if (this._platform.ANDROID && this.shareButton.share.android) {\n sharerLink = this.shareButton.share.android;\n }\n else {\n sharerLink = this.shareButton.share.desktop;\n }\n if (sharerLink) {\n // Set sharer link params\n const finalUrl = sharerLink + this._serializeParams(params);\n // Log the sharer link in debug mode\n if (this._share.config.debug) {\n console.log('[DEBUG SHARE BUTTON]: ', finalUrl);\n }\n // Open the share window\n // There are two methods available for opening the share window:\n // 1. Using a real anchor\n // 2. Using window.open\n const sharerMethod = this.shareButton.method || this._share.config.sharerMethod;\n const sharerTarget = this.shareButton.target || this._share.config.sharerTarget;\n switch (sharerMethod) {\n case SharerMethod.Anchor:\n const linkElement = this._document.createElement('a');\n // Make it open in a new tab/window (depends on user's browser configuration)\n linkElement.setAttribute('target', sharerTarget);\n // Prevent security vulnerability https://medium.com/@jitbit/target-blank-the-most-underestimated-vulnerability-ever-96e328301f4c\n linkElement.setAttribute('rel', 'noopener noreferrer');\n linkElement.href = finalUrl;\n linkElement.click();\n linkElement.remove();\n break;\n case SharerMethod.Window:\n // Open link using Window object\n const openWindow = this._share.config.windowObj[this._share.config.windowFuncName];\n const popUpWindow = openWindow(finalUrl, sharerTarget, this._share.windowSize);\n // Prevent security vulnerability https://medium.com/@jitbit/target-blank-the-most-underestimated-vulnerability-ever-96e328301f4c\n this._share.config.windowObj.opener = null;\n // Resolve when share dialog is closed\n if (popUpWindow) {\n return new Observable((sub) => {\n const pollTimer = this._document.defaultView.setInterval(() => {\n if (popUpWindow.closed) {\n this._document.defaultView.clearInterval(pollTimer);\n // Emit when share windows is closed\n this.closed.emit(this.shareButtonName);\n sub.next();\n sub.complete();\n }\n }, 200);\n });\n }\n break;\n }\n // Emit when share window is opened\n this.opened.emit(this.shareButtonName);\n }\n return EMPTY;\n }\n _serializeParams(params) {\n return Object.entries(this.shareButton.params)\n .map(([key, value]) => {\n // Check if share button param has a map function\n const paramFunc = this.shareButton.paramsFunc ? this.shareButton.paramsFunc[key] : null;\n if (params[key] || paramFunc) {\n const paramValue = paramFunc ? paramFunc(params) : params[key];\n return `${value}=${encodeURIComponent(paramValue)}`;\n }\n return '';\n })\n .join('&');\n }\n};\nShareDirective.ɵfac = function ShareDirective_Factory(t) { return new (t || ShareDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.Meta), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.Platform), ɵngcc0.ɵɵdirectiveInject(ShareService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(DOCUMENT)); };\nShareDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ShareDirective, selectors: [[\"\", \"shareButton\", \"\"]], hostBindings: function ShareDirective_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function ShareDirective_click_HostBindingHandler() { return ctx.share(); });\n } }, inputs: { autoSetMeta: \"autoSetMeta\", url: \"url\", title: \"title\", description: \"description\", image: \"image\", tags: \"tags\", shareButtonName: [\"shareButton\", \"shareButtonName\"] }, outputs: { opened: \"opened\", closed: \"closed\" }, exportAs: [\"shareButton\"], features: [ɵngcc0.ɵɵNgOnChangesFeature] });\nShareDirective.ctorParameters = () => [\n { type: ElementRef },\n { type: Meta },\n { type: Platform },\n { type: ShareService },\n { type: ChangeDetectorRef },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\n];\n__decorate([\n Input('shareButton')\n], ShareDirective.prototype, \"shareButtonName\", void 0);\n__decorate([\n Input()\n], ShareDirective.prototype, \"autoSetMeta\", void 0);\n__decorate([\n Input()\n], ShareDirective.prototype, \"url\", void 0);\n__decorate([\n Input()\n], ShareDirective.prototype, \"title\", void 0);\n__decorate([\n Input()\n], ShareDirective.prototype, \"description\", void 0);\n__decorate([\n Input()\n], ShareDirective.prototype, \"image\", void 0);\n__decorate([\n Input()\n], ShareDirective.prototype, \"tags\", void 0);\n__decorate([\n Output()\n], ShareDirective.prototype, \"opened\", void 0);\n__decorate([\n Output()\n], ShareDirective.prototype, \"closed\", void 0);\n__decorate([\n HostListener('click')\n], ShareDirective.prototype, \"share\", null);\nShareDirective = __decorate([ __param(5, Inject(DOCUMENT))\n], ShareDirective);\n\nvar ShareModule_1;\nlet ShareModule = ShareModule_1 = class ShareModule {\n static withConfig(config) {\n return {\n ngModule: ShareModule_1,\n providers: [\n { provide: SHARE_BUTTONS_CONFIG, useValue: config }\n ]\n };\n }\n};\nShareModule.ɵfac = function ShareModule_Factory(t) { return new (t || ShareModule)(); };\nShareModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: ShareModule });\nShareModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[\n PlatformModule\n ]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ShareService, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [SHARE_BUTTONS_CONFIG]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ShareDirective, [{\n type: Directive,\n args: [{\n selector: '[shareButton]',\n exportAs: 'shareButton'\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc1.Meta }, { type: ɵngcc2.Platform }, { type: ShareService }, { type: ɵngcc0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, { autoSetMeta: [{\n type: Input\n }], url: [{\n type: Input\n }], title: [{\n type: Input\n }], description: [{\n type: Input\n }], image: [{\n type: Input\n }], tags: [{\n type: Input\n }], opened: [{\n type: Output\n }], closed: [{\n type: Output\n }], \n /**\n * Share the link\n */\n share: [{\n type: HostListener,\n args: ['click']\n }], shareButtonName: [{\n type: Input,\n args: ['shareButton']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ShareModule, [{\n type: NgModule,\n args: [{\n imports: [\n PlatformModule\n ],\n declarations: [\n ShareDirective\n ],\n exports: [\n ShareDirective\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ShareModule, { declarations: function () { return [ShareDirective]; }, imports: function () { return [PlatformModule]; }, exports: function () { return [ShareDirective]; } }); })();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { IShareButton, SHARE_BUTTONS, SHARE_BUTTONS_CONFIG, ShareDirective, ShareModule, ShareService, SharerMethod, ɵ0, ɵ1 };\n\n","import { __decorate } from 'tslib';\nimport { EventEmitter, Input, Output, HostBinding, Component, ChangeDetectionStrategy, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\nimport { ShareService, SHARE_BUTTONS_CONFIG, ShareModule } from 'ngx-sharebuttons';\n\n// Uncomment the following line in development mode\n// import { ShareService, ShareDirective } from '../../src/public-api';\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from 'ngx-sharebuttons';\nimport * as ɵngcc2 from '@angular/common';\nimport * as ɵngcc3 from '@fortawesome/angular-fontawesome';\n\nfunction ShareButton_div_2_div_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 6);\n ɵngcc0.ɵɵelement(1, \"fa-icon\", 7);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext(2);\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"icon\", ctx_r2.icon || _r0.icon)(\"fixedWidth\", true);\n} }\nfunction ShareButton_div_2_div_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 8);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext(2);\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r3.text || _r0.text, \" \");\n} }\nfunction ShareButton_div_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 3);\n ɵngcc0.ɵɵtemplate(1, ShareButton_div_2_div_1_Template, 2, 2, \"div\", 4);\n ɵngcc0.ɵɵtemplate(2, ShareButton_div_2_div_2_Template, 2, 1, \"div\", 5);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r1.showIcon && _r0.icon);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r1.showText);\n} }\nlet ShareButton = class ShareButton {\n constructor(_share) {\n this._share = _share;\n /** Show button icon */\n this.showIcon = true;\n /** Show button text */\n this.showText = false;\n /** Button size */\n this.size = this._share.config.size;\n /** Button theme */\n this.theme = this._share.config.theme;\n /** Stream that emits when share dialog is opened */\n this.opened = new EventEmitter();\n /** Stream that emits when share dialog is closed */\n this.closed = new EventEmitter();\n }\n /** Set theme as button class */\n get buttonClass() {\n return `sb-button sb-${this.theme}`;\n }\n};\nShareButton.ɵfac = function ShareButton_Factory(t) { return new (t || ShareButton)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.ShareService)); };\nShareButton.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ShareButton, selectors: [[\"share-button\"]], hostVars: 2, hostBindings: function ShareButton_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassMap(ctx.buttonClass);\n } }, inputs: { showIcon: \"showIcon\", showText: \"showText\", size: \"size\", theme: \"theme\", button: \"button\", url: \"url\", title: \"title\", description: \"description\", image: \"image\", tags: \"tags\", autoSetMeta: \"autoSetMeta\", text: \"text\", icon: \"icon\", disabled: \"disabled\" }, outputs: { opened: \"opened\", closed: \"closed\" }, decls: 3, vars: 15, consts: [[\"type\", \"button\", 1, \"sb-wrapper\", 3, \"shareButton\", \"url\", \"image\", \"title\", \"description\", \"tags\", \"autoSetMeta\", \"disabled\", \"opened\", \"closed\"], [\"btn\", \"shareButton\"], [\"class\", \"sb-content\", 4, \"ngIf\"], [1, \"sb-content\"], [\"class\", \"sb-icon\", 4, \"ngIf\"], [\"class\", \"sb-text\", 4, \"ngIf\"], [1, \"sb-icon\"], [3, \"icon\", \"fixedWidth\"], [1, \"sb-text\"]], template: function ShareButton_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"button\", 0, 1);\n ɵngcc0.ɵɵlistener(\"opened\", function ShareButton_Template_button_opened_0_listener($event) { return ctx.opened.emit($event); })(\"closed\", function ShareButton_Template_button_closed_0_listener($event) { return ctx.closed.emit($event); });\n ɵngcc0.ɵɵtemplate(2, ShareButton_div_2_Template, 3, 2, \"div\", 2);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵstyleProp(\"font-size\", (1 + ctx.size / 20) * 14, \"px\");\n ɵngcc0.ɵɵclassProp(\"sb-show-icon\", ctx.showIcon)(\"sb-show-text\", ctx.showText);\n ɵngcc0.ɵɵproperty(\"shareButton\", ctx.button)(\"url\", ctx.url)(\"image\", ctx.image)(\"title\", ctx.title)(\"description\", ctx.description)(\"tags\", ctx.tags)(\"autoSetMeta\", ctx.autoSetMeta)(\"disabled\", ctx.disabled);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", _r0);\n } }, directives: [ɵngcc1.ShareDirective, ɵngcc2.NgIf, ɵngcc3.FaIconComponent], styles: [\"[_nghost-%COMP%]{--sb-margin:0.3125em}\"], changeDetection: 0 });\nShareButton.ctorParameters = () => [\n { type: ShareService }\n];\n__decorate([\n Input()\n], ShareButton.prototype, \"button\", void 0);\n__decorate([\n Input()\n], ShareButton.prototype, \"url\", void 0);\n__decorate([\n Input()\n], ShareButton.prototype, \"title\", void 0);\n__decorate([\n Input()\n], ShareButton.prototype, \"description\", void 0);\n__decorate([\n Input()\n], ShareButton.prototype, \"image\", void 0);\n__decorate([\n Input()\n], ShareButton.prototype, \"tags\", void 0);\n__decorate([\n Input()\n], ShareButton.prototype, \"autoSetMeta\", void 0);\n__decorate([\n Input()\n], ShareButton.prototype, \"showIcon\", void 0);\n__decorate([\n Input()\n], ShareButton.prototype, \"showText\", void 0);\n__decorate([\n Input()\n], ShareButton.prototype, \"text\", void 0);\n__decorate([\n Input()\n], ShareButton.prototype, \"icon\", void 0);\n__decorate([\n Input()\n], ShareButton.prototype, \"size\", void 0);\n__decorate([\n Input()\n], ShareButton.prototype, \"theme\", void 0);\n__decorate([\n Input()\n], ShareButton.prototype, \"disabled\", void 0);\n__decorate([\n Output()\n], ShareButton.prototype, \"opened\", void 0);\n__decorate([\n Output()\n], ShareButton.prototype, \"closed\", void 0);\n__decorate([\n HostBinding('class')\n], ShareButton.prototype, \"buttonClass\", null);\n\nvar ShareButtonModule_1;\nlet ShareButtonModule = ShareButtonModule_1 = class ShareButtonModule {\n static withConfig(config) {\n return {\n ngModule: ShareButtonModule_1,\n providers: [{ provide: SHARE_BUTTONS_CONFIG, useValue: config }]\n };\n }\n};\nShareButtonModule.ɵfac = function ShareButtonModule_Factory(t) { return new (t || ShareButtonModule)(); };\nShareButtonModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: ShareButtonModule });\nShareButtonModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[\n ShareModule,\n FontAwesomeModule,\n CommonModule\n ], ShareModule,\n FontAwesomeModule] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ShareButton, [{\n type: Component,\n args: [{\n selector: 'share-button',\n template: \"\\n\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: [\":host{--sb-margin:0.3125em}\"]\n }]\n }], function () { return [{ type: ɵngcc1.ShareService }]; }, { showIcon: [{\n type: Input\n }], showText: [{\n type: Input\n }], size: [{\n type: Input\n }], theme: [{\n type: Input\n }], opened: [{\n type: Output\n }], closed: [{\n type: Output\n }], buttonClass: [{\n type: HostBinding,\n args: ['class']\n }], button: [{\n type: Input\n }], url: [{\n type: Input\n }], title: [{\n type: Input\n }], description: [{\n type: Input\n }], image: [{\n type: Input\n }], tags: [{\n type: Input\n }], autoSetMeta: [{\n type: Input\n }], text: [{\n type: Input\n }], icon: [{\n type: Input\n }], disabled: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ShareButtonModule, [{\n type: NgModule,\n args: [{\n declarations: [\n ShareButton\n ],\n imports: [\n ShareModule,\n FontAwesomeModule,\n CommonModule\n ],\n exports: [\n ShareModule,\n FontAwesomeModule,\n ShareButton\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ShareButtonModule, { declarations: function () { return [ShareButton]; }, imports: function () { return [ShareModule,\n FontAwesomeModule,\n CommonModule]; }, exports: function () { return [ShareModule,\n FontAwesomeModule, ShareButton]; } }); })();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ShareButton, ShareButtonModule };\n\n","import { __decorate } from 'tslib';\nimport { EventEmitter, Input, Output, Component, ChangeDetectionStrategy, ElementRef, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { SHARE_BUTTONS, ShareService, SHARE_BUTTONS_CONFIG } from 'ngx-sharebuttons';\nimport { ShareButtonModule } from 'ngx-sharebuttons/button';\nimport { BehaviorSubject, Subscription } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from 'ngx-sharebuttons';\nimport * as ɵngcc2 from '@angular/common';\nimport * as ɵngcc3 from 'ngx-sharebuttons/button';\nimport * as ɵngcc4 from '@fortawesome/angular-fontawesome';\n\nfunction ShareButtons_div_0_share_button_1_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"share-button\", 3);\n ɵngcc0.ɵɵlistener(\"opened\", function ShareButtons_div_0_share_button_1_Template_share_button_opened_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(2); return ctx_r5.opened.emit($event); })(\"closed\", function ShareButtons_div_0_share_button_1_Template_share_button_closed_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r7 = ɵngcc0.ɵɵnextContext(2); return ctx_r7.closed.emit($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const button_r4 = ctx.$implicit;\n const ctx_r2 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"button\", button_r4)(\"theme\", ctx_r2.theme)(\"url\", ctx_r2.url)(\"title\", ctx_r2.title)(\"description\", ctx_r2.description)(\"image\", ctx_r2.image)(\"tags\", ctx_r2.tags)(\"autoSetMeta\", ctx_r2.autoSetMeta)(\"showIcon\", ctx_r2.showIcon)(\"showText\", ctx_r2.showText)(\"size\", ctx_r2.size)(\"disabled\", ctx_r2.disabled);\n} }\nfunction ShareButtons_div_0_expand_button_2_Template(rf, ctx) { if (rf & 1) {\n const _r9 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"expand-button\", 4);\n ɵngcc0.ɵɵlistener(\"toggle\", function ShareButtons_div_0_expand_button_2_Template_expand_button_toggle_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r8 = ɵngcc0.ɵɵnextContext(2); return ctx_r8.updateState({ expanded: $event }); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const state_r1 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassMapInterpolate1(\"sb-button sb-\", ctx_r3.theme, \"\");\n ɵngcc0.ɵɵproperty(\"expanded\", state_r1.expanded)(\"moreIcon\", state_r1.moreIcon)(\"lessIcon\", state_r1.lessIcon)(\"size\", (1 + ctx_r3.size / 20) * 14);\n} }\nfunction ShareButtons_div_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\");\n ɵngcc0.ɵɵtemplate(1, ShareButtons_div_0_share_button_1_Template, 1, 12, \"share-button\", 1);\n ɵngcc0.ɵɵtemplate(2, ShareButtons_div_0_expand_button_2_Template, 1, 7, \"expand-button\", 2);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const state_r1 = ctx.$implicit;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassMapInterpolate1(\"sb-group sb-\", ctx_r0.theme, \"\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", state_r1.selectedButtons);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", state_r1.shownCount < state_r1.userButtons.length);\n} }\nlet ShareButtons = class ShareButtons {\n constructor(_share) {\n this._share = _share;\n this._state$ = new BehaviorSubject({\n includedButtons: [],\n excludedButtons: [],\n userButtons: [],\n selectedButtons: [],\n expanded: true,\n shownCount: Object.keys(SHARE_BUTTONS).length\n });\n this._configSub$ = Subscription.EMPTY;\n this.theme = this._share.config.theme;\n /** Show buttons icons */\n this.showIcon = true;\n /** Show buttons text */\n this.showText = false;\n /** Buttons size */\n this.size = 0;\n /** Share dialog opened event */\n this.opened = new EventEmitter();\n /** Share dialog closed event */\n this.closed = new EventEmitter();\n }\n ngOnInit() {\n this.state$ = this._state$.pipe(map((state) => {\n // Use component include buttons, otherwise fallback to global include buttons\n const includedButtons = state.includedButtons && state.includedButtons.length ? state.includedButtons : state.userButtons;\n const userButtons = state.excludedButtons ? includedButtons.filter((btn) => state.excludedButtons.indexOf(btn) < 0) : includedButtons;\n const selectedButtons = userButtons.slice(0, state.expanded ? userButtons.length : state.shownCount);\n return {\n userButtons,\n selectedButtons,\n expanded: state.expanded,\n shownCount: state.shownCount,\n moreIcon: state.moreIcon,\n lessIcon: state.lessIcon\n };\n }));\n // Subscribe to share buttons config changes, This updates the component whenever a new button is added\n this._configSub$ = this._share.config$.subscribe((config) => {\n // Use global include buttons, otherwise fallback to all buttons\n const includedButtons = config.include.length ? config.include : Object.keys(SHARE_BUTTONS);\n const userButtons = includedButtons.filter((btn) => config.exclude.indexOf(btn) < 0);\n this.updateState({\n userButtons,\n expanded: false,\n moreIcon: config.moreButtonIcon,\n lessIcon: config.lessButtonIcon\n });\n });\n }\n ngOnChanges(changes) {\n const shouldUpdate = (changes['include'] && changes['include'].currentValue !== changes['include'].previousValue) ||\n (changes['exclude'] && changes['exclude'].currentValue !== changes['exclude'].previousValue) ||\n (changes['show'] && changes['show'].currentValue !== changes['show'].previousValue);\n if (shouldUpdate) {\n this.updateState({\n includedButtons: this.include,\n excludedButtons: this.exclude,\n shownCount: this.show\n });\n }\n }\n ngOnDestroy() {\n this._configSub$.unsubscribe();\n this._state$.complete();\n }\n updateState(state) {\n this._state$.next(Object.assign(Object.assign({}, this._state$.value), state));\n }\n};\nShareButtons.ɵfac = function ShareButtons_Factory(t) { return new (t || ShareButtons)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.ShareService)); };\nShareButtons.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ShareButtons, selectors: [[\"share-buttons\"]], inputs: { theme: \"theme\", showIcon: \"showIcon\", showText: \"showText\", size: \"size\", include: \"include\", exclude: \"exclude\", show: \"show\", url: \"url\", title: \"title\", description: \"description\", image: \"image\", tags: \"tags\", autoSetMeta: \"autoSetMeta\", disabled: \"disabled\" }, outputs: { opened: \"opened\", closed: \"closed\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 2, vars: 3, consts: [[3, \"class\", 4, \"ngIf\"], [3, \"button\", \"theme\", \"url\", \"title\", \"description\", \"image\", \"tags\", \"autoSetMeta\", \"showIcon\", \"showText\", \"size\", \"disabled\", \"opened\", \"closed\", 4, \"ngFor\", \"ngForOf\"], [3, \"class\", \"expanded\", \"moreIcon\", \"lessIcon\", \"size\", \"toggle\", 4, \"ngIf\"], [3, \"button\", \"theme\", \"url\", \"title\", \"description\", \"image\", \"tags\", \"autoSetMeta\", \"showIcon\", \"showText\", \"size\", \"disabled\", \"opened\", \"closed\"], [3, \"expanded\", \"moreIcon\", \"lessIcon\", \"size\", \"toggle\"]], template: function ShareButtons_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, ShareButtons_div_0_Template, 3, 5, \"div\", 0);\n ɵngcc0.ɵɵpipe(1, \"async\");\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ɵngcc0.ɵɵpipeBind1(1, 1, ctx.state$));\n } }, directives: function () { return [ɵngcc2.NgIf, ɵngcc2.NgForOf, ɵngcc3.ShareButton, ExpandButton]; }, pipes: function () { return [ɵngcc2.AsyncPipe]; }, styles: [\"[_nghost-%COMP%]{display:inherit;--sb-margin:0.3125em}\"], changeDetection: 0 });\nShareButtons.ctorParameters = () => [\n { type: ShareService }\n];\n__decorate([\n Input()\n], ShareButtons.prototype, \"theme\", void 0);\n__decorate([\n Input()\n], ShareButtons.prototype, \"include\", void 0);\n__decorate([\n Input()\n], ShareButtons.prototype, \"exclude\", void 0);\n__decorate([\n Input()\n], ShareButtons.prototype, \"show\", void 0);\n__decorate([\n Input()\n], ShareButtons.prototype, \"url\", void 0);\n__decorate([\n Input()\n], ShareButtons.prototype, \"title\", void 0);\n__decorate([\n Input()\n], ShareButtons.prototype, \"description\", void 0);\n__decorate([\n Input()\n], ShareButtons.prototype, \"image\", void 0);\n__decorate([\n Input()\n], ShareButtons.prototype, \"tags\", void 0);\n__decorate([\n Input()\n], ShareButtons.prototype, \"autoSetMeta\", void 0);\n__decorate([\n Input()\n], ShareButtons.prototype, \"showIcon\", void 0);\n__decorate([\n Input()\n], ShareButtons.prototype, \"showText\", void 0);\n__decorate([\n Input()\n], ShareButtons.prototype, \"size\", void 0);\n__decorate([\n Input()\n], ShareButtons.prototype, \"disabled\", void 0);\n__decorate([\n Output()\n], ShareButtons.prototype, \"opened\", void 0);\n__decorate([\n Output()\n], ShareButtons.prototype, \"closed\", void 0);\n/**\n * Explanation of the above code:\n * ------------------------------\n Include buttons: includes only wanted buttons and excludes the rest\n Exclude buttons: excludes only the unwanted buttons\n User buttons = Include buttons - exclude buttons\n Selected Buttons = User buttons [shown number]\n */\n\nlet ExpandButton = class ExpandButton {\n constructor(el) {\n this.toggle = new EventEmitter();\n el.nativeElement.style.setProperty('--button-color', '#FF6651');\n }\n};\nExpandButton.ɵfac = function ExpandButton_Factory(t) { return new (t || ExpandButton)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nExpandButton.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ExpandButton, selectors: [[\"expand-button\"]], inputs: { moreIcon: \"moreIcon\", lessIcon: \"lessIcon\", expanded: \"expanded\", size: \"size\" }, outputs: { toggle: \"toggle\" }, decls: 4, vars: 3, consts: [[1, \"sb-wrapper\", \"sb-expand\", \"sb-show-icon\", 3, \"click\"], [1, \"sb-content\"], [1, \"sb-icon\"], [3, \"icon\"]], template: function ExpandButton_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"button\", 0);\n ɵngcc0.ɵɵlistener(\"click\", function ExpandButton_Template_button_click_0_listener() { return ctx.toggle.emit(!ctx.expanded); });\n ɵngcc0.ɵɵelementStart(1, \"div\", 1)(2, \"div\", 2);\n ɵngcc0.ɵɵelement(3, \"fa-icon\", 3);\n ɵngcc0.ɵɵelementEnd()()();\n } if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"font-size\", ctx.size, \"px\");\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"icon\", ctx.expanded ? ctx.lessIcon : ctx.moreIcon);\n } }, directives: [ɵngcc4.FaIconComponent], encapsulation: 2, changeDetection: 0 });\nExpandButton.ctorParameters = () => [\n { type: ElementRef }\n];\n__decorate([\n Input()\n], ExpandButton.prototype, \"moreIcon\", void 0);\n__decorate([\n Input()\n], ExpandButton.prototype, \"lessIcon\", void 0);\n__decorate([\n Input()\n], ExpandButton.prototype, \"expanded\", void 0);\n__decorate([\n Input()\n], ExpandButton.prototype, \"size\", void 0);\n__decorate([\n Output()\n], ExpandButton.prototype, \"toggle\", void 0);\n\nvar ShareButtonsModule_1;\nlet ShareButtonsModule = ShareButtonsModule_1 = class ShareButtonsModule {\n static withConfig(config) {\n return {\n ngModule: ShareButtonsModule_1,\n providers: [{ provide: SHARE_BUTTONS_CONFIG, useValue: config }]\n };\n }\n};\nShareButtonsModule.ɵfac = function ShareButtonsModule_Factory(t) { return new (t || ShareButtonsModule)(); };\nShareButtonsModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: ShareButtonsModule });\nShareButtonsModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[\n ShareButtonModule,\n CommonModule\n ], ShareButtonModule] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ShareButtons, [{\n type: Component,\n args: [{\n selector: 'share-buttons',\n template: \"
    \\n \\n \\n \\n \\n
    \\n\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: [\":host{display:inherit;--sb-margin:0.3125em}\"]\n }]\n }], function () { return [{ type: ɵngcc1.ShareService }]; }, { theme: [{\n type: Input\n }], showIcon: [{\n type: Input\n }], showText: [{\n type: Input\n }], size: [{\n type: Input\n }], opened: [{\n type: Output\n }], closed: [{\n type: Output\n }], include: [{\n type: Input\n }], exclude: [{\n type: Input\n }], show: [{\n type: Input\n }], url: [{\n type: Input\n }], title: [{\n type: Input\n }], description: [{\n type: Input\n }], image: [{\n type: Input\n }], tags: [{\n type: Input\n }], autoSetMeta: [{\n type: Input\n }], disabled: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ExpandButton, [{\n type: Component,\n args: [{\n selector: 'expand-button',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n \n `\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { toggle: [{\n type: Output\n }], moreIcon: [{\n type: Input\n }], lessIcon: [{\n type: Input\n }], expanded: [{\n type: Input\n }], size: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ShareButtonsModule, [{\n type: NgModule,\n args: [{\n declarations: [\n ShareButtons,\n ExpandButton\n ],\n imports: [\n ShareButtonModule,\n CommonModule\n ],\n exports: [\n ShareButtonModule,\n ShareButtons\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ShareButtonsModule, { declarations: function () { return [ShareButtons, ExpandButton]; }, imports: function () { return [ShareButtonModule,\n CommonModule]; }, exports: function () { return [ShareButtonModule, ShareButtons]; } }); })();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ShareButtons, ShareButtonsModule, ExpandButton as ɵa };\n\n","import { __decorate } from 'tslib';\nimport { NgModule } from '@angular/core';\nimport { faFacebookF, faTwitter, faLinkedinIn, faPinterestP, faRedditAlien, faTumblr, faWhatsapp, faVk, faFacebookMessenger, faTelegramPlane, faMix, faXing, faLine } from '@fortawesome/free-brands-svg-icons';\nimport { faSms, faEnvelope, faCheck, faPrint, faExclamation, faLink, faEllipsisH, faMinus } from '@fortawesome/free-solid-svg-icons';\nimport { FaIconLibrary, FontAwesomeModule } from '@fortawesome/angular-fontawesome';\n\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@fortawesome/angular-fontawesome';\nconst shareIcons = [\n faFacebookF, faTwitter, faLinkedinIn, faPinterestP, faRedditAlien, faTumblr,\n faWhatsapp, faVk, faFacebookMessenger, faTelegramPlane, faMix, faXing, faSms,\n faEnvelope, faCheck, faPrint, faExclamation, faLink, faEllipsisH, faMinus, faLine\n];\nlet ShareIconsModule = class ShareIconsModule {\n constructor(iconLibrary) {\n iconLibrary.addIcons(...shareIcons);\n }\n};\nShareIconsModule.ɵfac = function ShareIconsModule_Factory(t) { return new (t || ShareIconsModule)(ɵngcc0.ɵɵinject(ɵngcc1.FaIconLibrary)); };\nShareIconsModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: ShareIconsModule });\nShareIconsModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[\n FontAwesomeModule,\n ]] });\nShareIconsModule.ctorParameters = () => [\n { type: FaIconLibrary }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ShareIconsModule, [{\n type: NgModule,\n args: [{\n imports: [\n FontAwesomeModule,\n ]\n }]\n }], function () { return [{ type: ɵngcc1.FaIconLibrary }]; }, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ShareIconsModule, { imports: function () { return [FontAwesomeModule]; } }); })();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ShareIconsModule };\n\n","/*!\n * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */\nvar prefix = \"fab\";\nvar fa500px = {\n prefix: 'fab',\n iconName: '500px',\n icon: [448, 512, [], \"f26e\", \"M103.3 344.3c-6.5-14.2-6.9-18.3 7.4-23.1 25.6-8 8 9.2 43.2 49.2h.3v-93.9c1.2-50.2 44-92.2 97.7-92.2 53.9 0 97.7 43.5 97.7 96.8 0 63.4-60.8 113.2-128.5 93.3-10.5-4.2-2.1-31.7 8.5-28.6 53 0 89.4-10.1 89.4-64.4 0-61-77.1-89.6-116.9-44.6-23.5 26.4-17.6 42.1-17.6 157.6 50.7 31 118.3 22 160.4-20.1 24.8-24.8 38.5-58 38.5-93 0-35.2-13.8-68.2-38.8-93.3-24.8-24.8-57.8-38.5-93.3-38.5s-68.8 13.8-93.5 38.5c-.3.3-16 16.5-21.2 23.9l-.5.6c-3.3 4.7-6.3 9.1-20.1 6.1-6.9-1.7-14.3-5.8-14.3-11.8V20c0-5 3.9-10.5 10.5-10.5h241.3c8.3 0 8.3 11.6 8.3 15.1 0 3.9 0 15.1-8.3 15.1H130.3v132.9h.3c104.2-109.8 282.8-36 282.8 108.9 0 178.1-244.8 220.3-310.1 62.8zm63.3-260.8c-.5 4.2 4.6 24.5 14.6 20.6C306 56.6 384 144.5 390.6 144.5c4.8 0 22.8-15.3 14.3-22.8-93.2-89-234.5-57-238.3-38.2zM393 414.7C283 524.6 94 475.5 61 310.5c0-12.2-30.4-7.4-28.9 3.3 24 173.4 246 256.9 381.6 121.3 6.9-7.8-12.6-28.4-20.7-20.4zM213.6 306.6c0 4 4.3 7.3 5.5 8.5 3 3 6.1 4.4 8.5 4.4 3.8 0 2.6.2 22.3-19.5 19.6 19.3 19.1 19.5 22.3 19.5 5.4 0 18.5-10.4 10.7-18.2L265.6 284l18.2-18.2c6.3-6.8-10.1-21.8-16.2-15.7L249.7 268c-18.6-18.8-18.4-19.5-21.5-19.5-5 0-18 11.7-12.4 17.3L234 284c-18.1 17.9-20.4 19.2-20.4 22.6z\"]\n};\nvar faAccessibleIcon = {\n prefix: 'fab',\n iconName: 'accessible-icon',\n icon: [448, 512, [], \"f368\", \"M423.9 255.8L411 413.1c-3.3 40.7-63.9 35.1-60.6-4.9l10-122.5-41.1 2.3c10.1 20.7 15.8 43.9 15.8 68.5 0 41.2-16.1 78.7-42.3 106.5l-39.3-39.3c57.9-63.7 13.1-167.2-74-167.2-25.9 0-49.5 9.9-67.2 26L73 243.2c22-20.7 50.1-35.1 81.4-40.2l75.3-85.7-42.6-24.8-51.6 46c-30 26.8-70.6-18.5-40.5-45.4l68-60.7c9.8-8.8 24.1-10.2 35.5-3.6 0 0 139.3 80.9 139.5 81.1 16.2 10.1 20.7 36 6.1 52.6L285.7 229l106.1-5.9c18.5-1.1 33.6 14.4 32.1 32.7zm-64.9-154c28.1 0 50.9-22.8 50.9-50.9C409.9 22.8 387.1 0 359 0c-28.1 0-50.9 22.8-50.9 50.9 0 28.1 22.8 50.9 50.9 50.9zM179.6 456.5c-80.6 0-127.4-90.6-82.7-156.1l-39.7-39.7C36.4 287 24 320.3 24 356.4c0 130.7 150.7 201.4 251.4 122.5l-39.7-39.7c-16 10.9-35.3 17.3-56.1 17.3z\"]\n};\nvar faAccusoft = {\n prefix: 'fab',\n iconName: 'accusoft',\n icon: [640, 512, [], \"f369\", \"M322.1 252v-1l-51.2-65.8s-12 1.6-25 15.1c-9 9.3-242.1 239.1-243.4 240.9-7 10 1.6 6.8 15.7 1.7.8 0 114.5-36.6 114.5-36.6.5-.6-.1-.1.6-.6-.4-5.1-.8-26.2-1-27.7-.6-5.2 2.2-6.9 7-8.9l92.6-33.8c.6-.8 88.5-81.7 90.2-83.3zm160.1 120.1c13.3 16.1 20.7 13.3 30.8 9.3 3.2-1.2 115.4-47.6 117.8-48.9 8-4.3-1.7-16.7-7.2-23.4-2.1-2.5-205.1-245.6-207.2-248.3-9.7-12.2-14.3-12.9-38.4-12.8-10.2 0-106.8.5-116.5.6-19.2.1-32.9-.3-19.2 16.9C250 75 476.5 365.2 482.2 372.1zm152.7 1.6c-2.3-.3-24.6-4.7-38-7.2 0 0-115 50.4-117.5 51.6-16 7.3-26.9-3.2-36.7-14.6l-57.1-74c-5.4-.9-60.4-9.6-65.3-9.3-3.1.2-9.6.8-14.4 2.9-4.9 2.1-145.2 52.8-150.2 54.7-5.1 2-11.4 3.6-11.1 7.6.2 2.5 2 2.6 4.6 3.5 2.7.8 300.9 67.6 308 69.1 15.6 3.3 38.5 10.5 53.6 1.7 2.1-1.2 123.8-76.4 125.8-77.8 5.4-4 4.3-6.8-1.7-8.2z\"]\n};\nvar faAcquisitionsIncorporated = {\n prefix: 'fab',\n iconName: 'acquisitions-incorporated',\n icon: [384, 512, [], \"f6af\", \"M357.45 468.2c-1.2-7.7-1.3-7.6-9.6-7.6-99.8.2-111.8-2.4-112.7-2.6-12.3-1.7-20.6-10.5-21-23.1-.1-1.6-.2-71.6-1-129.1-.1-4.7 1.6-6.4 5.9-7.5 12.5-3 24.9-6.1 37.3-9.7 4.3-1.3 6.8-.2 8.4 3.5 4.5 10.3 8.8 20.6 13.2 30.9 1.6 3.7.1 4.4-3.4 4.4-10-.2-20-.1-30.4-.1v27h116c-1.4-9.5-2.7-18.1-4-27.5-7 0-13.8.4-20.4-.1-22.6-1.6-18.3-4.4-84-158.6-8.8-20.1-27.9-62.1-36.5-89.2-4.4-14 5.5-25.4 18.9-26.6 18.6-1.7 37.5-1.6 56.2-2 20.6-.4 41.2-.4 61.8-.5 3.1 0 4-1.4 4.3-4.3 1.2-9.8 2.7-19.5 4-29.2.8-5.3 1.6-10.7 2.4-16.1L23.75 0c-3.6 0-5.3 1.1-4.6 5.3 2.2 13.2-.8.8 6.4 45.3 63.4 0 71.8.9 101.8.5 12.3-.2 37 3.5 37.7 22.1.4 11.4-1.1 11.3-32.6 87.4-53.8 129.8-50.7 120.3-67.3 161-1.7 4.1-3.6 5.2-7.6 5.2-8.5-.2-17-.3-25.4.1-1.9.1-5.2 1.8-5.5 3.2-1.5 8.1-2.2 16.3-3.2 24.9h114.3v-27.6c-6.9 0-33.5.4-35.3-2.9 5.3-12.3 10.4-24.4 15.7-36.7 16.3 4 31.9 7.8 47.6 11.7 3.4.9 4.6 3 4.6 6.8-.1 42.9.1 85.9.2 128.8 0 10.2-5.5 19.1-14.9 23.1-6.5 2.7-3.3 3.4-121.4 2.4-5.3 0-7.1 2-7.6 6.8-1.5 12.9-2.9 25.9-5 38.8-.8 5 1.3 5.7 5.3 5.7 183.2.6-30.7 0 337.1 0-2.5-15-4.4-29.4-6.6-43.7zm-174.9-205.7c-13.3-4.2-26.6-8.2-39.9-12.5a44.53 44.53 0 0 1-5.8-2.9c17.2-44.3 34.2-88.1 51.3-132.1 7.5 2.4 7.9-.8 9.4 0 9.3 22.5 18.1 60.1 27 82.8 6.6 16.7 13 33.5 19.7 50.9a35.78 35.78 0 0 1-3.9 2.1c-13.1 3.9-26.4 7.5-39.4 11.7a27.66 27.66 0 0 1-18.4 0z\"]\n};\nvar faAdn = {\n prefix: 'fab',\n iconName: 'adn',\n icon: [496, 512, [], \"f170\", \"M248 167.5l64.9 98.8H183.1l64.9-98.8zM496 256c0 136.9-111.1 248-248 248S0 392.9 0 256 111.1 8 248 8s248 111.1 248 248zm-99.8 82.7L248 115.5 99.8 338.7h30.4l33.6-51.7h168.6l33.6 51.7h30.2z\"]\n};\nvar faAdversal = {\n prefix: 'fab',\n iconName: 'adversal',\n icon: [512, 512, [], \"f36a\", \"M482.1 32H28.7C5.8 32 0 37.9 0 60.9v390.2C0 474.4 5.8 480 28.7 480h453.4c24.4 0 29.9-5.2 29.9-29.7V62.2c0-24.6-5.4-30.2-29.9-30.2zM178.4 220.3c-27.5-20.2-72.1-8.7-84.2 23.4-4.3 11.1-9.3 9.5-17.5 8.3-9.7-1.5-17.2-3.2-22.5-5.5-28.8-11.4 8.6-55.3 24.9-64.3 41.1-21.4 83.4-22.2 125.3-4.8 40.9 16.8 34.5 59.2 34.5 128.5 2.7 25.8-4.3 58.3 9.3 88.8 1.9 4.4.4 7.9-2.7 10.7-8.4 6.7-39.3 2.2-46.6-7.4-1.9-2.2-1.8-3.6-3.9-6.2-3.6-3.9-7.3-2.2-11.9 1-57.4 36.4-140.3 21.4-147-43.3-3.1-29.3 12.4-57.1 39.6-71 38.2-19.5 112.2-11.8 114-30.9 1.1-10.2-1.9-20.1-11.3-27.3zm286.7 222c0 15.1-11.1 9.9-17.8 9.9H52.4c-7.4 0-18.2 4.8-17.8-10.7.4-13.9 10.5-9.1 17.1-9.1 132.3-.4 264.5-.4 396.8 0 6.8 0 16.6-4.4 16.6 9.9zm3.8-340.5v291c0 5.7-.7 13.9-8.1 13.9-12.4-.4-27.5 7.1-36.1-5.6-5.8-8.7-7.8-4-12.4-1.2-53.4 29.7-128.1 7.1-144.4-85.2-6.1-33.4-.7-67.1 15.7-100 11.8-23.9 56.9-76.1 136.1-30.5v-71c0-26.2-.1-26.2 26-26.2 3.1 0 6.6.4 9.7 0 10.1-.8 13.6 4.4 13.6 14.3-.1.2-.1.3-.1.5zm-51.5 232.3c-19.5 47.6-72.9 43.3-90 5.2-15.1-33.3-15.5-68.2.4-101.5 16.3-34.1 59.7-35.7 81.5-4.8 20.6 28.8 14.9 84.6 8.1 101.1zm-294.8 35.3c-7.5-1.3-33-3.3-33.7-27.8-.4-13.9 7.8-23 19.8-25.8 24.4-5.9 49.3-9.9 73.7-14.7 8.9-2 7.4 4.4 7.8 9.5 1.4 33-26.1 59.2-67.6 58.8z\"]\n};\nvar faAffiliatetheme = {\n prefix: 'fab',\n iconName: 'affiliatetheme',\n icon: [512, 512, [], \"f36b\", \"M159.7 237.4C108.4 308.3 43.1 348.2 14 326.6-15.2 304.9 2.8 230 54.2 159.1c51.3-70.9 116.6-110.8 145.7-89.2 29.1 21.6 11.1 96.6-40.2 167.5zm351.2-57.3C437.1 303.5 319 367.8 246.4 323.7c-25-15.2-41.3-41.2-49-73.8-33.6 64.8-92.8 113.8-164.1 133.2 49.8 59.3 124.1 96.9 207 96.9 150 0 271.6-123.1 271.6-274.9.1-8.5-.3-16.8-1-25z\"]\n};\nvar faAirbnb = {\n prefix: 'fab',\n iconName: 'airbnb',\n icon: [448, 512, [], \"f834\", \"M224 373.12c-25.24-31.67-40.08-59.43-45-83.18-22.55-88 112.61-88 90.06 0-5.45 24.25-20.29 52-45 83.18zm138.15 73.23c-42.06 18.31-83.67-10.88-119.3-50.47 103.9-130.07 46.11-200-18.85-200-54.92 0-85.16 46.51-73.28 100.5 6.93 29.19 25.23 62.39 54.43 99.5-32.53 36.05-60.55 52.69-85.15 54.92-50 7.43-89.11-41.06-71.3-91.09 15.1-39.16 111.72-231.18 115.87-241.56 15.75-30.07 25.56-57.4 59.38-57.4 32.34 0 43.4 25.94 60.37 59.87 36 70.62 89.35 177.48 114.84 239.09 13.17 33.07-1.37 71.29-37.01 86.64zm47-136.12C280.27 35.93 273.13 32 224 32c-45.52 0-64.87 31.67-84.66 72.79C33.18 317.1 22.89 347.19 22 349.81-3.22 419.14 48.74 480 111.63 480c21.71 0 60.61-6.06 112.37-62.4 58.68 63.78 101.26 62.4 112.37 62.4 62.89.05 114.85-60.86 89.61-130.19.02-3.89-16.82-38.9-16.82-39.58z\"]\n};\nvar faAlgolia = {\n prefix: 'fab',\n iconName: 'algolia',\n icon: [448, 512, [], \"f36c\", \"M229.3 182.6c-49.3 0-89.2 39.9-89.2 89.2 0 49.3 39.9 89.2 89.2 89.2s89.2-39.9 89.2-89.2c0-49.3-40-89.2-89.2-89.2zm62.7 56.6l-58.9 30.6c-1.8.9-3.8-.4-3.8-2.3V201c0-1.5 1.3-2.7 2.7-2.6 26.2 1 48.9 15.7 61.1 37.1.7 1.3.2 3-1.1 3.7zM389.1 32H58.9C26.4 32 0 58.4 0 90.9V421c0 32.6 26.4 59 58.9 59H389c32.6 0 58.9-26.4 58.9-58.9V90.9C448 58.4 421.6 32 389.1 32zm-202.6 84.7c0-10.8 8.7-19.5 19.5-19.5h45.3c10.8 0 19.5 8.7 19.5 19.5v15.4c0 1.8-1.7 3-3.3 2.5-12.3-3.4-25.1-5.1-38.1-5.1-13.5 0-26.7 1.8-39.4 5.5-1.7.5-3.4-.8-3.4-2.5v-15.8zm-84.4 37l9.2-9.2c7.6-7.6 19.9-7.6 27.5 0l7.7 7.7c1.1 1.1 1 3-.3 4-6.2 4.5-12.1 9.4-17.6 14.9-5.4 5.4-10.4 11.3-14.8 17.4-1 1.3-2.9 1.5-4 .3l-7.7-7.7c-7.6-7.5-7.6-19.8 0-27.4zm127.2 244.8c-70 0-126.6-56.7-126.6-126.6s56.7-126.6 126.6-126.6c70 0 126.6 56.6 126.6 126.6 0 69.8-56.7 126.6-126.6 126.6z\"]\n};\nvar faAlipay = {\n prefix: 'fab',\n iconName: 'alipay',\n icon: [448, 512, [], \"f642\", \"M377.74 32H70.26C31.41 32 0 63.41 0 102.26v307.48C0 448.59 31.41 480 70.26 480h307.48c38.52 0 69.76-31.08 70.26-69.6-45.96-25.62-110.59-60.34-171.6-88.44-32.07 43.97-84.14 81-148.62 81-70.59 0-93.73-45.3-97.04-76.37-3.97-39.01 14.88-81.5 99.52-81.5 35.38 0 79.35 10.25 127.13 24.96 16.53-30.09 26.45-60.34 26.45-60.34h-178.2v-16.7h92.08v-31.24H88.28v-19.01h109.44V92.34h50.92v50.42h109.44v19.01H248.63v31.24h88.77s-15.21 46.62-38.35 90.92c48.93 16.7 100.01 36.04 148.62 52.74V102.26C447.83 63.57 416.43 32 377.74 32zM47.28 322.95c.99 20.17 10.25 53.73 69.93 53.73 52.07 0 92.58-39.68 117.87-72.9-44.63-18.68-84.48-31.41-109.44-31.41-67.45 0-79.35 33.06-78.36 50.58z\"]\n};\nvar faAmazon = {\n prefix: 'fab',\n iconName: 'amazon',\n icon: [448, 512, [], \"f270\", \"M257.2 162.7c-48.7 1.8-169.5 15.5-169.5 117.5 0 109.5 138.3 114 183.5 43.2 6.5 10.2 35.4 37.5 45.3 46.8l56.8-56S341 288.9 341 261.4V114.3C341 89 316.5 32 228.7 32 140.7 32 94 87 94 136.3l73.5 6.8c16.3-49.5 54.2-49.5 54.2-49.5 40.7-.1 35.5 29.8 35.5 69.1zm0 86.8c0 80-84.2 68-84.2 17.2 0-47.2 50.5-56.7 84.2-57.8v40.6zm136 163.5c-7.7 10-70 67-174.5 67S34.2 408.5 9.7 379c-6.8-7.7 1-11.3 5.5-8.3C88.5 415.2 203 488.5 387.7 401c7.5-3.7 13.3 2 5.5 12zm39.8 2.2c-6.5 15.8-16 26.8-21.2 31-5.5 4.5-9.5 2.7-6.5-3.8s19.3-46.5 12.7-55c-6.5-8.3-37-4.3-48-3.2-10.8 1-13 2-14-.3-2.3-5.7 21.7-15.5 37.5-17.5 15.7-1.8 41-.8 46 5.7 3.7 5.1 0 27.1-6.5 43.1z\"]\n};\nvar faAmazonPay = {\n prefix: 'fab',\n iconName: 'amazon-pay',\n icon: [640, 512, [], \"f42c\", \"M14 325.3c2.3-4.2 5.2-4.9 9.7-2.5 10.4 5.6 20.6 11.4 31.2 16.7a595.88 595.88 0 0 0 127.4 46.3 616.61 616.61 0 0 0 63.2 11.8 603.33 603.33 0 0 0 95 5.2c17.4-.4 34.8-1.8 52.1-3.8a603.66 603.66 0 0 0 163.3-42.8c2.9-1.2 5.9-2 9.1-1.2 6.7 1.8 9 9 4.1 13.9a70 70 0 0 1-9.6 7.4c-30.7 21.1-64.2 36.4-99.6 47.9a473.31 473.31 0 0 1-75.1 17.6 431 431 0 0 1-53.2 4.8 21.3 21.3 0 0 0-2.5.3H308a21.3 21.3 0 0 0-2.5-.3c-3.6-.2-7.2-.3-10.7-.4a426.3 426.3 0 0 1-50.4-5.3A448.4 448.4 0 0 1 164 420a443.33 443.33 0 0 1-145.6-87c-1.8-1.6-3-3.8-4.4-5.7zM172 65.1l-4.3.6a80.92 80.92 0 0 0-38 15.1c-2.4 1.7-4.6 3.5-7.1 5.4a4.29 4.29 0 0 1-.4-1.4c-.4-2.7-.8-5.5-1.3-8.2-.7-4.6-3-6.6-7.6-6.6h-11.5c-6.9 0-8.2 1.3-8.2 8.2v209.3c0 1 0 2 .1 3 .2 3 2 4.9 4.9 5 7 .1 14.1.1 21.1 0 2.9 0 4.7-2 5-5 .1-1 .1-2 .1-3v-72.4c1.1.9 1.7 1.4 2.2 1.9 17.9 14.9 38.5 19.8 61 15.4 20.4-4 34.6-16.5 43.8-34.9 7-13.9 9.9-28.7 10.3-44.1.5-17.1-1.2-33.9-8.1-49.8-8.5-19.6-22.6-32.5-43.9-36.9-3.2-.7-6.5-1-9.8-1.5-2.8-.1-5.5-.1-8.3-.1zM124.6 107a3.48 3.48 0 0 1 1.7-3.3c13.7-9.5 28.8-14.5 45.6-13.2 14.9 1.1 27.1 8.4 33.5 25.9 3.9 10.7 4.9 21.8 4.9 33 0 10.4-.8 20.6-4 30.6-6.8 21.3-22.4 29.4-42.6 28.5-14-.6-26.2-6-37.4-13.9a3.57 3.57 0 0 1-1.7-3.3c.1-14.1 0-28.1 0-42.2s.1-28 0-42.1zm205.7-41.9c-1 .1-2 .3-2.9.4a148 148 0 0 0-28.9 4.1c-6.1 1.6-12 3.8-17.9 5.8-3.6 1.2-5.4 3.8-5.3 7.7.1 3.3-.1 6.6 0 9.9.1 4.8 2.1 6.1 6.8 4.9 7.8-2 15.6-4.2 23.5-5.7 12.3-2.3 24.7-3.3 37.2-1.4 6.5 1 12.6 2.9 16.8 8.4 3.7 4.8 5.1 10.5 5.3 16.4.3 8.3.2 16.6.3 24.9a7.84 7.84 0 0 1-.2 1.4c-.5-.1-.9 0-1.3-.1a180.56 180.56 0 0 0-32-4.9c-11.3-.6-22.5.1-33.3 3.9-12.9 4.5-23.3 12.3-29.4 24.9-4.7 9.8-5.4 20.2-3.9 30.7 2 14 9 24.8 21.4 31.7 11.9 6.6 24.8 7.4 37.9 5.4 15.1-2.3 28.5-8.7 40.3-18.4a7.36 7.36 0 0 1 1.6-1.1c.6 3.8 1.1 7.4 1.8 11 .6 3.1 2.5 5.1 5.4 5.2 5.4.1 10.9.1 16.3 0a4.84 4.84 0 0 0 4.8-4.7 26.2 26.2 0 0 0 .1-2.8v-106a80 80 0 0 0-.9-12.9c-1.9-12.9-7.4-23.5-19-30.4-6.7-4-14.1-6-21.8-7.1-3.6-.5-7.2-.8-10.8-1.3-3.9.1-7.9.1-11.9.1zm35 127.7a3.33 3.33 0 0 1-1.5 3c-11.2 8.1-23.5 13.5-37.4 14.9-5.7.6-11.4.4-16.8-1.8a20.08 20.08 0 0 1-12.4-13.3 32.9 32.9 0 0 1-.1-19.4c2.5-8.3 8.4-13 16.4-15.6a61.33 61.33 0 0 1 24.8-2.2c8.4.7 16.6 2.3 25 3.4 1.6.2 2.1 1 2.1 2.6-.1 4.8 0 9.5 0 14.3s-.2 9.4-.1 14.1zm259.9 129.4c-1-5-4.8-6.9-9.1-8.3a88.42 88.42 0 0 0-21-3.9 147.32 147.32 0 0 0-39.2 1.9c-14.3 2.7-27.9 7.3-40 15.6a13.75 13.75 0 0 0-3.7 3.5 5.11 5.11 0 0 0-.5 4c.4 1.5 2.1 1.9 3.6 1.8a16.2 16.2 0 0 0 2.2-.1c7.8-.8 15.5-1.7 23.3-2.5 11.4-1.1 22.9-1.8 34.3-.9a71.64 71.64 0 0 1 14.4 2.7c5.1 1.4 7.4 5.2 7.6 10.4.4 8-1.4 15.7-3.5 23.3-4.1 15.4-10 30.3-15.8 45.1a17.6 17.6 0 0 0-1 3c-.5 2.9 1.2 4.8 4.1 4.1a10.56 10.56 0 0 0 4.8-2.5 145.91 145.91 0 0 0 12.7-13.4c12.8-16.4 20.3-35.3 24.7-55.6.8-3.6 1.4-7.3 2.1-10.9v-17.3zM493.1 199q-19.35-53.55-38.7-107.2c-2-5.7-4.2-11.3-6.3-16.9-1.1-2.9-3.2-4.8-6.4-4.8-7.6-.1-15.2-.2-22.9-.1-2.5 0-3.7 2-3.2 4.5a43.1 43.1 0 0 0 1.9 6.1q29.4 72.75 59.1 145.5c1.7 4.1 2.1 7.6.2 11.8-3.3 7.3-5.9 15-9.3 22.3-3 6.5-8 11.4-15.2 13.3a42.13 42.13 0 0 1-15.4 1.1c-2.5-.2-5-.8-7.5-1-3.4-.2-5.1 1.3-5.2 4.8q-.15 5 0 9.9c.1 5.5 2 8 7.4 8.9a108.18 108.18 0 0 0 16.9 2c17.1.4 30.7-6.5 39.5-21.4a131.63 131.63 0 0 0 9.2-18.4q35.55-89.7 70.6-179.6a26.62 26.62 0 0 0 1.6-5.5c.4-2.8-.9-4.4-3.7-4.4-6.6-.1-13.3 0-19.9 0a7.54 7.54 0 0 0-7.7 5.2c-.5 1.4-1.1 2.7-1.6 4.1l-34.8 100c-2.5 7.2-5.1 14.5-7.7 22.2-.4-1.1-.6-1.7-.9-2.4z\"]\n};\nvar faAmilia = {\n prefix: 'fab',\n iconName: 'amilia',\n icon: [448, 512, [], \"f36d\", \"M240.1 32c-61.9 0-131.5 16.9-184.2 55.4-5.1 3.1-9.1 9.2-7.2 19.4 1.1 5.1 5.1 27.4 10.2 39.6 4.1 10.2 14.2 10.2 20.3 6.1 32.5-22.3 96.5-47.7 152.3-47.7 57.9 0 58.9 28.4 58.9 73.1v38.5C203 227.7 78.2 251 46.7 264.2 11.2 280.5 16.3 357.7 16.3 376s15.2 104 124.9 104c47.8 0 113.7-20.7 153.3-42.1v25.4c0 3 2.1 8.2 6.1 9.1 3.1 1 50.7 2 59.9 2s62.5.3 66.5-.7c4.1-1 5.1-6.1 5.1-9.1V168c-.1-80.3-57.9-136-192-136zm50.2 348c-21.4 13.2-48.7 24.4-79.1 24.4-52.8 0-58.9-33.5-59-44.7 0-12.2-3-42.7 18.3-52.9 24.3-13.2 75.1-29.4 119.8-33.5z\"]\n};\nvar faAndroid = {\n prefix: 'fab',\n iconName: 'android',\n icon: [576, 512, [], \"f17b\", \"M420.55,301.93a24,24,0,1,1,24-24,24,24,0,0,1-24,24m-265.1,0a24,24,0,1,1,24-24,24,24,0,0,1-24,24m273.7-144.48,47.94-83a10,10,0,1,0-17.27-10h0l-48.54,84.07a301.25,301.25,0,0,0-246.56,0L116.18,64.45a10,10,0,1,0-17.27,10h0l47.94,83C64.53,202.22,8.24,285.55,0,384H576c-8.24-98.45-64.54-181.78-146.85-226.55\"]\n};\nvar faAngellist = {\n prefix: 'fab',\n iconName: 'angellist',\n icon: [448, 512, [], \"f209\", \"M347.1 215.4c11.7-32.6 45.4-126.9 45.4-157.1 0-26.6-15.7-48.9-43.7-48.9-44.6 0-84.6 131.7-97.1 163.1C242 144 196.6 0 156.6 0c-31.1 0-45.7 22.9-45.7 51.7 0 35.3 34.2 126.8 46.6 162-6.3-2.3-13.1-4.3-20-4.3-23.4 0-48.3 29.1-48.3 52.6 0 8.9 4.9 21.4 8 29.7-36.9 10-51.1 34.6-51.1 71.7C46 435.6 114.4 512 210.6 512c118 0 191.4-88.6 191.4-202.9 0-43.1-6.9-82-54.9-93.7zM311.7 108c4-12.3 21.1-64.3 37.1-64.3 8.6 0 10.9 8.9 10.9 16 0 19.1-38.6 124.6-47.1 148l-34-6 33.1-93.7zM142.3 48.3c0-11.9 14.5-45.7 46.3 47.1l34.6 100.3c-15.6-1.3-27.7-3-35.4 1.4-10.9-28.8-45.5-119.7-45.5-148.8zM140 244c29.3 0 67.1 94.6 67.1 107.4 0 5.1-4.9 11.4-10.6 11.4-20.9 0-76.9-76.9-76.9-97.7.1-7.7 12.7-21.1 20.4-21.1zm184.3 186.3c-29.1 32-66.3 48.6-109.7 48.6-59.4 0-106.3-32.6-128.9-88.3-17.1-43.4 3.8-68.3 20.6-68.3 11.4 0 54.3 60.3 54.3 73.1 0 4.9-7.7 8.3-11.7 8.3-16.1 0-22.4-15.5-51.1-51.4-29.7 29.7 20.5 86.9 58.3 86.9 26.1 0 43.1-24.2 38-42 3.7 0 8.3.3 11.7-.6 1.1 27.1 9.1 59.4 41.7 61.7 0-.9 2-7.1 2-7.4 0-17.4-10.6-32.6-10.6-50.3 0-28.3 21.7-55.7 43.7-71.7 8-6 17.7-9.7 27.1-13.1 9.7-3.7 20-8 27.4-15.4-1.1-11.2-5.7-21.1-16.9-21.1-27.7 0-120.6 4-120.6-39.7 0-6.7.1-13.1 17.4-13.1 32.3 0 114.3 8 138.3 29.1 18.1 16.1 24.3 113.2-31 174.7zm-98.6-126c9.7 3.1 19.7 4 29.7 6-7.4 5.4-14 12-20.3 19.1-2.8-8.5-6.2-16.8-9.4-25.1z\"]\n};\nvar faAngrycreative = {\n prefix: 'fab',\n iconName: 'angrycreative',\n icon: [640, 512, [], \"f36e\", \"M640 238.2l-3.2 28.2-34.5 2.3-2 18.1 34.5-2.3-3.2 28.2-34.4 2.2-2.3 20.1 34.4-2.2-3 26.1-64.7 4.1 12.7-113.2L527 365.2l-31.9 2-23.8-117.8 30.3-2 13.6 79.4 31.7-82.4 93.1-6.2zM426.8 371.5l28.3-1.8L468 249.6l-28.4 1.9-12.8 120zM162 388.1l-19.4-36-3.5 37.4-28.2 1.7 2.7-29.1c-11 18-32 34.3-56.9 35.8C23.9 399.9-3 377 .3 339.7c2.6-29.3 26.7-62.8 67.5-65.4 37.7-2.4 47.6 23.2 51.3 28.8l2.8-30.8 38.9-2.5c20.1-1.3 38.7 3.7 42.5 23.7l2.6-26.6 64.8-4.2-2.7 27.9-36.4 2.4-1.7 17.9 36.4-2.3-2.7 27.9-36.4 2.3-1.9 19.9 36.3-2.3-2.1 20.8 55-117.2 23.8-1.6L370.4 369l8.9-85.6-22.3 1.4 2.9-27.9 75-4.9-3 28-24.3 1.6-9.7 91.9-58 3.7-4.3-15.6-39.4 2.5-8 16.3-126.2 7.7zm-44.3-70.2l-26.4 1.7C84.6 307.2 76.9 303 65 303.8c-19 1.2-33.3 17.5-34.6 33.3-1.4 16 7.3 32.5 28.7 31.2 12.8-.8 21.3-8.6 28.9-18.9l27-1.7 2.7-29.8zm56.1-7.7c1.2-12.9-7.6-13.6-26.1-12.4l-2.7 28.5c14.2-.9 27.5-2.1 28.8-16.1zm21.1 70.8l5.8-60c-5 13.5-14.7 21.1-27.9 26.6l22.1 33.4zm135.4-45l-7.9-37.8-15.8 39.3 23.7-1.5zm-170.1-74.6l-4.3-17.5-39.6 2.6-8.1 18.2-31.9 2.1 57-121.9 23.9-1.6 30.7 102 9.9-104.7 27-1.8 37.8 63.6 6.5-66.6 28.5-1.9-4 41.2c7.4-13.5 22.9-44.7 63.6-47.5 40.5-2.8 52.4 29.3 53.4 30.3l3.3-32 39.3-2.7c12.7-.9 27.8.3 36.3 9.7l-4.4-11.9 32.2-2.2 12.9 43.2 23-45.7 31-2.2-43.6 78.4-4.8 44.3-28.4 1.9 4.8-44.3-15.8-43c1 22.3-9.2 40.1-32 49.6l25.2 38.8-36.4 2.4-19.2-36.8-4 38.3-28.4 1.9 3.3-31.5c-6.7 9.3-19.7 35.4-59.6 38-26.2 1.7-45.6-10.3-55.4-39.2l-4 40.3-25 1.6-37.6-63.3-6.3 66.2-56.8 3.7zm276.6-82.1c10.2-.7 17.5-2.1 21.6-4.3 4.5-2.4 7-6.4 7.6-12.1.6-5.3-.6-8.8-3.4-10.4-3.6-2.1-10.6-2.8-22.9-2l-2.9 28.8zM327.7 214c5.6 5.9 12.7 8.5 21.3 7.9 4.7-.3 9.1-1.8 13.3-4.1 5.5-3 10.6-8 15.1-14.3l-34.2 2.3 2.4-23.9 63.1-4.3 1.2-12-31.2 2.1c-4.1-3.7-7.8-6.6-11.1-8.1-4-1.7-8.1-2.8-12.2-2.5-8 .5-15.3 3.6-22 9.2-7.7 6.4-12 14.5-12.9 24.4-1.1 9.6 1.4 17.3 7.2 23.3zm-201.3 8.2l23.8-1.6-8.3-37.6-15.5 39.2z\"]\n};\nvar faAngular = {\n prefix: 'fab',\n iconName: 'angular',\n icon: [448, 512, [], \"f420\", \"M185.7 268.1h76.2l-38.1-91.6-38.1 91.6zM223.8 32L16 106.4l31.8 275.7 176 97.9 176-97.9 31.8-275.7zM354 373.8h-48.6l-26.2-65.4H168.6l-26.2 65.4H93.7L223.8 81.5z\"]\n};\nvar faAppStore = {\n prefix: 'fab',\n iconName: 'app-store',\n icon: [512, 512, [], \"f36f\", \"M255.9 120.9l9.1-15.7c5.6-9.8 18.1-13.1 27.9-7.5 9.8 5.6 13.1 18.1 7.5 27.9l-87.5 151.5h63.3c20.5 0 32 24.1 23.1 40.8H113.8c-11.3 0-20.4-9.1-20.4-20.4 0-11.3 9.1-20.4 20.4-20.4h52l66.6-115.4-20.8-36.1c-5.6-9.8-2.3-22.2 7.5-27.9 9.8-5.6 22.2-2.3 27.9 7.5l8.9 15.7zm-78.7 218l-19.6 34c-5.6 9.8-18.1 13.1-27.9 7.5-9.8-5.6-13.1-18.1-7.5-27.9l14.6-25.2c16.4-5.1 29.8-1.2 40.4 11.6zm168.9-61.7h53.1c11.3 0 20.4 9.1 20.4 20.4 0 11.3-9.1 20.4-20.4 20.4h-29.5l19.9 34.5c5.6 9.8 2.3 22.2-7.5 27.9-9.8 5.6-22.2 2.3-27.9-7.5-33.5-58.1-58.7-101.6-75.4-130.6-17.1-29.5-4.9-59.1 7.2-69.1 13.4 23 33.4 57.7 60.1 104zM256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm216 248c0 118.7-96.1 216-216 216-118.7 0-216-96.1-216-216 0-118.7 96.1-216 216-216 118.7 0 216 96.1 216 216z\"]\n};\nvar faAppStoreIos = {\n prefix: 'fab',\n iconName: 'app-store-ios',\n icon: [448, 512, [], \"f370\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM127 384.5c-5.5 9.6-17.8 12.8-27.3 7.3-9.6-5.5-12.8-17.8-7.3-27.3l14.3-24.7c16.1-4.9 29.3-1.1 39.6 11.4L127 384.5zm138.9-53.9H84c-11 0-20-9-20-20s9-20 20-20h51l65.4-113.2-20.5-35.4c-5.5-9.6-2.2-21.8 7.3-27.3 9.6-5.5 21.8-2.2 27.3 7.3l8.9 15.4 8.9-15.4c5.5-9.6 17.8-12.8 27.3-7.3 9.6 5.5 12.8 17.8 7.3 27.3l-85.8 148.6h62.1c20.2 0 31.5 23.7 22.7 40zm98.1 0h-29l19.6 33.9c5.5 9.6 2.2 21.8-7.3 27.3-9.6 5.5-21.8 2.2-27.3-7.3-32.9-56.9-57.5-99.7-74-128.1-16.7-29-4.8-58 7.1-67.8 13.1 22.7 32.7 56.7 58.9 102h52c11 0 20 9 20 20 0 11.1-9 20-20 20z\"]\n};\nvar faApper = {\n prefix: 'fab',\n iconName: 'apper',\n icon: [640, 512, [], \"f371\", \"M42.1 239.1c22.2 0 29 2.8 33.5 14.6h.8v-22.9c0-11.3-4.8-15.4-17.9-15.4-11.3 0-14.4 2.5-15.1 12.8H4.8c.3-13.9 1.5-19.1 5.8-24.4C17.9 195 29.5 192 56.7 192c33 0 47.1 5 53.9 18.9 2 4.3 4 15.6 4 23.7v76.3H76.3l1.3-19.1h-1c-5.3 15.6-13.6 20.4-35.5 20.4-30.3 0-41.1-10.1-41.1-37.3 0-25.2 12.3-35.8 42.1-35.8zm17.1 48.1c13.1 0 16.9-3 16.9-13.4 0-9.1-4.3-11.6-19.6-11.6-13.1 0-17.9 3-17.9 12.1-.1 10.4 3.7 12.9 20.6 12.9zm77.8-94.9h38.3l-1.5 20.6h.8c9.1-17.1 15.9-20.9 37.5-20.9 14.4 0 24.7 3 31.5 9.1 9.8 8.6 12.8 20.4 12.8 48.1 0 30-3 43.1-12.1 52.9-6.8 7.3-16.4 10.1-33.2 10.1-20.4 0-29.2-5.5-33.8-21.2h-.8v70.3H137v-169zm80.9 60.7c0-27.5-3.3-32.5-20.7-32.5-16.9 0-20.7 5-20.7 28.7 0 28 3.5 33.5 21.2 33.5 16.4 0 20.2-5.6 20.2-29.7zm57.9-60.7h38.3l-1.5 20.6h.8c9.1-17.1 15.9-20.9 37.5-20.9 14.4 0 24.7 3 31.5 9.1 9.8 8.6 12.8 20.4 12.8 48.1 0 30-3 43.1-12.1 52.9-6.8 7.3-16.4 10.1-33.3 10.1-20.4 0-29.2-5.5-33.8-21.2h-.8v70.3h-39.5v-169zm80.9 60.7c0-27.5-3.3-32.5-20.7-32.5-16.9 0-20.7 5-20.7 28.7 0 28 3.5 33.5 21.2 33.5 16.4 0 20.2-5.6 20.2-29.7zm53.8-3.8c0-25.4 3.3-37.8 12.3-45.8 8.8-8.1 22.2-11.3 45.1-11.3 42.8 0 55.7 12.8 55.7 55.7v11.1h-75.3c-.3 2-.3 4-.3 4.8 0 16.9 4.5 21.9 20.1 21.9 13.9 0 17.9-3 17.9-13.9h37.5v2.3c0 9.8-2.5 18.9-6.8 24.7-7.3 9.8-19.6 13.6-44.3 13.6-27.5 0-41.6-3.3-50.6-12.3-8.5-8.5-11.3-21.3-11.3-50.8zm76.4-11.6c-.3-1.8-.3-3.3-.3-3.8 0-12.3-3.3-14.6-19.6-14.6-14.4 0-17.1 3-18.1 15.1l-.3 3.3h38.3zm55.6-45.3h38.3l-1.8 19.9h.7c6.8-14.9 14.4-20.2 29.7-20.2 10.8 0 19.1 3.3 23.4 9.3 5.3 7.3 6.8 14.4 6.8 34 0 1.5 0 5 .2 9.3h-35c.3-1.8.3-3.3.3-4 0-15.4-2-19.4-10.3-19.4-6.3 0-10.8 3.3-13.1 9.3-1 3-1 4.3-1 12.3v68h-38.3V192.3z\"]\n};\nvar faApple = {\n prefix: 'fab',\n iconName: 'apple',\n icon: [384, 512, [], \"f179\", \"M318.7 268.7c-.2-36.7 16.4-64.4 50-84.8-18.8-26.9-47.2-41.7-84.7-44.6-35.5-2.8-74.3 20.7-88.5 20.7-15 0-49.4-19.7-76.4-19.7C63.3 141.2 4 184.8 4 273.5q0 39.3 14.4 81.2c12.8 36.7 59 126.7 107.2 125.2 25.2-.6 43-17.9 75.8-17.9 31.8 0 48.3 17.9 76.4 17.9 48.6-.7 90.4-82.5 102.6-119.3-65.2-30.7-61.7-90-61.7-91.9zm-56.6-164.2c27.3-32.4 24.8-61.9 24-72.5-24.1 1.4-52 16.4-67.9 34.9-17.5 19.8-27.8 44.3-25.6 71.9 26.1 2 49.9-11.4 69.5-34.3z\"]\n};\nvar faApplePay = {\n prefix: 'fab',\n iconName: 'apple-pay',\n icon: [640, 512, [], \"f415\", \"M116.9 158.5c-7.5 8.9-19.5 15.9-31.5 14.9-1.5-12 4.4-24.8 11.3-32.6 7.5-9.1 20.6-15.6 31.3-16.1 1.2 12.4-3.7 24.7-11.1 33.8m10.9 17.2c-17.4-1-32.3 9.9-40.5 9.9-8.4 0-21-9.4-34.8-9.1-17.9.3-34.5 10.4-43.6 26.5-18.8 32.3-4.9 80 13.3 106.3 8.9 13 19.5 27.3 33.5 26.8 13.3-.5 18.5-8.6 34.5-8.6 16.1 0 20.8 8.6 34.8 8.4 14.5-.3 23.6-13 32.5-26 10.1-14.8 14.3-29.1 14.5-29.9-.3-.3-28-10.9-28.3-42.9-.3-26.8 21.9-39.5 22.9-40.3-12.5-18.6-32-20.6-38.8-21.1m100.4-36.2v194.9h30.3v-66.6h41.9c38.3 0 65.1-26.3 65.1-64.3s-26.4-64-64.1-64h-73.2zm30.3 25.5h34.9c26.3 0 41.3 14 41.3 38.6s-15 38.8-41.4 38.8h-34.8V165zm162.2 170.9c19 0 36.6-9.6 44.6-24.9h.6v23.4h28v-97c0-28.1-22.5-46.3-57.1-46.3-32.1 0-55.9 18.4-56.8 43.6h27.3c2.3-12 13.4-19.9 28.6-19.9 18.5 0 28.9 8.6 28.9 24.5v10.8l-37.8 2.3c-35.1 2.1-54.1 16.5-54.1 41.5.1 25.2 19.7 42 47.8 42zm8.2-23.1c-16.1 0-26.4-7.8-26.4-19.6 0-12.3 9.9-19.4 28.8-20.5l33.6-2.1v11c0 18.2-15.5 31.2-36 31.2zm102.5 74.6c29.5 0 43.4-11.3 55.5-45.4L640 193h-30.8l-35.6 115.1h-.6L537.4 193h-31.6L557 334.9l-2.8 8.6c-4.6 14.6-12.1 20.3-25.5 20.3-2.4 0-7-.3-8.9-.5v23.4c1.8.4 9.3.7 11.6.7z\"]\n};\nvar faArtstation = {\n prefix: 'fab',\n iconName: 'artstation',\n icon: [512, 512, [], \"f77a\", \"M2 377.4l43 74.3A51.35 51.35 0 0 0 90.9 480h285.4l-59.2-102.6zM501.8 350L335.6 59.3A51.38 51.38 0 0 0 290.2 32h-88.4l257.3 447.6 40.7-70.5c1.9-3.2 21-29.7 2-59.1zM275 304.5l-115.5-200L44 304.5z\"]\n};\nvar faAsymmetrik = {\n prefix: 'fab',\n iconName: 'asymmetrik',\n icon: [576, 512, [], \"f372\", \"M517.5 309.2c38.8-40 58.1-80 58.5-116.1.8-65.5-59.4-118.2-169.4-135C277.9 38.4 118.1 73.6 0 140.5 52 114 110.6 92.3 170.7 82.3c74.5-20.5 153-25.4 221.3-14.8C544.5 91.3 588.8 195 490.8 299.2c-10.2 10.8-22 21.1-35 30.6L304.9 103.4 114.7 388.9c-65.6-29.4-76.5-90.2-19.1-151.2 20.8-22.2 48.3-41.9 79.5-58.1 20-12.2 39.7-22.6 62-30.7-65.1 20.3-122.7 52.9-161.6 92.9-27.7 28.6-41.4 57.1-41.7 82.9-.5 35.1 23.4 65.1 68.4 83l-34.5 51.7h101.6l22-34.4c22.2 1 45.3 0 68.6-2.7l-22.8 37.1h135.5L340 406.3c18.6-5.3 36.9-11.5 54.5-18.7l45.9 71.8H542L468.6 349c18.5-12.1 35-25.5 48.9-39.8zm-187.6 80.5l-25-40.6-32.7 53.3c-23.4 3.5-46.7 5.1-69.2 4.4l101.9-159.3 78.7 123c-17.2 7.4-35.3 13.9-53.7 19.2z\"]\n};\nvar faAtlassian = {\n prefix: 'fab',\n iconName: 'atlassian',\n icon: [512, 512, [], \"f77b\", \"M152.2 236.4c-7.7-8.2-19.7-7.7-24.8 2.8L1.6 490.2c-5 10 2.4 21.7 13.4 21.7h175c5.8.1 11-3.2 13.4-8.4 37.9-77.8 15.1-196.3-51.2-267.1zM244.4 8.1c-122.3 193.4-8.5 348.6 65 495.5 2.5 5.1 7.7 8.4 13.4 8.4H497c11.2 0 18.4-11.8 13.4-21.7 0 0-234.5-470.6-240.4-482.3-5.3-10.6-18.8-10.8-25.6.1z\"]\n};\nvar faAudible = {\n prefix: 'fab',\n iconName: 'audible',\n icon: [640, 512, [], \"f373\", \"M640 199.9v54l-320 200L0 254v-54l320 200 320-200.1zm-194.5 72l47.1-29.4c-37.2-55.8-100.7-92.6-172.7-92.6-72 0-135.5 36.7-172.6 92.4h.3c2.5-2.3 5.1-4.5 7.7-6.7 89.7-74.4 219.4-58.1 290.2 36.3zm-220.1 18.8c16.9-11.9 36.5-18.7 57.4-18.7 34.4 0 65.2 18.4 86.4 47.6l45.4-28.4c-20.9-29.9-55.6-49.5-94.8-49.5-38.9 0-73.4 19.4-94.4 49zM103.6 161.1c131.8-104.3 318.2-76.4 417.5 62.1l.7 1 48.8-30.4C517.1 112.1 424.8 58.1 319.9 58.1c-103.5 0-196.6 53.5-250.5 135.6 9.9-10.5 22.7-23.5 34.2-32.6zm467 32.7z\"]\n};\nvar faAutoprefixer = {\n prefix: 'fab',\n iconName: 'autoprefixer',\n icon: [640, 512, [], \"f41c\", \"M318.4 16l-161 480h77.5l25.4-81.4h119.5L405 496h77.5L318.4 16zm-40.3 341.9l41.2-130.4h1.5l40.9 130.4h-83.6zM640 405l-10-31.4L462.1 358l19.4 56.5L640 405zm-462.1-47L10 373.7 0 405l158.5 9.4 19.4-56.4z\"]\n};\nvar faAvianex = {\n prefix: 'fab',\n iconName: 'avianex',\n icon: [512, 512, [], \"f374\", \"M453.1 32h-312c-38.9 0-76.2 31.2-83.3 69.7L1.2 410.3C-5.9 448.8 19.9 480 58.9 480h312c38.9 0 76.2-31.2 83.3-69.7l56.7-308.5c7-38.6-18.8-69.8-57.8-69.8zm-58.2 347.3l-32 13.5-115.4-110c-14.7 10-29.2 19.5-41.7 27.1l22.1 64.2-17.9 12.7-40.6-61-52.4-48.1 15.7-15.4 58 31.1c9.3-10.5 20.8-22.6 32.8-34.9L203 228.9l-68.8-99.8 18.8-28.9 8.9-4.8L265 207.8l4.9 4.5c19.4-18.8 33.8-32.4 33.8-32.4 7.7-6.5 21.5-2.9 30.7 7.9 9 10.5 10.6 24.7 2.7 31.3-1.8 1.3-15.5 11.4-35.3 25.6l4.5 7.3 94.9 119.4-6.3 7.9z\"]\n};\nvar faAviato = {\n prefix: 'fab',\n iconName: 'aviato',\n icon: [640, 512, [], \"f421\", \"M107.2 283.5l-19-41.8H36.1l-19 41.8H0l62.2-131.4 62.2 131.4h-17.2zm-45-98.1l-19.6 42.5h39.2l-19.6-42.5zm112.7 102.4l-62.2-131.4h17.1l45.1 96 45.1-96h17l-62.1 131.4zm80.6-4.3V156.4H271v127.1h-15.5zm209.1-115.6v115.6h-17.3V167.9h-41.2v-11.5h99.6v11.5h-41.1zM640 218.8c0 9.2-1.7 17.8-5.1 25.8-3.4 8-8.2 15.1-14.2 21.1-6 6-13.1 10.8-21.1 14.2-8 3.4-16.6 5.1-25.8 5.1s-17.8-1.7-25.8-5.1c-8-3.4-15.1-8.2-21.1-14.2-6-6-10.8-13-14.2-21.1-3.4-8-5.1-16.6-5.1-25.8s1.7-17.8 5.1-25.8c3.4-8 8.2-15.1 14.2-21.1 6-6 13-8.4 21.1-11.9 8-3.4 16.6-5.1 25.8-5.1s17.8 1.7 25.8 5.1c8 3.4 15.1 5.8 21.1 11.9 6 6 10.7 13.1 14.2 21.1 3.4 8 5.1 16.6 5.1 25.8zm-15.5 0c0-7.3-1.3-14-3.9-20.3-2.6-6.3-6.2-11.7-10.8-16.3-4.6-4.6-10-8.2-16.2-10.9-6.2-2.7-12.8-4-19.8-4s-13.6 1.3-19.8 4c-6.2 2.7-11.6 6.3-16.2 10.9-4.6 4.6-8.2 10-10.8 16.3-2.6 6.3-3.9 13.1-3.9 20.3 0 7.3 1.3 14 3.9 20.3 2.6 6.3 6.2 11.7 10.8 16.3 4.6 4.6 10 8.2 16.2 10.9 6.2 2.7 12.8 4 19.8 4s13.6-1.3 19.8-4c6.2-2.7 11.6-6.3 16.2-10.9 4.6-4.6 8.2-10 10.8-16.3 2.6-6.3 3.9-13.1 3.9-20.3zm-94.8 96.7v-6.3l88.9-10-242.9 13.4c.6-2.2 1.1-4.6 1.4-7.2.3-2 .5-4.2.6-6.5l64.8-8.1-64.9 1.9c0-.4-.1-.7-.1-1.1-2.8-17.2-25.5-23.7-25.5-23.7l-1.1-26.3h23.8l19 41.8h17.1L348.6 152l-62.2 131.4h17.1l19-41.8h23.6L345 268s-22.7 6.5-25.5 23.7c-.1.3-.1.7-.1 1.1l-64.9-1.9 64.8 8.1c.1 2.3.3 4.4.6 6.5.3 2.6.8 5 1.4 7.2L78.4 299.2l88.9 10v6.3c-5.9.9-10.5 6-10.5 12.2 0 6.8 5.6 12.4 12.4 12.4 6.8 0 12.4-5.6 12.4-12.4 0-6.2-4.6-11.3-10.5-12.2v-5.8l80.3 9v5.4c-5.7 1.1-9.9 6.2-9.9 12.1 0 6.8 5.6 10.2 12.4 10.2 6.8 0 12.4-3.4 12.4-10.2 0-6-4.3-11-9.9-12.1v-4.9l28.4 3.2v23.7h-5.9V360h5.9v-6.6h5v6.6h5.9v-13.8h-5.9V323l38.3 4.3c8.1 11.4 19 13.6 19 13.6l-.1 6.7-5.1.2-.1 12.1h4.1l.1-5h5.2l.1 5h4.1l-.1-12.1-5.1-.2-.1-6.7s10.9-2.1 19-13.6l38.3-4.3v23.2h-5.9V360h5.9v-6.6h5v6.6h5.9v-13.8h-5.9v-23.7l28.4-3.2v4.9c-5.7 1.1-9.9 6.2-9.9 12.1 0 6.8 5.6 10.2 12.4 10.2 6.8 0 12.4-3.4 12.4-10.2 0-6-4.3-11-9.9-12.1v-5.4l80.3-9v5.8c-5.9.9-10.5 6-10.5 12.2 0 6.8 5.6 12.4 12.4 12.4 6.8 0 12.4-5.6 12.4-12.4-.2-6.3-4.7-11.4-10.7-12.3zm-200.8-87.6l19.6-42.5 19.6 42.5h-17.9l-1.7-40.3-1.7 40.3h-17.9z\"]\n};\nvar faAws = {\n prefix: 'fab',\n iconName: 'aws',\n icon: [640, 512, [], \"f375\", \"M180.41 203.01c-.72 22.65 10.6 32.68 10.88 39.05a8.164 8.164 0 0 1-4.1 6.27l-12.8 8.96a10.66 10.66 0 0 1-5.63 1.92c-.43-.02-8.19 1.83-20.48-25.61a78.608 78.608 0 0 1-62.61 29.45c-16.28.89-60.4-9.24-58.13-56.21-1.59-38.28 34.06-62.06 70.93-60.05 7.1.02 21.6.37 46.99 6.27v-15.62c2.69-26.46-14.7-46.99-44.81-43.91-2.4.01-19.4-.5-45.84 10.11-7.36 3.38-8.3 2.82-10.75 2.82-7.41 0-4.36-21.48-2.94-24.2 5.21-6.4 35.86-18.35 65.94-18.18a76.857 76.857 0 0 1 55.69 17.28 70.285 70.285 0 0 1 17.67 52.36l-.01 69.29zM93.99 235.4c32.43-.47 46.16-19.97 49.29-30.47 2.46-10.05 2.05-16.41 2.05-27.4-9.67-2.32-23.59-4.85-39.56-4.87-15.15-1.14-42.82 5.63-41.74 32.26-1.24 16.79 11.12 31.4 29.96 30.48zm170.92 23.05c-7.86.72-11.52-4.86-12.68-10.37l-49.8-164.65c-.97-2.78-1.61-5.65-1.92-8.58a4.61 4.61 0 0 1 3.86-5.25c.24-.04-2.13 0 22.25 0 8.78-.88 11.64 6.03 12.55 10.37l35.72 140.83 33.16-140.83c.53-3.22 2.94-11.07 12.8-10.24h17.16c2.17-.18 11.11-.5 12.68 10.37l33.42 142.63L420.98 80.1c.48-2.18 2.72-11.37 12.68-10.37h19.72c.85-.13 6.15-.81 5.25 8.58-.43 1.85 3.41-10.66-52.75 169.9-1.15 5.51-4.82 11.09-12.68 10.37h-18.69c-10.94 1.15-12.51-9.66-12.68-10.75L328.67 110.7l-32.78 136.99c-.16 1.09-1.73 11.9-12.68 10.75h-18.3zm273.48 5.63c-5.88.01-33.92-.3-57.36-12.29a12.802 12.802 0 0 1-7.81-11.91v-10.75c0-8.45 6.2-6.9 8.83-5.89 10.04 4.06 16.48 7.14 28.81 9.6 36.65 7.53 52.77-2.3 56.72-4.48 13.15-7.81 14.19-25.68 5.25-34.95-10.48-8.79-15.48-9.12-53.13-21-4.64-1.29-43.7-13.61-43.79-52.36-.61-28.24 25.05-56.18 69.52-55.95 12.67-.01 46.43 4.13 55.57 15.62 1.35 2.09 2.02 4.55 1.92 7.04v10.11c0 4.44-1.62 6.66-4.87 6.66-7.71-.86-21.39-11.17-49.16-10.75-6.89-.36-39.89.91-38.41 24.97-.43 18.96 26.61 26.07 29.7 26.89 36.46 10.97 48.65 12.79 63.12 29.58 17.14 22.25 7.9 48.3 4.35 55.44-19.08 37.49-68.42 34.44-69.26 34.42zm40.2 104.86c-70.03 51.72-171.69 79.25-258.49 79.25A469.127 469.127 0 0 1 2.83 327.46c-6.53-5.89-.77-13.96 7.17-9.47a637.37 637.37 0 0 0 316.88 84.12 630.22 630.22 0 0 0 241.59-49.55c11.78-5 21.77 7.8 10.12 16.38zm29.19-33.29c-8.96-11.52-59.28-5.38-81.81-2.69-6.79.77-7.94-5.12-1.79-9.47 40.07-28.17 105.88-20.1 113.44-10.63 7.55 9.47-2.05 75.41-39.56 106.91-5.76 4.87-11.27 2.3-8.71-4.1 8.44-21.25 27.39-68.49 18.43-80.02z\"]\n};\nvar faBandcamp = {\n prefix: 'fab',\n iconName: 'bandcamp',\n icon: [512, 512, [], \"f2d5\", \"M256,8C119,8,8,119,8,256S119,504,256,504,504,393,504,256,393,8,256,8Zm48.2,326.1h-181L207.9,178h181Z\"]\n};\nvar faBattleNet = {\n prefix: 'fab',\n iconName: 'battle-net',\n icon: [512, 512, [], \"f835\", \"M448.61 225.62c26.87.18 35.57-7.43 38.92-12.37 12.47-16.32-7.06-47.6-52.85-71.33 17.76-33.58 30.11-63.68 36.34-85.3 3.38-11.83 1.09-19 .45-20.25-1.72 10.52-15.85 48.46-48.2 100.05-25-11.22-56.52-20.1-93.77-23.8-8.94-16.94-34.88-63.86-60.48-88.93C252.18 7.14 238.7 1.07 228.18.22h-.05c-13.83-1.55-22.67 5.85-27.4 11-17.2 18.53-24.33 48.87-25 84.07-7.24-12.35-17.17-24.63-28.5-25.93h-.18c-20.66-3.48-38.39 29.22-36 81.29-38.36 1.38-71 5.75-93 11.23-9.9 2.45-16.22 7.27-17.76 9.72 1-.38 22.4-9.22 111.56-9.22 5.22 53 29.75 101.82 26 93.19-9.73 15.4-38.24 62.36-47.31 97.7-5.87 22.88-4.37 37.61.15 47.14 5.57 12.75 16.41 16.72 23.2 18.26 25 5.71 55.38-3.63 86.7-21.14-7.53 12.84-13.9 28.51-9.06 39.34 7.31 19.65 44.49 18.66 88.44-9.45 20.18 32.18 40.07 57.94 55.7 74.12a39.79 39.79 0 0 0 8.75 7.09c5.14 3.21 8.58 3.37 8.58 3.37-8.24-6.75-34-38-62.54-91.78 22.22-16 45.65-38.87 67.47-69.27 122.82 4.6 143.29-24.76 148-31.64 14.67-19.88 3.43-57.44-57.32-93.69zm-77.85 106.22c23.81-37.71 30.34-67.77 29.45-92.33 27.86 17.57 47.18 37.58 49.06 58.83 1.14 12.93-8.1 29.12-78.51 33.5zM216.9 387.69c9.76-6.23 19.53-13.12 29.2-20.49 6.68 13.33 13.6 26.1 20.6 38.19-40.6 21.86-68.84 12.76-49.8-17.7zm215-171.35c-10.29-5.34-21.16-10.34-32.38-15.05a722.459 722.459 0 0 0 22.74-36.9c39.06 24.1 45.9 53.18 9.64 51.95zM279.18 398c-5.51-11.35-11-23.5-16.5-36.44 43.25 1.27 62.42-18.73 63.28-20.41 0 .07-25 15.64-62.53 12.25a718.78 718.78 0 0 0 85.06-84q13.06-15.31 24.93-31.11c-.36-.29-1.54-3-16.51-12-51.7 60.27-102.34 98-132.75 115.92-20.59-11.18-40.84-31.78-55.71-61.49-20-39.92-30-82.39-31.57-116.07 12.3.91 25.27 2.17 38.85 3.88-22.29 36.8-14.39 63-13.47 64.23 0-.07-.95-29.17 20.14-59.57a695.23 695.23 0 0 0 44.67 152.84c.93-.38 1.84.88 18.67-8.25-26.33-74.47-33.76-138.17-34-173.43 20-12.42 48.18-19.8 81.63-17.81 44.57 2.67 86.36 15.25 116.32 30.71q-10.69 15.66-23.33 32.47C365.63 152 339.1 145.84 337.5 146c.11 0 25.9 14.07 41.52 47.22a717.63 717.63 0 0 0-115.34-31.71 646.608 646.608 0 0 0-39.39-6.05c-.07.45-1.81 1.85-2.16 20.33C300 190.28 358.78 215.68 389.36 233c.74 23.55-6.95 51.61-25.41 79.57-24.6 37.31-56.39 67.23-84.77 85.43zm27.4-287c-44.56-1.66-73.58 7.43-94.69 20.67 2-52.3 21.31-76.38 38.21-75.28C267 52.15 305 108.55 306.58 111zm-130.65 3.1c.48 12.11 1.59 24.62 3.21 37.28-14.55-.85-28.74-1.25-42.4-1.26-.08 3.24-.12-51 24.67-49.59h.09c5.76 1.09 10.63 6.88 14.43 13.57zm-28.06 162c20.76 39.7 43.3 60.57 65.25 72.31-46.79 24.76-77.53 20-84.92 4.51-.2-.21-11.13-15.3 19.67-76.81zm210.06 74.8\"]\n};\nvar faBehance = {\n prefix: 'fab',\n iconName: 'behance',\n icon: [576, 512, [], \"f1b4\", \"M232 237.2c31.8-15.2 48.4-38.2 48.4-74 0-70.6-52.6-87.8-113.3-87.8H0v354.4h171.8c64.4 0 124.9-30.9 124.9-102.9 0-44.5-21.1-77.4-64.7-89.7zM77.9 135.9H151c28.1 0 53.4 7.9 53.4 40.5 0 30.1-19.7 42.2-47.5 42.2h-79v-82.7zm83.3 233.7H77.9V272h84.9c34.3 0 56 14.3 56 50.6 0 35.8-25.9 47-57.6 47zm358.5-240.7H376V94h143.7v34.9zM576 305.2c0-75.9-44.4-139.2-124.9-139.2-78.2 0-131.3 58.8-131.3 135.8 0 79.9 50.3 134.7 131.3 134.7 61.3 0 101-27.6 120.1-86.3H509c-6.7 21.9-34.3 33.5-55.7 33.5-41.3 0-63-24.2-63-65.3h185.1c.3-4.2.6-8.7.6-13.2zM390.4 274c2.3-33.7 24.7-54.8 58.5-54.8 35.4 0 53.2 20.8 56.2 54.8H390.4z\"]\n};\nvar faBehanceSquare = {\n prefix: 'fab',\n iconName: 'behance-square',\n icon: [448, 512, [], \"f1b5\", \"M186.5 293c0 19.3-14 25.4-31.2 25.4h-45.1v-52.9h46c18.6.1 30.3 7.8 30.3 27.5zm-7.7-82.3c0-17.7-13.7-21.9-28.9-21.9h-39.6v44.8H153c15.1 0 25.8-6.6 25.8-22.9zm132.3 23.2c-18.3 0-30.5 11.4-31.7 29.7h62.2c-1.7-18.5-11.3-29.7-30.5-29.7zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM271.7 185h77.8v-18.9h-77.8V185zm-43 110.3c0-24.1-11.4-44.9-35-51.6 17.2-8.2 26.2-17.7 26.2-37 0-38.2-28.5-47.5-61.4-47.5H68v192h93.1c34.9-.2 67.6-16.9 67.6-55.9zM380 280.5c0-41.1-24.1-75.4-67.6-75.4-42.4 0-71.1 31.8-71.1 73.6 0 43.3 27.3 73 71.1 73 33.2 0 54.7-14.9 65.1-46.8h-33.7c-3.7 11.9-18.6 18.1-30.2 18.1-22.4 0-34.1-13.1-34.1-35.3h100.2c.1-2.3.3-4.8.3-7.2z\"]\n};\nvar faBimobject = {\n prefix: 'fab',\n iconName: 'bimobject',\n icon: [448, 512, [], \"f378\", \"M416 32H32C14.4 32 0 46.4 0 64v384c0 17.6 14.4 32 32 32h384c17.6 0 32-14.4 32-32V64c0-17.6-14.4-32-32-32zm-64 257.4c0 49.4-11.4 82.6-103.8 82.6h-16.9c-44.1 0-62.4-14.9-70.4-38.8h-.9V368H96V136h64v74.7h1.1c4.6-30.5 39.7-38.8 69.7-38.8h17.3c92.4 0 103.8 33.1 103.8 82.5v35zm-64-28.9v22.9c0 21.7-3.4 33.8-38.4 33.8h-45.3c-28.9 0-44.1-6.5-44.1-35.7v-19c0-29.3 15.2-35.7 44.1-35.7h45.3c35-.2 38.4 12 38.4 33.7z\"]\n};\nvar faBitbucket = {\n prefix: 'fab',\n iconName: 'bitbucket',\n icon: [512, 512, [], \"f171\", \"M22.2 32A16 16 0 0 0 6 47.8a26.35 26.35 0 0 0 .2 2.8l67.9 412.1a21.77 21.77 0 0 0 21.3 18.2h325.7a16 16 0 0 0 16-13.4L505 50.7a16 16 0 0 0-13.2-18.3 24.58 24.58 0 0 0-2.8-.2L22.2 32zm285.9 297.8h-104l-28.1-147h157.3l-25.2 147z\"]\n};\nvar faBitcoin = {\n prefix: 'fab',\n iconName: 'bitcoin',\n icon: [512, 512, [], \"f379\", \"M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zm-141.651-35.33c4.937-32.999-20.191-50.739-54.55-62.573l11.146-44.702-27.213-6.781-10.851 43.524c-7.154-1.783-14.502-3.464-21.803-5.13l10.929-43.81-27.198-6.781-11.153 44.686c-5.922-1.349-11.735-2.682-17.377-4.084l.031-.14-37.53-9.37-7.239 29.062s20.191 4.627 19.765 4.913c11.022 2.751 13.014 10.044 12.68 15.825l-12.696 50.925c.76.194 1.744.473 2.829.907-.907-.225-1.876-.473-2.876-.713l-17.796 71.338c-1.349 3.348-4.767 8.37-12.471 6.464.271.395-19.78-4.937-19.78-4.937l-13.51 31.147 35.414 8.827c6.588 1.651 13.045 3.379 19.4 5.006l-11.262 45.213 27.182 6.781 11.153-44.733a1038.209 1038.209 0 0 0 21.687 5.627l-11.115 44.523 27.213 6.781 11.262-45.128c46.404 8.781 81.299 5.239 95.986-36.727 11.836-33.79-.589-53.281-25.004-65.991 17.78-4.098 31.174-15.792 34.747-39.949zm-62.177 87.179c-8.41 33.79-65.308 15.523-83.755 10.943l14.944-59.899c18.446 4.603 77.6 13.717 68.811 48.956zm8.417-87.667c-7.673 30.736-55.031 15.12-70.393 11.292l13.548-54.327c15.363 3.828 64.836 10.973 56.845 43.035z\"]\n};\nvar faBity = {\n prefix: 'fab',\n iconName: 'bity',\n icon: [496, 512, [], \"f37a\", \"M78.4 67.2C173.8-22 324.5-24 421.5 71c14.3 14.1-6.4 37.1-22.4 21.5-84.8-82.4-215.8-80.3-298.9-3.2-16.3 15.1-36.5-8.3-21.8-22.1zm98.9 418.6c19.3 5.7 29.3-23.6 7.9-30C73 421.9 9.4 306.1 37.7 194.8c5-19.6-24.9-28.1-30.2-7.1-32.1 127.4 41.1 259.8 169.8 298.1zm148.1-2c121.9-40.2 192.9-166.9 164.4-291-4.5-19.7-34.9-13.8-30 7.9 24.2 107.7-37.1 217.9-143.2 253.4-21.2 7-10.4 36 8.8 29.7zm-62.9-79l.2-71.8c0-8.2-6.6-14.8-14.8-14.8-8.2 0-14.8 6.7-14.8 14.8l-.2 71.8c0 8.2 6.6 14.8 14.8 14.8s14.8-6.6 14.8-14.8zm71-269c2.1 90.9 4.7 131.9-85.5 132.5-92.5-.7-86.9-44.3-85.5-132.5 0-21.8-32.5-19.6-32.5 0v71.6c0 69.3 60.7 90.9 118 90.1 57.3.8 118-20.8 118-90.1v-71.6c0-19.6-32.5-21.8-32.5 0z\"]\n};\nvar faBlackTie = {\n prefix: 'fab',\n iconName: 'black-tie',\n icon: [448, 512, [], \"f27e\", \"M0 32v448h448V32H0zm316.5 325.2L224 445.9l-92.5-88.7 64.5-184-64.5-86.6h184.9L252 173.2l64.5 184z\"]\n};\nvar faBlackberry = {\n prefix: 'fab',\n iconName: 'blackberry',\n icon: [512, 512, [], \"f37b\", \"M166 116.9c0 23.4-16.4 49.1-72.5 49.1H23.4l21-88.8h67.8c42.1 0 53.8 23.3 53.8 39.7zm126.2-39.7h-67.8L205.7 166h70.1c53.8 0 70.1-25.7 70.1-49.1.1-16.4-11.6-39.7-53.7-39.7zM88.8 208.1H21L0 296.9h70.1c56.1 0 72.5-23.4 72.5-49.1 0-16.3-11.7-39.7-53.8-39.7zm180.1 0h-67.8l-18.7 88.8h70.1c53.8 0 70.1-23.4 70.1-49.1 0-16.3-11.7-39.7-53.7-39.7zm189.3-53.8h-67.8l-18.7 88.8h70.1c53.8 0 70.1-23.4 70.1-49.1.1-16.3-11.6-39.7-53.7-39.7zm-28 137.9h-67.8L343.7 381h70.1c56.1 0 70.1-23.4 70.1-49.1 0-16.3-11.6-39.7-53.7-39.7zM240.8 346H173l-18.7 88.8h70.1c56.1 0 70.1-25.7 70.1-49.1.1-16.3-11.6-39.7-53.7-39.7z\"]\n};\nvar faBlogger = {\n prefix: 'fab',\n iconName: 'blogger',\n icon: [448, 512, [], \"f37c\", \"M162.4 196c4.8-4.9 6.2-5.1 36.4-5.1 27.2 0 28.1.1 32.1 2.1 5.8 2.9 8.3 7 8.3 13.6 0 5.9-2.4 10-7.6 13.4-2.8 1.8-4.5 1.9-31.1 2.1-16.4.1-29.5-.2-31.5-.8-10.3-2.9-14.1-17.7-6.6-25.3zm61.4 94.5c-53.9 0-55.8.2-60.2 4.1-3.5 3.1-5.7 9.4-5.1 13.9.7 4.7 4.8 10.1 9.2 12 2.2 1 14.1 1.7 56.3 1.2l47.9-.6 9.2-1.5c9-5.1 10.5-17.4 3.1-24.4-5.3-4.7-5-4.7-60.4-4.7zm223.4 130.1c-3.5 28.4-23 50.4-51.1 57.5-7.2 1.8-9.7 1.9-172.9 1.8-157.8 0-165.9-.1-172-1.8-8.4-2.2-15.6-5.5-22.3-10-5.6-3.8-13.9-11.8-17-16.4-3.8-5.6-8.2-15.3-10-22C.1 423 0 420.3 0 256.3 0 93.2 0 89.7 1.8 82.6 8.1 57.9 27.7 39 53 33.4c7.3-1.6 332.1-1.9 340-.3 21.2 4.3 37.9 17.1 47.6 36.4 7.7 15.3 7-1.5 7.3 180.6.2 115.8 0 164.5-.7 170.5zm-85.4-185.2c-1.1-5-4.2-9.6-7.7-11.5-1.1-.6-8-1.3-15.5-1.7-12.4-.6-13.8-.8-17.8-3.1-6.2-3.6-7.9-7.6-8-18.3 0-20.4-8.5-39.4-25.3-56.5-12-12.2-25.3-20.5-40.6-25.1-3.6-1.1-11.8-1.5-39.2-1.8-42.9-.5-52.5.4-67.1 6.2-27 10.7-46.3 33.4-53.4 62.4-1.3 5.4-1.6 14.2-1.9 64.3-.4 62.8 0 72.1 4 84.5 9.7 30.7 37.1 53.4 64.6 58.4 9.2 1.7 122.2 2.1 133.7.5 20.1-2.7 35.9-10.8 50.7-25.9 10.7-10.9 17.4-22.8 21.8-38.5 3.2-10.9 2.9-88.4 1.7-93.9z\"]\n};\nvar faBloggerB = {\n prefix: 'fab',\n iconName: 'blogger-b',\n icon: [448, 512, [], \"f37d\", \"M446.6 222.7c-1.8-8-6.8-15.4-12.5-18.5-1.8-1-13-2.2-25-2.7-20.1-.9-22.3-1.3-28.7-5-10.1-5.9-12.8-12.3-12.9-29.5-.1-33-13.8-63.7-40.9-91.3-19.3-19.7-40.9-33-65.5-40.5-5.9-1.8-19.1-2.4-63.3-2.9-69.4-.8-84.8.6-108.4 10C45.9 59.5 14.7 96.1 3.3 142.9 1.2 151.7.7 165.8.2 246.8c-.6 101.5.1 116.4 6.4 136.5 15.6 49.6 59.9 86.3 104.4 94.3 14.8 2.7 197.3 3.3 216 .8 32.5-4.4 58-17.5 81.9-41.9 17.3-17.7 28.1-36.8 35.2-62.1 4.9-17.6 4.5-142.8 2.5-151.7zm-322.1-63.6c7.8-7.9 10-8.2 58.8-8.2 43.9 0 45.4.1 51.8 3.4 9.3 4.7 13.4 11.3 13.4 21.9 0 9.5-3.8 16.2-12.3 21.6-4.6 2.9-7.3 3.1-50.3 3.3-26.5.2-47.7-.4-50.8-1.2-16.6-4.7-22.8-28.5-10.6-40.8zm191.8 199.8l-14.9 2.4-77.5.9c-68.1.8-87.3-.4-90.9-2-7.1-3.1-13.8-11.7-14.9-19.4-1.1-7.3 2.6-17.3 8.2-22.4 7.1-6.4 10.2-6.6 97.3-6.7 89.6-.1 89.1-.1 97.6 7.8 12.1 11.3 9.5 31.2-4.9 39.4z\"]\n};\nvar faBluetooth = {\n prefix: 'fab',\n iconName: 'bluetooth',\n icon: [448, 512, [], \"f293\", \"M292.6 171.1L249.7 214l-.3-86 43.2 43.1m-43.2 219.8l43.1-43.1-42.9-42.9-.2 86zM416 259.4C416 465 344.1 512 230.9 512S32 465 32 259.4 115.4 0 228.6 0 416 53.9 416 259.4zm-158.5 0l79.4-88.6L211.8 36.5v176.9L138 139.6l-27 26.9 92.7 93-92.7 93 26.9 26.9 73.8-73.8 2.3 170 127.4-127.5-83.9-88.7z\"]\n};\nvar faBluetoothB = {\n prefix: 'fab',\n iconName: 'bluetooth-b',\n icon: [320, 512, [], \"f294\", \"M196.48 260.023l92.626-103.333L143.125 0v206.33l-86.111-86.111-31.406 31.405 108.061 108.399L25.608 368.422l31.406 31.405 86.111-86.111L145.84 512l148.552-148.644-97.912-103.333zm40.86-102.996l-49.977 49.978-.338-100.295 50.315 50.317zM187.363 313.04l49.977 49.978-50.315 50.316.338-100.294z\"]\n};\nvar faBootstrap = {\n prefix: 'fab',\n iconName: 'bootstrap',\n icon: [576, 512, [], \"f836\", \"M333.5,201.4c0-22.1-15.6-34.3-43-34.3h-50.4v71.2h42.5C315.4,238.2,333.5,225,333.5,201.4z M517,188.6 c-9.5-30.9-10.9-68.8-9.8-98.1c1.1-30.5-22.7-58.5-54.7-58.5H123.7c-32.1,0-55.8,28.1-54.7,58.5c1,29.3-0.3,67.2-9.8,98.1 c-9.6,31-25.7,50.6-52.2,53.1v28.5c26.4,2.5,42.6,22.1,52.2,53.1c9.5,30.9,10.9,68.8,9.8,98.1c-1.1,30.5,22.7,58.5,54.7,58.5h328.7 c32.1,0,55.8-28.1,54.7-58.5c-1-29.3,0.3-67.2,9.8-98.1c9.6-31,25.7-50.6,52.1-53.1v-28.5C542.7,239.2,526.5,219.6,517,188.6z M300.2,375.1h-97.9V136.8h97.4c43.3,0,71.7,23.4,71.7,59.4c0,25.3-19.1,47.9-43.5,51.8v1.3c33.2,3.6,55.5,26.6,55.5,58.3 C383.4,349.7,352.1,375.1,300.2,375.1z M290.2,266.4h-50.1v78.4h52.3c34.2,0,52.3-13.7,52.3-39.5 C344.7,279.6,326.1,266.4,290.2,266.4z\"]\n};\nvar faBtc = {\n prefix: 'fab',\n iconName: 'btc',\n icon: [384, 512, [], \"f15a\", \"M310.204 242.638c27.73-14.18 45.377-39.39 41.28-81.3-5.358-57.351-52.458-76.573-114.85-81.929V0h-48.528v77.203c-12.605 0-25.525.315-38.444.63V0h-48.528v79.409c-17.842.539-38.622.276-97.37 0v51.678c38.314-.678 58.417-3.14 63.023 21.427v217.429c-2.925 19.492-18.524 16.685-53.255 16.071L3.765 443.68c88.481 0 97.37.315 97.37.315V512h48.528v-67.06c13.234.315 26.154.315 38.444.315V512h48.528v-68.005c81.299-4.412 135.647-24.894 142.895-101.467 5.671-61.446-23.32-88.862-69.326-99.89zM150.608 134.553c27.415 0 113.126-8.507 113.126 48.528 0 54.515-85.71 48.212-113.126 48.212v-96.74zm0 251.776V279.821c32.772 0 133.127-9.138 133.127 53.255-.001 60.186-100.355 53.253-133.127 53.253z\"]\n};\nvar faBuffer = {\n prefix: 'fab',\n iconName: 'buffer',\n icon: [448, 512, [], \"f837\", \"M427.84 380.67l-196.5 97.82a18.6 18.6 0 0 1-14.67 0L20.16 380.67c-4-2-4-5.28 0-7.29L67.22 350a18.65 18.65 0 0 1 14.69 0l134.76 67a18.51 18.51 0 0 0 14.67 0l134.76-67a18.62 18.62 0 0 1 14.68 0l47.06 23.43c4.05 1.96 4.05 5.24 0 7.24zm0-136.53l-47.06-23.43a18.62 18.62 0 0 0-14.68 0l-134.76 67.08a18.68 18.68 0 0 1-14.67 0L81.91 220.71a18.65 18.65 0 0 0-14.69 0l-47.06 23.43c-4 2-4 5.29 0 7.31l196.51 97.8a18.6 18.6 0 0 0 14.67 0l196.5-97.8c4.05-2.02 4.05-5.3 0-7.31zM20.16 130.42l196.5 90.29a20.08 20.08 0 0 0 14.67 0l196.51-90.29c4-1.86 4-4.89 0-6.74L231.33 33.4a19.88 19.88 0 0 0-14.67 0l-196.5 90.28c-4.05 1.85-4.05 4.88 0 6.74z\"]\n};\nvar faBuromobelexperte = {\n prefix: 'fab',\n iconName: 'buromobelexperte',\n icon: [448, 512, [], \"f37f\", \"M0 32v128h128V32H0zm120 120H8V40h112v112zm40-120v128h128V32H160zm120 120H168V40h112v112zm40-120v128h128V32H320zm120 120H328V40h112v112zM0 192v128h128V192H0zm120 120H8V200h112v112zm40-120v128h128V192H160zm120 120H168V200h112v112zm40-120v128h128V192H320zm120 120H328V200h112v112zM0 352v128h128V352H0zm120 120H8V360h112v112zm40-120v128h128V352H160zm120 120H168V360h112v112zm40-120v128h128V352H320z\"]\n};\nvar faBuyNLarge = {\n prefix: 'fab',\n iconName: 'buy-n-large',\n icon: [576, 512, [], \"f8a6\", \"M288 32C133.27 32 7.79 132.32 7.79 256S133.27 480 288 480s280.21-100.32 280.21-224S442.73 32 288 32zm-85.39 357.19L64.1 390.55l77.25-290.74h133.44c63.15 0 84.93 28.65 78 72.84a60.24 60.24 0 0 1-1.5 6.85 77.39 77.39 0 0 0-17.21-1.93c-42.35 0-76.69 33.88-76.69 75.65 0 37.14 27.14 68 62.93 74.45-18.24 37.16-56.16 60.92-117.71 61.52zM358 207.11h32l-22.16 90.31h-35.41l-11.19-35.63-7.83 35.63h-37.83l26.63-90.31h31.34l15 36.75zm145.86 182.08H306.79L322.63 328a78.8 78.8 0 0 0 11.47.83c42.34 0 76.69-33.87 76.69-75.65 0-32.65-21-60.46-50.38-71.06l21.33-82.35h92.5l-53.05 205.36h103.87zM211.7 269.39H187l-13.8 56.47h24.7c16.14 0 32.11-3.18 37.94-26.65 5.56-22.31-7.99-29.82-24.14-29.82zM233 170h-21.34L200 217.71h21.37c18 0 35.38-14.64 39.21-30.14C265.23 168.71 251.07 170 233 170z\"]\n};\nvar faBuysellads = {\n prefix: 'fab',\n iconName: 'buysellads',\n icon: [448, 512, [], \"f20d\", \"M224 150.7l42.9 160.7h-85.8L224 150.7zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-65.3 325.3l-94.5-298.7H159.8L65.3 405.3H156l111.7-91.6 24.2 91.6h90.8z\"]\n};\nvar faCanadianMapleLeaf = {\n prefix: 'fab',\n iconName: 'canadian-maple-leaf',\n icon: [512, 512, [], \"f785\", \"M383.8 351.7c2.5-2.5 105.2-92.4 105.2-92.4l-17.5-7.5c-10-4.9-7.4-11.5-5-17.4 2.4-7.6 20.1-67.3 20.1-67.3s-47.7 10-57.7 12.5c-7.5 2.4-10-2.5-12.5-7.5s-15-32.4-15-32.4-52.6 59.9-55.1 62.3c-10 7.5-20.1 0-17.6-10 0-10 27.6-129.6 27.6-129.6s-30.1 17.4-40.1 22.4c-7.5 5-12.6 5-17.6-5C293.5 72.3 255.9 0 255.9 0s-37.5 72.3-42.5 79.8c-5 10-10 10-17.6 5-10-5-40.1-22.4-40.1-22.4S183.3 182 183.3 192c2.5 10-7.5 17.5-17.6 10-2.5-2.5-55.1-62.3-55.1-62.3S98.1 167 95.6 172s-5 9.9-12.5 7.5C73 177 25.4 167 25.4 167s17.6 59.7 20.1 67.3c2.4 6 5 12.5-5 17.4L23 259.3s102.6 89.9 105.2 92.4c5.1 5 10 7.5 5.1 22.5-5.1 15-10.1 35.1-10.1 35.1s95.2-20.1 105.3-22.6c8.7-.9 18.3 2.5 18.3 12.5S241 512 241 512h30s-5.8-102.7-5.8-112.8 9.5-13.4 18.4-12.5c10 2.5 105.2 22.6 105.2 22.6s-5-20.1-10-35.1 0-17.5 5-22.5z\"]\n};\nvar faCcAmazonPay = {\n prefix: 'fab',\n iconName: 'cc-amazon-pay',\n icon: [576, 512, [], \"f42d\", \"M124.7 201.8c.1-11.8 0-23.5 0-35.3v-35.3c0-1.3.4-2 1.4-2.7 11.5-8 24.1-12.1 38.2-11.1 12.5.9 22.7 7 28.1 21.7 3.3 8.9 4.1 18.2 4.1 27.7 0 8.7-.7 17.3-3.4 25.6-5.7 17.8-18.7 24.7-35.7 23.9-11.7-.5-21.9-5-31.4-11.7-.9-.8-1.4-1.6-1.3-2.8zm154.9 14.6c4.6 1.8 9.3 2 14.1 1.5 11.6-1.2 21.9-5.7 31.3-12.5.9-.6 1.3-1.3 1.3-2.5-.1-3.9 0-7.9 0-11.8 0-4-.1-8 0-12 0-1.4-.4-2-1.8-2.2-7-.9-13.9-2.2-20.9-2.9-7-.6-14-.3-20.8 1.9-6.7 2.2-11.7 6.2-13.7 13.1-1.6 5.4-1.6 10.8.1 16.2 1.6 5.5 5.2 9.2 10.4 11.2zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zm-207.5 23.9c.4 1.7.9 3.4 1.6 5.1 16.5 40.6 32.9 81.3 49.5 121.9 1.4 3.5 1.7 6.4.2 9.9-2.8 6.2-4.9 12.6-7.8 18.7-2.6 5.5-6.7 9.5-12.7 11.2-4.2 1.1-8.5 1.3-12.9.9-2.1-.2-4.2-.7-6.3-.8-2.8-.2-4.2 1.1-4.3 4-.1 2.8-.1 5.6 0 8.3.1 4.6 1.6 6.7 6.2 7.5 4.7.8 9.4 1.6 14.2 1.7 14.3.3 25.7-5.4 33.1-17.9 2.9-4.9 5.6-10.1 7.7-15.4 19.8-50.1 39.5-100.3 59.2-150.5.6-1.5 1.1-3 1.3-4.6.4-2.4-.7-3.6-3.1-3.7-5.6-.1-11.1 0-16.7 0-3.1 0-5.3 1.4-6.4 4.3-.4 1.1-.9 2.3-1.3 3.4l-29.1 83.7c-2.1 6.1-4.2 12.1-6.5 18.6-.4-.9-.6-1.4-.8-1.9-10.8-29.9-21.6-59.9-32.4-89.8-1.7-4.7-3.5-9.5-5.3-14.2-.9-2.5-2.7-4-5.4-4-6.4-.1-12.8-.2-19.2-.1-2.2 0-3.3 1.6-2.8 3.7zM242.4 206c1.7 11.7 7.6 20.8 18 26.6 9.9 5.5 20.7 6.2 31.7 4.6 12.7-1.9 23.9-7.3 33.8-15.5.4-.3.8-.6 1.4-1 .5 3.2.9 6.2 1.5 9.2.5 2.6 2.1 4.3 4.5 4.4 4.6.1 9.1.1 13.7 0 2.3-.1 3.8-1.6 4-3.9.1-.8.1-1.6.1-2.3v-88.8c0-3.6-.2-7.2-.7-10.8-1.6-10.8-6.2-19.7-15.9-25.4-5.6-3.3-11.8-5-18.2-5.9-3-.4-6-.7-9.1-1.1h-10c-.8.1-1.6.3-2.5.3-8.2.4-16.3 1.4-24.2 3.5-5.1 1.3-10 3.2-15 4.9-3 1-4.5 3.2-4.4 6.5.1 2.8-.1 5.6 0 8.3.1 4.1 1.8 5.2 5.7 4.1 6.5-1.7 13.1-3.5 19.7-4.8 10.3-1.9 20.7-2.7 31.1-1.2 5.4.8 10.5 2.4 14.1 7 3.1 4 4.2 8.8 4.4 13.7.3 6.9.2 13.9.3 20.8 0 .4-.1.7-.2 1.2-.4 0-.8 0-1.1-.1-8.8-2.1-17.7-3.6-26.8-4.1-9.5-.5-18.9.1-27.9 3.2-10.8 3.8-19.5 10.3-24.6 20.8-4.1 8.3-4.6 17-3.4 25.8zM98.7 106.9v175.3c0 .8 0 1.7.1 2.5.2 2.5 1.7 4.1 4.1 4.2 5.9.1 11.8.1 17.7 0 2.5 0 4-1.7 4.1-4.1.1-.8.1-1.7.1-2.5v-60.7c.9.7 1.4 1.2 1.9 1.6 15 12.5 32.2 16.6 51.1 12.9 17.1-3.4 28.9-13.9 36.7-29.2 5.8-11.6 8.3-24.1 8.7-37 .5-14.3-1-28.4-6.8-41.7-7.1-16.4-18.9-27.3-36.7-30.9-2.7-.6-5.5-.8-8.2-1.2h-7c-1.2.2-2.4.3-3.6.5-11.7 1.4-22.3 5.8-31.8 12.7-2 1.4-3.9 3-5.9 4.5-.1-.5-.3-.8-.4-1.2-.4-2.3-.7-4.6-1.1-6.9-.6-3.9-2.5-5.5-6.4-5.6h-9.7c-5.9-.1-6.9 1-6.9 6.8zM493.6 339c-2.7-.7-5.1 0-7.6 1-43.9 18.4-89.5 30.2-136.8 35.8-14.5 1.7-29.1 2.8-43.7 3.2-26.6.7-53.2-.8-79.6-4.3-17.8-2.4-35.5-5.7-53-9.9-37-8.9-72.7-21.7-106.7-38.8-8.8-4.4-17.4-9.3-26.1-14-3.8-2.1-6.2-1.5-8.2 2.1v1.7c1.2 1.6 2.2 3.4 3.7 4.8 36 32.2 76.6 56.5 122 72.9 21.9 7.9 44.4 13.7 67.3 17.5 14 2.3 28 3.8 42.2 4.5 3 .1 6 .2 9 .4.7 0 1.4.2 2.1.3h17.7c.7-.1 1.4-.3 2.1-.3 14.9-.4 29.8-1.8 44.6-4 21.4-3.2 42.4-8.1 62.9-14.7 29.6-9.6 57.7-22.4 83.4-40.1 2.8-1.9 5.7-3.8 8-6.2 4.3-4.4 2.3-10.4-3.3-11.9zm50.4-27.7c-.8-4.2-4-5.8-7.6-7-5.7-1.9-11.6-2.8-17.6-3.3-11-.9-22-.4-32.8 1.6-12 2.2-23.4 6.1-33.5 13.1-1.2.8-2.4 1.8-3.1 3-.6.9-.7 2.3-.5 3.4.3 1.3 1.7 1.6 3 1.5.6 0 1.2 0 1.8-.1l19.5-2.1c9.6-.9 19.2-1.5 28.8-.8 4.1.3 8.1 1.2 12 2.2 4.3 1.1 6.2 4.4 6.4 8.7.3 6.7-1.2 13.1-2.9 19.5-3.5 12.9-8.3 25.4-13.3 37.8-.3.8-.7 1.7-.8 2.5-.4 2.5 1 4 3.4 3.5 1.4-.3 3-1.1 4-2.1 3.7-3.6 7.5-7.2 10.6-11.2 10.7-13.8 17-29.6 20.7-46.6.7-3 1.2-6.1 1.7-9.1.2-4.7.2-9.6.2-14.5z\"]\n};\nvar faCcAmex = {\n prefix: 'fab',\n iconName: 'cc-amex',\n icon: [576, 512, [], \"f1f3\", \"M325.1 167.8c0-16.4-14.1-18.4-27.4-18.4l-39.1-.3v69.3H275v-25.1h18c18.4 0 14.5 10.3 14.8 25.1h16.6v-13.5c0-9.2-1.5-15.1-11-18.4 7.4-3 11.8-10.7 11.7-18.7zm-29.4 11.3H275v-15.3h21c5.1 0 10.7 1 10.7 7.4 0 6.6-5.3 7.9-11 7.9zM279 268.6h-52.7l-21 22.8-20.5-22.8h-66.5l-.1 69.3h65.4l21.3-23 20.4 23h32.2l.1-23.3c18.9 0 49.3 4.6 49.3-23.3 0-17.3-12.3-22.7-27.9-22.7zm-103.8 54.7h-40.6v-13.8h36.3v-14.1h-36.3v-12.5h41.7l17.9 20.2zm65.8 8.2l-25.3-28.1L241 276zm37.8-31h-21.2v-17.6h21.5c5.6 0 10.2 2.3 10.2 8.4 0 6.4-4.6 9.2-10.5 9.2zm-31.6-136.7v-14.6h-55.5v69.3h55.5v-14.3h-38.9v-13.8h37.8v-14.1h-37.8v-12.5zM576 255.4h-.2zm-194.6 31.9c0-16.4-14.1-18.7-27.1-18.7h-39.4l-.1 69.3h16.6l.1-25.3h17.6c11 0 14.8 2 14.8 13.8l-.1 11.5h16.6l.1-13.8c0-8.9-1.8-15.1-11-18.4 7.7-3.1 11.8-10.8 11.9-18.4zm-29.2 11.2h-20.7v-15.6h21c5.1 0 10.7 1 10.7 7.4 0 6.9-5.4 8.2-11 8.2zm-172.8-80v-69.3h-27.6l-19.7 47-21.7-47H83.3v65.7l-28.1-65.7H30.7L1 218.5h17.9l6.4-15.3h34.5l6.4 15.3H100v-54.2l24 54.2h14.6l24-54.2v54.2zM31.2 188.8l11.2-27.6 11.5 27.6zm477.4 158.9v-4.5c-10.8 5.6-3.9 4.5-156.7 4.5 0-25.2.1-23.9 0-25.2-1.7-.1-3.2-.1-9.4-.1 0 17.9-.1 6.8-.1 25.3h-39.6c0-12.1.1-15.3.1-29.2-10 6-22.8 6.4-34.3 6.2 0 14.7-.1 8.3-.1 23h-48.9c-5.1-5.7-2.7-3.1-15.4-17.4-3.2 3.5-12.8 13.9-16.1 17.4h-82v-92.3h83.1c5 5.6 2.8 3.1 15.5 17.2 3.2-3.5 12.2-13.4 15.7-17.2h58c9.8 0 18 1.9 24.3 5.6v-5.6c54.3 0 64.3-1.4 75.7 5.1v-5.1h78.2v5.2c11.4-6.9 19.6-5.2 64.9-5.2v5c10.3-5.9 16.6-5.2 54.3-5V80c0-26.5-21.5-48-48-48h-480c-26.5 0-48 21.5-48 48v109.8c9.4-21.9 19.7-46 23.1-53.9h39.7c4.3 10.1 1.6 3.7 9 21.1v-21.1h46c2.9 6.2 11.1 24 13.9 30 5.8-13.6 10.1-23.9 12.6-30h103c0-.1 11.5 0 11.6 0 43.7.2 53.6-.8 64.4 5.3v-5.3H363v9.3c7.6-6.1 17.9-9.3 30.7-9.3h27.6c0 .5 1.9.3 2.3.3H456c4.2 9.8 2.6 6 8.8 20.6v-20.6h43.3c4.9 8-1-1.8 11.2 18.4v-18.4h39.9v92h-41.6c-5.4-9-1.4-2.2-13.2-21.9v21.9h-52.8c-6.4-14.8-.1-.3-6.6-15.3h-19c-4.2 10-2.2 5.2-6.4 15.3h-26.8c-12.3 0-22.3-3-29.7-8.9v8.9h-66.5c-.3-13.9-.1-24.8-.1-24.8-1.8-.3-3.4-.2-9.8-.2v25.1H151.2v-11.4c-2.5 5.6-2.7 5.9-5.1 11.4h-29.5c-4-8.9-2.9-6.4-5.1-11.4v11.4H58.6c-4.2-10.1-2.2-5.3-6.4-15.3H33c-4.2 10-2.2 5.2-6.4 15.3H0V432c0 26.5 21.5 48 48 48h480.1c26.5 0 48-21.5 48-48v-90.4c-12.7 8.3-32.7 6.1-67.5 6.1zm36.3-64.5H575v-14.6h-32.9c-12.8 0-23.8 6.6-23.8 20.7 0 33 42.7 12.8 42.7 27.4 0 5.1-4.3 6.4-8.4 6.4h-32l-.1 14.8h32c8.4 0 17.6-1.8 22.5-8.9v-25.8c-10.5-13.8-39.3-1.3-39.3-13.5 0-5.8 4.6-6.5 9.2-6.5zm-57 39.8h-32.2l-.1 14.8h32.2c14.8 0 26.2-5.6 26.2-22 0-33.2-42.9-11.2-42.9-26.3 0-5.6 4.9-6.4 9.2-6.4h30.4v-14.6h-33.2c-12.8 0-23.5 6.6-23.5 20.7 0 33 42.7 12.5 42.7 27.4-.1 5.4-4.7 6.4-8.8 6.4zm-42.2-40.1v-14.3h-55.2l-.1 69.3h55.2l.1-14.3-38.6-.3v-13.8H445v-14.1h-37.8v-12.5zm-56.3-108.1c-.3.2-1.4 2.2-1.4 7.6 0 6 .9 7.7 1.1 7.9.2.1 1.1.5 3.4.5l7.3-16.9c-1.1 0-2.1-.1-3.1-.1-5.6 0-7 .7-7.3 1zm20.4-10.5h-.1zm-16.2-15.2c-23.5 0-34 12-34 35.3 0 22.2 10.2 34 33 34h19.2l6.4-15.3h34.3l6.6 15.3h33.7v-51.9l31.2 51.9h23.6v-69h-16.9v48.1l-29.1-48.1h-25.3v65.4l-27.9-65.4h-24.8l-23.5 54.5h-7.4c-13.3 0-16.1-8.1-16.1-19.9 0-23.8 15.7-20 33.1-19.7v-15.2zm42.1 12.1l11.2 27.6h-22.8zm-101.1-12v69.3h16.9v-69.3z\"]\n};\nvar faCcApplePay = {\n prefix: 'fab',\n iconName: 'cc-apple-pay',\n icon: [576, 512, [], \"f416\", \"M302.2 218.4c0 17.2-10.5 27.1-29 27.1h-24.3v-54.2h24.4c18.4 0 28.9 9.8 28.9 27.1zm47.5 62.6c0 8.3 7.2 13.7 18.5 13.7 14.4 0 25.2-9.1 25.2-21.9v-7.7l-23.5 1.5c-13.3.9-20.2 5.8-20.2 14.4zM576 79v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM127.8 197.2c8.4.7 16.8-4.2 22.1-10.4 5.2-6.4 8.6-15 7.7-23.7-7.4.3-16.6 4.9-21.9 11.3-4.8 5.5-8.9 14.4-7.9 22.8zm60.6 74.5c-.2-.2-19.6-7.6-19.8-30-.2-18.7 15.3-27.7 16-28.2-8.8-13-22.4-14.4-27.1-14.7-12.2-.7-22.6 6.9-28.4 6.9-5.9 0-14.7-6.6-24.3-6.4-12.5.2-24.2 7.3-30.5 18.6-13.1 22.6-3.4 56 9.3 74.4 6.2 9.1 13.7 19.1 23.5 18.7 9.3-.4 13-6 24.2-6 11.3 0 14.5 6 24.3 5.9 10.2-.2 16.5-9.1 22.8-18.2 6.9-10.4 9.8-20.4 10-21zm135.4-53.4c0-26.6-18.5-44.8-44.9-44.8h-51.2v136.4h21.2v-46.6h29.3c26.8 0 45.6-18.4 45.6-45zm90 23.7c0-19.7-15.8-32.4-40-32.4-22.5 0-39.1 12.9-39.7 30.5h19.1c1.6-8.4 9.4-13.9 20-13.9 13 0 20.2 6 20.2 17.2v7.5l-26.4 1.6c-24.6 1.5-37.9 11.6-37.9 29.1 0 17.7 13.7 29.4 33.4 29.4 13.3 0 25.6-6.7 31.2-17.4h.4V310h19.6v-68zM516 210.9h-21.5l-24.9 80.6h-.4l-24.9-80.6H422l35.9 99.3-1.9 6c-3.2 10.2-8.5 14.2-17.9 14.2-1.7 0-4.9-.2-6.2-.3v16.4c1.2.4 6.5.5 8.1.5 20.7 0 30.4-7.9 38.9-31.8L516 210.9z\"]\n};\nvar faCcDinersClub = {\n prefix: 'fab',\n iconName: 'cc-diners-club',\n icon: [576, 512, [], \"f24c\", \"M239.7 79.9c-96.9 0-175.8 78.6-175.8 175.8 0 96.9 78.9 175.8 175.8 175.8 97.2 0 175.8-78.9 175.8-175.8 0-97.2-78.6-175.8-175.8-175.8zm-39.9 279.6c-41.7-15.9-71.4-56.4-71.4-103.8s29.7-87.9 71.4-104.1v207.9zm79.8.3V151.6c41.7 16.2 71.4 56.7 71.4 104.1s-29.7 87.9-71.4 104.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM329.7 448h-90.3c-106.2 0-193.8-85.5-193.8-190.2C45.6 143.2 133.2 64 239.4 64h90.3c105 0 200.7 79.2 200.7 193.8 0 104.7-95.7 190.2-200.7 190.2z\"]\n};\nvar faCcDiscover = {\n prefix: 'fab',\n iconName: 'cc-discover',\n icon: [576, 512, [], \"f1f2\", \"M520.4 196.1c0-7.9-5.5-12.1-15.6-12.1h-4.9v24.9h4.7c10.3 0 15.8-4.4 15.8-12.8zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-44.1 138.9c22.6 0 52.9-4.1 52.9 24.4 0 12.6-6.6 20.7-18.7 23.2l25.8 34.4h-19.6l-22.2-32.8h-2.2v32.8h-16zm-55.9.1h45.3v14H444v18.2h28.3V217H444v22.2h29.3V253H428zm-68.7 0l21.9 55.2 22.2-55.2h17.5l-35.5 84.2h-8.6l-35-84.2zm-55.9-3c24.7 0 44.6 20 44.6 44.6 0 24.7-20 44.6-44.6 44.6-24.7 0-44.6-20-44.6-44.6 0-24.7 20-44.6 44.6-44.6zm-49.3 6.1v19c-20.1-20.1-46.8-4.7-46.8 19 0 25 27.5 38.5 46.8 19.2v19c-29.7 14.3-63.3-5.7-63.3-38.2 0-31.2 33.1-53 63.3-38zm-97.2 66.3c11.4 0 22.4-15.3-3.3-24.4-15-5.5-20.2-11.4-20.2-22.7 0-23.2 30.6-31.4 49.7-14.3l-8.4 10.8c-10.4-11.6-24.9-6.2-24.9 2.5 0 4.4 2.7 6.9 12.3 10.3 18.2 6.6 23.6 12.5 23.6 25.6 0 29.5-38.8 37.4-56.6 11.3l10.3-9.9c3.7 7.1 9.9 10.8 17.5 10.8zM55.4 253H32v-82h23.4c26.1 0 44.1 17 44.1 41.1 0 18.5-13.2 40.9-44.1 40.9zm67.5 0h-16v-82h16zM544 433c0 8.2-6.8 15-15 15H128c189.6-35.6 382.7-139.2 416-160zM74.1 191.6c-5.2-4.9-11.6-6.6-21.9-6.6H48v54.2h4.2c10.3 0 17-2 21.9-6.4 5.7-5.2 8.9-12.8 8.9-20.7s-3.2-15.5-8.9-20.5z\"]\n};\nvar faCcJcb = {\n prefix: 'fab',\n iconName: 'cc-jcb',\n icon: [576, 512, [], \"f24b\", \"M431.5 244.3V212c41.2 0 38.5.2 38.5.2 7.3 1.3 13.3 7.3 13.3 16 0 8.8-6 14.5-13.3 15.8-1.2.4-3.3.3-38.5.3zm42.8 20.2c-2.8-.7-3.3-.5-42.8-.5v35c39.6 0 40 .2 42.8-.5 7.5-1.5 13.5-8 13.5-17 0-8.7-6-15.5-13.5-17zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM182 192.3h-57c0 67.1 10.7 109.7-35.8 109.7-19.5 0-38.8-5.7-57.2-14.8v28c30 8.3 68 8.3 68 8.3 97.9 0 82-47.7 82-131.2zm178.5 4.5c-63.4-16-165-14.9-165 59.3 0 77.1 108.2 73.6 165 59.2V287C312.9 311.7 253 309 253 256s59.8-55.6 107.5-31.2v-28zM544 286.5c0-18.5-16.5-30.5-38-32v-.8c19.5-2.7 30.3-15.5 30.3-30.2 0-19-15.7-30-37-31 0 0 6.3-.3-120.3-.3v127.5h122.7c24.3.1 42.3-12.9 42.3-33.2z\"]\n};\nvar faCcMastercard = {\n prefix: 'fab',\n iconName: 'cc-mastercard',\n icon: [576, 512, [], \"f1f1\", \"M482.9 410.3c0 6.8-4.6 11.7-11.2 11.7-6.8 0-11.2-5.2-11.2-11.7 0-6.5 4.4-11.7 11.2-11.7 6.6 0 11.2 5.2 11.2 11.7zm-310.8-11.7c-7.1 0-11.2 5.2-11.2 11.7 0 6.5 4.1 11.7 11.2 11.7 6.5 0 10.9-4.9 10.9-11.7-.1-6.5-4.4-11.7-10.9-11.7zm117.5-.3c-5.4 0-8.7 3.5-9.5 8.7h19.1c-.9-5.7-4.4-8.7-9.6-8.7zm107.8.3c-6.8 0-10.9 5.2-10.9 11.7 0 6.5 4.1 11.7 10.9 11.7 6.8 0 11.2-4.9 11.2-11.7 0-6.5-4.4-11.7-11.2-11.7zm105.9 26.1c0 .3.3.5.3 1.1 0 .3-.3.5-.3 1.1-.3.3-.3.5-.5.8-.3.3-.5.5-1.1.5-.3.3-.5.3-1.1.3-.3 0-.5 0-1.1-.3-.3 0-.5-.3-.8-.5-.3-.3-.5-.5-.5-.8-.3-.5-.3-.8-.3-1.1 0-.5 0-.8.3-1.1 0-.5.3-.8.5-1.1.3-.3.5-.3.8-.5.5-.3.8-.3 1.1-.3.5 0 .8 0 1.1.3.5.3.8.3 1.1.5s.2.6.5 1.1zm-2.2 1.4c.5 0 .5-.3.8-.3.3-.3.3-.5.3-.8 0-.3 0-.5-.3-.8-.3 0-.5-.3-1.1-.3h-1.6v3.5h.8V426h.3l1.1 1.4h.8l-1.1-1.3zM576 81v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V81c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM64 220.6c0 76.5 62.1 138.5 138.5 138.5 27.2 0 53.9-8.2 76.5-23.1-72.9-59.3-72.4-171.2 0-230.5-22.6-15-49.3-23.1-76.5-23.1-76.4-.1-138.5 62-138.5 138.2zm224 108.8c70.5-55 70.2-162.2 0-217.5-70.2 55.3-70.5 162.6 0 217.5zm-142.3 76.3c0-8.7-5.7-14.4-14.7-14.7-4.6 0-9.5 1.4-12.8 6.5-2.4-4.1-6.5-6.5-12.2-6.5-3.8 0-7.6 1.4-10.6 5.4V392h-8.2v36.7h8.2c0-18.9-2.5-30.2 9-30.2 10.2 0 8.2 10.2 8.2 30.2h7.9c0-18.3-2.5-30.2 9-30.2 10.2 0 8.2 10 8.2 30.2h8.2v-23zm44.9-13.7h-7.9v4.4c-2.7-3.3-6.5-5.4-11.7-5.4-10.3 0-18.2 8.2-18.2 19.3 0 11.2 7.9 19.3 18.2 19.3 5.2 0 9-1.9 11.7-5.4v4.6h7.9V392zm40.5 25.6c0-15-22.9-8.2-22.9-15.2 0-5.7 11.9-4.8 18.5-1.1l3.3-6.5c-9.4-6.1-30.2-6-30.2 8.2 0 14.3 22.9 8.3 22.9 15 0 6.3-13.5 5.8-20.7.8l-3.5 6.3c11.2 7.6 32.6 6 32.6-7.5zm35.4 9.3l-2.2-6.8c-3.8 2.1-12.2 4.4-12.2-4.1v-16.6h13.1V392h-13.1v-11.2h-8.2V392h-7.6v7.3h7.6V416c0 17.6 17.3 14.4 22.6 10.9zm13.3-13.4h27.5c0-16.2-7.4-22.6-17.4-22.6-10.6 0-18.2 7.9-18.2 19.3 0 20.5 22.6 23.9 33.8 14.2l-3.8-6c-7.8 6.4-19.6 5.8-21.9-4.9zm59.1-21.5c-4.6-2-11.6-1.8-15.2 4.4V392h-8.2v36.7h8.2V408c0-11.6 9.5-10.1 12.8-8.4l2.4-7.6zm10.6 18.3c0-11.4 11.6-15.1 20.7-8.4l3.8-6.5c-11.6-9.1-32.7-4.1-32.7 15 0 19.8 22.4 23.8 32.7 15l-3.8-6.5c-9.2 6.5-20.7 2.6-20.7-8.6zm66.7-18.3H408v4.4c-8.3-11-29.9-4.8-29.9 13.9 0 19.2 22.4 24.7 29.9 13.9v4.6h8.2V392zm33.7 0c-2.4-1.2-11-2.9-15.2 4.4V392h-7.9v36.7h7.9V408c0-11 9-10.3 12.8-8.4l2.4-7.6zm40.3-14.9h-7.9v19.3c-8.2-10.9-29.9-5.1-29.9 13.9 0 19.4 22.5 24.6 29.9 13.9v4.6h7.9v-51.7zm7.6-75.1v4.6h.8V302h1.9v-.8h-4.6v.8h1.9zm6.6 123.8c0-.5 0-1.1-.3-1.6-.3-.3-.5-.8-.8-1.1-.3-.3-.8-.5-1.1-.8-.5 0-1.1-.3-1.6-.3-.3 0-.8.3-1.4.3-.5.3-.8.5-1.1.8-.5.3-.8.8-.8 1.1-.3.5-.3 1.1-.3 1.6 0 .3 0 .8.3 1.4 0 .3.3.8.8 1.1.3.3.5.5 1.1.8.5.3 1.1.3 1.4.3.5 0 1.1 0 1.6-.3.3-.3.8-.5 1.1-.8.3-.3.5-.8.8-1.1.3-.6.3-1.1.3-1.4zm3.2-124.7h-1.4l-1.6 3.5-1.6-3.5h-1.4v5.4h.8v-4.1l1.6 3.5h1.1l1.4-3.5v4.1h1.1v-5.4zm4.4-80.5c0-76.2-62.1-138.3-138.5-138.3-27.2 0-53.9 8.2-76.5 23.1 72.1 59.3 73.2 171.5 0 230.5 22.6 15 49.5 23.1 76.5 23.1 76.4.1 138.5-61.9 138.5-138.4z\"]\n};\nvar faCcPaypal = {\n prefix: 'fab',\n iconName: 'cc-paypal',\n icon: [576, 512, [], \"f1f4\", \"M186.3 258.2c0 12.2-9.7 21.5-22 21.5-9.2 0-16-5.2-16-15 0-12.2 9.5-22 21.7-22 9.3 0 16.3 5.7 16.3 15.5zM80.5 209.7h-4.7c-1.5 0-3 1-3.2 2.7l-4.3 26.7 8.2-.3c11 0 19.5-1.5 21.5-14.2 2.3-13.4-6.2-14.9-17.5-14.9zm284 0H360c-1.8 0-3 1-3.2 2.7l-4.2 26.7 8-.3c13 0 22-3 22-18-.1-10.6-9.6-11.1-18.1-11.1zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM128.3 215.4c0-21-16.2-28-34.7-28h-40c-2.5 0-5 2-5.2 4.7L32 294.2c-.3 2 1.2 4 3.2 4h19c2.7 0 5.2-2.9 5.5-5.7l4.5-26.6c1-7.2 13.2-4.7 18-4.7 28.6 0 46.1-17 46.1-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.2 8.2-5.8-8.5-14.2-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9 0 20.2-4.9 26.5-11.9-.5 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H200c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm40.5 97.9l63.7-92.6c.5-.5.5-1 .5-1.7 0-1.7-1.5-3.5-3.2-3.5h-19.2c-1.7 0-3.5 1-4.5 2.5l-26.5 39-11-37.5c-.8-2.2-3-4-5.5-4h-18.7c-1.7 0-3.2 1.8-3.2 3.5 0 1.2 19.5 56.8 21.2 62.1-2.7 3.8-20.5 28.6-20.5 31.6 0 1.8 1.5 3.2 3.2 3.2h19.2c1.8-.1 3.5-1.1 4.5-2.6zm159.3-106.7c0-21-16.2-28-34.7-28h-39.7c-2.7 0-5.2 2-5.5 4.7l-16.2 102c-.2 2 1.3 4 3.2 4h20.5c2 0 3.5-1.5 4-3.2l4.5-29c1-7.2 13.2-4.7 18-4.7 28.4 0 45.9-17 45.9-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.3 8.2-5.5-8.5-14-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9.3 0 20.5-4.9 26.5-11.9-.3 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H484c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm47.5-33.3c0-2-1.5-3.5-3.2-3.5h-18.5c-1.5 0-3 1.2-3.2 2.7l-16.2 104-.3.5c0 1.8 1.5 3.5 3.5 3.5h16.5c2.5 0 5-2.9 5.2-5.7L544 191.2v-.3zm-90 51.8c-12.2 0-21.7 9.7-21.7 22 0 9.7 7 15 16.2 15 12 0 21.7-9.2 21.7-21.5.1-9.8-6.9-15.5-16.2-15.5z\"]\n};\nvar faCcStripe = {\n prefix: 'fab',\n iconName: 'cc-stripe',\n icon: [576, 512, [], \"f1f5\", \"M492.4 220.8c-8.9 0-18.7 6.7-18.7 22.7h36.7c0-16-9.3-22.7-18-22.7zM375 223.4c-8.2 0-13.3 2.9-17 7l.2 52.8c3.5 3.7 8.5 6.7 16.8 6.7 13.1 0 21.9-14.3 21.9-33.4 0-18.6-9-33.2-21.9-33.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM122.2 281.1c0 25.6-20.3 40.1-49.9 40.3-12.2 0-25.6-2.4-38.8-8.1v-33.9c12 6.4 27.1 11.3 38.9 11.3 7.9 0 13.6-2.1 13.6-8.7 0-17-54-10.6-54-49.9 0-25.2 19.2-40.2 48-40.2 11.8 0 23.5 1.8 35.3 6.5v33.4c-10.8-5.8-24.5-9.1-35.3-9.1-7.5 0-12.1 2.2-12.1 7.7 0 16 54.3 8.4 54.3 50.7zm68.8-56.6h-27V275c0 20.9 22.5 14.4 27 12.6v28.9c-4.7 2.6-13.3 4.7-24.9 4.7-21.1 0-36.9-15.5-36.9-36.5l.2-113.9 34.7-7.4v30.8H191zm74 2.4c-4.5-1.5-18.7-3.6-27.1 7.4v84.4h-35.5V194.2h30.7l2.2 10.5c8.3-15.3 24.9-12.2 29.6-10.5h.1zm44.1 91.8h-35.7V194.2h35.7zm0-142.9l-35.7 7.6v-28.9l35.7-7.6zm74.1 145.5c-12.4 0-20-5.3-25.1-9l-.1 40.2-35.5 7.5V194.2h31.3l1.8 8.8c4.9-4.5 13.9-11.1 27.8-11.1 24.9 0 48.4 22.5 48.4 63.8 0 45.1-23.2 65.5-48.6 65.6zm160.4-51.5h-69.5c1.6 16.6 13.8 21.5 27.6 21.5 14.1 0 25.2-3 34.9-7.9V312c-9.7 5.3-22.4 9.2-39.4 9.2-34.6 0-58.8-21.7-58.8-64.5 0-36.2 20.5-64.9 54.3-64.9 33.7 0 51.3 28.7 51.3 65.1 0 3.5-.3 10.9-.4 12.9z\"]\n};\nvar faCcVisa = {\n prefix: 'fab',\n iconName: 'cc-visa',\n icon: [576, 512, [], \"f1f0\", \"M470.1 231.3s7.6 37.2 9.3 45H446c3.3-8.9 16-43.5 16-43.5-.2.3 3.3-9.1 5.3-14.9l2.8 13.4zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM152.5 331.2L215.7 176h-42.5l-39.3 106-4.3-21.5-14-71.4c-2.3-9.9-9.4-12.7-18.2-13.1H32.7l-.7 3.1c15.8 4 29.9 9.8 42.2 17.1l35.8 135h42.5zm94.4.2L272.1 176h-40.2l-25.1 155.4h40.1zm139.9-50.8c.2-17.7-10.6-31.2-33.7-42.3-14.1-7.1-22.7-11.9-22.7-19.2.2-6.6 7.3-13.4 23.1-13.4 13.1-.3 22.7 2.8 29.9 5.9l3.6 1.7 5.5-33.6c-7.9-3.1-20.5-6.6-36-6.6-39.7 0-67.6 21.2-67.8 51.4-.3 22.3 20 34.7 35.2 42.2 15.5 7.6 20.8 12.6 20.8 19.3-.2 10.4-12.6 15.2-24.1 15.2-16 0-24.6-2.5-37.7-8.3l-5.3-2.5-5.6 34.9c9.4 4.3 26.8 8.1 44.8 8.3 42.2.1 69.7-20.8 70-53zM528 331.4L495.6 176h-31.1c-9.6 0-16.9 2.8-21 12.9l-59.7 142.5H426s6.9-19.2 8.4-23.3H486c1.2 5.5 4.8 23.3 4.8 23.3H528z\"]\n};\nvar faCentercode = {\n prefix: 'fab',\n iconName: 'centercode',\n icon: [512, 512, [], \"f380\", \"M329.2 268.6c-3.8 35.2-35.4 60.6-70.6 56.8-35.2-3.8-60.6-35.4-56.8-70.6 3.8-35.2 35.4-60.6 70.6-56.8 35.1 3.8 60.6 35.4 56.8 70.6zm-85.8 235.1C96.7 496-8.2 365.5 10.1 224.3c11.2-86.6 65.8-156.9 139.1-192 161-77.1 349.7 37.4 354.7 216.6 4.1 147-118.4 262.2-260.5 254.8zm179.9-180c27.9-118-160.5-205.9-237.2-234.2-57.5 56.3-69.1 188.6-33.8 344.4 68.8 15.8 169.1-26.4 271-110.2z\"]\n};\nvar faCentos = {\n prefix: 'fab',\n iconName: 'centos',\n icon: [448, 512, [], \"f789\", \"M289.6 97.5l31.6 31.7-76.3 76.5V97.5zm-162.4 31.7l76.3 76.5V97.5h-44.7zm41.5-41.6h44.7v127.9l10.8 10.8 10.8-10.8V87.6h44.7L224.2 32zm26.2 168.1l-10.8-10.8H55.5v-44.8L0 255.7l55.5 55.6v-44.8h128.6l10.8-10.8zm79.3-20.7h107.9v-44.8l-31.6-31.7zm173.3 20.7L392 200.1v44.8H264.3l-10.8 10.8 10.8 10.8H392v44.8l55.5-55.6zM65.4 176.2l32.5-31.7 90.3 90.5h15.3v-15.3l-90.3-90.5 31.6-31.7H65.4zm316.7-78.7h-78.5l31.6 31.7-90.3 90.5V235h15.3l90.3-90.5 31.6 31.7zM203.5 413.9V305.8l-76.3 76.5 31.6 31.7h44.7zM65.4 235h108.8l-76.3-76.5-32.5 31.7zm316.7 100.2l-31.6 31.7-90.3-90.5h-15.3v15.3l90.3 90.5-31.6 31.7h78.5zm0-58.8H274.2l76.3 76.5 31.6-31.7zm-60.9 105.8l-76.3-76.5v108.1h44.7zM97.9 352.9l76.3-76.5H65.4v44.8zm181.8 70.9H235V295.9l-10.8-10.8-10.8 10.8v127.9h-44.7l55.5 55.6zm-166.5-41.6l90.3-90.5v-15.3h-15.3l-90.3 90.5-32.5-31.7v78.7h79.4z\"]\n};\nvar faChrome = {\n prefix: 'fab',\n iconName: 'chrome',\n icon: [496, 512, [], \"f268\", \"M131.5 217.5L55.1 100.1c47.6-59.2 119-91.8 192-92.1 42.3-.3 85.5 10.5 124.8 33.2 43.4 25.2 76.4 61.4 97.4 103L264 133.4c-58.1-3.4-113.4 29.3-132.5 84.1zm32.9 38.5c0 46.2 37.4 83.6 83.6 83.6s83.6-37.4 83.6-83.6-37.4-83.6-83.6-83.6-83.6 37.3-83.6 83.6zm314.9-89.2L339.6 174c37.9 44.3 38.5 108.2 6.6 157.2L234.1 503.6c46.5 2.5 94.4-7.7 137.8-32.9 107.4-62 150.9-192 107.4-303.9zM133.7 303.6L40.4 120.1C14.9 159.1 0 205.9 0 256c0 124 90.8 226.7 209.5 244.9l63.7-124.8c-57.6 10.8-113.2-20.8-139.5-72.5z\"]\n};\nvar faChromecast = {\n prefix: 'fab',\n iconName: 'chromecast',\n icon: [512, 512, [], \"f838\", \"M447.8,64H64c-23.6,0-42.7,19.1-42.7,42.7v63.9H64v-63.9h383.8v298.6H298.6V448H448c23.6,0,42.7-19.1,42.7-42.7V106.7 C490.7,83.1,471.4,64,447.8,64z M21.3,383.6L21.3,383.6l0,63.9h63.9C85.2,412.2,56.6,383.6,21.3,383.6L21.3,383.6z M21.3,298.6V341 c58.9,0,106.6,48.1,106.6,107h42.7C170.7,365.6,103.7,298.7,21.3,298.6z M213.4,448h42.7c-0.5-129.5-105.3-234.3-234.8-234.6l0,42.4 C127.3,255.6,213.3,342,213.4,448z\"]\n};\nvar faCloudflare = {\n prefix: 'fab',\n iconName: 'cloudflare',\n icon: [640, 512, [], \"e07d\", \"M407.906,319.913l-230.8-2.928a4.58,4.58,0,0,1-3.632-1.926,4.648,4.648,0,0,1-.494-4.147,6.143,6.143,0,0,1,5.361-4.076L411.281,303.9c27.631-1.26,57.546-23.574,68.022-50.784l13.286-34.542a7.944,7.944,0,0,0,.524-2.936,7.735,7.735,0,0,0-.164-1.631A151.91,151.91,0,0,0,201.257,198.4,68.12,68.12,0,0,0,94.2,269.59C41.924,271.106,0,313.728,0,366.12a96.054,96.054,0,0,0,1.029,13.958,4.508,4.508,0,0,0,4.445,3.871l426.1.051c.043,0,.08-.019.122-.02a5.606,5.606,0,0,0,5.271-4l3.273-11.265c3.9-13.4,2.448-25.8-4.1-34.9C430.124,325.423,420.09,320.487,407.906,319.913ZM513.856,221.1c-2.141,0-4.271.062-6.391.164a3.771,3.771,0,0,0-3.324,2.653l-9.077,31.193c-3.9,13.4-2.449,25.786,4.1,34.89,6.02,8.4,16.054,13.323,28.238,13.9l49.2,2.939a4.491,4.491,0,0,1,3.51,1.894,4.64,4.64,0,0,1,.514,4.169,6.153,6.153,0,0,1-5.351,4.075l-51.125,2.939c-27.754,1.27-57.669,23.574-68.145,50.784l-3.695,9.606a2.716,2.716,0,0,0,2.427,3.68c.046,0,.088.017.136.017h175.91a4.69,4.69,0,0,0,4.539-3.37,124.807,124.807,0,0,0,4.682-34C640,277.3,583.524,221.1,513.856,221.1Z\"]\n};\nvar faCloudscale = {\n prefix: 'fab',\n iconName: 'cloudscale',\n icon: [448, 512, [], \"f383\", \"M318.1 154l-9.4 7.6c-22.5-19.3-51.5-33.6-83.3-33.6C153.8 128 96 188.8 96 260.3c0 6.6.4 13.1 1.4 19.4-2-56 41.8-97.4 92.6-97.4 24.2 0 46.2 9.4 62.6 24.7l-25.2 20.4c-8.3-.9-16.8 1.8-23.1 8.1-11.1 11-11.1 28.9 0 40 11.1 11 28.9 11 40 0 6.3-6.3 9-14.9 8.1-23.1l75.2-88.8c6.3-6.5-3.3-15.9-9.5-9.6zm-83.8 111.5c-5.6 5.5-14.6 5.5-20.2 0-5.6-5.6-5.6-14.6 0-20.2s14.6-5.6 20.2 0 5.6 14.7 0 20.2zM224 32C100.5 32 0 132.5 0 256s100.5 224 224 224 224-100.5 224-224S347.5 32 224 32zm0 384c-88.2 0-160-71.8-160-160S135.8 96 224 96s160 71.8 160 160-71.8 160-160 160z\"]\n};\nvar faCloudsmith = {\n prefix: 'fab',\n iconName: 'cloudsmith',\n icon: [332, 512, [], \"f384\", \"M332.5 419.9c0 46.4-37.6 84.1-84 84.1s-84-37.7-84-84.1 37.6-84 84-84 84 37.6 84 84zm-84-243.9c46.4 0 80-37.6 80-84s-33.6-84-80-84-88 37.6-88 84-29.6 76-76 76-84 41.6-84 88 37.6 80 84 80 84-33.6 84-80 33.6-80 80-80z\"]\n};\nvar faCloudversify = {\n prefix: 'fab',\n iconName: 'cloudversify',\n icon: [616, 512, [], \"f385\", \"M148.6 304c8.2 68.5 67.4 115.5 146 111.3 51.2 43.3 136.8 45.8 186.4-5.6 69.2 1.1 118.5-44.6 131.5-99.5 14.8-62.5-18.2-132.5-92.1-155.1-33-88.1-131.4-101.5-186.5-85-57.3 17.3-84.3 53.2-99.3 109.7-7.8 2.7-26.5 8.9-45 24.1 11.7 0 15.2 8.9 15.2 19.5v20.4c0 10.7-8.7 19.5-19.5 19.5h-20.2c-10.7 0-19.5-6-19.5-16.7V240H98.8C95 240 88 244.3 88 251.9v40.4c0 6.4 5.3 11.8 11.7 11.8h48.9zm227.4 8c-10.7 46.3 21.7 72.4 55.3 86.8C324.1 432.6 259.7 348 296 288c-33.2 21.6-33.7 71.2-29.2 92.9-17.9-12.4-53.8-32.4-57.4-79.8-3-39.9 21.5-75.7 57-93.9C297 191.4 369.9 198.7 400 248c-14.1-48-53.8-70.1-101.8-74.8 30.9-30.7 64.4-50.3 114.2-43.7 69.8 9.3 133.2 82.8 67.7 150.5 35-16.3 48.7-54.4 47.5-76.9l10.5 19.6c11.8 22 15.2 47.6 9.4 72-9.2 39-40.6 68.8-79.7 76.5-32.1 6.3-83.1-5.1-91.8-59.2zM128 208H88.2c-8.9 0-16.2-7.3-16.2-16.2v-39.6c0-8.9 7.3-16.2 16.2-16.2H128c8.9 0 16.2 7.3 16.2 16.2v39.6c0 8.9-7.3 16.2-16.2 16.2zM10.1 168C4.5 168 0 163.5 0 157.9v-27.8c0-5.6 4.5-10.1 10.1-10.1h27.7c5.5 0 10.1 4.5 10.1 10.1v27.8c0 5.6-4.5 10.1-10.1 10.1H10.1zM168 142.7v-21.4c0-5.1 4.2-9.3 9.3-9.3h21.4c5.1 0 9.3 4.2 9.3 9.3v21.4c0 5.1-4.2 9.3-9.3 9.3h-21.4c-5.1 0-9.3-4.2-9.3-9.3zM56 235.5v25c0 6.3-5.1 11.5-11.4 11.5H19.4C13.1 272 8 266.8 8 260.5v-25c0-6.3 5.1-11.5 11.4-11.5h25.1c6.4 0 11.5 5.2 11.5 11.5z\"]\n};\nvar faCodepen = {\n prefix: 'fab',\n iconName: 'codepen',\n icon: [512, 512, [], \"f1cb\", \"M502.285 159.704l-234-156c-7.987-4.915-16.511-4.96-24.571 0l-234 156C3.714 163.703 0 170.847 0 177.989v155.999c0 7.143 3.714 14.286 9.715 18.286l234 156.022c7.987 4.915 16.511 4.96 24.571 0l234-156.022c6-3.999 9.715-11.143 9.715-18.286V177.989c-.001-7.142-3.715-14.286-9.716-18.285zM278 63.131l172.286 114.858-76.857 51.429L278 165.703V63.131zm-44 0v102.572l-95.429 63.715-76.857-51.429L234 63.131zM44 219.132l55.143 36.857L44 292.846v-73.714zm190 229.715L61.714 333.989l76.857-51.429L234 346.275v102.572zm22-140.858l-77.715-52 77.715-52 77.715 52-77.715 52zm22 140.858V346.275l95.429-63.715 76.857 51.429L278 448.847zm190-156.001l-55.143-36.857L468 219.132v73.714z\"]\n};\nvar faCodiepie = {\n prefix: 'fab',\n iconName: 'codiepie',\n icon: [472, 512, [], \"f284\", \"M422.5 202.9c30.7 0 33.5 53.1-.3 53.1h-10.8v44.3h-26.6v-97.4h37.7zM472 352.6C429.9 444.5 350.4 504 248 504 111 504 0 393 0 256S111 8 248 8c97.4 0 172.8 53.7 218.2 138.4l-186 108.8L472 352.6zm-38.5 12.5l-60.3-30.7c-27.1 44.3-70.4 71.4-122.4 71.4-82.5 0-149.2-66.7-149.2-148.9 0-82.5 66.7-149.2 149.2-149.2 48.4 0 88.9 23.5 116.9 63.4l59.5-34.6c-40.7-62.6-104.7-100-179.2-100-121.2 0-219.5 98.3-219.5 219.5S126.8 475.5 248 475.5c78.6 0 146.5-42.1 185.5-110.4z\"]\n};\nvar faConfluence = {\n prefix: 'fab',\n iconName: 'confluence',\n icon: [512, 512, [], \"f78d\", \"M2.3 412.2c-4.5 7.6-2.1 17.5 5.5 22.2l105.9 65.2c7.7 4.7 17.7 2.4 22.4-5.3 0-.1.1-.2.1-.2 67.1-112.2 80.5-95.9 280.9-.7 8.1 3.9 17.8.4 21.7-7.7.1-.1.1-.3.2-.4l50.4-114.1c3.6-8.1-.1-17.6-8.1-21.3-22.2-10.4-66.2-31.2-105.9-50.3C127.5 179 44.6 345.3 2.3 412.2zm507.4-312.1c4.5-7.6 2.1-17.5-5.5-22.2L398.4 12.8c-7.5-5-17.6-3.1-22.6 4.4-.2.3-.4.6-.6 1-67.3 112.6-81.1 95.6-280.6.9-8.1-3.9-17.8-.4-21.7 7.7-.1.1-.1.3-.2.4L22.2 141.3c-3.6 8.1.1 17.6 8.1 21.3 22.2 10.4 66.3 31.2 106 50.4 248 120 330.8-45.4 373.4-112.9z\"]\n};\nvar faConnectdevelop = {\n prefix: 'fab',\n iconName: 'connectdevelop',\n icon: [576, 512, [], \"f20e\", \"M550.5 241l-50.089-86.786c1.071-2.142 1.875-4.553 1.875-7.232 0-8.036-6.696-14.733-14.732-15.001l-55.447-95.893c.536-1.607 1.071-3.214 1.071-4.821 0-8.571-6.964-15.268-15.268-15.268-4.821 0-8.839 2.143-11.786 5.625H299.518C296.839 18.143 292.821 16 288 16s-8.839 2.143-11.518 5.625H170.411C167.464 18.143 163.447 16 158.625 16c-8.303 0-15.268 6.696-15.268 15.268 0 1.607.536 3.482 1.072 4.821l-55.983 97.233c-5.356 2.41-9.107 7.5-9.107 13.661 0 .535.268 1.071.268 1.607l-53.304 92.143c-7.232 1.339-12.59 7.5-12.59 15 0 7.232 5.089 13.393 12.054 15l55.179 95.358c-.536 1.607-.804 2.946-.804 4.821 0 7.232 5.089 13.393 12.054 14.732l51.697 89.732c-.536 1.607-1.071 3.482-1.071 5.357 0 8.571 6.964 15.268 15.268 15.268 4.821 0 8.839-2.143 11.518-5.357h106.875C279.161 493.857 283.447 496 288 496s8.839-2.143 11.518-5.357h107.143c2.678 2.946 6.696 4.821 10.982 4.821 8.571 0 15.268-6.964 15.268-15.268 0-1.607-.267-2.946-.803-4.285l51.697-90.268c6.964-1.339 12.054-7.5 12.054-14.732 0-1.607-.268-3.214-.804-4.821l54.911-95.358c6.964-1.339 12.322-7.5 12.322-15-.002-7.232-5.092-13.393-11.788-14.732zM153.535 450.732l-43.66-75.803h43.66v75.803zm0-83.839h-43.66c-.268-1.071-.804-2.142-1.339-3.214l44.999-47.41v50.624zm0-62.411l-50.357 53.304c-1.339-.536-2.679-1.34-4.018-1.607L43.447 259.75c.535-1.339.535-2.679.535-4.018s0-2.41-.268-3.482l51.965-90c2.679-.268 5.357-1.072 7.768-2.679l50.089 51.965v92.946zm0-102.322l-45.803-47.41c1.339-2.143 2.143-4.821 2.143-7.767 0-.268-.268-.804-.268-1.072l43.928-15.804v72.053zm0-80.625l-43.66 15.804 43.66-75.536v59.732zm326.519 39.108l.804 1.339L445.5 329.125l-63.75-67.232 98.036-101.518.268.268zM291.75 355.107l11.518 11.786H280.5l11.25-11.786zm-.268-11.25l-83.303-85.446 79.553-84.375 83.036 87.589-79.286 82.232zm5.357 5.893l79.286-82.232 67.5 71.25-5.892 28.125H313.714l-16.875-17.143zM410.411 44.393c1.071.536 2.142 1.072 3.482 1.34l57.857 100.714v.536c0 2.946.803 5.624 2.143 7.767L376.393 256l-83.035-87.589L410.411 44.393zm-9.107-2.143L287.732 162.518l-57.054-60.268 166.339-60h4.287zm-123.483 0c2.678 2.678 6.16 4.285 10.179 4.285s7.5-1.607 10.179-4.285h75L224.786 95.821 173.893 42.25h103.928zm-116.249 5.625l1.071-2.142a33.834 33.834 0 0 0 2.679-.804l51.161 53.84-54.911 19.821V47.875zm0 79.286l60.803-21.964 59.732 63.214-79.553 84.107-40.982-42.053v-83.304zm0 92.678L198 257.607l-36.428 38.304v-76.072zm0 87.858l42.053-44.464 82.768 85.982-17.143 17.678H161.572v-59.196zm6.964 162.053c-1.607-1.607-3.482-2.678-5.893-3.482l-1.071-1.607v-89.732h99.91l-91.607 94.821h-1.339zm129.911 0c-2.679-2.41-6.428-4.285-10.447-4.285s-7.767 1.875-10.447 4.285h-96.429l91.607-94.821h38.304l91.607 94.821H298.447zm120-11.786l-4.286 7.5c-1.339.268-2.41.803-3.482 1.339l-89.196-91.875h114.376l-17.412 83.036zm12.856-22.232l12.858-60.803h21.964l-34.822 60.803zm34.822-68.839h-20.357l4.553-21.16 17.143 18.214c-.535.803-1.071 1.874-1.339 2.946zm66.161-107.411l-55.447 96.697c-1.339.535-2.679 1.071-4.018 1.874l-20.625-21.964 34.554-163.928 45.803 79.286c-.267 1.339-.803 2.678-.803 4.285 0 1.339.268 2.411.536 3.75z\"]\n};\nvar faContao = {\n prefix: 'fab',\n iconName: 'contao',\n icon: [512, 512, [], \"f26d\", \"M45.4 305c14.4 67.1 26.4 129 68.2 175H34c-18.7 0-34-15.2-34-34V66c0-18.7 15.2-34 34-34h57.7C77.9 44.6 65.6 59.2 54.8 75.6c-45.4 70-27 146.8-9.4 229.4zM478 32h-90.2c21.4 21.4 39.2 49.5 52.7 84.1l-137.1 29.3c-14.9-29-37.8-53.3-82.6-43.9-24.6 5.3-41 19.3-48.3 34.6-8.8 18.7-13.2 39.8 8.2 140.3 21.1 100.2 33.7 117.7 49.5 131.2 12.9 11.1 33.4 17 58.3 11.7 44.5-9.4 55.7-40.7 57.4-73.2l137.4-29.6c3.2 71.5-18.7 125.2-57.4 163.6H478c18.7 0 34-15.2 34-34V66c0-18.8-15.2-34-34-34z\"]\n};\nvar faCottonBureau = {\n prefix: 'fab',\n iconName: 'cotton-bureau',\n icon: [512, 512, [], \"f89e\", \"M474.31 330.41c-23.66 91.85-94.23 144.59-201.9 148.35V429.6c0-48 26.41-74.39 74.39-74.39 62 0 99.2-37.2 99.2-99.21 0-61.37-36.53-98.28-97.38-99.06-33-69.32-146.5-64.65-177.24 0C110.52 157.72 74 194.63 74 256c0 62.13 37.27 99.41 99.4 99.41 48 0 74.55 26.23 74.55 74.39V479c-134.43-5-211.1-85.07-211.1-223 0-141.82 81.35-223.2 223.2-223.2 114.77 0 189.84 53.2 214.69 148.81H500C473.88 71.51 388.22 8 259.82 8 105 8 12 101.19 12 255.82 12 411.14 105.19 504.34 259.82 504c128.27 0 213.87-63.81 239.67-173.59zM357 182.33c41.37 3.45 64.2 29 64.2 73.67 0 48-26.43 74.41-74.4 74.41-28.61 0-49.33-9.59-61.59-27.33 83.06-16.55 75.59-99.67 71.79-120.75zm-81.68 97.36c-2.46-10.34-16.33-87 56.23-97 2.27 10.09 16.52 87.11-56.26 97zM260 132c28.61 0 49 9.67 61.44 27.61-28.36 5.48-49.36 20.59-61.59 43.45-12.23-22.86-33.23-38-61.6-43.45 12.41-17.69 33.27-27.35 61.57-27.35zm-71.52 50.72c73.17 10.57 58.91 86.81 56.49 97-72.41-9.84-59-86.95-56.25-97zM173.2 330.41c-48 0-74.4-26.4-74.4-74.41 0-44.36 22.86-70 64.22-73.67-6.75 37.2-1.38 106.53 71.65 120.75-12.14 17.63-32.84 27.3-61.14 27.3zm53.21 12.39A80.8 80.8 0 0 0 260 309.25c7.77 14.49 19.33 25.54 33.82 33.55a80.28 80.28 0 0 0-33.58 33.83c-8-14.5-19.07-26.23-33.56-33.83z\"]\n};\nvar faCpanel = {\n prefix: 'fab',\n iconName: 'cpanel',\n icon: [640, 512, [], \"f388\", \"M210.3 220.2c-5.6-24.8-26.9-41.2-51-41.2h-37c-7.1 0-12.5 4.5-14.3 10.9L73.1 320l24.7-.1c6.8 0 12.3-4.5 14.2-10.7l25.8-95.7h19.8c8.4 0 16.2 5.6 18.3 14.8 2.5 10.9-5.9 22.6-18.3 22.6h-10.3c-7 0-12.5 4.6-14.3 10.8l-6.4 23.8h32c37.2 0 58.3-36.2 51.7-65.3zm-156.5 28h18.6c6.9 0 12.4-4.4 14.3-10.9l6.2-23.6h-40C30 213.7 9 227.8 1.7 254.8-7 288.6 18.5 320 52 320h12.4l7.1-26.1c1.2-4.4-2.2-8.3-6.4-8.3H53.8c-24.7 0-24.9-37.4 0-37.4zm247.5-34.8h-77.9l-3.5 13.4c-2.4 9.6 4.5 18.5 14.2 18.5h57.5c4 0 2.4 4.3 2.1 5.3l-8.6 31.8c-.4 1.4-.9 5.3-5.5 5.3h-34.9c-5.3 0-5.3-7.9 0-7.9h21.6c6.8 0 12.3-4.6 14.2-10.8l3.5-13.2h-48.4c-39.2 0-43.6 63.8-.7 63.8l57.5.2c11.2 0 20.6-7.2 23.4-17.8l14-51.8c4.8-19.2-9.7-36.8-28.5-36.8zM633.1 179h-18.9c-4.9 0-9.2 3.2-10.4 7.9L568.2 320c20.7 0 39.8-13.8 44.9-34.5l26.5-98.2c1.2-4.3-2-8.3-6.5-8.3zm-236.3 34.7v.1h-48.3l-26.2 98c-1.2 4.4 2.2 8.3 6.4 8.3h18.9c4.8 0 9.2-3 10.4-7.8l17.2-64H395c12.5 0 21.4 11.8 18.1 23.4l-10.6 40c-1.2 4.3 1.9 8.3 6.4 8.3H428c4.6 0 9.1-2.9 10.3-7.8l8.8-33.1c9-33.1-15.9-65.4-50.3-65.4zm98.3 74.6c-3.6 0-6-3.4-5.1-6.7l8-30c.9-3.9 3.7-6 7.8-6h32.9c2.6 0 4.6 2.4 3.9 5.1l-.7 2.6c-.6 2-1.9 3-3.9 3h-21.6c-7 0-12.6 4.6-14.2 10.8l-3.5 13h53.4c10.5 0 20.3-6.6 23.2-17.6l3.2-12c4.9-19.1-9.3-36.8-28.3-36.8h-47.3c-17.9 0-33.8 12-38.6 29.6l-10.8 40c-5 17.7 8.3 36.7 28.3 36.7h66.7c6.8 0 12.3-4.5 14.2-10.7l5.7-21z\"]\n};\nvar faCreativeCommons = {\n prefix: 'fab',\n iconName: 'creative-commons',\n icon: [496, 512, [], \"f25e\", \"M245.83 214.87l-33.22 17.28c-9.43-19.58-25.24-19.93-27.46-19.93-22.13 0-33.22 14.61-33.22 43.84 0 23.57 9.21 43.84 33.22 43.84 14.47 0 24.65-7.09 30.57-21.26l30.55 15.5c-6.17 11.51-25.69 38.98-65.1 38.98-22.6 0-73.96-10.32-73.96-77.05 0-58.69 43-77.06 72.63-77.06 30.72-.01 52.7 11.95 65.99 35.86zm143.05 0l-32.78 17.28c-9.5-19.77-25.72-19.93-27.9-19.93-22.14 0-33.22 14.61-33.22 43.84 0 23.55 9.23 43.84 33.22 43.84 14.45 0 24.65-7.09 30.54-21.26l31 15.5c-2.1 3.75-21.39 38.98-65.09 38.98-22.69 0-73.96-9.87-73.96-77.05 0-58.67 42.97-77.06 72.63-77.06 30.71-.01 52.58 11.95 65.56 35.86zM247.56 8.05C104.74 8.05 0 123.11 0 256.05c0 138.49 113.6 248 247.56 248 129.93 0 248.44-100.87 248.44-248 0-137.87-106.62-248-248.44-248zm.87 450.81c-112.54 0-203.7-93.04-203.7-202.81 0-105.42 85.43-203.27 203.72-203.27 112.53 0 202.82 89.46 202.82 203.26-.01 121.69-99.68 202.82-202.84 202.82z\"]\n};\nvar faCreativeCommonsBy = {\n prefix: 'fab',\n iconName: 'creative-commons-by',\n icon: [496, 512, [], \"f4e7\", \"M314.9 194.4v101.4h-28.3v120.5h-77.1V295.9h-28.3V194.4c0-4.4 1.6-8.2 4.6-11.3 3.1-3.1 6.9-4.7 11.3-4.7H299c4.1 0 7.8 1.6 11.1 4.7 3.1 3.2 4.8 6.9 4.8 11.3zm-101.5-63.7c0-23.3 11.5-35 34.5-35s34.5 11.7 34.5 35c0 23-11.5 34.5-34.5 34.5s-34.5-11.5-34.5-34.5zM247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3z\"]\n};\nvar faCreativeCommonsNc = {\n prefix: 'fab',\n iconName: 'creative-commons-nc',\n icon: [496, 512, [], \"f4e8\", \"M247.6 8C387.4 8 496 115.9 496 256c0 147.2-118.5 248-248.4 248C113.1 504 0 393.2 0 256 0 123.1 104.7 8 247.6 8zM55.8 189.1c-7.4 20.4-11.1 42.7-11.1 66.9 0 110.9 92.1 202.4 203.7 202.4 122.4 0 177.2-101.8 178.5-104.1l-93.4-41.6c-7.7 37.1-41.2 53-68.2 55.4v38.1h-28.8V368c-27.5-.3-52.6-10.2-75.3-29.7l34.1-34.5c31.7 29.4 86.4 31.8 86.4-2.2 0-6.2-2.2-11.2-6.6-15.1-14.2-6-1.8-.1-219.3-97.4zM248.4 52.3c-38.4 0-112.4 8.7-170.5 93l94.8 42.5c10-31.3 40.4-42.9 63.8-44.3v-38.1h28.8v38.1c22.7 1.2 43.4 8.9 62 23L295 199.7c-42.7-29.9-83.5-8-70 11.1 53.4 24.1 43.8 19.8 93 41.6l127.1 56.7c4.1-17.4 6.2-35.1 6.2-53.1 0-57-19.8-105-59.3-143.9-39.3-39.9-87.2-59.8-143.6-59.8z\"]\n};\nvar faCreativeCommonsNcEu = {\n prefix: 'fab',\n iconName: 'creative-commons-nc-eu',\n icon: [496, 512, [], \"f4e9\", \"M247.7 8C103.6 8 0 124.8 0 256c0 136.3 111.7 248 247.7 248C377.9 504 496 403.1 496 256 496 117 388.4 8 247.7 8zm.6 450.7c-112 0-203.6-92.5-203.6-202.7 0-23.2 3.7-45.2 10.9-66l65.7 29.1h-4.7v29.5h23.3c0 6.2-.4 3.2-.4 19.5h-22.8v29.5h27c11.4 67 67.2 101.3 124.6 101.3 26.6 0 50.6-7.9 64.8-15.8l-10-46.1c-8.7 4.6-28.2 10.8-47.3 10.8-28.2 0-58.1-10.9-67.3-50.2h90.3l128.3 56.8c-1.5 2.1-56.2 104.3-178.8 104.3zm-16.7-190.6l-.5-.4.9.4h-.4zm77.2-19.5h3.7v-29.5h-70.3l-28.6-12.6c2.5-5.5 5.4-10.5 8.8-14.3 12.9-15.8 31.1-22.4 51.1-22.4 18.3 0 35.3 5.4 46.1 10l11.6-47.3c-15-6.6-37-12.4-62.3-12.4-39 0-72.2 15.8-95.9 42.3-5.3 6.1-9.8 12.9-13.9 20.1l-81.6-36.1c64.6-96.8 157.7-93.6 170.7-93.6 113 0 203 90.2 203 203.4 0 18.7-2.1 36.3-6.3 52.9l-136.1-60.5z\"]\n};\nvar faCreativeCommonsNcJp = {\n prefix: 'fab',\n iconName: 'creative-commons-nc-jp',\n icon: [496, 512, [], \"f4ea\", \"M247.7 8C103.6 8 0 124.8 0 256c0 136.4 111.8 248 247.7 248C377.9 504 496 403.2 496 256 496 117.2 388.5 8 247.7 8zm.6 450.7c-112 0-203.6-92.5-203.6-202.7 0-21.1 3-41.2 9-60.3l127 56.5h-27.9v38.6h58.1l5.7 11.8v18.7h-63.8V360h63.8v56h61.7v-56h64.2v-35.7l81 36.1c-1.5 2.2-57.1 98.3-175.2 98.3zm87.6-137.3h-57.6v-18.7l2.9-5.6 54.7 24.3zm6.5-51.4v-17.8h-38.6l63-116H301l-43.4 96-23-10.2-39.6-85.7h-65.8l27.3 51-81.9-36.5c27.8-44.1 82.6-98.1 173.7-98.1 112.8 0 203 90 203 203.4 0 21-2.7 40.6-7.9 59l-101-45.1z\"]\n};\nvar faCreativeCommonsNd = {\n prefix: 'fab',\n iconName: 'creative-commons-nd',\n icon: [496, 512, [], \"f4eb\", \"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm94 144.3v42.5H162.1V197h180.3zm0 79.8v42.5H162.1v-42.5h180.3z\"]\n};\nvar faCreativeCommonsPd = {\n prefix: 'fab',\n iconName: 'creative-commons-pd',\n icon: [496, 512, [], \"f4ec\", \"M248 8C111 8 0 119.1 0 256c0 137 111 248 248 248s248-111 248-248C496 119.1 385 8 248 8zm0 449.5c-139.2 0-235.8-138-190.2-267.9l78.8 35.1c-2.1 10.5-3.3 21.5-3.3 32.9 0 99 73.9 126.9 120.4 126.9 22.9 0 53.5-6.7 79.4-29.5L297 311.1c-5.5 6.3-17.6 16.7-36.3 16.7-37.8 0-53.7-39.9-53.9-71.9 230.4 102.6 216.5 96.5 217.9 96.8-34.3 62.4-100.6 104.8-176.7 104.8zm194.2-150l-224-100c18.8-34 54.9-30.7 74.7-11l40.4-41.6c-27.1-23.3-58-27.5-78.1-27.5-47.4 0-80.9 20.5-100.7 51.6l-74.9-33.4c36.1-54.9 98.1-91.2 168.5-91.2 111.1 0 201.5 90.4 201.5 201.5 0 18-2.4 35.4-6.8 52-.3-.1-.4-.2-.6-.4z\"]\n};\nvar faCreativeCommonsPdAlt = {\n prefix: 'fab',\n iconName: 'creative-commons-pd-alt',\n icon: [496, 512, [], \"f4ed\", \"M247.6 8C104.7 8 0 123.1 0 256c0 138.5 113.6 248 247.6 248C377.5 504 496 403.1 496 256 496 118.1 389.4 8 247.6 8zm.8 450.8c-112.5 0-203.7-93-203.7-202.8 0-105.4 85.5-203.3 203.7-203.3 112.6 0 202.9 89.5 202.8 203.3 0 121.7-99.6 202.8-202.8 202.8zM316.7 186h-53.2v137.2h53.2c21.4 0 70-5.1 70-68.6 0-63.4-48.6-68.6-70-68.6zm.8 108.5h-19.9v-79.7l19.4-.1c3.8 0 35-2.1 35 39.9 0 24.6-10.5 39.9-34.5 39.9zM203.7 186h-68.2v137.3h34.6V279h27c54.1 0 57.1-37.5 57.1-46.5 0-31-16.8-46.5-50.5-46.5zm-4.9 67.3h-29.2v-41.6h28.3c30.9 0 28.8 41.6.9 41.6z\"]\n};\nvar faCreativeCommonsRemix = {\n prefix: 'fab',\n iconName: 'creative-commons-remix',\n icon: [496, 512, [], \"f4ee\", \"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm161.7 207.7l4.9 2.2v70c-7.2 3.6-63.4 27.5-67.3 28.8-6.5-1.8-113.7-46.8-137.3-56.2l-64.2 26.6-63.3-27.5v-63.8l59.3-24.8c-.7-.7-.4 5-.4-70.4l67.3-29.7L361 178.5v61.6l49.1 20.3zm-70.4 81.5v-43.8h-.4v-1.8l-113.8-46.5V295l113.8 46.9v-.4l.4.4zm7.5-57.6l39.9-16.4-36.8-15.5-39 16.4 35.9 15.5zm52.3 38.1v-43L355.2 298v43.4l44.3-19z\"]\n};\nvar faCreativeCommonsSa = {\n prefix: 'fab',\n iconName: 'creative-commons-sa',\n icon: [496, 512, [], \"f4ef\", \"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zM137.7 221c13-83.9 80.5-95.7 108.9-95.7 99.8 0 127.5 82.5 127.5 134.2 0 63.6-41 132.9-128.9 132.9-38.9 0-99.1-20-109.4-97h62.5c1.5 30.1 19.6 45.2 54.5 45.2 23.3 0 58-18.2 58-82.8 0-82.5-49.1-80.6-56.7-80.6-33.1 0-51.7 14.6-55.8 43.8h18.2l-49.2 49.2-49-49.2h19.4z\"]\n};\nvar faCreativeCommonsSampling = {\n prefix: 'fab',\n iconName: 'creative-commons-sampling',\n icon: [496, 512, [], \"f4f0\", \"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm3.6 53.2c2.8-.3 11.5 1 11.5 11.5l6.6 107.2 4.9-59.3c0-6 4.7-10.6 10.6-10.6 5.9 0 10.6 4.7 10.6 10.6 0 2.5-.5-5.7 5.7 81.5l5.8-64.2c.3-2.9 2.9-9.3 10.2-9.3 3.8 0 9.9 2.3 10.6 8.9l11.5 96.5 5.3-12.8c1.8-4.4 5.2-6.6 10.2-6.6h58v21.3h-50.9l-18.2 44.3c-3.9 9.9-19.5 9.1-20.8-3.1l-4-31.9-7.5 92.6c-.3 3-3 9.3-10.2 9.3-3 0-9.8-2.1-10.6-9.3 0-1.9.6 5.8-6.2-77.9l-5.3 72.2c-1.1 4.8-4.8 9.3-10.6 9.3-2.9 0-9.8-2-10.6-9.3 0-1.9.5 6.7-5.8-87.7l-5.8 94.8c0 6.3-3.6 12.4-10.6 12.4-5.2 0-10.6-4.1-10.6-12l-5.8-87.7c-5.8 92.5-5.3 84-5.3 85.9-1.1 4.8-4.8 9.3-10.6 9.3-3 0-9.8-2.1-10.6-9.3 0-.7-.4-1.1-.4-2.6l-6.2-88.6L182 348c-.7 6.5-6.7 9.3-10.6 9.3-5.8 0-9.6-4.1-10.6-8.9L149.7 272c-2 4-3.5 8.4-11.1 8.4H87.2v-21.3H132l13.7-27.9c4.4-9.9 18.2-7.2 19.9 2.7l3.1 20.4 8.4-97.9c0-6 4.8-10.6 10.6-10.6.5 0 10.6-.2 10.6 12.4l4.9 69.1 6.6-92.6c0-10.1 9.5-10.6 10.2-10.6.6 0 10.6.7 10.6 10.6l5.3 80.6 6.2-97.9c.1-1.1-.6-10.3 9.9-11.5z\"]\n};\nvar faCreativeCommonsSamplingPlus = {\n prefix: 'fab',\n iconName: 'creative-commons-sampling-plus',\n icon: [496, 512, [], \"f4f1\", \"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm107 205.6c-4.7 0-9 2.8-10.7 7.2l-4 9.5-11-92.8c-1.7-13.9-22-13.4-23.1.4l-4.3 51.4-5.2-68.8c-1.1-14.3-22.1-14.2-23.2 0l-3.5 44.9-5.9-94.3c-.9-14.5-22.3-14.4-23.2 0l-5.1 83.7-4.3-66.3c-.9-14.4-22.2-14.4-23.2 0l-5.3 80.2-4.1-57c-1.1-14.3-22-14.3-23.2-.2l-7.7 89.8-1.8-12.2c-1.7-11.4-17.1-13.6-22-3.3l-13.2 27.7H87.5v23.2h51.3c4.4 0 8.4-2.5 10.4-6.4l10.7 73.1c2 13.5 21.9 13 23.1-.7l3.8-43.6 5.7 78.3c1.1 14.4 22.3 14.2 23.2-.1l4.6-70.4 4.8 73.3c.9 14.4 22.3 14.4 23.2-.1l4.9-80.5 4.5 71.8c.9 14.3 22.1 14.5 23.2.2l4.6-58.6 4.9 64.4c1.1 14.3 22 14.2 23.1.1l6.8-83 2.7 22.3c1.4 11.8 17.7 14.1 22.3 3.1l18-43.4h50.5V258l-58.4.3zm-78 5.2h-21.9v21.9c0 4.1-3.3 7.5-7.5 7.5-4.1 0-7.5-3.3-7.5-7.5v-21.9h-21.9c-4.1 0-7.5-3.3-7.5-7.5 0-4.1 3.4-7.5 7.5-7.5h21.9v-21.9c0-4.1 3.4-7.5 7.5-7.5s7.5 3.3 7.5 7.5v21.9h21.9c4.1 0 7.5 3.3 7.5 7.5 0 4.1-3.4 7.5-7.5 7.5z\"]\n};\nvar faCreativeCommonsShare = {\n prefix: 'fab',\n iconName: 'creative-commons-share',\n icon: [496, 512, [], \"f4f2\", \"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm101 132.4c7.8 0 13.7 6.1 13.7 13.7v182.5c0 7.7-6.1 13.7-13.7 13.7H214.3c-7.7 0-13.7-6-13.7-13.7v-54h-54c-7.8 0-13.7-6-13.7-13.7V131.1c0-8.2 6.6-12.7 12.4-13.7h136.4c7.7 0 13.7 6 13.7 13.7v54h54zM159.9 300.3h40.7V198.9c0-7.4 5.8-12.6 12-13.7h55.8v-40.3H159.9v155.4zm176.2-88.1H227.6v155.4h108.5V212.2z\"]\n};\nvar faCreativeCommonsZero = {\n prefix: 'fab',\n iconName: 'creative-commons-zero',\n icon: [496, 512, [], \"f4f3\", \"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm-.4 60.5c-81.9 0-102.5 77.3-102.5 142.8 0 65.5 20.6 142.8 102.5 142.8S350.5 321.5 350.5 256c0-65.5-20.6-142.8-102.5-142.8zm0 53.9c3.3 0 6.4.5 9.2 1.2 5.9 5.1 8.8 12.1 3.1 21.9l-54.5 100.2c-1.7-12.7-1.9-25.1-1.9-34.4 0-28.8 2-88.9 44.1-88.9zm40.8 46.2c2.9 15.4 3.3 31.4 3.3 42.7 0 28.9-2 88.9-44.1 88.9-13.5 0-32.6-7.7-20.1-26.4l60.9-105.2z\"]\n};\nvar faCriticalRole = {\n prefix: 'fab',\n iconName: 'critical-role',\n icon: [448, 512, [], \"f6c9\", \"M225.82 0c.26.15 216.57 124.51 217.12 124.72 3 1.18 3.7 3.46 3.7 6.56q-.11 125.17 0 250.36a5.88 5.88 0 0 1-3.38 5.78c-21.37 12-207.86 118.29-218.93 124.58h-3C142 466.34 3.08 386.56 2.93 386.48a3.29 3.29 0 0 1-1.88-3.24c0-.87 0-225.94-.05-253.1a5 5 0 0 1 2.93-4.93C27.19 112.11 213.2 6 224.07 0zM215.4 20.42l-.22-.16Q118.06 75.55 21 130.87c0 .12.08.23.13.35l30.86 11.64c-7.71 6-8.32 6-10.65 5.13-.1 0-24.17-9.28-26.8-10v230.43c.88-1.41 64.07-110.91 64.13-111 1.62-2.82 3-1.92 9.12-1.52 1.4.09 1.48.22.78 1.42-41.19 71.33-36.4 63-67.48 116.94-.81 1.4-.61 1.13 1.25 1.13h186.5c1.44 0 1.69-.23 1.7-1.64v-8.88c0-1.34 2.36-.81-18.37-1-7.46-.07-14.14-3.22-21.38-12.7-7.38-9.66-14.62-19.43-21.85-29.21-2.28-3.08-3.45-2.38-16.76-2.38-1.75 0-1.78 0-1.76 1.82.29 26.21.15 25.27 1 32.66.52 4.37 2.16 4.2 9.69 4.81 3.14.26 3.88 4.08.52 4.92-1.57.39-31.6.51-33.67-.1a2.42 2.42 0 0 1 .3-4.73c3.29-.76 6.16.81 6.66-4.44 1.3-13.66 1.17-9 1.1-79.42 0-10.82-.35-12.58-5.36-13.55-1.22-.24-3.54-.16-4.69-.55-2.88-1-2-4.84 1.77-4.85 33.67 0 46.08-1.07 56.06 4.86 7.74 4.61 12 11.48 12.51 20.4.88 14.59-6.51 22.35-15 32.59a1.46 1.46 0 0 0 0 2.22c2.6 3.25 5 6.63 7.71 9.83 27.56 33.23 24.11 30.54 41.28 33.06.89.13 1-.42 1-1.15v-11c0-1 .32-1.43 1.41-1.26a72.37 72.37 0 0 0 23.58-.3c1.08-.15 1.5.2 1.48 1.33 0 .11.88 26.69.87 26.8-.05 1.52.67 1.62 1.89 1.62h186.71Q386.51 304.6 346 234.33c2.26-.66-.4 0 6.69-1.39 2-.39 2.05-.41 3.11 1.44 7.31 12.64 77.31 134 77.37 134.06V138c-1.72.5-103.3 38.72-105.76 39.68-1.08.42-1.55.2-1.91-.88-.63-1.9-1.34-3.76-2.09-5.62-.32-.79-.09-1.13.65-1.39.1 0 95.53-35.85 103-38.77-65.42-37.57-130.56-75-196-112.6l86.82 150.39-.28.33c-9.57-.9-10.46-1.6-11.8-3.94-1-1.69-73.5-127.71-82-142.16-9.1 14.67-83.56 146.21-85.37 146.32-2.93.17-5.88.08-9.25.08q43.25-74.74 86.18-149zm51.93 129.92a37.68 37.68 0 0 0 5.54-.85c1.69-.3 2.53.2 2.6 1.92 0 .11.07 19.06-.86 20.45s-1.88 1.22-2.6-.19c-5-9.69 6.22-9.66-39.12-12-.7 0-1 .23-1 .93 0 .13 3.72 122 3.73 122.11 0 .89.52 1.2 1.21 1.51a83.92 83.92 0 0 1 8.7 4.05c7.31 4.33 11.38 10.84 12.41 19.31 1.44 11.8-2.77 35.77-32.21 37.14-2.75.13-28.26 1.08-34.14-23.25-4.66-19.26 8.26-32.7 19.89-36.4a2.45 2.45 0 0 0 2-2.66c.1-5.63 3-107.1 3.71-121.35.05-1.08-.62-1.16-1.35-1.15-32.35.52-36.75-.34-40.22 8.52-2.42 6.18-4.14 1.32-3.95.23q1.59-9 3.31-18c.4-2.11 1.43-2.61 3.43-1.86 5.59 2.11 6.72 1.7 37.25 1.92 1.73 0 1.78-.08 1.82-1.85.68-27.49.58-22.59 1-29.55a2.69 2.69 0 0 0-1.63-2.8c-5.6-2.91-8.75-7.55-8.9-13.87-.35-14.81 17.72-21.67 27.38-11.51 6.84 7.19 5.8 18.91-2.45 24.15a4.35 4.35 0 0 0-2.22 4.34c0 .59-.11-4.31 1 30.05 0 .9.43 1.12 1.24 1.11.1 0 23-.09 34.47-.37zM68.27 141.7c19.84-4.51 32.68-.56 52.49 1.69 2.76.31 3.74 1.22 3.62 4-.21 5-1.16 22.33-1.24 23.15a2.65 2.65 0 0 1-1.63 2.34c-4.06 1.7-3.61-4.45-4-7.29-3.13-22.43-73.87-32.7-74.63 25.4-.31 23.92 17 53.63 54.08 50.88 27.24-2 19-20.19 24.84-20.47a2.72 2.72 0 0 1 3 3.36c-1.83 10.85-3.42 18.95-3.45 19.15-1.54 9.17-86.7 22.09-93.35-42.06-2.71-25.85 10.44-53.37 40.27-60.15zm80 87.67h-19.49a2.57 2.57 0 0 1-2.66-1.79c2.38-3.75 5.89.92 5.86-6.14-.08-25.75.21-38 .23-40.1 0-3.42-.53-4.65-3.32-4.94-7-.72-3.11-3.37-1.11-3.38 11.84-.1 22.62-.18 30.05.72 8.77 1.07 16.71 12.63 7.93 22.62-2 2.25-4 4.42-6.14 6.73.95 1.15 6.9 8.82 17.28 19.68 2.66 2.78 6.15 3.51 9.88 3.13a2.21 2.21 0 0 0 2.23-2.12c.3-3.42.26 4.73.45-40.58 0-5.65-.34-6.58-3.23-6.83-3.95-.35-4-2.26-.69-3.37l19.09-.09c.32 0 4.49.53 1 3.38 0 .05-.16 0-.24 0-3.61.26-3.94 1-4 4.62-.27 43.93.07 40.23.41 42.82.11.84.27 2.23 5.1 2.14 2.49 0 3.86 3.37 0 3.4-10.37.08-20.74 0-31.11.07-10.67 0-13.47-6.2-24.21-20.82-1.6-2.18-8.31-2.36-8.2-.37.88 16.47 0 17.78 4 17.67 4.75-.1 4.73 3.57.83 3.55zm275-10.15c-1.21 7.13.17 10.38-5.3 10.34-61.55-.42-47.82-.22-50.72-.31a18.4 18.4 0 0 1-3.63-.73c-2.53-.6 1.48-1.23-.38-5.6-1.43-3.37-2.78-6.78-4.11-10.19a1.94 1.94 0 0 0-2-1.44 138 138 0 0 0-14.58.07 2.23 2.23 0 0 0-1.62 1.06c-1.58 3.62-3.07 7.29-4.51 11-1.27 3.23 7.86 1.32 12.19 2.16 3 .57 4.53 3.72.66 3.73H322.9c-2.92 0-3.09-3.15-.74-3.21a6.3 6.3 0 0 0 5.92-3.47c1.5-3 2.8-6 4.11-9.09 18.18-42.14 17.06-40.17 18.42-41.61a1.83 1.83 0 0 1 3 0c2.93 3.34 18.4 44.71 23.62 51.92 2 2.7 5.74 2 6.36 2 3.61.13 4-1.11 4.13-4.29.09-1.87.08 1.17.07-41.24 0-4.46-2.36-3.74-5.55-4.27-.26 0-2.56-.63-.08-3.06.21-.2-.89-.24 21.7-.15 2.32 0 5.32 2.75-1.21 3.45a2.56 2.56 0 0 0-2.66 2.83c-.07 1.63-.19 38.89.29 41.21a3.06 3.06 0 0 0 3.23 2.43c13.25.43 14.92.44 16-3.41 1.67-5.78 4.13-2.52 3.73-.19zm-104.72 64.37c-4.24 0-4.42-3.39-.61-3.41 35.91-.16 28.11.38 37.19-.65 1.68-.19 2.38.24 2.25 1.89-.26 3.39-.64 6.78-1 10.16-.25 2.16-3.2 2.61-3.4-.15-.38-5.31-2.15-4.45-15.63-5.08-1.58-.07-1.64 0-1.64 1.52V304c0 1.65 0 1.6 1.62 1.47 3.12-.25 10.31.34 15.69-1.52.47-.16 3.3-1.79 3.07 1.76 0 .21-.76 10.35-1.18 11.39-.53 1.29-1.88 1.51-2.58.32-1.17-2 0-5.08-3.71-5.3-15.42-.9-12.91-2.55-12.91 6 0 12.25-.76 16.11 3.89 16.24 16.64.48 14.4 0 16.43-5.71.84-2.37 3.5-1.77 3.18.58-.44 3.21-.85 6.43-1.23 9.64 0 .36-.16 2.4-4.66 2.39-37.16-.08-34.54-.19-35.21-.31-2.72-.51-2.2-3 .22-3.45 1.1-.19 4 .54 4.16-2.56 2.44-56.22-.07-51.34-3.91-51.33zm-.41-109.52c2.46.61 3.13 1.76 2.95 4.65-.33 5.3-.34 9-.55 9.69-.66 2.23-3.15 2.12-3.34-.27-.38-4.81-3.05-7.82-7.57-9.15-26.28-7.73-32.81 15.46-27.17 30.22 5.88 15.41 22 15.92 28.86 13.78 5.92-1.85 5.88-6.5 6.91-7.58 1.23-1.3 2.25-1.84 3.12 1.1 0 .1.57 11.89-6 12.75-1.6.21-19.38 3.69-32.68-3.39-21-11.19-16.74-35.47-6.88-45.33 14-14.06 39.91-7.06 42.32-6.47zM289.8 280.14c3.28 0 3.66 3 .16 3.43-2.61.32-5-.42-5 5.46 0 2-.19 29.05.4 41.45.11 2.29 1.15 3.52 3.44 3.65 22 1.21 14.95-1.65 18.79-6.34 1.83-2.24 2.76.84 2.76 1.08.35 13.62-4 12.39-5.19 12.4l-38.16-.19c-1.93-.23-2.06-3-.42-3.38 2-.48 4.94.4 5.13-2.8 1-15.87.57-44.65.34-47.81-.27-3.77-2.8-3.27-5.68-3.71-2.47-.38-2-3.22.34-3.22 1.45-.02 17.97-.03 23.09-.02zm-31.63-57.79c.07 4.08 2.86 3.46 6 3.58 2.61.1 2.53 3.41-.07 3.43-6.48 0-13.7 0-21.61-.06-3.84 0-3.38-3.35 0-3.37 4.49 0 3.24 1.61 3.41-45.54 0-5.08-3.27-3.54-4.72-4.23-2.58-1.23-1.36-3.09.41-3.15 1.29 0 20.19-.41 21.17.21s1.87 1.65-.42 2.86c-1 .52-3.86-.28-4.15 2.47 0 .21-.82 1.63-.07 43.8zm-36.91 274.27a2.93 2.93 0 0 0 3.26 0c17-9.79 182-103.57 197.42-112.51-.14-.43 11.26-.18-181.52-.27-1.22 0-1.57.37-1.53 1.56 0 .1 1.25 44.51 1.22 50.38a28.33 28.33 0 0 1-1.36 7.71c-.55 1.83.38-.5-13.5 32.23-.73 1.72-1 2.21-2-.08-4.19-10.34-8.28-20.72-12.57-31a23.6 23.6 0 0 1-2-10.79c.16-2.46.8-16.12 1.51-48 0-1.95 0-2-2-2h-183c2.58 1.63 178.32 102.57 196 112.76zm-90.9-188.75c0 2.4.36 2.79 2.76 3 11.54 1.17 21 3.74 25.64-7.32 6-14.46 2.66-34.41-12.48-38.84-2-.59-16-2.76-15.94 1.51.05 8.04.01 11.61.02 41.65zm105.75-15.05c0 2.13 1.07 38.68 1.09 39.13.34 9.94-25.58 5.77-25.23-2.59.08-2 1.37-37.42 1.1-39.43-14.1 7.44-14.42 40.21 6.44 48.8a17.9 17.9 0 0 0 22.39-7.07c4.91-7.76 6.84-29.47-5.43-39a2.53 2.53 0 0 1-.36.12zm-12.28-198c-9.83 0-9.73 14.75-.07 14.87s10.1-14.88.07-14.91zm-80.15 103.83c0 1.8.41 2.4 2.17 2.58 13.62 1.39 12.51-11 12.16-13.36-1.69-11.22-14.38-10.2-14.35-7.81.05 4.5-.03 13.68.02 18.59zm212.32 6.4l-6.1-15.84c-2.16 5.48-4.16 10.57-6.23 15.84z\"]\n};\nvar faCss3 = {\n prefix: 'fab',\n iconName: 'css3',\n icon: [512, 512, [], \"f13c\", \"M480 32l-64 368-223.3 80L0 400l19.6-94.8h82l-8 40.6L210 390.2l134.1-44.4 18.8-97.1H29.5l16-82h333.7l10.5-52.7H56.3l16.3-82H480z\"]\n};\nvar faCss3Alt = {\n prefix: 'fab',\n iconName: 'css3-alt',\n icon: [384, 512, [], \"f38b\", \"M0 32l34.9 395.8L192 480l157.1-52.2L384 32H0zm313.1 80l-4.8 47.3L193 208.6l-.3.1h111.5l-12.8 146.6-98.2 28.7-98.8-29.2-6.4-73.9h48.9l3.2 38.3 52.6 13.3 54.7-15.4 3.7-61.6-166.3-.5v-.1l-.2.1-3.6-46.3L193.1 162l6.5-2.7H76.7L70.9 112h242.2z\"]\n};\nvar faCuttlefish = {\n prefix: 'fab',\n iconName: 'cuttlefish',\n icon: [440, 512, [], \"f38c\", \"M344 305.5c-17.5 31.6-57.4 54.5-96 54.5-56.6 0-104-47.4-104-104s47.4-104 104-104c38.6 0 78.5 22.9 96 54.5 13.7-50.9 41.7-93.3 87-117.8C385.7 39.1 320.5 8 248 8 111 8 0 119 0 256s111 248 248 248c72.5 0 137.7-31.1 183-80.7-45.3-24.5-73.3-66.9-87-117.8z\"]\n};\nvar faDAndD = {\n prefix: 'fab',\n iconName: 'd-and-d',\n icon: [576, 512, [], \"f38d\", \"M82.5 98.9c-.6-17.2 2-33.8 12.7-48.2.3 7.4 1.2 14.5 4.2 21.6 5.9-27.5 19.7-49.3 42.3-65.5-1.9 5.9-3.5 11.8-3 17.7 8.7-7.4 18.8-17.8 44.4-22.7 14.7-2.8 29.7-2 42.1 1 38.5 9.3 61 34.3 69.7 72.3 5.3 23.1.7 45-8.3 66.4-5.2 12.4-12 24.4-20.7 35.1-2-1.9-3.9-3.8-5.8-5.6-42.8-40.8-26.8-25.2-37.4-37.4-1.1-1.2-1-2.2-.1-3.6 8.3-13.5 11.8-28.2 10-44-1.1-9.8-4.3-18.9-11.3-26.2-14.5-15.3-39.2-15-53.5.6-11.4 12.5-14.1 27.4-10.9 43.6.2 1.3.4 2.7 0 3.9-3.4 13.7-4.6 27.6-2.5 41.6.1.5.1 1.1.1 1.6 0 .3-.1.5-.2 1.1-21.8-11-36-28.3-43.2-52.2-8.3 17.8-11.1 35.5-6.6 54.1-15.6-15.2-21.3-34.3-22-55.2zm469.6 123.2c-11.6-11.6-25-20.4-40.1-26.6-12.8-5.2-26-7.9-39.9-7.1-10 .6-19.6 3.1-29 6.4-2.5.9-5.1 1.6-7.7 2.2-4.9 1.2-7.3-3.1-4.7-6.8 3.2-4.6 3.4-4.2 15-12 .6-.4 1.2-.8 2.2-1.5h-2.5c-.6 0-1.2.2-1.9.3-19.3 3.3-30.7 15.5-48.9 29.6-10.4 8.1-13.8 3.8-12-.5 1.4-3.5 3.3-6.7 5.1-10 1-1.8 2.3-3.4 3.5-5.1-.2-.2-.5-.3-.7-.5-27 18.3-46.7 42.4-57.7 73.3.3.3.7.6 1 .9.3-.6.5-1.2.9-1.7 10.4-12.1 22.8-21.8 36.6-29.8 18.2-10.6 37.5-18.3 58.7-20.2 4.3-.4 8.7-.1 13.1-.1-1.8.7-3.5.9-5.3 1.1-18.5 2.4-35.5 9-51.5 18.5-30.2 17.9-54.5 42.2-75.1 70.4-.3.4-.4.9-.7 1.3 14.5 5.3 24 17.3 36.1 25.6.2-.1.3-.2.4-.4l1.2-2.7c12.2-26.9 27-52.3 46.7-74.5 16.7-18.8 38-25.3 62.5-20 5.9 1.3 11.4 4.4 17.2 6.8 2.3-1.4 5.1-3.2 8-4.7 8.4-4.3 17.4-7 26.7-9 14.7-3.1 29.5-4.9 44.5-1.3v-.5c-.5-.4-1.2-.8-1.7-1.4zM316.7 397.6c-39.4-33-22.8-19.5-42.7-35.6-.8.9 0-.2-1.9 3-11.2 19.1-25.5 35.3-44 47.6-10.3 6.8-21.5 11.8-34.1 11.8-21.6 0-38.2-9.5-49.4-27.8-12-19.5-13.3-40.7-8.2-62.6 7.8-33.8 30.1-55.2 38.6-64.3-18.7-6.2-33 1.7-46.4 13.9.8-13.9 4.3-26.2 11.8-37.3-24.3 10.6-45.9 25-64.8 43.9-.3-5.8 5.4-43.7 5.6-44.7.3-2.7-.6-5.3-3-7.4-24.2 24.7-44.5 51.8-56.1 84.6 7.4-5.9 14.9-11.4 23.6-16.2-8.3 22.3-19.6 52.8-7.8 101.1 4.6 19 11.9 36.8 24.1 52.3 2.9 3.7 6.3 6.9 9.5 10.3.2-.2.4-.3.6-.5-1.4-7-2.2-14.1-1.5-21.9 2.2 3.2 3.9 6 5.9 8.6 12.6 16 28.7 27.4 47.2 35.6 25 11.3 51.1 13.3 77.9 8.6 54.9-9.7 90.7-48.6 116-98.8 1-1.8.6-2.9-.9-4.2zm172-46.4c-9.5-3.1-22.2-4.2-28.7-2.9 9.9 4 14.1 6.6 18.8 12 12.6 14.4 10.4 34.7-5.4 45.6-11.7 8.1-24.9 10.5-38.9 9.1-1.2-.1-2.3-.4-3-.6 2.8-3.7 6-7 8.1-10.8 9.4-16.8 5.4-42.1-8.7-56.1-2.1-2.1-4.6-3.9-7-5.9-.3 1.3-.1 2.1.1 2.8 4.2 16.6-8.1 32.4-24.8 31.8-7.6-.3-13.9-3.8-19.6-8.5-19.5-16.1-39.1-32.1-58.5-48.3-5.9-4.9-12.5-8.1-20.1-8.7-4.6-.4-9.3-.6-13.9-.9-5.9-.4-8.8-2.8-10.4-8.4-.9-3.4-1.5-6.8-2.2-10.2-1.5-8.1-6.2-13-14.3-14.2-4.4-.7-8.9-1-13.3-1.5-13-1.4-19.8-7.4-22.6-20.3-5 11-1.6 22.4 7.3 29.9 4.5 3.8 9.3 7.3 13.8 11.2 4.6 3.8 7.4 8.7 7.9 14.8.4 4.7.8 9.5 1.8 14.1 2.2 10.6 8.9 18.4 17 25.1 16.5 13.7 33 27.3 49.5 41.1 17.9 15 13.9 32.8 13 56-.9 22.9 12.2 42.9 33.5 51.2 1 .4 2 .6 3.6 1.1-15.7-18.2-10.1-44.1.7-52.3.3 2.2.4 4.3.9 6.4 9.4 44.1 45.4 64.2 85 56.9 16-2.9 30.6-8.9 42.9-19.8 2-1.8 3.7-4.1 5.9-6.5-19.3 4.6-35.8.1-50.9-10.6.7-.3 1.3-.3 1.9-.3 21.3 1.8 40.6-3.4 57-17.4 19.5-16.6 26.6-42.9 17.4-66-8.3-20.1-23.6-32.3-43.8-38.9zM99.4 179.3c-5.3-9.2-13.2-15.6-22.1-21.3 13.7-.5 26.6.2 39.6 3.7-7-12.2-8.5-24.7-5-38.7 5.3 11.9 13.7 20.1 23.6 26.8 19.7 13.2 35.7 19.6 46.7 30.2 3.4 3.3 6.3 7.1 9.6 10.9-.8-2.1-1.4-4.1-2.2-6-5-10.6-13-18.6-22.6-25-1.8-1.2-2.8-2.5-3.4-4.5-3.3-12.5-3-25.1-.7-37.6 1-5.5 2.8-10.9 4.5-16.3.8-2.4 2.3-4.6 4-6.6.6 6.9 0 25.5 19.6 46 10.8 11.3 22.4 21.9 33.9 32.7 9 8.5 18.3 16.7 25.5 26.8 1.1 1.6 2.2 3.3 3.8 4.7-5-13-14.2-24.1-24.2-33.8-9.6-9.3-19.4-18.4-29.2-27.4-3.3-3-4.6-6.7-5.1-10.9-1.2-10.4 0-20.6 4.3-30.2.5-1 1.1-2 1.9-3.3.5 4.2.6 7.9 1.4 11.6 4.8 23.1 20.4 36.3 49.3 63.5 10 9.4 19.3 19.2 25.6 31.6 4.8 9.3 7.3 19 5.7 29.6-.1.6.5 1.7 1.1 2 6.2 2.6 10 6.9 9.7 14.3 7.7-2.6 12.5-8 16.4-14.5 4.2 20.2-9.1 50.3-27.2 58.7.4-4.5 5-23.4-16.5-27.7-6.8-1.3-12.8-1.3-22.9-2.1 4.7-9 10.4-20.6.5-22.4-24.9-4.6-52.8 1.9-57.8 4.6 8.2.4 16.3 1 23.5 3.3-2 6.5-4 12.7-5.8 18.9-1.9 6.5 2.1 14.6 9.3 9.6 1.2-.9 2.3-1.9 3.3-2.7-3.1 17.9-2.9 15.9-2.8 18.3.3 10.2 9.5 7.8 15.7 7.3-2.5 11.8-29.5 27.3-45.4 25.8 7-4.7 12.7-10.3 15.9-17.9-6.5.8-12.9 1.6-19.2 2.4l-.3-.9c4.7-3.4 8-7.8 10.2-13.1 8.7-21.1-3.6-38-25-39.9-9.1-.8-17.8.8-25.9 5.5 6.2-15.6 17.2-26.6 32.6-34.5-15.2-4.3-8.9-2.7-24.6-6.3 14.6-9.3 30.2-13.2 46.5-14.6-5.2-3.2-48.1-3.6-70.2 20.9 7.9 1.4 15.5 2.8 23.2 4.2-23.8 7-44 19.7-62.4 35.6 1.1-4.8 2.7-9.5 3.3-14.3.6-4.5.8-9.2.1-13.6-1.5-9.4-8.9-15.1-19.7-16.3-7.9-.9-15.6.1-23.3 1.3-.9.1-1.7.3-2.9 0 15.8-14.8 36-21.7 53.1-33.5 6-4.5 6.8-8.2 3-14.9zm128.4 26.8c3.3 16 12.6 25.5 23.8 24.3-4.6-11.3-12.1-19.5-23.8-24.3z\"]\n};\nvar faDAndDBeyond = {\n prefix: 'fab',\n iconName: 'd-and-d-beyond',\n icon: [640, 512, [], \"f6ca\", \"M313.8 241.5c13.8 0 21-10.1 24.8-17.9-1-1.1-5-4.2-7.4-6.6-2.4 4.3-8.2 10.7-13.9 10.7-10.2 0-15.4-14.7-3.2-26.6-.5-.2-4.3-1.8-8 2.4 0-3 1-5.1 2.1-6.6-3.5 1.3-9.8 5.6-11.4 7.9.2-5.8 1.6-7.5.6-9l-.2-.2s-8.5 5.6-9.3 14.7c0 0 1.1-1.6 2.1-1.9.6-.3 1.3 0 .6 1.9-.2.6-5.8 15.7 5.1 26-.6-1.6-1.9-7.6 2.4-1.9-.3.1 5.8 7.1 15.7 7.1zm52.4-21.1c0-4-4.9-4.4-5.6-4.5 2 3.9.9 7.5.2 9 2.5-.4 5.4-1.6 5.4-4.5zm10.3 5.2c0-6.4-6.2-11.4-13.5-10.7 8 1.3 5.6 13.8-5 11.4 3.7-2.6 3.2-9.9-1.3-12.5 1.4 4.2-3 8.2-7.4 4.6-2.4-1.9-8-6.6-10.6-8.6-2.4-2.1-5.5-1-6.6-1.8-1.3-1.1-.5-3.8-2.2-5-1.6-.8-3-.3-4.8-1-1.6-.6-2.7-1.9-2.6-3.5-2.5 4.4 3.4 6.3 4.5 8.5 1 1.9-.8 4.8 4 8.5 14.8 11.6 9.1 8 10.4 18.1.6 4.3 4.2 6.7 6.4 7.4-2.1-1.9-2.9-6.4 0-9.3 0 13.9 19.2 13.3 23.1 6.4-2.4 1.1-7-.2-9-1.9 7.7 1 14.2-4.1 14.6-10.6zm-39.4-18.4c2 .8 1.6.7 6.4 4.5 10.2-24.5 21.7-15.7 22-15.5 2.2-1.9 9.8-3.8 13.8-2.7-2.4-2.7-7.5-6.2-13.3-6.2-4.7 0-7.4 2.2-8 1.3-.8-1.4 3.2-3.4 3.2-3.4-5.4.2-9.6 6.7-11.2 5.9-1.1-.5 1.4-3.7 1.4-3.7-5.1 2.9-9.3 9.1-10.2 13 4.6-5.8 13.8-9.8 19.7-9-10.5.5-19.5 9.7-23.8 15.8zm242.5 51.9c-20.7 0-40 1.3-50.3 2.1l7.4 8.2v77.2l-7.4 8.2c10.4.8 30.9 2.1 51.6 2.1 42.1 0 59.1-20.7 59.1-48.9 0-29.3-23.2-48.9-60.4-48.9zm-15.1 75.6v-53.3c30.1-3.3 46.8 3.8 46.8 26.3 0 25.6-21.4 30.2-46.8 27zM301.6 181c-1-3.4-.2-6.9 1.1-9.4 1 3 2.6 6.4 7.5 9-.5-2.4-.2-5.6.5-8-1.4-5.4 2.1-9.9 6.4-9.9 6.9 0 8.5 8.8 4.7 14.4 2.1 3.2 5.5 5.6 7.7 7.8 3.2-3.7 5.5-9.5 5.5-13.8 0-8.2-5.5-15.9-16.7-16.5-20-.9-20.2 16.6-20 18.9.5 5.2 3.4 7.8 3.3 7.5zm-.4 6c-.5 1.8-7 3.7-10.2 6.9 4.8-1 7-.2 7.8 1.8.5 1.4-.2 3.4-.5 5.6 1.6-1.8 7-5.5 11-6.2-1-.3-3.4-.8-4.3-.8 2.9-3.4 9.3-4.5 12.8-3.7-2.2-.2-6.7 1.1-8.5 2.6 1.6.3 3 .6 4.3 1.1-2.1.8-4.8 3.4-5.8 6.1 7-5 13.1 5.2 7 8.2.8.2 2.7 0 3.5-.5-.3 1.1-1.9 3-3 3.4 2.9 0 7-1.9 8.2-4.6 0 0-1.8.6-2.6-.2s.3-4.3.3-4.3c-2.3 2.9-3.4-1.3-1.3-4.2-1-.3-3.5-.6-4.6-.5 3.2-1.1 10.4-1.8 11.2-.3.6 1.1-1 3.4-1 3.4 4-.5 8.3 1.1 6.7 5.1 2.9-1.4 5.5-5.9 4.8-10.4-.3 1-1.6 2.4-2.9 2.7.2-1.4-1-2.2-1.9-2.6 1.7-9.6-14.6-14.2-14.1-23.9-1 1.3-1.8 5-.8 7.1 2.7 3.2 8.7 6.7 10.1 12.2-2.6-6.4-15.1-11.4-14.6-20.2-1.6 1.6-2.6 7.8-1.3 11 2.4 1.4 4.5 3.8 4.8 6.1-2.2-5.1-11.4-6.1-13.9-12.2-.6 2.2-.3 5 1 6.7 0 0-2.2-.8-7-.6 1.7.6 5.1 3.5 4.8 5.2zm25.9 7.4c-2.7 0-3.5-2.1-4.2-4.3 3.3 1.3 4.2 4.3 4.2 4.3zm38.9 3.7l-1-.6c-1.1-1-2.9-1.4-4.7-1.4-2.9 0-5.8 1.3-7.5 3.4-.8.8-1.4 1.8-2.1 2.6v15.7c3.5 2.6 7.1-2.9 3-7.2 1.5.3 4.6 2.7 5.1 3.2 0 0 2.6-.5 5-.5 2.1 0 3.9.3 5.6 1.1V196c-1.1.5-2.2 1-2.7 1.4zM79.9 305.9c17.2-4.6 16.2-18 16.2-19.9 0-20.6-24.1-25-37-25H3l8.3 8.6v29.5H0l11.4 14.6V346L3 354.6c61.7 0 73.8 1.5 86.4-5.9 6.7-4 9.9-9.8 9.9-17.6 0-5.1 2.6-18.8-19.4-25.2zm-41.3-27.5c20 0 29.6-.8 29.6 9.1v3c0 12.1-19 8.8-29.6 8.8zm0 59.2V315c12.2 0 32.7-2.3 32.7 8.8v4.5h.2c0 11.2-12.5 9.3-32.9 9.3zm101.2-19.3l23.1.2v-.2l14.1-21.2h-37.2v-14.9h52.4l-14.1-21v-.2l-73.5.2 7.4 8.2v77.1l-7.4 8.2h81.2l14.1-21.2-60.1.2zm214.7-60.1c-73.9 0-77.5 99.3-.3 99.3 77.9 0 74.1-99.3.3-99.3zm-.3 77.5c-37.4 0-36.9-55.3.2-55.3 36.8.1 38.8 55.3-.2 55.3zm-91.3-8.3l44.1-66.2h-41.7l6.1 7.2-20.5 37.2h-.3l-21-37.2 6.4-7.2h-44.9l44.1 65.8.2 19.4-7.7 8.2h42.6l-7.2-8.2zm-28.4-151.3c1.6 1.3 2.9 2.4 2.9 6.6v38.8c0 4.2-.8 5.3-2.7 6.4-.1.1-7.5 4.5-7.9 4.6h35.1c10 0 17.4-1.5 26-8.6-.6-5 .2-9.5.8-12 0-.2-1.8 1.4-2.7 3.5 0-5.7 1.6-15.4 9.6-20.5-.1 0-3.7-.8-9 1.1 2-3.1 10-7.9 10.4-7.9-8.2-26-38-22.9-32.2-22.9-30.9 0-32.6.3-39.9-4 .1.8.5 8.2 9.6 14.9zm21.5 5.5c4.6 0 23.1-3.3 23.1 17.3 0 20.7-18.4 17.3-23.1 17.3zm228.9 79.6l7 8.3V312h-.3c-5.4-14.4-42.3-41.5-45.2-50.9h-31.6l7.4 8.5v76.9l-7.2 8.3h39l-7.4-8.2v-47.4h.3c3.7 10.6 44.5 42.9 48.5 55.6h21.3v-85.2l7.4-8.3zm-106.7-96.1c-32.2 0-32.8.2-39.9-4 .1.7.5 8.3 9.6 14.9 3.1 2 2.9 4.3 2.9 9.5 1.8-1.1 3.8-2.2 6.1-3-1.1 1.1-2.7 2.7-3.5 4.5 1-1.1 7.5-5.1 14.6-3.5-1.6.3-4 1.1-6.1 2.9.1 0 2.1-1.1 7.5-.3v-4.3c4.7 0 23.1-3.4 23.1 17.3 0 20.5-18.5 17.3-19.7 17.3 5.7 4.4 5.8 12 2.2 16.3h.3c33.4 0 36.7-27.3 36.7-34 0-3.8-1.1-32-33.8-33.6z\"]\n};\nvar faDailymotion = {\n prefix: 'fab',\n iconName: 'dailymotion',\n icon: [448, 512, [], \"e052\", \"M298.93,267a48.4,48.4,0,0,0-24.36-6.21q-19.83,0-33.44,13.27t-13.61,33.42q0,21.16,13.28,34.6t33.43,13.44q20.5,0,34.11-13.78T322,307.47A47.13,47.13,0,0,0,315.9,284,44.13,44.13,0,0,0,298.93,267ZM0,32V480H448V32ZM374.71,405.26h-53.1V381.37h-.67q-15.79,26.2-55.78,26.2-27.56,0-48.89-13.1a88.29,88.29,0,0,1-32.94-35.77q-11.6-22.68-11.59-50.89,0-27.56,11.76-50.22a89.9,89.9,0,0,1,32.93-35.78q21.18-13.09,47.72-13.1a80.87,80.87,0,0,1,29.74,5.21q13.28,5.21,25,17V153l55.79-12.09Z\"]\n};\nvar faDashcube = {\n prefix: 'fab',\n iconName: 'dashcube',\n icon: [448, 512, [], \"f210\", \"M326.6 104H110.4c-51.1 0-91.2 43.3-91.2 93.5V427c0 50.5 40.1 85 91.2 85h227.2c51.1 0 91.2-34.5 91.2-85V0L326.6 104zM153.9 416.5c-17.7 0-32.4-15.1-32.4-32.8V240.8c0-17.7 14.7-32.5 32.4-32.5h140.7c17.7 0 32 14.8 32 32.5v123.5l51.1 52.3H153.9z\"]\n};\nvar faDeezer = {\n prefix: 'fab',\n iconName: 'deezer',\n icon: [576, 512, [], \"e077\", \"M451.46,244.71H576V172H451.46Zm0-173.89v72.67H576V70.82Zm0,275.06H576V273.2H451.46ZM0,447.09H124.54V374.42H0Zm150.47,0H275V374.42H150.47Zm150.52,0H425.53V374.42H301Zm150.47,0H576V374.42H451.46ZM301,345.88H425.53V273.2H301Zm-150.52,0H275V273.2H150.47Zm0-101.17H275V172H150.47Z\"]\n};\nvar faDelicious = {\n prefix: 'fab',\n iconName: 'delicious',\n icon: [448, 512, [], \"f1a5\", \"M446.5 68c-.4-1.5-.9-3-1.4-4.5-.9-2.5-2-4.8-3.3-7.1-1.4-2.4-3-4.8-4.7-6.9-2.1-2.5-4.4-4.8-6.9-6.8-1.1-.9-2.2-1.7-3.3-2.5-1.3-.9-2.6-1.7-4-2.4-1.8-1-3.6-1.8-5.5-2.5-1.7-.7-3.5-1.3-5.4-1.7-3.8-1-7.9-1.5-12-1.5H48C21.5 32 0 53.5 0 80v352c0 4.1.5 8.2 1.5 12 2 7.7 5.8 14.6 11 20.3 1 1.1 2.1 2.2 3.3 3.3 5.7 5.2 12.6 9 20.3 11 3.8 1 7.9 1.5 12 1.5h352c26.5 0 48-21.5 48-48V80c-.1-4.1-.6-8.2-1.6-12zM416 432c0 8.8-7.2 16-16 16H224V256H32V80c0-8.8 7.2-16 16-16h176v192h192z\"]\n};\nvar faDeploydog = {\n prefix: 'fab',\n iconName: 'deploydog',\n icon: [512, 512, [], \"f38e\", \"M382.2 136h51.7v239.6h-51.7v-20.7c-19.8 24.8-52.8 24.1-73.8 14.7-26.2-11.7-44.3-38.1-44.3-71.8 0-29.8 14.8-57.9 43.3-70.8 20.2-9.1 52.7-10.6 74.8 12.9V136zm-64.7 161.8c0 18.2 13.6 33.5 33.2 33.5 19.8 0 33.2-16.4 33.2-32.9 0-17.1-13.7-33.2-33.2-33.2-19.6 0-33.2 16.4-33.2 32.6zM188.5 136h51.7v239.6h-51.7v-20.7c-19.8 24.8-52.8 24.1-73.8 14.7-26.2-11.7-44.3-38.1-44.3-71.8 0-29.8 14.8-57.9 43.3-70.8 20.2-9.1 52.7-10.6 74.8 12.9V136zm-64.7 161.8c0 18.2 13.6 33.5 33.2 33.5 19.8 0 33.2-16.4 33.2-32.9 0-17.1-13.7-33.2-33.2-33.2-19.7 0-33.2 16.4-33.2 32.6zM448 96c17.5 0 32 14.4 32 32v256c0 17.5-14.4 32-32 32H64c-17.5 0-32-14.4-32-32V128c0-17.5 14.4-32 32-32h384m0-32H64C28.8 64 0 92.8 0 128v256c0 35.2 28.8 64 64 64h384c35.2 0 64-28.8 64-64V128c0-35.2-28.8-64-64-64z\"]\n};\nvar faDeskpro = {\n prefix: 'fab',\n iconName: 'deskpro',\n icon: [480, 512, [], \"f38f\", \"M205.9 512l31.1-38.4c12.3-.2 25.6-1.4 36.5-6.6 38.9-18.6 38.4-61.9 38.3-63.8-.1-5-.8-4.4-28.9-37.4H362c-.2 50.1-7.3 68.5-10.2 75.7-9.4 23.7-43.9 62.8-95.2 69.4-8.7 1.1-32.8 1.2-50.7 1.1zm200.4-167.7c38.6 0 58.5-13.6 73.7-30.9l-175.5-.3-17.4 31.3 119.2-.1zm-43.6-223.9v168.3h-73.5l-32.7 55.5H250c-52.3 0-58.1-56.5-58.3-58.9-1.2-13.2-21.3-11.6-20.1 1.8 1.4 15.8 8.8 40 26.4 57.1h-91c-25.5 0-110.8-26.8-107-114V16.9C0 .9 9.7.3 15 .1h82c.2 0 .3.1.5.1 4.3-.4 50.1-2.1 50.1 43.7 0 13.3 20.2 13.4 20.2 0 0-18.2-5.5-32.8-15.8-43.7h84.2c108.7-.4 126.5 79.4 126.5 120.2zm-132.5 56l64 29.3c13.3-45.5-42.2-71.7-64-29.3z\"]\n};\nvar faDev = {\n prefix: 'fab',\n iconName: 'dev',\n icon: [448, 512, [], \"f6cc\", \"M120.12 208.29c-3.88-2.9-7.77-4.35-11.65-4.35H91.03v104.47h17.45c3.88 0 7.77-1.45 11.65-4.35 3.88-2.9 5.82-7.25 5.82-13.06v-69.65c-.01-5.8-1.96-10.16-5.83-13.06zM404.1 32H43.9C19.7 32 .06 51.59 0 75.8v360.4C.06 460.41 19.7 480 43.9 480h360.2c24.21 0 43.84-19.59 43.9-43.8V75.8c-.06-24.21-19.7-43.8-43.9-43.8zM154.2 291.19c0 18.81-11.61 47.31-48.36 47.25h-46.4V172.98h47.38c35.44 0 47.36 28.46 47.37 47.28l.01 70.93zm100.68-88.66H201.6v38.42h32.57v29.57H201.6v38.41h53.29v29.57h-62.18c-11.16.29-20.44-8.53-20.72-19.69V193.7c-.27-11.15 8.56-20.41 19.71-20.69h63.19l-.01 29.52zm103.64 115.29c-13.2 30.75-36.85 24.63-47.44 0l-38.53-144.8h32.57l29.71 113.72 29.57-113.72h32.58l-38.46 144.8z\"]\n};\nvar faDeviantart = {\n prefix: 'fab',\n iconName: 'deviantart',\n icon: [320, 512, [], \"f1bd\", \"M320 93.2l-98.2 179.1 7.4 9.5H320v127.7H159.1l-13.5 9.2-43.7 84c-.3 0-8.6 8.6-9.2 9.2H0v-93.2l93.2-179.4-7.4-9.2H0V102.5h156l13.5-9.2 43.7-84c.3 0 8.6-8.6 9.2-9.2H320v93.1z\"]\n};\nvar faDhl = {\n prefix: 'fab',\n iconName: 'dhl',\n icon: [640, 512, [], \"f790\", \"M238 301.2h58.7L319 271h-58.7L238 301.2zM0 282.9v6.4h81.8l4.7-6.4H0zM172.9 271c-8.7 0-6-3.6-4.6-5.5 2.8-3.8 7.6-10.4 10.4-14.1 2.8-3.7 2.8-5.9-2.8-5.9h-51l-41.1 55.8h100.1c33.1 0 51.5-22.5 57.2-30.3h-68.2zm317.5-6.9l39.3-53.4h-62.2l-39.3 53.4h62.2zM95.3 271H0v6.4h90.6l4.7-6.4zm111-26.6c-2.8 3.8-7.5 10.4-10.3 14.2-1.4 2-4.1 5.5 4.6 5.5h45.6s7.3-10 13.5-18.4c8.4-11.4.7-35-29.2-35H112.6l-20.4 27.8h111.4c5.6 0 5.5 2.2 2.7 5.9zM0 301.2h73.1l4.7-6.4H0v6.4zm323 0h58.7L404 271h-58.7c-.1 0-22.3 30.2-22.3 30.2zm222 .1h95v-6.4h-90.3l-4.7 6.4zm22.3-30.3l-4.7 6.4H640V271h-72.7zm-13.5 18.3H640v-6.4h-81.5l-4.7 6.4zm-164.2-78.6l-22.5 30.6h-26.2l22.5-30.6h-58.7l-39.3 53.4H409l39.3-53.4h-58.7zm33.5 60.3s-4.3 5.9-6.4 8.7c-7.4 10-.9 21.6 23.2 21.6h94.3l22.3-30.3H423.1z\"]\n};\nvar faDiaspora = {\n prefix: 'fab',\n iconName: 'diaspora',\n icon: [512, 512, [], \"f791\", \"M251.64 354.55c-1.4 0-88 119.9-88.7 119.9S76.34 414 76 413.25s86.6-125.7 86.6-127.4c0-2.2-129.6-44-137.6-47.1-1.3-.5 31.4-101.8 31.7-102.1.6-.7 144.4 47 145.5 47 .4 0 .9-.6 1-1.3.4-2 1-148.6 1.7-149.6.8-1.2 104.5-.7 105.1-.3 1.5 1 3.5 156.1 6.1 156.1 1.4 0 138.7-47 139.3-46.3.8.9 31.9 102.2 31.5 102.6-.9.9-140.2 47.1-140.6 48.8-.3 1.4 82.8 122.1 82.5 122.9s-85.5 63.5-86.3 63.5c-1-.2-89-125.5-90.9-125.5z\"]\n};\nvar faDigg = {\n prefix: 'fab',\n iconName: 'digg',\n icon: [512, 512, [], \"f1a6\", \"M81.7 172.3H0v174.4h132.7V96h-51v76.3zm0 133.4H50.9v-92.3h30.8v92.3zm297.2-133.4v174.4h81.8v28.5h-81.8V416H512V172.3H378.9zm81.8 133.4h-30.8v-92.3h30.8v92.3zm-235.6 41h82.1v28.5h-82.1V416h133.3V172.3H225.1v174.4zm51.2-133.3h30.8v92.3h-30.8v-92.3zM153.3 96h51.3v51h-51.3V96zm0 76.3h51.3v174.4h-51.3V172.3z\"]\n};\nvar faDigitalOcean = {\n prefix: 'fab',\n iconName: 'digital-ocean',\n icon: [512, 512, [], \"f391\", \"M87 481.8h73.7v-73.6H87zM25.4 346.6v61.6H87v-61.6zm466.2-169.7c-23-74.2-82.4-133.3-156.6-156.6C164.9-32.8 8 93.7 8 255.9h95.8c0-101.8 101-180.5 208.1-141.7 39.7 14.3 71.5 46.1 85.8 85.7 39.1 107-39.7 207.8-141.4 208v.3h-.3V504c162.6 0 288.8-156.8 235.6-327.1zm-235.3 231v-95.3h-95.6v95.6H256v-.3z\"]\n};\nvar faDiscord = {\n prefix: 'fab',\n iconName: 'discord',\n icon: [640, 512, [], \"f392\", \"M524.531,69.836a1.5,1.5,0,0,0-.764-.7A485.065,485.065,0,0,0,404.081,32.03a1.816,1.816,0,0,0-1.923.91,337.461,337.461,0,0,0-14.9,30.6,447.848,447.848,0,0,0-134.426,0,309.541,309.541,0,0,0-15.135-30.6,1.89,1.89,0,0,0-1.924-.91A483.689,483.689,0,0,0,116.085,69.137a1.712,1.712,0,0,0-.788.676C39.068,183.651,18.186,294.69,28.43,404.354a2.016,2.016,0,0,0,.765,1.375A487.666,487.666,0,0,0,176.02,479.918a1.9,1.9,0,0,0,2.063-.676A348.2,348.2,0,0,0,208.12,430.4a1.86,1.86,0,0,0-1.019-2.588,321.173,321.173,0,0,1-45.868-21.853,1.885,1.885,0,0,1-.185-3.126c3.082-2.309,6.166-4.711,9.109-7.137a1.819,1.819,0,0,1,1.9-.256c96.229,43.917,200.41,43.917,295.5,0a1.812,1.812,0,0,1,1.924.233c2.944,2.426,6.027,4.851,9.132,7.16a1.884,1.884,0,0,1-.162,3.126,301.407,301.407,0,0,1-45.89,21.83,1.875,1.875,0,0,0-1,2.611,391.055,391.055,0,0,0,30.014,48.815,1.864,1.864,0,0,0,2.063.7A486.048,486.048,0,0,0,610.7,405.729a1.882,1.882,0,0,0,.765-1.352C623.729,277.594,590.933,167.465,524.531,69.836ZM222.491,337.58c-28.972,0-52.844-26.587-52.844-59.239S193.056,219.1,222.491,219.1c29.665,0,53.306,26.82,52.843,59.239C275.334,310.993,251.924,337.58,222.491,337.58Zm195.38,0c-28.971,0-52.843-26.587-52.843-59.239S388.437,219.1,417.871,219.1c29.667,0,53.307,26.82,52.844,59.239C470.715,310.993,447.538,337.58,417.871,337.58Z\"]\n};\nvar faDiscourse = {\n prefix: 'fab',\n iconName: 'discourse',\n icon: [448, 512, [], \"f393\", \"M225.9 32C103.3 32 0 130.5 0 252.1 0 256 .1 480 .1 480l225.8-.2c122.7 0 222.1-102.3 222.1-223.9C448 134.3 348.6 32 225.9 32zM224 384c-19.4 0-37.9-4.3-54.4-12.1L88.5 392l22.9-75c-9.8-18.1-15.4-38.9-15.4-61 0-70.7 57.3-128 128-128s128 57.3 128 128-57.3 128-128 128z\"]\n};\nvar faDochub = {\n prefix: 'fab',\n iconName: 'dochub',\n icon: [416, 512, [], \"f394\", \"M397.9 160H256V19.6L397.9 160zM304 192v130c0 66.8-36.5 100.1-113.3 100.1H96V84.8h94.7c12 0 23.1.8 33.1 2.5v-84C212.9 1.1 201.4 0 189.2 0H0v512h189.2C329.7 512 400 447.4 400 318.1V192h-96z\"]\n};\nvar faDocker = {\n prefix: 'fab',\n iconName: 'docker',\n icon: [640, 512, [], \"f395\", \"M349.9 236.3h-66.1v-59.4h66.1v59.4zm0-204.3h-66.1v60.7h66.1V32zm78.2 144.8H362v59.4h66.1v-59.4zm-156.3-72.1h-66.1v60.1h66.1v-60.1zm78.1 0h-66.1v60.1h66.1v-60.1zm276.8 100c-14.4-9.7-47.6-13.2-73.1-8.4-3.3-24-16.7-44.9-41.1-63.7l-14-9.3-9.3 14c-18.4 27.8-23.4 73.6-3.7 103.8-8.7 4.7-25.8 11.1-48.4 10.7H2.4c-8.7 50.8 5.8 116.8 44 162.1 37.1 43.9 92.7 66.2 165.4 66.2 157.4 0 273.9-72.5 328.4-204.2 21.4.4 67.6.1 91.3-45.2 1.5-2.5 6.6-13.2 8.5-17.1l-13.3-8.9zm-511.1-27.9h-66v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm-78.1-72.1h-66.1v60.1h66.1v-60.1z\"]\n};\nvar faDraft2digital = {\n prefix: 'fab',\n iconName: 'draft2digital',\n icon: [480, 512, [], \"f396\", \"M480 398.1l-144-82.2v64.7h-91.3c30.8-35 81.8-95.9 111.8-149.3 35.2-62.6 16.1-123.4-12.8-153.3-4.4-4.6-62.2-62.9-166-41.2-59.1 12.4-89.4 43.4-104.3 67.3-13.1 20.9-17 39.8-18.2 47.7-5.5 33 19.4 67.1 56.7 67.1 31.7 0 57.3-25.7 57.3-57.4 0-27.1-19.7-52.1-48-56.8 1.8-7.3 17.7-21.1 26.3-24.7 41.1-17.3 78 5.2 83.3 33.5 8.3 44.3-37.1 90.4-69.7 127.6C84.5 328.1 18.3 396.8 0 415.9l336-.1V480zM369.9 371l47.1 27.2-47.1 27.2zM134.2 161.4c0 12.4-10 22.4-22.4 22.4s-22.4-10-22.4-22.4 10-22.4 22.4-22.4 22.4 10.1 22.4 22.4zM82.5 380.5c25.6-27.4 97.7-104.7 150.8-169.9 35.1-43.1 40.3-82.4 28.4-112.7-7.4-18.8-17.5-30.2-24.3-35.7 45.3 2.1 68 23.4 82.2 38.3 0 0 42.4 48.2 5.8 113.3-37 65.9-110.9 147.5-128.5 166.7z\"]\n};\nvar faDribbble = {\n prefix: 'fab',\n iconName: 'dribbble',\n icon: [512, 512, [], \"f17d\", \"M256 8C119.252 8 8 119.252 8 256s111.252 248 248 248 248-111.252 248-248S392.748 8 256 8zm163.97 114.366c29.503 36.046 47.369 81.957 47.835 131.955-6.984-1.477-77.018-15.682-147.502-6.818-5.752-14.041-11.181-26.393-18.617-41.614 78.321-31.977 113.818-77.482 118.284-83.523zM396.421 97.87c-3.81 5.427-35.697 48.286-111.021 76.519-34.712-63.776-73.185-116.168-79.04-124.008 67.176-16.193 137.966 1.27 190.061 47.489zm-230.48-33.25c5.585 7.659 43.438 60.116 78.537 122.509-99.087 26.313-186.36 25.934-195.834 25.809C62.38 147.205 106.678 92.573 165.941 64.62zM44.17 256.323c0-2.166.043-4.322.108-6.473 9.268.19 111.92 1.513 217.706-30.146 6.064 11.868 11.857 23.915 17.174 35.949-76.599 21.575-146.194 83.527-180.531 142.306C64.794 360.405 44.17 310.73 44.17 256.323zm81.807 167.113c22.127-45.233 82.178-103.622 167.579-132.756 29.74 77.283 42.039 142.053 45.189 160.638-68.112 29.013-150.015 21.053-212.768-27.882zm248.38 8.489c-2.171-12.886-13.446-74.897-41.152-151.033 66.38-10.626 124.7 6.768 131.947 9.055-9.442 58.941-43.273 109.844-90.795 141.978z\"]\n};\nvar faDribbbleSquare = {\n prefix: 'fab',\n iconName: 'dribbble-square',\n icon: [448, 512, [], \"f397\", \"M90.2 228.2c8.9-42.4 37.4-77.7 75.7-95.7 3.6 4.9 28 38.8 50.7 79-64 17-120.3 16.8-126.4 16.7zM314.6 154c-33.6-29.8-79.3-41.1-122.6-30.6 3.8 5.1 28.6 38.9 51 80 48.6-18.3 69.1-45.9 71.6-49.4zM140.1 364c40.5 31.6 93.3 36.7 137.3 18-2-12-10-53.8-29.2-103.6-55.1 18.8-93.8 56.4-108.1 85.6zm98.8-108.2c-3.4-7.8-7.2-15.5-11.1-23.2C159.6 253 93.4 252.2 87.4 252c0 1.4-.1 2.8-.1 4.2 0 35.1 13.3 67.1 35.1 91.4 22.2-37.9 67.1-77.9 116.5-91.8zm34.9 16.3c17.9 49.1 25.1 89.1 26.5 97.4 30.7-20.7 52.5-53.6 58.6-91.6-4.6-1.5-42.3-12.7-85.1-5.8zm-20.3-48.4c4.8 9.8 8.3 17.8 12 26.8 45.5-5.7 90.7 3.4 95.2 4.4-.3-32.3-11.8-61.9-30.9-85.1-2.9 3.9-25.8 33.2-76.3 53.9zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-64 176c0-88.2-71.8-160-160-160S64 167.8 64 256s71.8 160 160 160 160-71.8 160-160z\"]\n};\nvar faDropbox = {\n prefix: 'fab',\n iconName: 'dropbox',\n icon: [528, 512, [], \"f16b\", \"M264.4 116.3l-132 84.3 132 84.3-132 84.3L0 284.1l132.3-84.3L0 116.3 132.3 32l132.1 84.3zM131.6 395.7l132-84.3 132 84.3-132 84.3-132-84.3zm132.8-111.6l132-84.3-132-83.6L395.7 32 528 116.3l-132.3 84.3L528 284.8l-132.3 84.3-131.3-85z\"]\n};\nvar faDrupal = {\n prefix: 'fab',\n iconName: 'drupal',\n icon: [448, 512, [], \"f1a9\", \"M319.5 114.7c-22.2-14-43.5-19.5-64.7-33.5-13-8.8-31.3-30-46.5-48.3-2.7 29.3-11.5 41.2-22 49.5-21.3 17-34.8 22.2-53.5 32.3C117 123 32 181.5 32 290.5 32 399.7 123.8 480 225.8 480 327.5 480 416 406 416 294c0-112.3-83-171-96.5-179.3zm2.5 325.6c-20.1 20.1-90.1 28.7-116.7 4.2-4.8-4.8.3-12 6.5-12 0 0 17 13.3 51.5 13.3 27 0 46-7.7 54.5-14 6.1-4.6 8.4 4.3 4.2 8.5zm-54.5-52.6c8.7-3.6 29-3.8 36.8 1.3 4.1 2.8 16.1 18.8 6.2 23.7-8.4 4.2-1.2-15.7-26.5-15.7-14.7 0-19.5 5.2-26.7 11-7 6-9.8 8-12.2 4.7-6-8.2 15.9-22.3 22.4-25zM360 405c-15.2-1-45.5-48.8-65-49.5-30.9-.9-104.1 80.7-161.3 42-38.8-26.6-14.6-104.8 51.8-105.2 49.5-.5 83.8 49 108.5 48.5 21.3-.3 61.8-41.8 81.8-41.8 48.7 0 23.3 109.3-15.8 106z\"]\n};\nvar faDyalog = {\n prefix: 'fab',\n iconName: 'dyalog',\n icon: [416, 512, [], \"f399\", \"M0 32v119.2h64V96h107.2C284.6 96 352 176.2 352 255.9 352 332 293.4 416 171.2 416H0v64h171.2C331.9 480 416 367.3 416 255.9c0-58.7-22.1-113.4-62.3-154.3C308.9 56 245.7 32 171.2 32H0z\"]\n};\nvar faEarlybirds = {\n prefix: 'fab',\n iconName: 'earlybirds',\n icon: [480, 512, [], \"f39a\", \"M313.2 47.5c1.2-13 21.3-14 36.6-8.7.9.3 26.2 9.7 19 15.2-27.9-7.4-56.4 18.2-55.6-6.5zm-201 6.9c30.7-8.1 62 20 61.1-7.1-1.3-14.2-23.4-15.3-40.2-9.6-1 .3-28.7 10.5-20.9 16.7zM319.4 160c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm-159.7 0c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm318.5 163.2c-9.9 24-40.7 11-63.9-1.2-13.5 69.1-58.1 111.4-126.3 124.2.3.9-2-.1 24 1 33.6 1.4 63.8-3.1 97.4-8-19.8-13.8-11.4-37.1-9.8-38.1 1.4-.9 14.7 1.7 21.6 11.5 8.6-12.5 28.4-14.8 30.2-13.6 1.6 1.1 6.6 20.9-6.9 34.6 4.7-.9 8.2-1.6 9.8-2.1 2.6-.8 17.7 11.3 3.1 13.3-14.3 2.3-22.6 5.1-47.1 10.8-45.9 10.7-85.9 11.8-117.7 12.8l1 11.6c3.8 18.1-23.4 24.3-27.6 6.2.8 17.9-27.1 21.8-28.4-1l-.5 5.3c-.7 18.4-28.4 17.9-28.3-.6-7.5 13.5-28.1 6.8-26.4-8.5l1.2-12.4c-36.7.9-59.7 3.1-61.8 3.1-20.9 0-20.9-31.6 0-31.6 2.4 0 27.7 1.3 63.2 2.8-61.1-15.5-103.7-55-114.9-118.2-25 12.8-57.5 26.8-68.2.8-10.5-25.4 21.5-42.6 66.8-73.4.7-6.6 1.6-13.3 2.7-19.8-14.4-19.6-11.6-36.3-16.1-60.4-16.8 2.4-23.2-9.1-23.6-23.1.3-7.3 2.1-14.9 2.4-15.4 1.1-1.8 10.1-2 12.7-2.6 6-31.7 50.6-33.2 90.9-34.5 19.7-21.8 45.2-41.5 80.9-48.3C203.3 29 215.2 8.5 216.2 8c1.7-.8 21.2 4.3 26.3 23.2 5.2-8.8 18.3-11.4 19.6-10.7 1.1.6 6.4 15-4.9 25.9 40.3 3.5 72.2 24.7 96 50.7 36.1 1.5 71.8 5.9 77.1 34 2.7.6 11.6.8 12.7 2.6.3.5 2.1 8.1 2.4 15.4-.5 13.9-6.8 25.4-23.6 23.1-3.2 17.3-2.7 32.9-8.7 47.7 2.4 11.7 4 23.8 4.8 36.4 37 25.4 70.3 42.5 60.3 66.9zM207.4 159.9c.9-44-37.9-42.2-78.6-40.3-21.7 1-38.9 1.9-45.5 13.9-11.4 20.9 5.9 92.9 23.2 101.2 9.8 4.7 73.4 7.9 86.3-7.1 8.2-9.4 15-49.4 14.6-67.7zm52 58.3c-4.3-12.4-6-30.1-15.3-32.7-2-.5-9-.5-11 0-10 2.8-10.8 22.1-17 37.2 15.4 0 19.3 9.7 23.7 9.7 4.3 0 6.3-11.3 19.6-14.2zm135.7-84.7c-6.6-12.1-24.8-12.9-46.5-13.9-40.2-1.9-78.2-3.8-77.3 40.3-.5 18.3 5 58.3 13.2 67.8 13 14.9 76.6 11.8 86.3 7.1 15.8-7.6 36.5-78.9 24.3-101.3z\"]\n};\nvar faEbay = {\n prefix: 'fab',\n iconName: 'ebay',\n icon: [640, 512, [], \"f4f4\", \"M606 189.5l-54.8 109.9-54.9-109.9h-37.5l10.9 20.6c-11.5-19-35.9-26-63.3-26-31.8 0-67.9 8.7-71.5 43.1h33.7c1.4-13.8 15.7-21.8 35-21.8 26 0 41 9.6 41 33v3.4c-12.7 0-28 .1-41.7.4-42.4.9-69.6 10-76.7 34.4 1-5.2 1.5-10.6 1.5-16.2 0-52.1-39.7-76.2-75.4-76.2-21.3 0-43 5.5-58.7 24.2v-80.6h-32.1v169.5c0 10.3-.6 22.9-1.1 33.1h31.5c.7-6.3 1.1-12.9 1.1-19.5 13.6 16.6 35.4 24.9 58.7 24.9 36.9 0 64.9-21.9 73.3-54.2-.5 2.8-.7 5.8-.7 9 0 24.1 21.1 45 60.6 45 26.6 0 45.8-5.7 61.9-25.5 0 6.6.3 13.3 1.1 20.2h29.8c-.7-8.2-1-17.5-1-26.8v-65.6c0-9.3-1.7-17.2-4.8-23.8l61.5 116.1-28.5 54.1h35.9L640 189.5zM243.7 313.8c-29.6 0-50.2-21.5-50.2-53.8 0-32.4 20.6-53.8 50.2-53.8 29.8 0 50.2 21.4 50.2 53.8 0 32.3-20.4 53.8-50.2 53.8zm200.9-47.3c0 30-17.9 48.4-51.6 48.4-25.1 0-35-13.4-35-25.8 0-19.1 18.1-24.4 47.2-25.3 13.1-.5 27.6-.6 39.4-.6zm-411.9 1.6h128.8v-8.5c0-51.7-33.1-75.4-78.4-75.4-56.8 0-83 30.8-83 77.6 0 42.5 25.3 74 82.5 74 31.4 0 68-11.7 74.4-46.1h-33.1c-12 35.8-87.7 36.7-91.2-21.6zm95-21.4H33.3c6.9-56.6 92.1-54.7 94.4 0z\"]\n};\nvar faEdge = {\n prefix: 'fab',\n iconName: 'edge',\n icon: [512, 512, [], \"f282\", \"M481.92,134.48C440.87,54.18,352.26,8,255.91,8,137.05,8,37.51,91.68,13.47,203.66c26-46.49,86.22-79.14,149.46-79.14,79.27,0,121.09,48.93,122.25,50.18,22,23.8,33,50.39,33,83.1,0,10.4-5.31,25.82-15.11,38.57-1.57,2-6.39,4.84-6.39,11,0,5.06,3.29,9.92,9.14,14,27.86,19.37,80.37,16.81,80.51,16.81A115.39,115.39,0,0,0,444.94,322a118.92,118.92,0,0,0,58.95-102.44C504.39,176.13,488.39,147.26,481.92,134.48ZM212.77,475.67a154.88,154.88,0,0,1-46.64-45c-32.94-47.42-34.24-95.6-20.1-136A155.5,155.5,0,0,1,203,215.75c59-45.2,94.84-5.65,99.06-1a80,80,0,0,0-4.89-10.14c-9.24-15.93-24-36.41-56.56-53.51-33.72-17.69-70.59-18.59-77.64-18.59-38.71,0-77.9,13-107.53,35.69C35.68,183.3,12.77,208.72,8.6,243c-1.08,12.31-2.75,62.8,23,118.27a248,248,0,0,0,248.3,141.61C241.78,496.26,214.05,476.24,212.77,475.67Zm250.72-98.33a7.76,7.76,0,0,0-7.92-.23,181.66,181.66,0,0,1-20.41,9.12,197.54,197.54,0,0,1-69.55,12.52c-91.67,0-171.52-63.06-171.52-144A61.12,61.12,0,0,1,200.61,228,168.72,168.72,0,0,0,161.85,278c-14.92,29.37-33,88.13,13.33,151.66,6.51,8.91,23,30,56,47.67,23.57,12.65,49,19.61,71.7,19.61,35.14,0,115.43-33.44,163-108.87A7.75,7.75,0,0,0,463.49,377.34Z\"]\n};\nvar faEdgeLegacy = {\n prefix: 'fab',\n iconName: 'edge-legacy',\n icon: [512, 512, [], \"e078\", \"M25.71,228.16l.35-.48c0,.16,0,.32-.07.48Zm460.58,15.51c0-44-7.76-84.46-28.81-122.4C416.5,47.88,343.91,8,258.89,8,119,7.72,40.62,113.21,26.06,227.68c42.42-61.31,117.07-121.38,220.37-125,0,0,109.67,0,99.42,105H170c6.37-37.39,18.55-59,34.34-78.93-75.05,34.9-121.85,96.1-120.75,188.32.83,71.45,50.13,144.84,120.75,172,83.35,31.84,192.77,7.2,240.13-21.33V363.31C363.6,419.8,173.6,424.23,172.21,295.74H486.29V243.67Z\"]\n};\nvar faElementor = {\n prefix: 'fab',\n iconName: 'elementor',\n icon: [448, 512, [], \"f430\", \"M425.6 32H22.4C10 32 0 42 0 54.4v403.2C0 470 10 480 22.4 480h403.2c12.4 0 22.4-10 22.4-22.4V54.4C448 42 438 32 425.6 32M164.3 355.5h-39.8v-199h39.8v199zm159.3 0H204.1v-39.8h119.5v39.8zm0-79.6H204.1v-39.8h119.5v39.8zm0-79.7H204.1v-39.8h119.5v39.8z\"]\n};\nvar faEllo = {\n prefix: 'fab',\n iconName: 'ello',\n icon: [496, 512, [], \"f5f1\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm143.84 285.2C375.31 358.51 315.79 404.8 248 404.8s-127.31-46.29-143.84-111.6c-1.65-7.44 2.48-15.71 9.92-17.36 7.44-1.65 15.71 2.48 17.36 9.92 14.05 52.91 62 90.11 116.56 90.11s102.51-37.2 116.56-90.11c1.65-7.44 9.92-12.4 17.36-9.92 7.44 1.65 12.4 9.92 9.92 17.36z\"]\n};\nvar faEmber = {\n prefix: 'fab',\n iconName: 'ember',\n icon: [640, 512, [], \"f423\", \"M639.9 254.6c-1.1-10.7-10.7-6.8-10.7-6.8s-15.6 12.1-29.3 10.7c-13.7-1.3-9.4-32-9.4-32s3-28.1-5.1-30.4c-8.1-2.4-18 7.3-18 7.3s-12.4 13.7-18.3 31.2l-1.6.5s1.9-30.6-.3-37.6c-1.6-3.5-16.4-3.2-18.8 3s-14.2 49.2-15 67.2c0 0-23.1 19.6-43.3 22.8s-25-9.4-25-9.4 54.8-15.3 52.9-59.1-44.2-27.6-49-24c-4.6 3.5-29.4 18.4-36.6 59.7-.2 1.4-.7 7.5-.7 7.5s-21.2 14.2-33 18c0 0 33-55.6-7.3-80.9-11.4-6.8-21.3-.5-27.2 5.3 13.6-17.3 46.4-64.2 36.9-105.2-5.8-24.4-18-27.1-29.2-23.1-17 6.7-23.5 16.7-23.5 16.7s-22 32-27.1 79.5-12.6 105.1-12.6 105.1-10.5 10.2-20.2 10.7-5.4-28.7-5.4-28.7 7.5-44.6 7-52.1-1.1-11.6-9.9-14.2c-8.9-2.7-18.5 8.6-18.5 8.6s-25.5 38.7-27.7 44.6l-1.3 2.4-1.3-1.6s18-52.7.8-53.5-28.5 18.8-28.5 18.8-19.6 32.8-20.4 36.5l-1.3-1.6s8.1-38.2 6.4-47.6c-1.6-9.4-10.5-7.5-10.5-7.5s-11.3-1.3-14.2 5.9-13.7 55.3-15 70.7c0 0-28.2 20.2-46.8 20.4-18.5.3-16.7-11.8-16.7-11.8s68-23.3 49.4-69.2c-8.3-11.8-18-15.5-31.7-15.3-13.7.3-30.3 8.6-41.3 33.3-5.3 11.8-6.8 23-7.8 31.5 0 0-12.3 2.4-18.8-2.9s-10 0-10 0-11.2 14-.1 18.3 28.1 6.1 28.1 6.1c1.6 7.5 6.2 19.5 19.6 29.7 20.2 15.3 58.8-1.3 58.8-1.3l15.9-8.8s.5 14.6 12.1 16.7 16.4 1 36.5-47.9c11.8-25 12.6-23.6 12.6-23.6l1.3-.3s-9.1 46.8-5.6 59.7C187.7 319.4 203 318 203 318s8.3 2.4 15-21.2 19.6-49.9 19.6-49.9h1.6s-5.6 48.1 3 63.7 30.9 5.3 30.9 5.3 15.6-7.8 18-10.2c0 0 18.5 15.8 44.6 12.9 58.3-11.5 79.1-25.9 79.1-25.9s10 24.4 41.1 26.7c35.5 2.7 54.8-18.6 54.8-18.6s-.3 13.5 12.1 18.6 20.7-22.8 20.7-22.8l20.7-57.2h1.9s1.1 37.3 21.5 43.2 47-13.7 47-13.7 6.4-3.5 5.3-14.3zm-578 5.3c.8-32 21.8-45.9 29-39 7.3 7 4.6 22-9.1 31.4-13.7 9.5-19.9 7.6-19.9 7.6zm272.8-123.8s19.1-49.7 23.6-25.5-40 96.2-40 96.2c.5-16.2 16.4-70.7 16.4-70.7zm22.8 138.4c-12.6 33-43.3 19.6-43.3 19.6s-3.5-11.8 6.4-44.9 33.3-20.2 33.3-20.2 16.2 12.4 3.6 45.5zm84.6-14.6s-3-10.5 8.1-30.6c11-20.2 19.6-9.1 19.6-9.1s9.4 10.2-1.3 25.5-26.4 14.2-26.4 14.2z\"]\n};\nvar faEmpire = {\n prefix: 'fab',\n iconName: 'empire',\n icon: [496, 512, [], \"f1d1\", \"M287.6 54.2c-10.8-2.2-22.1-3.3-33.5-3.6V32.4c78.1 2.2 146.1 44 184.6 106.6l-15.8 9.1c-6.1-9.7-12.7-18.8-20.2-27.1l-18 15.5c-26-29.6-61.4-50.7-101.9-58.4l4.8-23.9zM53.4 322.4l23-7.7c-6.4-18.3-10-38.2-10-58.7s3.3-40.4 9.7-58.7l-22.7-7.7c3.6-10.8 8.3-21.3 13.6-31l-15.8-9.1C34 181 24.1 217.5 24.1 256s10 75 27.1 106.6l15.8-9.1c-5.3-10-9.7-20.3-13.6-31.1zM213.1 434c-40.4-8-75.8-29.1-101.9-58.7l-18 15.8c-7.5-8.6-14.4-17.7-20.2-27.4l-16 9.4c38.5 62.3 106.8 104.3 184.9 106.6v-18.3c-11.3-.3-22.7-1.7-33.5-3.6l4.7-23.8zM93.3 120.9l18 15.5c26-29.6 61.4-50.7 101.9-58.4l-4.7-23.8c10.8-2.2 22.1-3.3 33.5-3.6V32.4C163.9 34.6 95.9 76.4 57.4 139l15.8 9.1c6-9.7 12.6-18.9 20.1-27.2zm309.4 270.2l-18-15.8c-26 29.6-61.4 50.7-101.9 58.7l4.7 23.8c-10.8 1.9-22.1 3.3-33.5 3.6v18.3c78.1-2.2 146.4-44.3 184.9-106.6l-16.1-9.4c-5.7 9.7-12.6 18.8-20.1 27.4zM496 256c0 137-111 248-248 248S0 393 0 256 111 8 248 8s248 111 248 248zm-12.2 0c0-130.1-105.7-235.8-235.8-235.8S12.2 125.9 12.2 256 117.9 491.8 248 491.8 483.8 386.1 483.8 256zm-39-106.6l-15.8 9.1c5.3 9.7 10 20.2 13.6 31l-22.7 7.7c6.4 18.3 9.7 38.2 9.7 58.7s-3.6 40.4-10 58.7l23 7.7c-3.9 10.8-8.3 21-13.6 31l15.8 9.1C462 331 471.9 294.5 471.9 256s-9.9-75-27.1-106.6zm-183 177.7c16.3-3.3 30.4-11.6 40.7-23.5l51.2 44.8c11.9-13.6 21.3-29.3 27.1-46.8l-64.2-22.1c2.5-7.5 3.9-15.2 3.9-23.5s-1.4-16.1-3.9-23.5l64.5-22.1c-6.1-17.4-15.5-33.2-27.4-46.8l-51.2 44.8c-10.2-11.9-24.4-20.5-40.7-23.8l13.3-66.4c-8.6-1.9-17.7-2.8-27.1-2.8-9.4 0-18.5.8-27.1 2.8l13.3 66.4c-16.3 3.3-30.4 11.9-40.7 23.8l-51.2-44.8c-11.9 13.6-21.3 29.3-27.4 46.8l64.5 22.1c-2.5 7.5-3.9 15.2-3.9 23.5s1.4 16.1 3.9 23.5l-64.2 22.1c5.8 17.4 15.2 33.2 27.1 46.8l51.2-44.8c10.2 11.9 24.4 20.2 40.7 23.5l-13.3 66.7c8.6 1.7 17.7 2.8 27.1 2.8 9.4 0 18.5-1.1 27.1-2.8l-13.3-66.7z\"]\n};\nvar faEnvira = {\n prefix: 'fab',\n iconName: 'envira',\n icon: [448, 512, [], \"f299\", \"M0 32c477.6 0 366.6 317.3 367.1 366.3L448 480h-26l-70.4-71.2c-39 4.2-124.4 34.5-214.4-37C47 300.3 52 214.7 0 32zm79.7 46c-49.7-23.5-5.2 9.2-5.2 9.2 45.2 31.2 66 73.7 90.2 119.9 31.5 60.2 79 139.7 144.2 167.7 65 28 34.2 12.5 6-8.5-28.2-21.2-68.2-87-91-130.2-31.7-60-61-118.6-144.2-158.1z\"]\n};\nvar faErlang = {\n prefix: 'fab',\n iconName: 'erlang',\n icon: [640, 512, [], \"f39d\", \"M87.2 53.5H0v405h100.4c-49.7-52.6-78.8-125.3-78.7-212.1-.1-76.7 24-142.7 65.5-192.9zm238.2 9.7c-45.9.1-85.1 33.5-89.2 83.2h169.9c-1.1-49.7-34.5-83.1-80.7-83.2zm230.7-9.6h.3l-.1-.1zm.3 0c31.4 42.7 48.7 97.5 46.2 162.7.5 6 .5 11.7 0 24.1H230.2c-.2 109.7 38.9 194.9 138.6 195.3 68.5-.3 118-51 151.9-106.1l96.4 48.2c-17.4 30.9-36.5 57.8-57.9 80.8H640v-405z\"]\n};\nvar faEthereum = {\n prefix: 'fab',\n iconName: 'ethereum',\n icon: [320, 512, [], \"f42e\", \"M311.9 260.8L160 353.6 8 260.8 160 0l151.9 260.8zM160 383.4L8 290.6 160 512l152-221.4-152 92.8z\"]\n};\nvar faEtsy = {\n prefix: 'fab',\n iconName: 'etsy',\n icon: [384, 512, [], \"f2d7\", \"M384 348c-1.75 10.75-13.75 110-15.5 132-117.879-4.299-219.895-4.743-368.5 0v-25.5c45.457-8.948 60.627-8.019 61-35.25 1.793-72.322 3.524-244.143 0-322-1.029-28.46-12.13-26.765-61-36v-25.5c73.886 2.358 255.933 8.551 362.999-3.75-3.5 38.25-7.75 126.5-7.75 126.5H332C320.947 115.665 313.241 68 277.25 68h-137c-10.25 0-10.75 3.5-10.75 9.75V241.5c58 .5 88.5-2.5 88.5-2.5 29.77-.951 27.56-8.502 40.75-65.251h25.75c-4.407 101.351-3.91 61.829-1.75 160.25H257c-9.155-40.086-9.065-61.045-39.501-61.5 0 0-21.5-2-88-2v139c0 26 14.25 38.25 44.25 38.25H263c63.636 0 66.564-24.996 98.751-99.75H384z\"]\n};\nvar faEvernote = {\n prefix: 'fab',\n iconName: 'evernote',\n icon: [384, 512, [], \"f839\", \"M120.82 132.21c1.6 22.31-17.55 21.59-21.61 21.59-68.93 0-73.64-1-83.58 3.34-.56.22-.74 0-.37-.37L123.79 46.45c.38-.37.6-.22.38.37-4.35 9.99-3.35 15.09-3.35 85.39zm79 308c-14.68-37.08 13-76.93 52.52-76.62 17.49 0 22.6 23.21 7.95 31.42-6.19 3.3-24.95 1.74-25.14 19.2-.05 17.09 19.67 25 31.2 24.89A45.64 45.64 0 0 0 312 393.45v-.08c0-11.63-7.79-47.22-47.54-55.34-7.72-1.54-65-6.35-68.35-50.52-3.74 16.93-17.4 63.49-43.11 69.09-8.74 1.94-69.68 7.64-112.92-36.77 0 0-18.57-15.23-28.23-57.95-3.38-15.75-9.28-39.7-11.14-62 0-18 11.14-30.45 25.07-32.2 81 0 90 2.32 101-7.8 9.82-9.24 7.8-15.5 7.8-102.78 1-8.3 7.79-30.81 53.41-24.14 6 .86 31.91 4.18 37.48 30.64l64.26 11.15c20.43 3.71 70.94 7 80.6 57.94 22.66 121.09 8.91 238.46 7.8 238.46C362.15 485.53 267.06 480 267.06 480c-18.95-.23-54.25-9.4-67.27-39.83zm80.94-204.84c-1 1.92-2.2 6 .85 7 14.09 4.93 39.75 6.84 45.88 5.53 3.11-.25 3.05-4.43 2.48-6.65-3.53-21.85-40.83-26.5-49.24-5.92z\"]\n};\nvar faExpeditedssl = {\n prefix: 'fab',\n iconName: 'expeditedssl',\n icon: [496, 512, [], \"f23e\", \"M248 43.4C130.6 43.4 35.4 138.6 35.4 256S130.6 468.6 248 468.6 460.6 373.4 460.6 256 365.4 43.4 248 43.4zm-97.4 132.9c0-53.7 43.7-97.4 97.4-97.4s97.4 43.7 97.4 97.4v26.6c0 5-3.9 8.9-8.9 8.9h-17.7c-5 0-8.9-3.9-8.9-8.9v-26.6c0-82.1-124-82.1-124 0v26.6c0 5-3.9 8.9-8.9 8.9h-17.7c-5 0-8.9-3.9-8.9-8.9v-26.6zM389.7 380c0 9.7-8 17.7-17.7 17.7H124c-9.7 0-17.7-8-17.7-17.7V238.3c0-9.7 8-17.7 17.7-17.7h248c9.7 0 17.7 8 17.7 17.7V380zm-248-137.3v132.9c0 2.5-1.9 4.4-4.4 4.4h-8.9c-2.5 0-4.4-1.9-4.4-4.4V242.7c0-2.5 1.9-4.4 4.4-4.4h8.9c2.5 0 4.4 1.9 4.4 4.4zm141.7 48.7c0 13-7.2 24.4-17.7 30.4v31.6c0 5-3.9 8.9-8.9 8.9h-17.7c-5 0-8.9-3.9-8.9-8.9v-31.6c-10.5-6.1-17.7-17.4-17.7-30.4 0-19.7 15.8-35.4 35.4-35.4s35.5 15.8 35.5 35.4zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 478.3C121 486.3 17.7 383 17.7 256S121 25.7 248 25.7 478.3 129 478.3 256 375 486.3 248 486.3z\"]\n};\nvar faFacebook = {\n prefix: 'fab',\n iconName: 'facebook',\n icon: [512, 512, [], \"f09a\", \"M504 256C504 119 393 8 256 8S8 119 8 256c0 123.78 90.69 226.38 209.25 245V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.28c-30.8 0-40.41 19.12-40.41 38.73V256h68.78l-11 71.69h-57.78V501C413.31 482.38 504 379.78 504 256z\"]\n};\nvar faFacebookF = {\n prefix: 'fab',\n iconName: 'facebook-f',\n icon: [320, 512, [], \"f39e\", \"M279.14 288l14.22-92.66h-88.91v-60.13c0-25.35 12.42-50.06 52.24-50.06h40.42V6.26S260.43 0 225.36 0c-73.22 0-121.08 44.38-121.08 124.72v70.62H22.89V288h81.39v224h100.17V288z\"]\n};\nvar faFacebookMessenger = {\n prefix: 'fab',\n iconName: 'facebook-messenger',\n icon: [512, 512, [], \"f39f\", \"M256.55 8C116.52 8 8 110.34 8 248.57c0 72.3 29.71 134.78 78.07 177.94 8.35 7.51 6.63 11.86 8.05 58.23A19.92 19.92 0 0 0 122 502.31c52.91-23.3 53.59-25.14 62.56-22.7C337.85 521.8 504 423.7 504 248.57 504 110.34 396.59 8 256.55 8zm149.24 185.13l-73 115.57a37.37 37.37 0 0 1-53.91 9.93l-58.08-43.47a15 15 0 0 0-18 0l-78.37 59.44c-10.46 7.93-24.16-4.6-17.11-15.67l73-115.57a37.36 37.36 0 0 1 53.91-9.93l58.06 43.46a15 15 0 0 0 18 0l78.41-59.38c10.44-7.98 24.14 4.54 17.09 15.62z\"]\n};\nvar faFacebookSquare = {\n prefix: 'fab',\n iconName: 'facebook-square',\n icon: [448, 512, [], \"f082\", \"M400 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h137.25V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.27c-30.81 0-40.42 19.12-40.42 38.73V256h68.78l-11 71.69h-57.78V480H400a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48z\"]\n};\nvar faFantasyFlightGames = {\n prefix: 'fab',\n iconName: 'fantasy-flight-games',\n icon: [512, 512, [], \"f6dc\", \"M256 32.86L32.86 256 256 479.14 479.14 256 256 32.86zM88.34 255.83c1.96-2 11.92-12.3 96.49-97.48 41.45-41.75 86.19-43.77 119.77-18.69 24.63 18.4 62.06 58.9 62.15 59 .68.74 1.07 2.86.58 3.38-11.27 11.84-22.68 23.54-33.5 34.69-34.21-32.31-40.52-38.24-48.51-43.95-17.77-12.69-41.4-10.13-56.98 5.1-2.17 2.13-1.79 3.43.12 5.35 2.94 2.95 28.1 28.33 35.09 35.78-11.95 11.6-23.66 22.97-35.69 34.66-12.02-12.54-24.48-25.53-36.54-38.11-21.39 21.09-41.69 41.11-61.85 60.99a42569.01 42569.01 0 0 1-41.13-40.72zm234.82 101.6c-35.49 35.43-78.09 38.14-106.99 20.47-22.08-13.5-39.38-32.08-72.93-66.84 12.05-12.37 23.79-24.42 35.37-36.31 33.02 31.91 37.06 36.01 44.68 42.09 18.48 14.74 42.52 13.67 59.32-1.8 3.68-3.39 3.69-3.64.14-7.24-10.59-10.73-21.19-21.44-31.77-32.18-1.32-1.34-3.03-2.48-.8-4.69 10.79-10.71 21.48-21.52 32.21-32.29.26-.26.65-.38 1.91-1.07 12.37 12.87 24.92 25.92 37.25 38.75 21.01-20.73 41.24-40.68 61.25-60.42 13.68 13.4 27.13 26.58 40.86 40.03-20.17 20.86-81.68 82.71-100.5 101.5zM256 0L0 256l256 256 256-256L256 0zM16 256L256 16l240 240-240 240L16 256z\"]\n};\nvar faFedex = {\n prefix: 'fab',\n iconName: 'fedex',\n icon: [640, 512, [], \"f797\", \"M586 284.5l53.3-59.9h-62.4l-21.7 24.8-22.5-24.8H414v-16h56.1v-48.1H318.9V236h-.5c-9.6-11-21.5-14.8-35.4-14.8-28.4 0-49.8 19.4-57.3 44.9-18-59.4-97.4-57.6-121.9-14v-24.2H49v-26.2h60v-41.1H0V345h49v-77.5h48.9c-1.5 5.7-2.3 11.8-2.3 18.2 0 73.1 102.6 91.4 130.2 23.7h-42c-14.7 20.9-45.8 8.9-45.8-14.6h85.5c3.7 30.5 27.4 56.9 60.1 56.9 14.1 0 27-6.9 34.9-18.6h.5V345h212.2l22.1-25 22.3 25H640l-54-60.5zm-446.7-16.6c6.1-26.3 41.7-25.6 46.5 0h-46.5zm153.4 48.9c-34.6 0-34-62.8 0-62.8 32.6 0 34.5 62.8 0 62.8zm167.8 19.1h-94.4V169.4h95v30.2H405v33.9h55.5v28.1h-56.1v44.7h56.1v29.6zm-45.9-39.8v-24.4h56.1v-44l50.7 57-50.7 57v-45.6h-56.1zm138.6 10.3l-26.1 29.5H489l45.6-51.2-45.6-51.2h39.7l26.6 29.3 25.6-29.3h38.5l-45.4 51 46 51.4h-40.5l-26.3-29.5z\"]\n};\nvar faFedora = {\n prefix: 'fab',\n iconName: 'fedora',\n icon: [448, 512, [], \"f798\", \"M225 32C101.3 31.7.8 131.7.4 255.4L0 425.7a53.6 53.6 0 0 0 53.6 53.9l170.2.4c123.7.3 224.3-99.7 224.6-223.4S348.7 32.3 225 32zm169.8 157.2L333 126.6c2.3-4.7 3.8-9.2 3.8-14.3v-1.6l55.2 56.1a101 101 0 0 1 2.8 22.4zM331 94.3a106.06 106.06 0 0 1 58.5 63.8l-54.3-54.6a26.48 26.48 0 0 0-4.2-9.2zM118.1 247.2a49.66 49.66 0 0 0-7.7 11.4l-8.5-8.5a85.78 85.78 0 0 1 16.2-2.9zM97 251.4l11.8 11.9-.9 8a34.74 34.74 0 0 0 2.4 12.5l-27-27.2a80.6 80.6 0 0 1 13.7-5.2zm-18.2 7.4l38.2 38.4a53.17 53.17 0 0 0-14.1 4.7L67.6 266a107 107 0 0 1 11.2-7.2zm-15.2 9.8l35.3 35.5a67.25 67.25 0 0 0-10.5 8.5L53.5 278a64.33 64.33 0 0 1 10.1-9.4zm-13.3 12.3l34.9 35a56.84 56.84 0 0 0-7.7 11.4l-35.8-35.9c2.8-3.8 5.7-7.2 8.6-10.5zm-11 14.3l36.4 36.6a48.29 48.29 0 0 0-3.6 15.2l-39.5-39.8a99.81 99.81 0 0 1 6.7-12zm-8.8 16.3l41.3 41.8a63.47 63.47 0 0 0 6.7 26.2L25.8 326c1.4-4.9 2.9-9.6 4.7-14.5zm-7.9 43l61.9 62.2a31.24 31.24 0 0 0-3.6 14.3v1.1l-55.4-55.7a88.27 88.27 0 0 1-2.9-21.9zm5.3 30.7l54.3 54.6a28.44 28.44 0 0 0 4.2 9.2 106.32 106.32 0 0 1-58.5-63.8zm-5.3-37a80.69 80.69 0 0 1 2.1-17l72.2 72.5a37.59 37.59 0 0 0-9.9 8.7zm253.3-51.8l-42.6-.1-.1 56c-.2 69.3-64.4 115.8-125.7 102.9-5.7 0-19.9-8.7-19.9-24.2a24.89 24.89 0 0 1 24.5-24.6c6.3 0 6.3 1.6 15.7 1.6a55.91 55.91 0 0 0 56.1-55.9l.1-47c0-4.5-4.5-9-8.9-9l-33.6-.1c-32.6-.1-32.5-49.4.1-49.3l42.6.1.1-56a105.18 105.18 0 0 1 105.6-105 86.35 86.35 0 0 1 20.2 2.3c11.2 1.8 19.9 11.9 19.9 24 0 15.5-14.9 27.8-30.3 23.9-27.4-5.9-65.9 14.4-66 54.9l-.1 47a8.94 8.94 0 0 0 8.9 9l33.6.1c32.5.2 32.4 49.5-.2 49.4zm23.5-.3a35.58 35.58 0 0 0 7.6-11.4l8.5 8.5a102 102 0 0 1-16.1 2.9zm21-4.2L308.6 280l.9-8.1a34.74 34.74 0 0 0-2.4-12.5l27 27.2a74.89 74.89 0 0 1-13.7 5.3zm18-7.4l-38-38.4c4.9-1.1 9.6-2.4 13.7-4.7l36.2 35.9c-3.8 2.5-7.9 5-11.9 7.2zm15.5-9.8l-35.3-35.5a61.06 61.06 0 0 0 10.5-8.5l34.9 35a124.56 124.56 0 0 1-10.1 9zm13.2-12.3l-34.9-35a63.18 63.18 0 0 0 7.7-11.4l35.8 35.9a130.28 130.28 0 0 1-8.6 10.5zm11-14.3l-36.4-36.6a48.29 48.29 0 0 0 3.6-15.2l39.5 39.8a87.72 87.72 0 0 1-6.7 12zm13.5-30.9a140.63 140.63 0 0 1-4.7 14.3L345.6 190a58.19 58.19 0 0 0-7.1-26.2zm1-5.6l-71.9-72.1a32 32 0 0 0 9.9-9.2l64.3 64.7a90.93 90.93 0 0 1-2.3 16.6z\"]\n};\nvar faFigma = {\n prefix: 'fab',\n iconName: 'figma',\n icon: [384, 512, [], \"f799\", \"M14 95.7924C14 42.8877 56.8878 0 109.793 0H274.161C327.066 0 369.954 42.8877 369.954 95.7924C369.954 129.292 352.758 158.776 326.711 175.897C352.758 193.019 369.954 222.502 369.954 256.002C369.954 308.907 327.066 351.795 274.161 351.795H272.081C247.279 351.795 224.678 342.369 207.666 326.904V415.167C207.666 468.777 163.657 512 110.309 512C57.5361 512 14 469.243 14 416.207C14 382.709 31.1945 353.227 57.2392 336.105C31.1945 318.983 14 289.5 14 256.002C14 222.502 31.196 193.019 57.2425 175.897C31.196 158.776 14 129.292 14 95.7924ZM176.288 191.587H109.793C74.2172 191.587 45.3778 220.427 45.3778 256.002C45.3778 291.44 73.9948 320.194 109.381 320.416C109.518 320.415 109.655 320.415 109.793 320.415H176.288V191.587ZM207.666 256.002C207.666 291.577 236.505 320.417 272.081 320.417H274.161C309.737 320.417 338.576 291.577 338.576 256.002C338.576 220.427 309.737 191.587 274.161 191.587H272.081C236.505 191.587 207.666 220.427 207.666 256.002ZM109.793 351.795C109.655 351.795 109.518 351.794 109.381 351.794C73.9948 352.015 45.3778 380.769 45.3778 416.207C45.3778 451.652 74.6025 480.622 110.309 480.622C146.591 480.622 176.288 451.186 176.288 415.167V351.795H109.793ZM109.793 31.3778C74.2172 31.3778 45.3778 60.2173 45.3778 95.7924C45.3778 131.368 74.2172 160.207 109.793 160.207H176.288V31.3778H109.793ZM207.666 160.207H274.161C309.737 160.207 338.576 131.368 338.576 95.7924C338.576 60.2173 309.737 31.3778 274.161 31.3778H207.666V160.207Z\"]\n};\nvar faFirefox = {\n prefix: 'fab',\n iconName: 'firefox',\n icon: [512, 512, [], \"f269\", \"M503.52,241.48c-.12-1.56-.24-3.12-.24-4.68v-.12l-.36-4.68v-.12a245.86,245.86,0,0,0-7.32-41.15c0-.12,0-.12-.12-.24l-1.08-4c-.12-.24-.12-.48-.24-.6-.36-1.2-.72-2.52-1.08-3.72-.12-.24-.12-.6-.24-.84-.36-1.2-.72-2.4-1.08-3.48-.12-.36-.24-.6-.36-1-.36-1.2-.72-2.28-1.2-3.48l-.36-1.08c-.36-1.08-.84-2.28-1.2-3.36a8.27,8.27,0,0,0-.36-1c-.48-1.08-.84-2.28-1.32-3.36-.12-.24-.24-.6-.36-.84-.48-1.2-1-2.28-1.44-3.48,0-.12-.12-.24-.12-.36-1.56-3.84-3.24-7.68-5-11.4l-.36-.72c-.48-1-.84-1.8-1.32-2.64-.24-.48-.48-1.08-.72-1.56-.36-.84-.84-1.56-1.2-2.4-.36-.6-.6-1.2-1-1.8s-.84-1.44-1.2-2.28c-.36-.6-.72-1.32-1.08-1.92s-.84-1.44-1.2-2.16a18.07,18.07,0,0,0-1.2-2c-.36-.72-.84-1.32-1.2-2s-.84-1.32-1.2-2-.84-1.32-1.2-1.92-.84-1.44-1.32-2.16a15.63,15.63,0,0,0-1.2-1.8L463.2,119a15.63,15.63,0,0,0-1.2-1.8c-.48-.72-1.08-1.56-1.56-2.28-.36-.48-.72-1.08-1.08-1.56l-1.8-2.52c-.36-.48-.6-.84-1-1.32-1-1.32-1.8-2.52-2.76-3.72a248.76,248.76,0,0,0-23.51-26.64A186.82,186.82,0,0,0,412,62.46c-4-3.48-8.16-6.72-12.48-9.84a162.49,162.49,0,0,0-24.6-15.12c-2.4-1.32-4.8-2.52-7.2-3.72a254,254,0,0,0-55.43-19.56c-1.92-.36-3.84-.84-5.64-1.2h-.12c-1-.12-1.8-.36-2.76-.48a236.35,236.35,0,0,0-38-4H255.14a234.62,234.62,0,0,0-45.48,5c-33.59,7.08-63.23,21.24-82.91,39-1.08,1-1.92,1.68-2.4,2.16l-.48.48H124l-.12.12.12-.12a.12.12,0,0,0,.12-.12l-.12.12a.42.42,0,0,1,.24-.12c14.64-8.76,34.92-16,49.44-19.56l5.88-1.44c.36-.12.84-.12,1.2-.24,1.68-.36,3.36-.72,5.16-1.08.24,0,.6-.12.84-.12C250.94,20.94,319.34,40.14,367,85.61a171.49,171.49,0,0,1,26.88,32.76c30.36,49.2,27.48,111.11,3.84,147.59-34.44,53-111.35,71.27-159,24.84a84.19,84.19,0,0,1-25.56-59,74.05,74.05,0,0,1,6.24-31c1.68-3.84,13.08-25.67,18.24-24.59-13.08-2.76-37.55,2.64-54.71,28.19-15.36,22.92-14.52,58.2-5,83.28a132.85,132.85,0,0,1-12.12-39.24c-12.24-82.55,43.31-153,94.31-170.51-27.48-24-96.47-22.31-147.71,15.36-29.88,22-51.23,53.16-62.51,90.36,1.68-20.88,9.6-52.08,25.8-83.88-17.16,8.88-39,37-49.8,62.88-15.6,37.43-21,82.19-16.08,124.79.36,3.24.72,6.36,1.08,9.6,19.92,117.11,122,206.38,244.78,206.38C392.77,503.42,504,392.19,504,255,503.88,250.48,503.76,245.92,503.52,241.48Z\"]\n};\nvar faFirefoxBrowser = {\n prefix: 'fab',\n iconName: 'firefox-browser',\n icon: [512, 512, [], \"e007\", \"M189.37,152.86Zm-58.74-29.37C130.79,123.5,130.71,123.5,130.63,123.49Zm351.42,45.35c-10.61-25.5-32.08-53-48.94-61.73,13.72,26.89,21.67,53.88,24.7,74,0,0,0,.14.05.41-27.58-68.75-74.35-96.47-112.55-156.83-1.93-3.05-3.86-6.11-5.74-9.33-1-1.65-1.86-3.34-2.69-5.05A44.88,44.88,0,0,1,333.24.69a.63.63,0,0,0-.55-.66.9.9,0,0,0-.46,0l-.12.07-.18.1.1-.14c-54.23,31.77-76.72,87.38-82.5,122.78a130,130,0,0,0-48.33,12.33,6.25,6.25,0,0,0-3.09,7.75,6.13,6.13,0,0,0,7.79,3.79l.52-.21a117.84,117.84,0,0,1,42.11-11l1.42-.1c2-.12,4-.2,6-.22A122.61,122.61,0,0,1,291,140c.67.2,1.32.42,2,.63,1.89.57,3.76,1.2,5.62,1.87,1.36.5,2.71,1,4.05,1.58,1.09.44,2.18.88,3.25,1.35q2.52,1.13,5,2.35c.75.37,1.5.74,2.25,1.13q2.4,1.26,4.74,2.63,1.51.87,3,1.8a124.89,124.89,0,0,1,42.66,44.13c-13-9.15-36.35-18.19-58.82-14.28,87.74,43.86,64.18,194.9-57.39,189.2a108.43,108.43,0,0,1-31.74-6.12c-2.42-.91-4.8-1.89-7.16-2.93-1.38-.63-2.76-1.27-4.12-2C174.5,346,149.9,316.92,146.83,281.59c0,0,11.25-41.95,80.62-41.95,7.5,0,28.93-20.92,29.33-27-.09-2-42.54-18.87-59.09-35.18-8.85-8.71-13.05-12.91-16.77-16.06a69.58,69.58,0,0,0-6.31-4.77A113.05,113.05,0,0,1,173.92,97c-25.06,11.41-44.55,29.45-58.71,45.37h-.12c-9.67-12.25-9-52.65-8.43-61.08-.12-.53-7.22,3.68-8.15,4.31a178.54,178.54,0,0,0-23.84,20.43A214,214,0,0,0,51.9,133.36l0,0a.08.08,0,0,1,0,0,205.84,205.84,0,0,0-32.73,73.9c-.06.27-2.33,10.21-4,22.48q-.42,2.87-.78,5.74c-.57,3.69-1,7.71-1.44,14,0,.24,0,.48-.05.72-.18,2.71-.34,5.41-.49,8.12,0,.41,0,.82,0,1.24,0,134.7,109.21,243.89,243.92,243.89,120.64,0,220.82-87.58,240.43-202.62.41-3.12.74-6.26,1.11-9.41,4.85-41.83-.54-85.79-15.82-122.55Z\"]\n};\nvar faFirstOrder = {\n prefix: 'fab',\n iconName: 'first-order',\n icon: [448, 512, [], \"f2b0\", \"M12.9 229.2c.1-.1.2-.3.3-.4 0 .1 0 .3-.1.4h-.2zM224 96.6c-7.1 0-14.6.6-21.4 1.7l3.7 67.4-22-64c-14.3 3.7-27.7 9.4-40 16.6l29.4 61.4-45.1-50.9c-11.4 8.9-21.7 19.1-30.6 30.9l50.6 45.4-61.1-29.7c-7.1 12.3-12.9 25.7-16.6 40l64.3 22.6-68-4c-.9 7.1-1.4 14.6-1.4 22s.6 14.6 1.4 21.7l67.7-4-64 22.6c3.7 14.3 9.4 27.7 16.6 40.3l61.1-29.7L97.7 352c8.9 11.7 19.1 22.3 30.9 30.9l44.9-50.9-29.5 61.4c12.3 7.4 25.7 13.1 40 16.9l22.3-64.6-4 68c7.1 1.1 14.6 1.7 21.7 1.7 7.4 0 14.6-.6 21.7-1.7l-4-68.6 22.6 65.1c14.3-4 27.7-9.4 40-16.9L274.9 332l44.9 50.9c11.7-8.9 22-19.1 30.6-30.9l-50.6-45.1 61.1 29.4c7.1-12.3 12.9-25.7 16.6-40.3l-64-22.3 67.4 4c1.1-7.1 1.4-14.3 1.4-21.7s-.3-14.9-1.4-22l-67.7 4 64-22.3c-3.7-14.3-9.1-28-16.6-40.3l-60.9 29.7 50.6-45.4c-8.9-11.7-19.1-22-30.6-30.9l-45.1 50.9 29.4-61.1c-12.3-7.4-25.7-13.1-40-16.9L241.7 166l4-67.7c-7.1-1.2-14.3-1.7-21.7-1.7zM443.4 128v256L224 512 4.6 384V128L224 0l219.4 128zm-17.1 10.3L224 20.9 21.7 138.3v235.1L224 491.1l202.3-117.7V138.3zM224 37.1l187.7 109.4v218.9L224 474.9 36.3 365.4V146.6L224 37.1zm0 50.9c-92.3 0-166.9 75.1-166.9 168 0 92.6 74.6 167.7 166.9 167.7 92 0 166.9-75.1 166.9-167.7 0-92.9-74.9-168-166.9-168z\"]\n};\nvar faFirstOrderAlt = {\n prefix: 'fab',\n iconName: 'first-order-alt',\n icon: [496, 512, [], \"f50a\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 488.21C115.34 496.21 7.79 388.66 7.79 256S115.34 15.79 248 15.79 488.21 123.34 488.21 256 380.66 496.21 248 496.21zm0-459.92C126.66 36.29 28.29 134.66 28.29 256S126.66 475.71 248 475.71 467.71 377.34 467.71 256 369.34 36.29 248 36.29zm0 431.22c-116.81 0-211.51-94.69-211.51-211.51S131.19 44.49 248 44.49 459.51 139.19 459.51 256 364.81 467.51 248 467.51zm186.23-162.98a191.613 191.613 0 0 1-20.13 48.69l-74.13-35.88 61.48 54.82a193.515 193.515 0 0 1-37.2 37.29l-54.8-61.57 35.88 74.27a190.944 190.944 0 0 1-48.63 20.23l-27.29-78.47 4.79 82.93c-8.61 1.18-17.4 1.8-26.33 1.8s-17.72-.62-26.33-1.8l4.76-82.46-27.15 78.03a191.365 191.365 0 0 1-48.65-20.2l35.93-74.34-54.87 61.64a193.85 193.85 0 0 1-37.22-37.28l61.59-54.9-74.26 35.93a191.638 191.638 0 0 1-20.14-48.69l77.84-27.11-82.23 4.76c-1.16-8.57-1.78-17.32-1.78-26.21 0-9 .63-17.84 1.82-26.51l82.38 4.77-77.94-27.16a191.726 191.726 0 0 1 20.23-48.67l74.22 35.92-61.52-54.86a193.85 193.85 0 0 1 37.28-37.22l54.76 61.53-35.83-74.17a191.49 191.49 0 0 1 48.65-20.13l26.87 77.25-4.71-81.61c8.61-1.18 17.39-1.8 26.32-1.8s17.71.62 26.32 1.8l-4.74 82.16 27.05-77.76c17.27 4.5 33.6 11.35 48.63 20.17l-35.82 74.12 54.72-61.47a193.13 193.13 0 0 1 37.24 37.23l-61.45 54.77 74.12-35.86a191.515 191.515 0 0 1 20.2 48.65l-77.81 27.1 82.24-4.75c1.19 8.66 1.82 17.5 1.82 26.49 0 8.88-.61 17.63-1.78 26.19l-82.12-4.75 77.72 27.09z\"]\n};\nvar faFirstdraft = {\n prefix: 'fab',\n iconName: 'firstdraft',\n icon: [384, 512, [], \"f3a1\", \"M384 192h-64v128H192v128H0v-25.6h166.4v-128h128v-128H384V192zm-25.6 38.4v128h-128v128H64V512h192V384h128V230.4h-25.6zm25.6 192h-89.6V512H320v-64h64v-25.6zM0 0v384h128V256h128V128h128V0H0z\"]\n};\nvar faFlickr = {\n prefix: 'fab',\n iconName: 'flickr',\n icon: [448, 512, [], \"f16e\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM144.5 319c-35.1 0-63.5-28.4-63.5-63.5s28.4-63.5 63.5-63.5 63.5 28.4 63.5 63.5-28.4 63.5-63.5 63.5zm159 0c-35.1 0-63.5-28.4-63.5-63.5s28.4-63.5 63.5-63.5 63.5 28.4 63.5 63.5-28.4 63.5-63.5 63.5z\"]\n};\nvar faFlipboard = {\n prefix: 'fab',\n iconName: 'flipboard',\n icon: [448, 512, [], \"f44d\", \"M0 32v448h448V32H0zm358.4 179.2h-89.6v89.6h-89.6v89.6H89.6V121.6h268.8v89.6z\"]\n};\nvar faFly = {\n prefix: 'fab',\n iconName: 'fly',\n icon: [384, 512, [], \"f417\", \"M197.8 427.8c12.9 11.7 33.7 33.3 33.2 50.7 0 .8-.1 1.6-.1 2.5-1.8 19.8-18.8 31.1-39.1 31-25-.1-39.9-16.8-38.7-35.8 1-16.2 20.5-36.7 32.4-47.6 2.3-2.1 2.7-2.7 5.6-3.6 3.4 0 3.9.3 6.7 2.8zM331.9 67.3c-16.3-25.7-38.6-40.6-63.3-52.1C243.1 4.5 214-.2 192 0c-44.1 0-71.2 13.2-81.1 17.3C57.3 45.2 26.5 87.2 28 158.6c7.1 82.2 97 176 155.8 233.8 1.7 1.6 4.5 4.5 6.2 5.1l3.3.1c2.1-.7 1.8-.5 3.5-2.1 52.3-49.2 140.7-145.8 155.9-215.7 7-39.2 3.1-72.5-20.8-112.5zM186.8 351.9c-28-51.1-65.2-130.7-69.3-189-3.4-47.5 11.4-131.2 69.3-136.7v325.7zM328.7 180c-16.4 56.8-77.3 128-118.9 170.3C237.6 298.4 275 217 277 158.4c1.6-45.9-9.8-105.8-48-131.4 88.8 18.3 115.5 98.1 99.7 153z\"]\n};\nvar faFontAwesome = {\n prefix: 'fab',\n iconName: 'font-awesome',\n icon: [448, 512, [], \"f2b4\", \"M400 32H48A48 48 0 0 0 0 80V432a48 48 0 0 0 48 48H400a48 48 0 0 0 48-48V80A48 48 0 0 0 400 32ZM336 312c-31.6 11.2-41.2 16-59.8 16-31.4 0-43.2-16-74.6-16a80 80 0 0 0-25.6 4V284a85.9 85.9 0 0 1 25.6-4c31.2 0 43.2 16 74.6 16 10.2 0 17.8-1.4 27.8-4.6v-96c-10 3.2-17.6 4.6-27.8 4.6-31.4 0-43.2-16-74.6-16-25.4 0-37.4 10.4-57.6 14.4V352a16 16 0 0 1-32 0V160a16 16 0 0 1 32 0v6.4c20.2-4 32.2-14.4 57.6-14.4 31.2 0 43.2 16 74.6 16 18.6 0 28.2-4.8 59.8-16Z\"]\n};\nvar faFontAwesomeAlt = {\n prefix: 'fab',\n iconName: 'font-awesome-alt',\n icon: [448, 512, [], \"f35c\", \"M400 32H48A48 48 0 0 0 0 80V432a48 48 0 0 0 48 48H400a48 48 0 0 0 48-48V80A48 48 0 0 0 400 32Zm16 400a16 16 0 0 1-16 16H48a16 16 0 0 1-16-16V80A16 16 0 0 1 48 64H400a16 16 0 0 1 16 16ZM201.6 152c-25.4 0-37.4 10.4-57.6 14.4V160a16 16 0 0 0-32 0V352a16 16 0 0 0 32 0V198.4c20.2-4 32.2-14.4 57.6-14.4 31.4 0 43.2 16 74.6 16 10.2 0 17.8-1.4 27.8-4.6v96c-10 3.2-17.6 4.6-27.8 4.6-31.4 0-43.4-16-74.6-16a85.9 85.9 0 0 0-25.6 4v32a80 80 0 0 1 25.6-4c31.4 0 43.2 16 74.6 16 18.6 0 28.2-4.8 59.8-16V152c-31.6 11.2-41.2 16-59.8 16C244.8 168 232.8 152 201.6 152Z\"]\n};\nvar faFontAwesomeFlag = {\n prefix: 'fab',\n iconName: 'font-awesome-flag',\n icon: [448, 512, [], \"f425\", \"M448 48V384c-63 23-82 32-119 32-63 0-87-32-150-32-20 0-36 4-51 8V328c15-4 31-8 51-8 63 0 87 32 150 32 20 0 35-3 55-9V135c-20 6-35 9-55 9-63 0-87-32-150-32-51 0-75 21-115 29V448a31.6 31.6 0 0 1-32 32A31.6 31.6 0 0 1 0 448V64A31.6 31.6 0 0 1 32 32 31.6 31.6 0 0 1 64 64V77c40-8 64-29 115-29 63 0 87 32 150 32C366 80 385 71 448 48Z\"]\n};\nvar faFontAwesomeLogoFull = {\n prefix: 'fab',\n iconName: 'font-awesome-logo-full',\n icon: [3992, 512, [\"Font Awesome\"], \"f4e6\", \"M1209.7 156.5c-57.8 0-102 43.9-102 99.1 0 56 44.6 99.1 102 99.1 57.4 0 102-43.1 102-99.1C1311.7 200.4 1267.5 156.5 1209.7 156.5Zm0 152.7c-35.1 0-51.8-27.4-51.8-53.2 0-25.8 16.7-53.2 51.8-53.2 35.1 0 51.8 27.8 51.8 53.2C1261.1 281.8 1244.8 309.2 1209.7 309.2Zm962.1-136.1c-4.4-10.9-12.3-16.5-23.5-16.5s-19.1 5.6-23.5 16.5l-59.4 145.8c-7.2 17.7 2.8 27.4 4.4 29a24.6 24.6 0 0 0 17.5 6.8c10.8 0 18.7-6 23.1-18.1l4-10.1h67.7l4 10.1c4.8 12.1 12.3 18.1 23.1 18.1a24.6 24.6 0 0 0 17.5-6.8c10-10.1 6.8-22.6 4.4-29Zm-43 113.6 19.1-56 19.1 56Zm-574.5-130.1c-14.3 0-24.7 10.9-24.7 25.4v76.5l-68.5-85.8c-4.4-5.6-11.6-16.1-25.5-16.1-19.1 0-24.3 17.7-24.3 25.4V329.7c0 14.1 10.4 25.4 24.7 25.4 14.3 0 24.7-10.9 24.7-25.4V252.8l68.9 86.2c4.8 5.6 11.6 16.1 25.5 16.1 19.1 0 23.9-17.3 23.9-25.4V181.9C1579 167.4 1568.6 156.5 1554.3 156.5Zm-554.1 1.6H916.5c-19.9 0-25.1 17.3-25.1 25.4V328.1c0 19.7 16.7 25.4 24.7 25.4 8 0 24.7-5.2 24.7-25.4V285h44.6c12.8 0 22.7-9.3 22.7-22.6 0-17.7-15.5-22.1-22.7-22.1H940.8V203.6h59.4c12.8 0 22.7-9.3 22.7-22.6C1022.9 163 1007.3 158.1 1000.2 158.1Zm815.1 0H1691.7c-7.2 0-22.7 4.4-22.7 22.2 0 13.3 10 22.6 22.7 22.6h37V327.7c0 14.1 10.4 25.4 24.7 25.4 14.3 0 24.7-10.9 24.7-25.4V202.8h37c12.7 0 22.7-9.3 22.7-22.6C1837.9 163 1822.4 158.1 1815.2 158.1Zm1789.5-1.6c-9.6 0-17.5 6-25.1 18.1l-46.6 76.1L3486.4 174.6q-10.8-18.1-25.1-18.1c-19.5 0-24.7 18.1-24.7 25.8V329.7c0 14.1 10.4 25.4 24.7 25.4s24.7-10.9 24.7-25.4V262.8L3510.7 302.7c6.4 10.1 13.9 15.3 22.3 15.3 8.8 0 15.9-5.2 22.3-15.3l24.7-39.9v66.9c0 14.1 10.3 25.4 24.7 25.4 14.3 0 24.7-10.9 24.7-25.4V182.3C3629.4 174.2 3624.6 156.5 3604.7 156.5Zm248.6 149.8h-65.7V272.9h39.4c11.9 0 21.1-8.9 21.1-20.9 0-12.1-9.2-20.9-21.1-20.9h-39.4V204.8h62.1c12.8 0 22.7-9.3 22.7-22.6 0-17.7-15.6-22.2-22.7-22.2h-86.4c-19.9 0-25.1 17.3-25.1 25.4V326.5c0 8.1 5.2 25.4 25.1 25.4h90c12.8 0 22.7-9.3 22.7-22.6C3876 311.2 3860.5 306.3 3853.3 306.3ZM3235 156.5c-57.8 0-102 43.9-102 99.1 0 56 44.6 99.1 102 99.1 57.4 0 102-43.1 102-99.1C3337 200.4 3292.8 156.5 3235 156.5Zm0 152.7c-35.1 0-51.8-27.4-51.8-53.2 0-25.8 16.7-53.2 51.8-53.2 35.1 0 51.8 27.8 51.8 53.2C3286.8 281.8 3270.1 309.2 3235 309.2ZM2550.2 156.5c-11.2 0-19.1 5.6-23.1 16.5l-34.3 94.7-31.5-92.2c-4.4-12.5-12.3-18.9-24.3-18.9-11.9 0-19.9 6.4-24.3 18.9l-31.5 92.2-34.3-95.5q-5.4-15.7-22.7-15.7c-6.8 0-12.3 2.4-17.5 7.3-5.2 5.2-10.8 14.5-4.8 28.6l55.8 145.8c4 11.3 11.6 16.9 23.1 16.9q16.7 0 22.7-16.9l33.5-91.8 33.5 91.8q6 16.9 22.7 16.9c11.2 0 19.1-5.6 23.1-16.9l55.8-145.8c3.6-9.3 4.4-19.3-4.8-28.6A23 23 0 0 0 2550.2 156.5Zm444.2 81-21.9-9.3c-11.9-4.8-16.3-8.5-16.3-15.7q0-12.1 16.7-12.1c12.7 0 19.5 7.7 24.3 10.9 7.2 5.2 18.3 6.8 27.9-2 10.8-10.5 6.8-23.8 1.2-30.6-12.3-14.9-30.3-22.2-53.8-22.2-19.1 0-35.1 5.2-47.4 15.7-12.3 10.5-18.7 24.2-18.7 41.1 0 24.2 15.9 43.5 47.8 57.6l19.5 8.9c15.9 6.8 19.1 9.7 19.1 17.7 0 9.3-6.4 14.1-19.5 14.1-19.1 0-34.7-14.9-36.3-16.1-10.8-7.3-21.5-2-26.3 2.8-6.8 6.4-12.7 20.9 3.2 36.2 6.8 6.4 15.5 11.7 26.7 15.3a94.6 94.6 0 0 0 32.7 5.6c19.9 0 36.7-5.2 49.8-16.1 13.1-10.9 19.5-25.4 19.5-43.5q0-20.5-12-33.8C3022.7 253.2 3010.7 244.3 2994.4 237.5Zm-206.4 68.9h-65.7V272.9h39.4c12 0 21.1-8.9 21.1-20.9 0-12.1-9.2-20.9-21.1-20.9h-39.4V204.8h62.1c12.8 0 22.7-9.3 22.7-22.6 0-17.7-15.5-22.2-22.7-22.2h-86.4c-19.9 0-25.1 17.3-25.1 25.4V326.5c0 8.1 5.2 25.4 25.1 25.4h90c12.7 0 22.7-9.3 22.7-22.6C2810.8 311.2 2795.2 306.3 2788 306.3ZM178.3 49.1c-50.5 0-74.4 20.7-114.6 28.7V65A31.8 31.8 0 1 0 0 65V447a31.8 31.8 0 0 0 63.7 0V141.4c40.2-8 64.1-28.7 114.6-28.7 62.5 0 86 31.8 148.4 31.8 20.3 0 35.4-2.8 55.3-9.2v191c-19.9 6.4-35 9.2-55.3 9.2-62.5 0-86.4-31.8-148.4-31.8-20.3 0-36.2 3.6-50.9 8V375.4a159.1 159.1 0 0 1 50.9-8c62.5 0 86 31.8 148.4 31.8 37 0 56.1-9.6 119-31.8V49.1C382.8 71.4 363.7 80.9 326.7 80.9 264.2 80.9 240.4 49.1 178.3 49.1Z\"]\n};\nvar faFonticons = {\n prefix: 'fab',\n iconName: 'fonticons',\n icon: [448, 512, [], \"f280\", \"M0 32v448h448V32zm187 140.9c-18.4 0-19 9.9-19 27.4v23.3c0 2.4-3.5 4.4-.6 4.4h67.4l-11.1 37.3H168v112.9c0 5.8-2 6.7 3.2 7.3l43.5 4.1v25.1H84V389l21.3-2c5.2-.6 6.7-2.3 6.7-7.9V267.7c0-2.3-2.9-2.3-5.8-2.3H84V228h28v-21c0-49.6 26.5-70 77.3-70 34.1 0 64.7 8.2 64.7 52.8l-50.7 6.1c.3-18.7-4.4-23-16.3-23zm74.3 241.8v-25.1l20.4-2.6c5.2-.6 7.6-1.7 7.6-7.3V271.8c0-4.1-2.9-6.7-6.7-7.9l-24.2-6.4 6.7-29.5h80.2v151.7c0 5.8-2.6 6.4 2.9 7.3l15.7 2.6v25.1zm80.8-255.5l9 33.2-7.3 7.3-31.2-16.6-31.2 16.6-7.3-7.3 9-33.2-21.8-24.2 3.5-9.6h27.7l15.5-28h9.3l15.5 28h27.7l3.5 9.6z\"]\n};\nvar faFonticonsFi = {\n prefix: 'fab',\n iconName: 'fonticons-fi',\n icon: [384, 512, [], \"f3a2\", \"M114.4 224h92.4l-15.2 51.2h-76.4V433c0 8-2.8 9.2 4.4 10l59.6 5.6V483H0v-35.2l29.2-2.8c7.2-.8 9.2-3.2 9.2-10.8V278.4c0-3.2-4-3.2-8-3.2H0V224h38.4v-28.8c0-68 36.4-96 106-96 46.8 0 88.8 11.2 88.8 72.4l-69.6 8.4c.4-25.6-6-31.6-22.4-31.6-25.2 0-26 13.6-26 37.6v32c0 3.2-4.8 6-.8 6zM384 483H243.2v-34.4l28-3.6c7.2-.8 10.4-2.4 10.4-10V287c0-5.6-4-9.2-9.2-10.8l-33.2-8.8 9.2-40.4h110v208c0 8-3.6 8.8 4 10l21.6 3.6V483zm-30-347.2l12.4 45.6-10 10-42.8-22.8-42.8 22.8-10-10 12.4-45.6-30-36.4 4.8-10h38L307.2 51H320l21.2 38.4h38l4.8 13.2-30 33.2z\"]\n};\nvar faFortAwesome = {\n prefix: 'fab',\n iconName: 'fort-awesome',\n icon: [512, 512, [], \"f286\", \"M489.2 287.9h-27.4c-2.6 0-4.6 2-4.6 4.6v32h-36.6V146.2c0-2.6-2-4.6-4.6-4.6h-27.4c-2.6 0-4.6 2-4.6 4.6v32h-36.6v-32c0-2.6-2-4.6-4.6-4.6h-27.4c-2.6 0-4.6 2-4.6 4.6v32h-36.6v-32c0-6-8-4.6-11.7-4.6v-38c8.3-2 17.1-3.4 25.7-3.4 10.9 0 20.9 4.3 31.4 4.3 4.6 0 27.7-1.1 27.7-8v-60c0-2.6-2-4.6-4.6-4.6-5.1 0-15.1 4.3-24 4.3-9.7 0-20.9-4.3-32.6-4.3-8 0-16 1.1-23.7 2.9v-4.9c5.4-2.6 9.1-8.3 9.1-14.3 0-20.7-31.4-20.8-31.4 0 0 6 3.7 11.7 9.1 14.3v111.7c-3.7 0-11.7-1.4-11.7 4.6v32h-36.6v-32c0-2.6-2-4.6-4.6-4.6h-27.4c-2.6 0-4.6 2-4.6 4.6v32H128v-32c0-2.6-2-4.6-4.6-4.6H96c-2.6 0-4.6 2-4.6 4.6v178.3H54.8v-32c0-2.6-2-4.6-4.6-4.6H22.8c-2.6 0-4.6 2-4.6 4.6V512h182.9v-96c0-72.6 109.7-72.6 109.7 0v96h182.9V292.5c.1-2.6-1.9-4.6-4.5-4.6zm-288.1-4.5c0 2.6-2 4.6-4.6 4.6h-27.4c-2.6 0-4.6-2-4.6-4.6v-64c0-2.6 2-4.6 4.6-4.6h27.4c2.6 0 4.6 2 4.6 4.6v64zm146.4 0c0 2.6-2 4.6-4.6 4.6h-27.4c-2.6 0-4.6-2-4.6-4.6v-64c0-2.6 2-4.6 4.6-4.6h27.4c2.6 0 4.6 2 4.6 4.6v64z\"]\n};\nvar faFortAwesomeAlt = {\n prefix: 'fab',\n iconName: 'fort-awesome-alt',\n icon: [512, 512, [], \"f3a3\", \"M208 237.4h-22.2c-2.1 0-3.7 1.6-3.7 3.7v51.7c0 2.1 1.6 3.7 3.7 3.7H208c2.1 0 3.7-1.6 3.7-3.7v-51.7c0-2.1-1.6-3.7-3.7-3.7zm118.2 0H304c-2.1 0-3.7 1.6-3.7 3.7v51.7c0 2.1 1.6 3.7 3.7 3.7h22.2c2.1 0 3.7-1.6 3.7-3.7v-51.7c-.1-2.1-1.7-3.7-3.7-3.7zm132-125.1c-2.3-3.2-4.6-6.4-7.1-9.5-9.8-12.5-20.8-24-32.8-34.4-4.5-3.9-9.1-7.6-13.9-11.2-1.6-1.2-3.2-2.3-4.8-3.5C372 34.1 340.3 20 306 13c-16.2-3.3-32.9-5-50-5s-33.9 1.7-50 5c-34.3 7.1-66 21.2-93.3 40.8-1.6 1.1-3.2 2.3-4.8 3.5-4.8 3.6-9.4 7.3-13.9 11.2-3 2.6-5.9 5.3-8.8 8s-5.7 5.5-8.4 8.4c-5.5 5.7-10.7 11.8-15.6 18-2.4 3.1-4.8 6.3-7.1 9.5C25.2 153 8.3 202.5 8.3 256c0 2 .1 4 .1 6 .1.7.1 1.3.1 2 .1 1.3.1 2.7.2 4 0 .8.1 1.5.1 2.3 0 1.3.1 2.5.2 3.7.1.8.1 1.6.2 2.4.1 1.1.2 2.3.3 3.5 0 .8.1 1.6.2 2.4.1 1.2.3 2.4.4 3.6.1.8.2 1.5.3 2.3.1 1.3.3 2.6.5 3.9.1.6.2 1.3.3 1.9l.9 5.7c.1.6.2 1.1.3 1.7.3 1.3.5 2.7.8 4 .2.8.3 1.6.5 2.4.2 1 .5 2.1.7 3.2.2.9.4 1.7.6 2.6.2 1 .4 2 .7 3 .2.9.5 1.8.7 2.7.3 1 .5 1.9.8 2.9.3.9.5 1.8.8 2.7.2.9.5 1.9.8 2.8s.5 1.8.8 2.7c.3 1 .6 1.9.9 2.8.6 1.6 1.1 3.3 1.7 4.9.4 1 .7 1.9 1 2.8.3 1 .7 2 1.1 3 .3.8.6 1.5.9 2.3l1.2 3c.3.7.6 1.5.9 2.2.4 1 .9 2 1.3 3l.9 2.1c.5 1 .9 2 1.4 3 .3.7.6 1.3.9 2 .5 1 1 2.1 1.5 3.1.2.6.5 1.1.8 1.7.6 1.1 1.1 2.2 1.7 3.3.1.2.2.3.3.5 2.2 4.1 4.4 8.2 6.8 12.2.2.4.5.8.7 1.2.7 1.1 1.3 2.2 2 3.3.3.5.6.9.9 1.4.6 1.1 1.3 2.1 2 3.2.3.5.6.9.9 1.4.7 1.1 1.4 2.1 2.1 3.2.2.4.5.8.8 1.2.7 1.1 1.5 2.2 2.3 3.3.2.2.3.5.5.7 37.5 51.7 94.4 88.5 160 99.4.9.1 1.7.3 2.6.4 1 .2 2.1.4 3.1.5s1.9.3 2.8.4c1 .2 2 .3 3 .4.9.1 1.9.2 2.9.3s1.9.2 2.9.3 2.1.2 3.1.3c.9.1 1.8.1 2.7.2 1.1.1 2.3.1 3.4.2.8 0 1.7.1 2.5.1 1.3 0 2.6.1 3.9.1.7.1 1.4.1 2.1.1 2 .1 4 .1 6 .1s4-.1 6-.1c.7 0 1.4-.1 2.1-.1 1.3 0 2.6 0 3.9-.1.8 0 1.7-.1 2.5-.1 1.1-.1 2.3-.1 3.4-.2.9 0 1.8-.1 2.7-.2 1-.1 2.1-.2 3.1-.3s1.9-.2 2.9-.3c.9-.1 1.9-.2 2.9-.3s2-.3 3-.4 1.9-.3 2.8-.4c1-.2 2.1-.3 3.1-.5.9-.1 1.7-.3 2.6-.4 65.6-11 122.5-47.7 160.1-102.4.2-.2.3-.5.5-.7.8-1.1 1.5-2.2 2.3-3.3.2-.4.5-.8.8-1.2.7-1.1 1.4-2.1 2.1-3.2.3-.5.6-.9.9-1.4.6-1.1 1.3-2.1 2-3.2.3-.5.6-.9.9-1.4.7-1.1 1.3-2.2 2-3.3.2-.4.5-.8.7-1.2 2.4-4 4.6-8.1 6.8-12.2.1-.2.2-.3.3-.5.6-1.1 1.1-2.2 1.7-3.3.2-.6.5-1.1.8-1.7.5-1 1-2.1 1.5-3.1.3-.7.6-1.3.9-2 .5-1 1-2 1.4-3l.9-2.1c.5-1 .9-2 1.3-3 .3-.7.6-1.5.9-2.2l1.2-3c.3-.8.6-1.5.9-2.3.4-1 .7-2 1.1-3s.7-1.9 1-2.8c.6-1.6 1.2-3.3 1.7-4.9.3-1 .6-1.9.9-2.8s.5-1.8.8-2.7c.2-.9.5-1.9.8-2.8s.6-1.8.8-2.7c.3-1 .5-1.9.8-2.9.2-.9.5-1.8.7-2.7.2-1 .5-2 .7-3 .2-.9.4-1.7.6-2.6.2-1 .5-2.1.7-3.2.2-.8.3-1.6.5-2.4.3-1.3.6-2.7.8-4 .1-.6.2-1.1.3-1.7l.9-5.7c.1-.6.2-1.3.3-1.9.1-1.3.3-2.6.5-3.9.1-.8.2-1.5.3-2.3.1-1.2.3-2.4.4-3.6 0-.8.1-1.6.2-2.4.1-1.1.2-2.3.3-3.5.1-.8.1-1.6.2-2.4.1 1.7.1.5.2-.7 0-.8.1-1.5.1-2.3.1-1.3.2-2.7.2-4 .1-.7.1-1.3.1-2 .1-2 .1-4 .1-6 0-53.5-16.9-103-45.8-143.7zM448 371.5c-9.4 15.5-20.6 29.9-33.6 42.9-20.6 20.6-44.5 36.7-71.2 48-13.9 5.8-28.2 10.3-42.9 13.2v-75.8c0-58.6-88.6-58.6-88.6 0v75.8c-14.7-2.9-29-7.3-42.9-13.2-26.7-11.3-50.6-27.4-71.2-48-13-13-24.2-27.4-33.6-42.9v-71.3c0-2.1 1.6-3.7 3.7-3.7h22.1c2.1 0 3.7 1.6 3.7 3.7V326h29.6V182c0-2.1 1.6-3.7 3.7-3.7h22.1c2.1 0 3.7 1.6 3.7 3.7v25.9h29.5V182c0-2.1 1.6-3.7 3.7-3.7H208c2.1 0 3.7 1.6 3.7 3.7v25.9h29.5V182c0-4.8 6.5-3.7 9.5-3.7V88.1c-4.4-2-7.4-6.7-7.4-11.5 0-16.8 25.4-16.8 25.4 0 0 4.8-3 9.4-7.4 11.5V92c6.3-1.4 12.7-2.3 19.2-2.3 9.4 0 18.4 3.5 26.3 3.5 7.2 0 15.2-3.5 19.4-3.5 2.1 0 3.7 1.6 3.7 3.7v48.4c0 5.6-18.7 6.5-22.4 6.5-8.6 0-16.6-3.5-25.4-3.5-7 0-14.1 1.2-20.8 2.8v30.7c3 0 9.5-1.1 9.5 3.7v25.9h29.5V182c0-2.1 1.6-3.7 3.7-3.7h22.2c2.1 0 3.7 1.6 3.7 3.7v25.9h29.5V182c0-2.1 1.6-3.7 3.7-3.7h22.1c2.1 0 3.7 1.6 3.7 3.7v144h29.5v-25.8c0-2.1 1.6-3.7 3.7-3.7h22.2c2.1 0 3.7 1.6 3.7 3.7z\"]\n};\nvar faForumbee = {\n prefix: 'fab',\n iconName: 'forumbee',\n icon: [448, 512, [], \"f211\", \"M5.8 309.7C2 292.7 0 275.5 0 258.3 0 135 99.8 35 223.1 35c16.6 0 33.3 2 49.3 5.5C149 87.5 51.9 186 5.8 309.7zm392.9-189.2C385 103 369 87.8 350.9 75.2c-149.6 44.3-266.3 162.1-309.7 312 12.5 18.1 28 35.6 45.2 49 43.1-151.3 161.2-271.7 312.3-315.7zm15.8 252.7c15.2-25.1 25.4-53.7 29.5-82.8-79.4 42.9-145 110.6-187.6 190.3 30-4.4 58.9-15.3 84.6-31.3 35 13.1 70.9 24.3 107 33.6-9.3-36.5-20.4-74.5-33.5-109.8zm29.7-145.5c-2.6-19.5-7.9-38.7-15.8-56.8C290.5 216.7 182 327.5 137.1 466c18.1 7.6 37 12.5 56.6 15.2C240 367.1 330.5 274.4 444.2 227.7z\"]\n};\nvar faFoursquare = {\n prefix: 'fab',\n iconName: 'foursquare',\n icon: [368, 512, [], \"f180\", \"M323.1 3H49.9C12.4 3 0 31.3 0 49.1v433.8c0 20.3 12.1 27.7 18.2 30.1 6.2 2.5 22.8 4.6 32.9-7.1C180 356.5 182.2 354 182.2 354c3.1-3.4 3.4-3.1 6.8-3.1h83.4c35.1 0 40.6-25.2 44.3-39.7l48.6-243C373.8 25.8 363.1 3 323.1 3zm-16.3 73.8l-11.4 59.7c-1.2 6.5-9.5 13.2-16.9 13.2H172.1c-12 0-20.6 8.3-20.6 20.3v13c0 12 8.6 20.6 20.6 20.6h90.4c8.3 0 16.6 9.2 14.8 18.2-1.8 8.9-10.5 53.8-11.4 58.8-.9 4.9-6.8 13.5-16.9 13.5h-73.5c-13.5 0-17.2 1.8-26.5 12.6 0 0-8.9 11.4-89.5 108.3-.9.9-1.8.6-1.8-.3V75.9c0-7.7 6.8-16.6 16.6-16.6h219c8.2 0 15.6 7.7 13.5 17.5z\"]\n};\nvar faFreeCodeCamp = {\n prefix: 'fab',\n iconName: 'free-code-camp',\n icon: [576, 512, [], \"f2c5\", \"M97.22,96.21c10.36-10.65,16-17.12,16-21.9,0-2.76-1.92-5.51-3.83-7.42A14.81,14.81,0,0,0,101,64.05c-8.48,0-20.92,8.79-35.84,25.69C23.68,137,2.51,182.81,3.37,250.34s17.47,117,54.06,161.87C76.22,435.86,90.62,448,100.9,448a13.55,13.55,0,0,0,8.37-3.84c1.91-2.76,3.81-5.63,3.81-8.38,0-5.63-3.86-12.2-13.2-20.55-44.45-42.33-67.32-97-67.48-165C32.25,188.8,54,137.83,97.22,96.21ZM239.47,420.07c.58.37.91.55.91.55Zm93.79.55.17-.13C333.24,420.62,333.17,420.67,333.26,420.62Zm3.13-158.18c-16.24-4.15,50.41-82.89-68.05-177.17,0,0,15.54,49.38-62.83,159.57-74.27,104.35,23.46,168.73,34,175.23-6.73-4.35-47.4-35.7,9.55-128.64,11-18.3,25.53-34.87,43.5-72.16,0,0,15.91,22.45,7.6,71.13C287.7,364,354,342.91,355,343.94c22.75,26.78-17.72,73.51-21.58,76.55,5.49-3.65,117.71-78,33-188.1C360.43,238.4,352.62,266.59,336.39,262.44ZM510.88,89.69C496,72.79,483.52,64,475,64a14.81,14.81,0,0,0-8.39,2.84c-1.91,1.91-3.83,4.66-3.83,7.42,0,4.78,5.6,11.26,16,21.9,43.23,41.61,65,92.59,64.82,154.06-.16,68-23,122.63-67.48,165-9.34,8.35-13.18,14.92-13.2,20.55,0,2.75,1.9,5.62,3.81,8.38A13.61,13.61,0,0,0,475.1,448c10.28,0,24.68-12.13,43.47-35.79,36.59-44.85,53.14-94.38,54.06-161.87S552.32,137,510.88,89.69Z\"]\n};\nvar faFreebsd = {\n prefix: 'fab',\n iconName: 'freebsd',\n icon: [448, 512, [], \"f3a4\", \"M303.7 96.2c11.1-11.1 115.5-77 139.2-53.2 23.7 23.7-42.1 128.1-53.2 139.2-11.1 11.1-39.4.9-63.1-22.9-23.8-23.7-34.1-52-22.9-63.1zM109.9 68.1C73.6 47.5 22 24.6 5.6 41.1c-16.6 16.6 7.1 69.4 27.9 105.7 18.5-32.2 44.8-59.3 76.4-78.7zM406.7 174c3.3 11.3 2.7 20.7-2.7 26.1-20.3 20.3-87.5-27-109.3-70.1-18-32.3-11.1-53.4 14.9-48.7 5.7-3.6 12.3-7.6 19.6-11.6-29.8-15.5-63.6-24.3-99.5-24.3-119.1 0-215.6 96.5-215.6 215.6 0 119 96.5 215.6 215.6 215.6S445.3 380.1 445.3 261c0-38.4-10.1-74.5-27.7-105.8-3.9 7-7.6 13.3-10.9 18.8z\"]\n};\nvar faFulcrum = {\n prefix: 'fab',\n iconName: 'fulcrum',\n icon: [320, 512, [], \"f50b\", \"M95.75 164.14l-35.38 43.55L25 164.14l35.38-43.55zM144.23 0l-20.54 198.18L72.72 256l51 57.82L144.23 512V300.89L103.15 256l41.08-44.89zm79.67 164.14l35.38 43.55 35.38-43.55-35.38-43.55zm-48.48 47L216.5 256l-41.08 44.89V512L196 313.82 247 256l-51-57.82L175.42 0z\"]\n};\nvar faGalacticRepublic = {\n prefix: 'fab',\n iconName: 'galactic-republic',\n icon: [496, 512, [], \"f50c\", \"M248 504C111.25 504 0 392.75 0 256S111.25 8 248 8s248 111.25 248 248-111.25 248-248 248zm0-479.47C120.37 24.53 16.53 128.37 16.53 256S120.37 487.47 248 487.47 479.47 383.63 479.47 256 375.63 24.53 248 24.53zm27.62 21.81v24.62a185.933 185.933 0 0 1 83.57 34.54l17.39-17.36c-28.75-22.06-63.3-36.89-100.96-41.8zm-55.37.07c-37.64 4.94-72.16 19.8-100.88 41.85l17.28 17.36h.08c24.07-17.84 52.55-30.06 83.52-34.67V46.41zm12.25 50.17v82.87c-10.04 2.03-19.42 5.94-27.67 11.42l-58.62-58.59-21.93 21.93 58.67 58.67c-5.47 8.23-9.45 17.59-11.47 27.62h-82.9v31h82.9c2.02 10.02 6.01 19.31 11.47 27.54l-58.67 58.69 21.93 21.93 58.62-58.62a77.873 77.873 0 0 0 27.67 11.47v82.9h31v-82.9c10.05-2.03 19.37-6.06 27.62-11.55l58.67 58.69 21.93-21.93-58.67-58.69c5.46-8.23 9.47-17.52 11.5-27.54h82.87v-31h-82.87c-2.02-10.02-6.03-19.38-11.5-27.62l58.67-58.67-21.93-21.93-58.67 58.67c-8.25-5.49-17.57-9.47-27.62-11.5V96.58h-31zm183.24 30.72l-17.36 17.36a186.337 186.337 0 0 1 34.67 83.67h24.62c-4.95-37.69-19.83-72.29-41.93-101.03zm-335.55.13c-22.06 28.72-36.91 63.26-41.85 100.91h24.65c4.6-30.96 16.76-59.45 34.59-83.52l-17.39-17.39zM38.34 283.67c4.92 37.64 19.75 72.18 41.8 100.9l17.36-17.39c-17.81-24.07-29.92-52.57-34.51-83.52H38.34zm394.7 0c-4.61 30.99-16.8 59.5-34.67 83.6l17.36 17.36c22.08-28.74 36.98-63.29 41.93-100.96h-24.62zM136.66 406.38l-17.36 17.36c28.73 22.09 63.3 36.98 100.96 41.93v-24.64c-30.99-4.63-59.53-16.79-83.6-34.65zm222.53.05c-24.09 17.84-52.58 30.08-83.57 34.67v24.57c37.67-4.92 72.21-19.79 100.96-41.85l-17.31-17.39h-.08z\"]\n};\nvar faGalacticSenate = {\n prefix: 'fab',\n iconName: 'galactic-senate',\n icon: [512, 512, [], \"f50d\", \"M249.86 33.48v26.07C236.28 80.17 226 168.14 225.39 274.9c11.74-15.62 19.13-33.33 19.13-48.24v-16.88c-.03-5.32.75-10.53 2.19-15.65.65-2.14 1.39-4.08 2.62-5.82 1.23-1.75 3.43-3.79 6.68-3.79 3.24 0 5.45 2.05 6.68 3.79 1.23 1.75 1.97 3.68 2.62 5.82 1.44 5.12 2.22 10.33 2.19 15.65v16.88c0 14.91 7.39 32.62 19.13 48.24-.63-106.76-10.91-194.73-24.49-215.35V33.48h-12.28zm-26.34 147.77c-9.52 2.15-18.7 5.19-27.46 9.08 8.9 16.12 9.76 32.64 1.71 37.29-8 4.62-21.85-4.23-31.36-19.82-11.58 8.79-21.88 19.32-30.56 31.09 14.73 9.62 22.89 22.92 18.32 30.66-4.54 7.7-20.03 7.14-35.47-.96-5.78 13.25-9.75 27.51-11.65 42.42 9.68.18 18.67 2.38 26.18 6.04 17.78-.3 32.77-1.96 40.49-4.22 5.55-26.35 23.02-48.23 46.32-59.51.73-25.55 1.88-49.67 3.48-72.07zm64.96 0c1.59 22.4 2.75 46.52 3.47 72.07 23.29 11.28 40.77 33.16 46.32 59.51 7.72 2.26 22.71 3.92 40.49 4.22 7.51-3.66 16.5-5.85 26.18-6.04-1.9-14.91-5.86-29.17-11.65-42.42-15.44 8.1-30.93 8.66-35.47.96-4.57-7.74 3.6-21.05 18.32-30.66-8.68-11.77-18.98-22.3-30.56-31.09-9.51 15.59-23.36 24.44-31.36 19.82-8.05-4.65-7.19-21.16 1.71-37.29a147.49 147.49 0 0 0-27.45-9.08zm-32.48 8.6c-3.23 0-5.86 8.81-6.09 19.93h-.05v16.88c0 41.42-49.01 95.04-93.49 95.04-52 0-122.75-1.45-156.37 29.17v2.51c9.42 17.12 20.58 33.17 33.18 47.97C45.7 380.26 84.77 360.4 141.2 360c45.68 1.02 79.03 20.33 90.76 40.87.01.01-.01.04 0 .05 7.67 2.14 15.85 3.23 24.04 3.21 8.19.02 16.37-1.07 24.04-3.21.01-.01-.01-.04 0-.05 11.74-20.54 45.08-39.85 90.76-40.87 56.43.39 95.49 20.26 108.02 41.35 12.6-14.8 23.76-30.86 33.18-47.97v-2.51c-33.61-30.62-104.37-29.17-156.37-29.17-44.48 0-93.49-53.62-93.49-95.04v-16.88h-.05c-.23-11.12-2.86-19.93-6.09-19.93zm0 96.59c22.42 0 40.6 18.18 40.6 40.6s-18.18 40.65-40.6 40.65-40.6-18.23-40.6-40.65c0-22.42 18.18-40.6 40.6-40.6zm0 7.64c-18.19 0-32.96 14.77-32.96 32.96S237.81 360 256 360s32.96-14.77 32.96-32.96-14.77-32.96-32.96-32.96zm0 6.14c14.81 0 26.82 12.01 26.82 26.82s-12.01 26.82-26.82 26.82-26.82-12.01-26.82-26.82 12.01-26.82 26.82-26.82zm-114.8 66.67c-10.19.07-21.6.36-30.5 1.66.43 4.42 1.51 18.63 7.11 29.76 9.11-2.56 18.36-3.9 27.62-3.9 41.28.94 71.48 34.35 78.26 74.47l.11 4.7c10.4 1.91 21.19 2.94 32.21 2.94 11.03 0 21.81-1.02 32.21-2.94l.11-4.7c6.78-40.12 36.98-73.53 78.26-74.47 9.26 0 18.51 1.34 27.62 3.9 5.6-11.13 6.68-25.34 7.11-29.76-8.9-1.3-20.32-1.58-30.5-1.66-18.76.42-35.19 4.17-48.61 9.67-12.54 16.03-29.16 30.03-49.58 33.07-.09.02-.17.04-.27.05-.05.01-.11.04-.16.05-5.24 1.07-10.63 1.6-16.19 1.6-5.55 0-10.95-.53-16.19-1.6-.05-.01-.11-.04-.16-.05-.1-.02-.17-.04-.27-.05-20.42-3.03-37.03-17.04-49.58-33.07-13.42-5.49-29.86-9.25-48.61-9.67z\"]\n};\nvar faGetPocket = {\n prefix: 'fab',\n iconName: 'get-pocket',\n icon: [448, 512, [], \"f265\", \"M407.6 64h-367C18.5 64 0 82.5 0 104.6v135.2C0 364.5 99.7 464 224.2 464c124 0 223.8-99.5 223.8-224.2V104.6c0-22.4-17.7-40.6-40.4-40.6zm-162 268.5c-12.4 11.8-31.4 11.1-42.4 0C89.5 223.6 88.3 227.4 88.3 209.3c0-16.9 13.8-30.7 30.7-30.7 17 0 16.1 3.8 105.2 89.3 90.6-86.9 88.6-89.3 105.5-89.3 16.9 0 30.7 13.8 30.7 30.7 0 17.8-2.9 15.7-114.8 123.2z\"]\n};\nvar faGg = {\n prefix: 'fab',\n iconName: 'gg',\n icon: [512, 512, [], \"f260\", \"M179.2 230.4l102.4 102.4-102.4 102.4L0 256 179.2 76.8l44.8 44.8-25.6 25.6-19.2-19.2-128 128 128 128 51.5-51.5-77.1-76.5 25.6-25.6zM332.8 76.8L230.4 179.2l102.4 102.4 25.6-25.6-77.1-76.5 51.5-51.5 128 128-128 128-19.2-19.2-25.6 25.6 44.8 44.8L512 256 332.8 76.8z\"]\n};\nvar faGgCircle = {\n prefix: 'fab',\n iconName: 'gg-circle',\n icon: [512, 512, [], \"f261\", \"M257 8C120 8 9 119 9 256s111 248 248 248 248-111 248-248S394 8 257 8zm-49.5 374.8L81.8 257.1l125.7-125.7 35.2 35.4-24.2 24.2-11.1-11.1-77.2 77.2 77.2 77.2 26.6-26.6-53.1-52.9 24.4-24.4 77.2 77.2-75 75.2zm99-2.2l-35.2-35.2 24.1-24.4 11.1 11.1 77.2-77.2-77.2-77.2-26.5 26.5 53.1 52.9-24.4 24.4-77.2-77.2 75-75L432.2 255 306.5 380.6z\"]\n};\nvar faGit = {\n prefix: 'fab',\n iconName: 'git',\n icon: [512, 512, [], \"f1d3\", \"M216.29 158.39H137C97 147.9 6.51 150.63 6.51 233.18c0 30.09 15 51.23 35 61-25.1 23-37 33.85-37 49.21 0 11 4.47 21.14 17.89 26.81C8.13 383.61 0 393.35 0 411.65c0 32.11 28.05 50.82 101.63 50.82 70.75 0 111.79-26.42 111.79-73.18 0-58.66-45.16-56.5-151.63-63l13.43-21.55c27.27 7.58 118.7 10 118.7-67.89 0-18.7-7.73-31.71-15-41.07l37.41-2.84zm-63.42 241.9c0 32.06-104.89 32.1-104.89 2.43 0-8.14 5.27-15 10.57-21.54 77.71 5.3 94.32 3.37 94.32 19.11zm-50.81-134.58c-52.8 0-50.46-71.16 1.2-71.16 49.54 0 50.82 71.16-1.2 71.16zm133.3 100.51v-32.1c26.75-3.66 27.24-2 27.24-11V203.61c0-8.5-2.05-7.38-27.24-16.26l4.47-32.92H324v168.71c0 6.51.4 7.32 6.51 8.14l20.73 2.84v32.1zm52.45-244.31c-23.17 0-36.59-13.43-36.59-36.61s13.42-35.77 36.59-35.77c23.58 0 37 12.62 37 35.77s-13.42 36.61-37 36.61zM512 350.46c-17.49 8.53-43.1 16.26-66.28 16.26-48.38 0-66.67-19.5-66.67-65.46V194.75c0-5.42 1.05-4.06-31.71-4.06V154.5c35.78-4.07 50-22 54.47-66.27h38.63c0 65.83-1.34 61.81 3.26 61.81H501v40.65h-60.56v97.15c0 6.92-4.92 51.41 60.57 26.84z\"]\n};\nvar faGitAlt = {\n prefix: 'fab',\n iconName: 'git-alt',\n icon: [448, 512, [], \"f841\", \"M439.55 236.05L244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z\"]\n};\nvar faGitSquare = {\n prefix: 'fab',\n iconName: 'git-square',\n icon: [448, 512, [], \"f1d2\", \"M100.59 334.24c48.57 3.31 58.95 2.11 58.95 11.94 0 20-65.55 20.06-65.55 1.52.01-5.09 3.29-9.4 6.6-13.46zm27.95-116.64c-32.29 0-33.75 44.47-.75 44.47 32.51 0 31.71-44.47.75-44.47zM448 80v352a48 48 0 0 1-48 48H48a48 48 0 0 1-48-48V80a48 48 0 0 1 48-48h352a48 48 0 0 1 48 48zm-227 69.31c0 14.49 8.38 22.88 22.86 22.88 14.74 0 23.13-8.39 23.13-22.88S258.62 127 243.88 127c-14.48 0-22.88 7.84-22.88 22.31zM199.18 195h-49.55c-25-6.55-81.56-4.85-81.56 46.75 0 18.8 9.4 32 21.85 38.11C74.23 294.23 66.8 301 66.8 310.6c0 6.87 2.79 13.22 11.18 16.76-8.9 8.4-14 14.48-14 25.92C64 373.35 81.53 385 127.52 385c44.22 0 69.87-16.51 69.87-45.73 0-36.67-28.23-35.32-94.77-39.38l8.38-13.43c17 4.74 74.19 6.23 74.19-42.43 0-11.69-4.83-19.82-9.4-25.67l23.38-1.78zm84.34 109.84l-13-1.78c-3.82-.51-4.07-1-4.07-5.09V192.52h-52.6l-2.79 20.57c15.75 5.55 17 4.86 17 10.17V298c0 5.62-.31 4.58-17 6.87v20.06h72.42zM384 315l-6.87-22.37c-40.93 15.37-37.85-12.41-37.85-16.73v-60.72h37.85v-25.41h-35.82c-2.87 0-2 2.52-2-38.63h-24.18c-2.79 27.7-11.68 38.88-34 41.42v22.62c20.47 0 19.82-.85 19.82 2.54v66.57c0 28.72 11.43 40.91 41.67 40.91 14.45 0 30.45-4.83 41.38-10.2z\"]\n};\nvar faGithub = {\n prefix: 'fab',\n iconName: 'github',\n icon: [496, 512, [], \"f09b\", \"M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z\"]\n};\nvar faGithubAlt = {\n prefix: 'fab',\n iconName: 'github-alt',\n icon: [480, 512, [], \"f113\", \"M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z\"]\n};\nvar faGithubSquare = {\n prefix: 'fab',\n iconName: 'github-square',\n icon: [448, 512, [], \"f092\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM277.3 415.7c-8.4 1.5-11.5-3.7-11.5-8 0-5.4.2-33 .2-55.3 0-15.6-5.2-25.5-11.3-30.7 37-4.1 76-9.2 76-73.1 0-18.2-6.5-27.3-17.1-39 1.7-4.3 7.4-22-1.7-45-13.9-4.3-45.7 17.9-45.7 17.9-13.2-3.7-27.5-5.6-41.6-5.6-14.1 0-28.4 1.9-41.6 5.6 0 0-31.8-22.2-45.7-17.9-9.1 22.9-3.5 40.6-1.7 45-10.6 11.7-15.6 20.8-15.6 39 0 63.6 37.3 69 74.3 73.1-4.8 4.3-9.1 11.7-10.6 22.3-9.5 4.3-33.8 11.7-48.3-13.9-9.1-15.8-25.5-17.1-25.5-17.1-16.2-.2-1.1 10.2-1.1 10.2 10.8 5 18.4 24.2 18.4 24.2 9.7 29.7 56.1 19.7 56.1 19.7 0 13.9.2 36.5.2 40.6 0 4.3-3 9.5-11.5 8-66-22.1-112.2-84.9-112.2-158.3 0-91.8 70.2-161.5 162-161.5S388 165.6 388 257.4c.1 73.4-44.7 136.3-110.7 158.3zm-98.1-61.1c-1.9.4-3.7-.4-3.9-1.7-.2-1.5 1.1-2.8 3-3.2 1.9-.2 3.7.6 3.9 1.9.3 1.3-1 2.6-3 3zm-9.5-.9c0 1.3-1.5 2.4-3.5 2.4-2.2.2-3.7-.9-3.7-2.4 0-1.3 1.5-2.4 3.5-2.4 1.9-.2 3.7.9 3.7 2.4zm-13.7-1.1c-.4 1.3-2.4 1.9-4.1 1.3-1.9-.4-3.2-1.9-2.8-3.2.4-1.3 2.4-1.9 4.1-1.5 2 .6 3.3 2.1 2.8 3.4zm-12.3-5.4c-.9 1.1-2.8.9-4.3-.6-1.5-1.3-1.9-3.2-.9-4.1.9-1.1 2.8-.9 4.3.6 1.3 1.3 1.8 3.3.9 4.1zm-9.1-9.1c-.9.6-2.6 0-3.7-1.5s-1.1-3.2 0-3.9c1.1-.9 2.8-.2 3.7 1.3 1.1 1.5 1.1 3.3 0 4.1zm-6.5-9.7c-.9.9-2.4.4-3.5-.6-1.1-1.3-1.3-2.8-.4-3.5.9-.9 2.4-.4 3.5.6 1.1 1.3 1.3 2.8.4 3.5zm-6.7-7.4c-.4.9-1.7 1.1-2.8.4-1.3-.6-1.9-1.7-1.5-2.6.4-.6 1.5-.9 2.8-.4 1.3.7 1.9 1.8 1.5 2.6z\"]\n};\nvar faGitkraken = {\n prefix: 'fab',\n iconName: 'gitkraken',\n icon: [592, 512, [], \"f3a6\", \"M565.7 118.1c-2.3-6.1-9.3-9.2-15.3-6.6-5.7 2.4-8.5 8.9-6.3 14.6 10.9 29 16.9 60.5 16.9 93.3 0 134.6-100.3 245.7-230.2 262.7V358.4c7.9-1.5 15.5-3.6 23-6.2v104c106.7-25.9 185.9-122.1 185.9-236.8 0-91.8-50.8-171.8-125.8-213.3-5.7-3.2-13-.9-15.9 5-2.7 5.5-.6 12.2 4.7 15.1 67.9 37.6 113.9 110 113.9 193.2 0 93.3-57.9 173.1-139.8 205.4v-92.2c14.2-4.5 24.9-17.7 24.9-33.5 0-13.1-6.8-24.4-17.3-30.5 8.3-79.5 44.5-58.6 44.5-83.9V170c0-38-87.9-161.8-129-164.7-2.5-.2-5-.2-7.6 0C251.1 8.3 163.2 132 163.2 170v14.8c0 25.3 36.3 4.3 44.5 83.9-10.6 6.1-17.3 17.4-17.3 30.5 0 15.8 10.6 29 24.8 33.5v92.2c-81.9-32.2-139.8-112-139.8-205.4 0-83.1 46-155.5 113.9-193.2 5.4-3 7.4-9.6 4.7-15.1-2.9-5.9-10.1-8.2-15.9-5-75 41.5-125.8 121.5-125.8 213.3 0 114.7 79.2 210.8 185.9 236.8v-104c7.6 2.5 15.1 4.6 23 6.2v123.7C131.4 465.2 31 354.1 31 219.5c0-32.8 6-64.3 16.9-93.3 2.2-5.8-.6-12.2-6.3-14.6-6-2.6-13 .4-15.3 6.6C14.5 149.7 8 183.8 8 219.5c0 155.1 122.6 281.6 276.3 287.8V361.4c6.8.4 15 .5 23.4 0v145.8C461.4 501.1 584 374.6 584 219.5c0-35.7-6.5-69.8-18.3-101.4zM365.9 275.5c13 0 23.7 10.5 23.7 23.7 0 13.1-10.6 23.7-23.7 23.7-13 0-23.7-10.5-23.7-23.7 0-13.1 10.6-23.7 23.7-23.7zm-139.8 47.3c-13.2 0-23.7-10.7-23.7-23.7s10.5-23.7 23.7-23.7c13.1 0 23.7 10.6 23.7 23.7 0 13-10.5 23.7-23.7 23.7z\"]\n};\nvar faGitlab = {\n prefix: 'fab',\n iconName: 'gitlab',\n icon: [512, 512, [], \"f296\", \"M105.2 24.9c-3.1-8.9-15.7-8.9-18.9 0L29.8 199.7h132c-.1 0-56.6-174.8-56.6-174.8zM.9 287.7c-2.6 8 .3 16.9 7.1 22l247.9 184-226.2-294zm160.8-88l94.3 294 94.3-294zm349.4 88l-28.8-88-226.3 294 247.9-184c6.9-5.1 9.7-14 7.2-22zM425.7 24.9c-3.1-8.9-15.7-8.9-18.9 0l-56.6 174.8h132z\"]\n};\nvar faGitter = {\n prefix: 'fab',\n iconName: 'gitter',\n icon: [384, 512, [], \"f426\", \"M66.4 322.5H16V0h50.4v322.5zM166.9 76.1h-50.4V512h50.4V76.1zm100.6 0h-50.4V512h50.4V76.1zM368 76h-50.4v247H368V76z\"]\n};\nvar faGlide = {\n prefix: 'fab',\n iconName: 'glide',\n icon: [448, 512, [], \"f2a5\", \"M252.8 148.6c0 8.8-1.6 17.7-3.4 26.4-5.8 27.8-11.6 55.8-17.3 83.6-1.4 6.3-8.3 4.9-13.7 4.9-23.8 0-30.5-26-30.5-45.5 0-29.3 11.2-68.1 38.5-83.1 4.3-2.5 9.2-4.2 14.1-4.2 11.4 0 12.3 8.3 12.3 17.9zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-64 187c0-5.1-20.8-37.7-25.5-39.5-2.2-.9-7.2-2.3-9.6-2.3-23.1 0-38.7 10.5-58.2 21.5l-.5-.5c4.3-29.4 14.6-57.2 14.6-87.4 0-44.6-23.8-62.7-67.5-62.7-71.7 0-108 70.8-108 123.5 0 54.7 32 85 86.3 85 7.5 0 6.9-.6 6.9 2.3-10.5 80.3-56.5 82.9-56.5 58.9 0-24.4 28-36.5 28.3-38-.2-7.6-29.3-17.2-36.7-17.2-21.1 0-32.7 33-32.7 50.6 0 32.3 20.4 54.7 53.3 54.7 48.2 0 83.4-49.7 94.3-91.7 9.4-37.7 7-39.4 12.3-42.1 20-10.1 35.8-16.8 58.4-16.8 11.1 0 19 2.3 36.7 5.2 1.8.1 4.1-1.7 4.1-3.5z\"]\n};\nvar faGlideG = {\n prefix: 'fab',\n iconName: 'glide-g',\n icon: [448, 512, [], \"f2a6\", \"M407.1 211.2c-3.5-1.4-11.6-3.8-15.4-3.8-37.1 0-62.2 16.8-93.5 34.5l-.9-.9c7-47.3 23.5-91.9 23.5-140.4C320.8 29.1 282.6 0 212.4 0 97.3 0 39 113.7 39 198.4 39 286.3 90.3 335 177.6 335c12 0 11-1 11 3.8-16.9 128.9-90.8 133.1-90.8 94.6 0-39.2 45-58.6 45.5-61-.3-12.2-47-27.6-58.9-27.6-33.9.1-52.4 51.2-52.4 79.3C32 476 64.8 512 117.5 512c77.4 0 134-77.8 151.4-145.4 15.1-60.5 11.2-63.3 19.7-67.6 32.2-16.2 57.5-27 93.8-27 17.8 0 30.5 3.7 58.9 8.4 2.9 0 6.7-2.9 6.7-5.8 0-8-33.4-60.5-40.9-63.4zm-175.3-84.4c-9.3 44.7-18.6 89.6-27.8 134.3-2.3 10.2-13.3 7.8-22 7.8-38.3 0-49-41.8-49-73.1 0-47 18-109.3 61.8-133.4 7-4.1 14.8-6.7 22.6-6.7 18.6 0 20 13.3 20 28.7-.1 14.3-2.7 28.5-5.6 42.4z\"]\n};\nvar faGofore = {\n prefix: 'fab',\n iconName: 'gofore',\n icon: [400, 512, [], \"f3a7\", \"M324 319.8h-13.2v34.7c-24.5 23.1-56.3 35.8-89.9 35.8-73.2 0-132.4-60.2-132.4-134.4 0-74.1 59.2-134.4 132.4-134.4 35.3 0 68.6 14 93.6 39.4l62.3-63.3C335 55.3 279.7 32 220.7 32 98 32 0 132.6 0 256c0 122.5 97 224 220.7 224 63.2 0 124.5-26.2 171-82.5-2-27.6-13.4-77.7-67.7-77.7zm-12.1-112.5H205.6v89H324c33.5 0 60.5 15.1 76 41.8v-30.6c0-65.2-40.4-100.2-88.1-100.2z\"]\n};\nvar faGoodreads = {\n prefix: 'fab',\n iconName: 'goodreads',\n icon: [448, 512, [], \"f3a8\", \"M299.9 191.2c5.1 37.3-4.7 79-35.9 100.7-22.3 15.5-52.8 14.1-70.8 5.7-37.1-17.3-49.5-58.6-46.8-97.2 4.3-60.9 40.9-87.9 75.3-87.5 46.9-.2 71.8 31.8 78.2 78.3zM448 88v336c0 30.9-25.1 56-56 56H56c-30.9 0-56-25.1-56-56V88c0-30.9 25.1-56 56-56h336c30.9 0 56 25.1 56 56zM330 313.2s-.1-34-.1-217.3h-29v40.3c-.8.3-1.2-.5-1.6-1.2-9.6-20.7-35.9-46.3-76-46-51.9.4-87.2 31.2-100.6 77.8-4.3 14.9-5.8 30.1-5.5 45.6 1.7 77.9 45.1 117.8 112.4 115.2 28.9-1.1 54.5-17 69-45.2.5-1 1.1-1.9 1.7-2.9.2.1.4.1.6.2.3 3.8.2 30.7.1 34.5-.2 14.8-2 29.5-7.2 43.5-7.8 21-22.3 34.7-44.5 39.5-17.8 3.9-35.6 3.8-53.2-1.2-21.5-6.1-36.5-19-41.1-41.8-.3-1.6-1.3-1.3-2.3-1.3h-26.8c.8 10.6 3.2 20.3 8.5 29.2 24.2 40.5 82.7 48.5 128.2 37.4 49.9-12.3 67.3-54.9 67.4-106.3z\"]\n};\nvar faGoodreadsG = {\n prefix: 'fab',\n iconName: 'goodreads-g',\n icon: [384, 512, [], \"f3a9\", \"M42.6 403.3h2.8c12.7 0 25.5 0 38.2.1 1.6 0 3.1-.4 3.6 2.1 7.1 34.9 30 54.6 62.9 63.9 26.9 7.6 54.1 7.8 81.3 1.8 33.8-7.4 56-28.3 68-60.4 8-21.5 10.7-43.8 11-66.5.1-5.8.3-47-.2-52.8l-.9-.3c-.8 1.5-1.7 2.9-2.5 4.4-22.1 43.1-61.3 67.4-105.4 69.1-103 4-169.4-57-172-176.2-.5-23.7 1.8-46.9 8.3-69.7C58.3 47.7 112.3.6 191.6 0c61.3-.4 101.5 38.7 116.2 70.3.5 1.1 1.3 2.3 2.4 1.9V10.6h44.3c0 280.3.1 332.2.1 332.2-.1 78.5-26.7 143.7-103 162.2-69.5 16.9-159 4.8-196-57.2-8-13.5-11.8-28.3-13-44.5zM188.9 36.5c-52.5-.5-108.5 40.7-115 133.8-4.1 59 14.8 122.2 71.5 148.6 27.6 12.9 74.3 15 108.3-8.7 47.6-33.2 62.7-97 54.8-154-9.7-71.1-47.8-120-119.6-119.7z\"]\n};\nvar faGoogle = {\n prefix: 'fab',\n iconName: 'google',\n icon: [488, 512, [], \"f1a0\", \"M488 261.8C488 403.3 391.1 504 248 504 110.8 504 0 393.2 0 256S110.8 8 248 8c66.8 0 123 24.5 166.3 64.9l-67.5 64.9C258.5 52.6 94.3 116.6 94.3 256c0 86.5 69.1 156.6 153.7 156.6 98.2 0 135-70.4 140.8-106.9H248v-85.3h236.1c2.3 12.7 3.9 24.9 3.9 41.4z\"]\n};\nvar faGoogleDrive = {\n prefix: 'fab',\n iconName: 'google-drive',\n icon: [512, 512, [], \"f3aa\", \"M339 314.9L175.4 32h161.2l163.6 282.9H339zm-137.5 23.6L120.9 480h310.5L512 338.5H201.5zM154.1 67.4L0 338.5 80.6 480 237 208.8 154.1 67.4z\"]\n};\nvar faGooglePay = {\n prefix: 'fab',\n iconName: 'google-pay',\n icon: [640, 512, [], \"e079\", \"M105.72,215v41.25h57.1a49.66,49.66,0,0,1-21.14,32.6c-9.54,6.55-21.72,10.28-36,10.28-27.6,0-50.93-18.91-59.3-44.22a65.61,65.61,0,0,1,0-41l0,0c8.37-25.46,31.7-44.37,59.3-44.37a56.43,56.43,0,0,1,40.51,16.08L176.47,155a101.24,101.24,0,0,0-70.75-27.84,105.55,105.55,0,0,0-94.38,59.11,107.64,107.64,0,0,0,0,96.18v.15a105.41,105.41,0,0,0,94.38,59c28.47,0,52.55-9.53,70-25.91,20-18.61,31.41-46.15,31.41-78.91A133.76,133.76,0,0,0,205.38,215Zm389.41-4c-10.13-9.38-23.93-14.14-41.39-14.14-22.46,0-39.34,8.34-50.5,24.86l20.85,13.26q11.45-17,31.26-17a34.05,34.05,0,0,1,22.75,8.79A28.14,28.14,0,0,1,487.79,248v5.51c-9.1-5.07-20.55-7.75-34.64-7.75-16.44,0-29.65,3.88-39.49,11.77s-14.82,18.31-14.82,31.56a39.74,39.74,0,0,0,13.94,31.27c9.25,8.34,21,12.51,34.79,12.51,16.29,0,29.21-7.3,39-21.89h1v17.72h22.61V250C510.25,233.45,505.26,220.34,495.13,211ZM475.9,300.3a37.32,37.32,0,0,1-26.57,11.16A28.61,28.61,0,0,1,431,305.21a19.41,19.41,0,0,1-7.77-15.63c0-7,3.22-12.81,9.54-17.42s14.53-7,24.07-7C470,265,480.3,268,487.64,273.94,487.64,284.07,483.68,292.85,475.9,300.3Zm-93.65-142A55.71,55.71,0,0,0,341.74,142H279.07V328.74H302.7V253.1h39c16,0,29.5-5.36,40.51-15.93.88-.89,1.76-1.79,2.65-2.68A54.45,54.45,0,0,0,382.25,158.26Zm-16.58,62.23a30.65,30.65,0,0,1-23.34,9.68H302.7V165h39.63a32,32,0,0,1,22.6,9.23A33.18,33.18,0,0,1,365.67,220.49ZM614.31,201,577.77,292.7h-.45L539.9,201H514.21L566,320.55l-29.35,64.32H561L640,201Z\"]\n};\nvar faGooglePlay = {\n prefix: 'fab',\n iconName: 'google-play',\n icon: [512, 512, [], \"f3ab\", \"M325.3 234.3L104.6 13l280.8 161.2-60.1 60.1zM47 0C34 6.8 25.3 19.2 25.3 35.3v441.3c0 16.1 8.7 28.5 21.7 35.3l256.6-256L47 0zm425.2 225.6l-58.9-34.1-65.7 64.5 65.7 64.5 60.1-34.1c18-14.3 18-46.5-1.2-60.8zM104.6 499l280.8-161.2-60.1-60.1L104.6 499z\"]\n};\nvar faGooglePlus = {\n prefix: 'fab',\n iconName: 'google-plus',\n icon: [512, 512, [], \"f2b3\", \"M256,8C119.1,8,8,119.1,8,256S119.1,504,256,504,504,392.9,504,256,392.9,8,256,8ZM185.3,380a124,124,0,0,1,0-248c31.3,0,60.1,11,83,32.3l-33.6,32.6c-13.2-12.9-31.3-19.1-49.4-19.1-42.9,0-77.2,35.5-77.2,78.1S142.3,334,185.3,334c32.6,0,64.9-19.1,70.1-53.3H185.3V238.1H302.2a109.2,109.2,0,0,1,1.9,20.7c0,70.8-47.5,121.2-118.8,121.2ZM415.5,273.8v35.5H380V273.8H344.5V238.3H380V202.8h35.5v35.5h35.2v35.5Z\"]\n};\nvar faGooglePlusG = {\n prefix: 'fab',\n iconName: 'google-plus-g',\n icon: [640, 512, [], \"f0d5\", \"M386.061 228.496c1.834 9.692 3.143 19.384 3.143 31.956C389.204 370.205 315.599 448 204.8 448c-106.084 0-192-85.915-192-192s85.916-192 192-192c51.864 0 95.083 18.859 128.611 50.292l-52.126 50.03c-14.145-13.621-39.028-29.599-76.485-29.599-65.484 0-118.92 54.221-118.92 121.277 0 67.056 53.436 121.277 118.92 121.277 75.961 0 104.513-54.745 108.965-82.773H204.8v-66.009h181.261zm185.406 6.437V179.2h-56.001v55.733h-55.733v56.001h55.733v55.733h56.001v-55.733H627.2v-56.001h-55.733z\"]\n};\nvar faGooglePlusSquare = {\n prefix: 'fab',\n iconName: 'google-plus-square',\n icon: [448, 512, [], \"f0d4\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM164 356c-55.3 0-100-44.7-100-100s44.7-100 100-100c27 0 49.5 9.8 67 26.2l-27.1 26.1c-7.4-7.1-20.3-15.4-39.8-15.4-34.1 0-61.9 28.2-61.9 63.2 0 34.9 27.8 63.2 61.9 63.2 39.6 0 54.4-28.5 56.8-43.1H164v-34.4h94.4c1 5 1.6 10.1 1.6 16.6 0 57.1-38.3 97.6-96 97.6zm220-81.8h-29v29h-29.2v-29h-29V245h29v-29H355v29h29v29.2z\"]\n};\nvar faGoogleWallet = {\n prefix: 'fab',\n iconName: 'google-wallet',\n icon: [448, 512, [], \"f1ee\", \"M156.8 126.8c37.6 60.6 64.2 113.1 84.3 162.5-8.3 33.8-18.8 66.5-31.3 98.3-13.2-52.3-26.5-101.3-56-148.5 6.5-36.4 2.3-73.6 3-112.3zM109.3 200H16.1c-6.5 0-10.5 7.5-6.5 12.7C51.8 267 81.3 330.5 101.3 400h103.5c-16.2-69.7-38.7-133.7-82.5-193.5-3-4-8-6.5-13-6.5zm47.8-88c68.5 108 130 234.5 138.2 368H409c-12-138-68.4-265-143.2-368H157.1zm251.8-68.5c-1.8-6.8-8.2-11.5-15.2-11.5h-88.3c-5.3 0-9 5-7.8 10.3 13.2 46.5 22.3 95.5 26.5 146 48.2 86.2 79.7 178.3 90.6 270.8 15.8-60.5 25.3-133.5 25.3-203 0-73.6-12.1-145.1-31.1-212.6z\"]\n};\nvar faGratipay = {\n prefix: 'fab',\n iconName: 'gratipay',\n icon: [496, 512, [], \"f184\", \"M248 8C111.1 8 0 119.1 0 256s111.1 248 248 248 248-111.1 248-248S384.9 8 248 8zm114.6 226.4l-113 152.7-112.7-152.7c-8.7-11.9-19.1-50.4 13.6-72 28.1-18.1 54.6-4.2 68.5 11.9 15.9 17.9 46.6 16.9 61.7 0 13.9-16.1 40.4-30 68.1-11.9 32.9 21.6 22.6 60 13.8 72z\"]\n};\nvar faGrav = {\n prefix: 'fab',\n iconName: 'grav',\n icon: [512, 512, [], \"f2d6\", \"M301.1 212c4.4 4.4 4.4 11.9 0 16.3l-9.7 9.7c-4.4 4.7-11.9 4.7-16.6 0l-10.5-10.5c-4.4-4.7-4.4-11.9 0-16.6l9.7-9.7c4.4-4.4 11.9-4.4 16.6 0l10.5 10.8zm-30.2-19.7c3-3 3-7.8 0-10.5-2.8-3-7.5-3-10.5 0-2.8 2.8-2.8 7.5 0 10.5 3.1 2.8 7.8 2.8 10.5 0zm-26 5.3c-3 2.8-3 7.5 0 10.2 2.8 3 7.5 3 10.5 0 2.8-2.8 2.8-7.5 0-10.2-3-3-7.7-3-10.5 0zm72.5-13.3c-19.9-14.4-33.8-43.2-11.9-68.1 21.6-24.9 40.7-17.2 59.8.8 11.9 11.3 29.3 24.9 17.2 48.2-12.5 23.5-45.1 33.2-65.1 19.1zm47.7-44.5c-8.9-10-23.3 6.9-15.5 16.1 7.4 9 32.1 2.4 15.5-16.1zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-66.2 42.6c2.5-16.1-20.2-16.6-25.2-25.7-13.6-24.1-27.7-36.8-54.5-30.4 11.6-8 23.5-6.1 23.5-6.1.3-6.4 0-13-9.4-24.9 3.9-12.5.3-22.4.3-22.4 15.5-8.6 26.8-24.4 29.1-43.2 3.6-31-18.8-59.2-49.8-62.8-22.1-2.5-43.7 7.7-54.3 25.7-23.2 40.1 1.4 70.9 22.4 81.4-14.4-1.4-34.3-11.9-40.1-34.3-6.6-25.7 2.8-49.8 8.9-61.4 0 0-4.4-5.8-8-8.9 0 0-13.8 0-24.6 5.3 11.9-15.2 25.2-14.4 25.2-14.4 0-6.4-.6-14.9-3.6-21.6-5.4-11-23.8-12.9-31.7 2.8.1-.2.3-.4.4-.5-5 11.9-1.1 55.9 16.9 87.2-2.5 1.4-9.1 6.1-13 10-21.6 9.7-56.2 60.3-56.2 60.3-28.2 10.8-77.2 50.9-70.6 79.7.3 3 1.4 5.5 3 7.5-2.8 2.2-5.5 5-8.3 8.3-11.9 13.8-5.3 35.2 17.7 24.4 15.8-7.2 29.6-20.2 36.3-30.4 0 0-5.5-5-16.3-4.4 27.7-6.6 34.3-9.4 46.2-9.1 8 3.9 8-34.3 8-34.3 0-14.7-2.2-31-11.1-41.5 12.5 12.2 29.1 32.7 28 60.6-.8 18.3-15.2 23-15.2 23-9.1 16.6-43.2 65.9-30.4 106 0 0-9.7-14.9-10.2-22.1-17.4 19.4-46.5 52.3-24.6 64.5 26.6 14.7 108.8-88.6 126.2-142.3 34.6-20.8 55.4-47.3 63.9-65 22 43.5 95.3 94.5 101.1 59z\"]\n};\nvar faGripfire = {\n prefix: 'fab',\n iconName: 'gripfire',\n icon: [384, 512, [], \"f3ac\", \"M112.5 301.4c0-73.8 105.1-122.5 105.1-203 0-47.1-34-88-39.1-90.4.4 3.3.6 6.7.6 10C179.1 110.1 32 171.9 32 286.6c0 49.8 32.2 79.2 66.5 108.3 65.1 46.7 78.1 71.4 78.1 86.6 0 10.1-4.8 17-4.8 22.3 13.1-16.7 17.4-31.9 17.5-46.4 0-29.6-21.7-56.3-44.2-86.5-16-22.3-32.6-42.6-32.6-69.5zm205.3-39c-12.1-66.8-78-124.4-94.7-130.9l4 7.2c2.4 5.1 3.4 10.9 3.4 17.1 0 44.7-54.2 111.2-56.6 116.7-2.2 5.1-3.2 10.5-3.2 15.8 0 20.1 15.2 42.1 17.9 42.1 2.4 0 56.6-55.4 58.1-87.7 6.4 11.7 9.1 22.6 9.1 33.4 0 41.2-41.8 96.9-41.8 96.9 0 11.6 31.9 53.2 35.5 53.2 1 0 2.2-1.4 3.2-2.4 37.9-39.3 67.3-85 67.3-136.8 0-8-.7-16.2-2.2-24.6z\"]\n};\nvar faGrunt = {\n prefix: 'fab',\n iconName: 'grunt',\n icon: [384, 512, [], \"f3ad\", \"M61.3 189.3c-1.1 10 5.2 19.1 5.2 19.1.7-7.5 2.2-12.8 4-16.6.4 10.3 3.2 23.5 12.8 34.1 6.9 7.6 35.6 23.3 54.9 6.1 1 2.4 2.1 5.3 3 8.5 2.9 10.3-2.7 25.3-2.7 25.3s15.1-17.1 13.9-32.5c10.8-.5 21.4-8.4 21.1-19.5 0 0-18.9 10.4-35.5-8.8-9.7-11.2-40.9-42-83.1-31.8 4.3 1 8.9 2.4 13.5 4.1h-.1c-4.2 2-6.5 7.1-7 12zm28.3-1.8c19.5 11 37.4 25.7 44.9 37-5.7 3.3-21.7 10.4-38-1.7-10.3-7.6-9.8-26.2-6.9-35.3zm142.1 45.8c-1.2 15.5 13.9 32.5 13.9 32.5s-5.6-15-2.7-25.3c.9-3.2 2-6 3-8.5 19.3 17.3 48 1.5 54.8-6.1 9.6-10.6 12.3-23.8 12.8-34.1 1.8 3.8 3.4 9.1 4 16.6 0 0 6.4-9.1 5.2-19.1-.6-5-2.9-10-7-11.8h-.1c4.6-1.8 9.2-3.2 13.5-4.1-42.3-10.2-73.4 20.6-83.1 31.8-16.7 19.2-35.5 8.8-35.5 8.8-.2 10.9 10.4 18.9 21.2 19.3zm62.7-45.8c3 9.1 3.4 27.7-7 35.4-16.3 12.1-32.2 5-37.9 1.6 7.5-11.4 25.4-26 44.9-37zM160 418.5h-29.4c-5.5 0-8.2 1.6-9.5 2.9-1.9 2-2.2 4.7-.9 8.1 3.5 9.1 11.4 16.5 13.7 18.6 3.1 2.7 7.5 4.3 11.8 4.3 4.4 0 8.3-1.7 11-4.6 7.5-8.2 11.9-17.1 13-19.8.6-1.5 1.3-4.5-.9-6.8-1.8-1.8-4.7-2.7-8.8-2.7zm189.2-101.2c-2.4 17.9-13 33.8-24.6 43.7-3.1-22.7-3.7-55.5-3.7-62.4 0-14.7 9.5-24.5 12.2-26.1 2.5-1.5 5.4-3 8.3-4.6 18-9.6 40.4-21.6 40.4-43.7 0-16.2-9.3-23.2-15.4-27.8-.8-.6-1.5-1.1-2.2-1.7-2.1-1.7-3.7-3-4.3-4.4-4.4-9.8-3.6-34.2-1.7-37.6.6-.6 16.7-20.9 11.8-39.2-2-7.4-6.9-13.3-14.1-17-5.3-2.7-11.9-4.2-19.5-4.5-.1-2-.5-3.9-.9-5.9-.6-2.6-1.1-5.3-.9-8.1.4-4.7.8-9 2.2-11.3 8.4-13.3 28.8-17.6 29-17.6l12.3-2.4-8.1-9.5c-.1-.2-17.3-17.5-46.3-17.5-7.9 0-16 1.3-24.1 3.9-24.2 7.8-42.9 30.5-49.4 39.3-3.1-1-6.3-1.9-9.6-2.7-4.2-15.8 9-38.5 9-38.5s-13.6-3-33.7 15.2c-2.6-6.5-8.1-20.5-1.8-37.2C184.6 10.1 177.2 26 175 40.4c-7.6-5.4-6.7-23.1-7.2-27.6-7.5.9-29.2 21.9-28.2 48.3-2 .5-3.9 1.1-5.9 1.7-6.5-8.8-25.1-31.5-49.4-39.3-7.9-2.2-16-3.5-23.9-3.5-29 0-46.1 17.3-46.3 17.5L6 46.9l12.3 2.4c.2 0 20.6 4.3 29 17.6 1.4 2.2 1.8 6.6 2.2 11.3.2 2.8-.4 5.5-.9 8.1-.4 1.9-.8 3.9-.9 5.9-7.7.3-14.2 1.8-19.5 4.5-7.2 3.7-12.1 9.6-14.1 17-5 18.2 11.2 38.5 11.8 39.2 1.9 3.4 2.7 27.8-1.7 37.6-.6 1.4-2.2 2.7-4.3 4.4-.7.5-1.4 1.1-2.2 1.7-6.1 4.6-15.4 11.7-15.4 27.8 0 22.1 22.4 34.1 40.4 43.7 3 1.6 5.8 3.1 8.3 4.6 2.7 1.6 12.2 11.4 12.2 26.1 0 6.9-.6 39.7-3.7 62.4-11.6-9.9-22.2-25.9-24.6-43.8 0 0-29.2 22.6-20.6 70.8 5.2 29.5 23.2 46.1 47 54.7 8.8 19.1 29.4 45.7 67.3 49.6C143 504.3 163 512 192.2 512h.2c29.1 0 49.1-7.7 63.6-19.5 37.9-3.9 58.5-30.5 67.3-49.6 23.8-8.7 41.7-25.2 47-54.7 8.2-48.4-21.1-70.9-21.1-70.9zM305.7 37.7c5.6-1.8 11.6-2.7 17.7-2.7 11 0 19.9 3 24.7 5-3.1 1.4-6.4 3.2-9.7 5.3-2.4-.4-5.6-.8-9.2-.8-10.5 0-20.5 3.1-28.7 8.9-12.3 8.7-18 16.9-20.7 22.4-2.2-1.3-4.5-2.5-7.1-3.7-1.6-.8-3.1-1.5-4.7-2.2 6.1-9.1 19.9-26.5 37.7-32.2zm21 18.2c-.8 1-1.6 2.1-2.3 3.2-3.3 5.2-3.9 11.6-4.4 17.8-.5 6.4-1.1 12.5-4.4 17-4.2.8-8.1 1.7-11.5 2.7-2.3-3.1-5.6-7-10.5-11.2 1.4-4.8 5.5-16.1 13.5-22.5 5.6-4.3 12.2-6.7 19.6-7zM45.6 45.3c-3.3-2.2-6.6-4-9.7-5.3 4.8-2 13.7-5 24.7-5 6.1 0 12 .9 17.7 2.7 17.8 5.8 31.6 23.2 37.7 32.1-1.6.7-3.2 1.4-4.8 2.2-2.5 1.2-4.9 2.5-7.1 3.7-2.6-5.4-8.3-13.7-20.7-22.4-8.3-5.8-18.2-8.9-28.8-8.9-3.4.1-6.6.5-9 .9zm44.7 40.1c-4.9 4.2-8.3 8-10.5 11.2-3.4-.9-7.3-1.9-11.5-2.7C65 89.5 64.5 83.4 64 77c-.5-6.2-1.1-12.6-4.4-17.8-.7-1.1-1.5-2.2-2.3-3.2 7.4.3 14 2.6 19.5 7 8 6.3 12.1 17.6 13.5 22.4zM58.1 259.9c-2.7-1.6-5.6-3.1-8.4-4.6-14.9-8-30.2-16.3-30.2-30.5 0-11.1 4.3-14.6 8.9-18.2l.5-.4c.7-.6 1.4-1.2 2.2-1.8-.9 7.2-1.9 13.3-2.7 14.9 0 0 12.1-15 15.7-44.3 1.4-11.5-1.1-34.3-5.1-43 .2 4.9 0 9.8-.3 14.4-.4-.8-.8-1.6-1.3-2.2-3.2-4-11.8-17.5-9.4-26.6.9-3.5 3.1-6 6.7-7.8 3.8-1.9 8.8-2.9 15.1-2.9 12.3 0 25.9 3.7 32.9 6 25.1 8 55.4 30.9 64.1 37.7.2.2.4.3.4.3l5.6 3.9-3.5-5.8c-.2-.3-19.1-31.4-53.2-46.5 2-2.9 7.4-8.1 21.6-15.1 21.4-10.5 46.5-15.8 74.3-15.8 27.9 0 52.9 5.3 74.3 15.8 14.2 6.9 19.6 12.2 21.6 15.1-34 15.1-52.9 46.2-53.1 46.5l-3.5 5.8 5.6-3.9s.2-.1.4-.3c8.7-6.8 39-29.8 64.1-37.7 7-2.2 20.6-6 32.9-6 6.3 0 11.3 1 15.1 2.9 3.5 1.8 5.7 4.4 6.7 7.8 2.5 9.1-6.1 22.6-9.4 26.6-.5.6-.9 1.3-1.3 2.2-.3-4.6-.5-9.5-.3-14.4-4 8.8-6.5 31.5-5.1 43 3.6 29.3 15.7 44.3 15.7 44.3-.8-1.6-1.8-7.7-2.7-14.9.7.6 1.5 1.2 2.2 1.8l.5.4c4.6 3.7 8.9 7.1 8.9 18.2 0 14.2-15.4 22.5-30.2 30.5-2.9 1.5-5.7 3.1-8.4 4.6-8.7 5-18 16.7-19.1 34.2-.9 14.6.9 49.9 3.4 75.9-12.4 4.8-26.7 6.4-39.7 6.8-2-4.1-3.9-8.5-5.5-13.1-.7-2-19.6-51.1-26.4-62.2 5.5 39 17.5 73.7 23.5 89.6-3.5-.5-7.3-.7-11.7-.7h-117c-4.4 0-8.3.3-11.7.7 6-15.9 18.1-50.6 23.5-89.6-6.8 11.2-25.7 60.3-26.4 62.2-1.6 4.6-3.5 9-5.5 13.1-13-.4-27.2-2-39.7-6.8 2.5-26 4.3-61.2 3.4-75.9-.9-17.4-10.3-29.2-19-34.2zM34.8 404.6c-12.1-20-8.7-54.1-3.7-59.1 10.9 34.4 47.2 44.3 74.4 45.4-2.7 4.2-5.2 7.6-7 10l-1.4 1.4c-7.2 7.8-8.6 18.5-4.1 31.8-22.7-.1-46.3-9.8-58.2-29.5zm45.7 43.5c6 1.1 12.2 1.9 18.6 2.4 3.5 8 7.4 15.9 12.3 23.1-14.4-5.9-24.4-16-30.9-25.5zM192 498.2c-60.6-.1-78.3-45.8-84.9-64.7-3.7-10.5-3.4-18.2.9-23.1 2.9-3.3 9.5-7.2 24.6-7.2h118.8c15.1 0 21.8 3.9 24.6 7.2 4.2 4.8 4.5 12.6.9 23.1-6.6 18.8-24.3 64.6-84.9 64.7zm80.6-24.6c4.9-7.2 8.8-15.1 12.3-23.1 6.4-.5 12.6-1.3 18.6-2.4-6.5 9.5-16.5 19.6-30.9 25.5zm76.6-69c-12 19.7-35.6 29.3-58.1 29.7 4.5-13.3 3.1-24.1-4.1-31.8-.4-.5-.9-1-1.4-1.5-1.8-2.4-4.3-5.8-7-10 27.2-1.2 63.5-11 74.4-45.4 5 5 8.4 39.1-3.8 59zM191.9 187.7h.2c12.7-.1 27.2-17.8 27.2-17.8-9.9 6-18.8 8.1-27.3 8.3-8.5-.2-17.4-2.3-27.3-8.3 0 0 14.5 17.6 27.2 17.8zm61.7 230.7h-29.4c-4.2 0-7.2.9-8.9 2.7-2.2 2.3-1.5 5.2-.9 6.7 1 2.6 5.5 11.3 13 19.3 2.7 2.9 6.6 4.5 11 4.5s8.7-1.6 11.8-4.2c2.3-2 10.2-9.2 13.7-18.1 1.3-3.3 1-6-.9-7.9-1.3-1.3-4-2.9-9.4-3z\"]\n};\nvar faGuilded = {\n prefix: 'fab',\n iconName: 'guilded',\n icon: [448, 512, [], \"e07e\", \"M443.427,64H4.571c0,103.26,22.192,180.06,43.418,222.358C112.046,414.135,224,448,225.256,448a312.824,312.824,0,0,0,140.55-103.477c25.907-33.923,53.1-87.19,65.916-145.761H171.833c4.14,36.429,22.177,67.946,45.1,86.944h88.589c-17.012,28.213-48.186,54.4-80.456,69.482-31.232-13.259-69.09-46.544-96.548-98.362-26.726-53.833-27.092-105.883-27.092-105.883H437.573A625.91,625.91,0,0,0,443.427,64Z\"]\n};\nvar faGulp = {\n prefix: 'fab',\n iconName: 'gulp',\n icon: [256, 512, [], \"f3ae\", \"M209.8 391.1l-14.1 24.6-4.6 80.2c0 8.9-28.3 16.1-63.1 16.1s-63.1-7.2-63.1-16.1l-5.8-79.4-14.9-25.4c41.2 17.3 126 16.7 165.6 0zm-196-253.3l13.6 125.5c5.9-20 20.8-47 40-55.2 6.3-2.7 12.7-2.7 18.7.9 5.2 3 9.6 9.3 10.1 11.8 1.2 6.5-2 9.1-4.5 9.1-3 0-5.3-4.6-6.8-7.3-4.1-7.3-10.3-7.6-16.9-2.8-6.9 5-12.9 13.4-17.1 20.7-5.1 8.8-9.4 18.5-12 28.2-1.5 5.6-2.9 14.6-.6 19.9 1 2.2 2.5 3.6 4.9 3.6 5 0 12.3-6.6 15.8-10.1 4.5-4.5 10.3-11.5 12.5-16l5.2-15.5c2.6-6.8 9.9-5.6 9.9 0 0 10.2-3.7 13.6-10 34.7-5.8 19.5-7.6 25.8-7.6 25.8-.7 2.8-3.4 7.5-6.3 7.5-1.2 0-2.1-.4-2.6-1.2-1-1.4-.9-5.3-.8-6.3.2-3.2 6.3-22.2 7.3-25.2-2 2.2-4.1 4.4-6.4 6.6-5.4 5.1-14.1 11.8-21.5 11.8-3.4 0-5.6-.9-7.7-2.4l7.6 79.6c2 5 39.2 17.1 88.2 17.1 49.1 0 86.3-12.2 88.2-17.1l10.9-94.6c-5.7 5.2-12.3 11.6-19.6 14.8-5.4 2.3-17.4 3.8-17.4-5.7 0-5.2 9.1-14.8 14.4-21.5 1.4-1.7 4.7-5.9 4.7-8.1 0-2.9-6-2.2-11.7 2.5-3.2 2.7-6.2 6.3-8.7 9.7-4.3 6-6.6 11.2-8.5 15.5-6.2 14.2-4.1 8.6-9.1 22-5 13.3-4.2 11.8-5.2 14-.9 1.9-2.2 3.5-4 4.5-1.9 1-4.5.9-6.1-.3-.9-.6-1.3-1.9-1.3-3.7 0-.9.1-1.8.3-2.7 1.5-6.1 7.8-18.1 15-34.3 1.6-3.7 1-2.6.8-2.3-6.2 6-10.9 8.9-14.4 10.5-5.8 2.6-13 2.6-14.5-4.1-.1-.4-.1-.8-.2-1.2-11.8 9.2-24.3 11.7-20-8.1-4.6 8.2-12.6 14.9-22.4 14.9-4.1 0-7.1-1.4-8.6-5.1-2.3-5.5 1.3-14.9 4.6-23.8 1.7-4.5 4-9.9 7.1-16.2 1.6-3.4 4.2-5.4 7.6-4.5.6.2 1.1.4 1.6.7 2.6 1.8 1.6 4.5.3 7.2-3.8 7.5-7.1 13-9.3 20.8-.9 3.3-2 9 1.5 9 2.4 0 4.7-.8 6.9-2.4 4.6-3.4 8.3-8.5 11.1-13.5 2-3.6 4.4-8.3 5.6-12.3.5-1.7 1.1-3.3 1.8-4.8 1.1-2.5 2.6-5.1 5.2-5.1 1.3 0 2.4.5 3.2 1.5 1.7 2.2 1.3 4.5.4 6.9-2 5.6-4.7 10.6-6.9 16.7-1.3 3.5-2.7 8-2.7 11.7 0 3.4 3.7 2.6 6.8 1.2 2.4-1.1 4.8-2.8 6.8-4.5 1.2-4.9.9-3.8 26.4-68.2 1.3-3.3 3.7-4.7 6.1-4.7 1.2 0 2.2.4 3.2 1.1 1.7 1.3 1.7 4.1 1 6.2-.7 1.9-.6 1.3-4.5 10.5-5.2 12.1-8.6 20.8-13.2 31.9-1.9 4.6-7.7 18.9-8.7 22.3-.6 2.2-1.3 5.8 1 5.8 5.4 0 19.3-13.1 23.1-17 .2-.3.5-.4.9-.6.6-1.9 1.2-3.7 1.7-5.5 1.4-3.8 2.7-8.2 5.3-11.3.8-1 1.7-1.6 2.7-1.6 2.8 0 4.2 1.2 4.2 4 0 1.1-.7 5.1-1.1 6.2 1.4-1.5 2.9-3 4.5-4.5 15-13.9 25.7-6.8 25.7.2 0 7.4-8.9 17.7-13.8 23.4-1.6 1.9-4.9 5.4-5 6.4 0 1.3.9 1.8 2.2 1.8 2 0 6.4-3.5 8-4.7 5-3.9 11.8-9.9 16.6-14.1l14.8-136.8c-30.5 17.1-197.6 17.2-228.3.2zm229.7-8.5c0 21-231.2 21-231.2 0 0-8.8 51.8-15.9 115.6-15.9 9 0 17.8.1 26.3.4l12.6-48.7L228.1.6c1.4-1.4 5.8-.2 9.9 3.5s6.6 7.9 5.3 9.3l-.1.1L185.9 74l-10 40.7c39.9 2.6 67.6 8.1 67.6 14.6zm-69.4 4.6c0-.8-.9-1.5-2.5-2.1l-.2.8c0 1.3-5 2.4-11.1 2.4s-11.1-1.1-11.1-2.4c0-.1 0-.2.1-.3l.2-.7c-1.8.6-3 1.4-3 2.3 0 2.1 6.2 3.7 13.7 3.7 7.7.1 13.9-1.6 13.9-3.7z\"]\n};\nvar faHackerNews = {\n prefix: 'fab',\n iconName: 'hacker-news',\n icon: [448, 512, [], \"f1d4\", \"M0 32v448h448V32H0zm21.2 197.2H21c.1-.1.2-.3.3-.4 0 .1 0 .3-.1.4zm218 53.9V384h-31.4V281.3L128 128h37.3c52.5 98.3 49.2 101.2 59.3 125.6 12.3-27 5.8-24.4 60.6-125.6H320l-80.8 155.1z\"]\n};\nvar faHackerNewsSquare = {\n prefix: 'fab',\n iconName: 'hacker-news-square',\n icon: [448, 512, [], \"f3af\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM21.2 229.2H21c.1-.1.2-.3.3-.4 0 .1 0 .3-.1.4zm218 53.9V384h-31.4V281.3L128 128h37.3c52.5 98.3 49.2 101.2 59.3 125.6 12.3-27 5.8-24.4 60.6-125.6H320l-80.8 155.1z\"]\n};\nvar faHackerrank = {\n prefix: 'fab',\n iconName: 'hackerrank',\n icon: [512, 512, [], \"f5f7\", \"M477.5 128C463 103.05 285.13 0 256.16 0S49.25 102.79 34.84 128s-14.49 230.8 0 256 192.38 128 221.32 128S463 409.08 477.49 384s14.51-231 .01-256zM316.13 414.22c-4 0-40.91-35.77-38-38.69.87-.87 6.26-1.48 17.55-1.83 0-26.23.59-68.59.94-86.32 0-2-.44-3.43-.44-5.85h-79.93c0 7.1-.46 36.2 1.37 72.88.23 4.54-1.58 6-5.74 5.94-10.13 0-20.27-.11-30.41-.08-4.1 0-5.87-1.53-5.74-6.11.92-33.44 3-84-.15-212.67v-3.17c-9.67-.35-16.38-1-17.26-1.84-2.92-2.92 34.54-38.69 38.49-38.69s41.17 35.78 38.27 38.69c-.87.87-7.9 1.49-16.77 1.84v3.16c-2.42 25.75-2 79.59-2.63 105.39h80.26c0-4.55.39-34.74-1.2-83.64-.1-3.39.95-5.17 4.21-5.2 11.07-.08 22.15-.13 33.23-.06 3.46 0 4.57 1.72 4.5 5.38C333 354.64 336 341.29 336 373.69c8.87.35 16.82 1 17.69 1.84 2.88 2.91-33.62 38.69-37.58 38.69z\"]\n};\nvar faHips = {\n prefix: 'fab',\n iconName: 'hips',\n icon: [640, 512, [], \"f452\", \"M251.6 157.6c0-1.9-.9-2.8-2.8-2.8h-40.9c-1.6 0-2.7 1.4-2.7 2.8v201.8c0 1.4 1.1 2.8 2.7 2.8h40.9c1.9 0 2.8-.9 2.8-2.8zM156.5 168c-16.1-11.8-36.3-17.9-60.3-18-18.1-.1-34.6 3.7-49.8 11.4V80.2c0-1.8-.9-2.7-2.8-2.7H2.7c-1.8 0-2.7.9-2.7 2.7v279.2c0 1.9.9 2.8 2.7 2.8h41c1.9 0 2.8-.9 2.8-2.8V223.3c0-.8-2.8-27 45.8-27 48.5 0 45.8 26.1 45.8 27v122.6c0 9 7.3 16.3 16.4 16.3h27.3c1.8 0 2.7-.9 2.7-2.8V223.3c0-23.4-9.3-41.8-28-55.3zm478.4 110.1c-6.8-15.7-18.4-27-34.9-34.1l-57.6-25.3c-8.6-3.6-9.2-11.2-2.6-16.1 7.4-5.5 44.3-13.9 84 6.8 1.7 1 4-.3 4-2.4v-44.7c0-1.3-.6-2.1-1.9-2.6-17.7-6.6-36.1-9.9-55.1-9.9-26.5 0-45.3 5.8-58.5 15.4-.5.4-28.4 20-22.7 53.7 3.4 19.6 15.8 34.2 37.2 43.6l53.6 23.5c11.6 5.1 15.2 13.3 12.2 21.2-3.7 9.1-13.2 13.6-36.5 13.6-24.3 0-44.7-8.9-58.4-19.1-2.1-1.4-4.4.2-4.4 2.3v34.4c0 10.4 4.9 17.3 14.6 20.7 15.6 5.5 31.6 8.2 48.2 8.2 12.7 0 25.8-1.2 36.3-4.3.7-.3 36-8.9 45.6-45.8 3.5-13.5 2.4-26.5-3.1-39.1zM376.2 149.8c-31.7 0-104.2 20.1-104.2 103.5v183.5c0 .8.6 2.7 2.7 2.7h40.9c1.9 0 2.8-.9 2.8-2.7V348c16.5 12.7 35.8 19.1 57.7 19.1 60.5 0 108.7-48.5 108.7-108.7.1-60.3-48.2-108.6-108.6-108.6zm0 170.9c-17.2 0-31.9-6.1-44-18.2-12.2-12.2-18.2-26.8-18.2-44 0-34.5 27.6-62.2 62.2-62.2 34.5 0 62.2 27.6 62.2 62.2.1 34.3-27.3 62.2-62.2 62.2zM228.3 72.5c-15.9 0-28.8 12.9-28.9 28.9 0 15.6 12.7 28.9 28.9 28.9s28.9-13.1 28.9-28.9c0-16.2-13-28.9-28.9-28.9z\"]\n};\nvar faHireAHelper = {\n prefix: 'fab',\n iconName: 'hire-a-helper',\n icon: [512, 512, [], \"f3b0\", \"M443.1 0H71.9C67.9 37.3 37.4 67.8 0 71.7v371.5c37.4 4.9 66 32.4 71.9 68.8h372.2c3-36.4 32.5-65.8 67.9-69.8V71.7c-36.4-5.9-65-35.3-68.9-71.7zm-37 404.9c-36.3 0-18.8-2-55.1-2-35.8 0-21 2-56.1 2-5.9 0-4.9-8.2 0-9.8 22.8-7.6 22.9-10.2 24.6-12.8 10.4-15.6 5.9-83 5.9-113 0-5.3-6.4-12.8-13.8-12.8H200.4c-7.4 0-13.8 7.5-13.8 12.8 0 30-4.5 97.4 5.9 113 1.7 2.5 1.8 5.2 24.6 12.8 4.9 1.6 6 9.8 0 9.8-35.1 0-20.3-2-56.1-2-36.3 0-18.8 2-55.1 2-7.9 0-5.8-10.8 0-10.8 10.2-3.4 13.5-3.5 21.7-13.8 7.7-12.9 7.9-44.4 7.9-127.8V151.3c0-22.2-12.2-28.3-28.6-32.4-8.8-2.2-4-11.8 1-11.8 36.5 0 20.6 2 57.1 2 32.7 0 16.5-2 49.2-2 3.3 0 8.5 8.3 1 10.8-4.9 1.6-27.6 3.7-27.6 39.3 0 45.6-.2 55.8 1 68.8 0 1.3 2.3 12.8 12.8 12.8h109.2c10.5 0 12.8-11.5 12.8-12.8 1.2-13 1-23.2 1-68.8 0-35.6-22.7-37.7-27.6-39.3-7.5-2.5-2.3-10.8 1-10.8 32.7 0 16.5 2 49.2 2 36.5 0 20.6-2 57.1-2 4.9 0 9.9 9.6 1 11.8-16.4 4.1-28.6 10.3-28.6 32.4v101.2c0 83.4.1 114.9 7.9 127.8 8.2 10.2 11.4 10.4 21.7 13.8 5.8 0 7.8 10.8 0 10.8z\"]\n};\nvar faHive = {\n prefix: 'fab',\n iconName: 'hive',\n icon: [512, 512, [], \"e07f\", \"M260.353,254.878,131.538,33.1a2.208,2.208,0,0,0-3.829.009L.3,254.887A2.234,2.234,0,0,0,.3,257.122L129.116,478.9a2.208,2.208,0,0,0,3.83-.009L260.358,257.113A2.239,2.239,0,0,0,260.353,254.878Zm39.078-25.713a2.19,2.19,0,0,0,1.9,1.111h66.509a2.226,2.226,0,0,0,1.9-3.341L259.115,33.111a2.187,2.187,0,0,0-1.9-1.111H190.707a2.226,2.226,0,0,0-1.9,3.341ZM511.7,254.886,384.9,33.112A2.2,2.2,0,0,0,382.99,32h-66.6a2.226,2.226,0,0,0-1.906,3.34L440.652,256,314.481,476.66a2.226,2.226,0,0,0,1.906,3.34h66.6a2.2,2.2,0,0,0,1.906-1.112L511.7,257.114A2.243,2.243,0,0,0,511.7,254.886ZM366.016,284.917H299.508a2.187,2.187,0,0,0-1.9,1.111l-108.8,190.631a2.226,2.226,0,0,0,1.9,3.341h66.509a2.187,2.187,0,0,0,1.9-1.111l108.8-190.631A2.226,2.226,0,0,0,366.016,284.917Z\"]\n};\nvar faHooli = {\n prefix: 'fab',\n iconName: 'hooli',\n icon: [640, 512, [], \"f427\", \"M144.5 352l38.3.8c-13.2-4.6-26-10.2-38.3-16.8zm57.7-5.3v5.3l-19.4.8c36.5 12.5 69.9 14.2 94.7 7.2-19.9.2-45.8-2.6-75.3-13.3zm408.9-115.2c15.9 0 28.9-12.9 28.9-28.9s-12.9-24.5-28.9-24.5c-15.9 0-28.9 8.6-28.9 24.5s12.9 28.9 28.9 28.9zm-29 120.5H640V241.5h-57.9zm-73.7 0h57.9V156.7L508.4 184zm-31-119.4c-18.2-18.2-50.4-17.1-50.4-17.1s-32.3-1.1-50.4 17.1c-18.2 18.2-16.8 33.9-16.8 52.6s-1.4 34.3 16.8 52.5 50.4 17.1 50.4 17.1 32.3 1.1 50.4-17.1c18.2-18.2 16.8-33.8 16.8-52.5-.1-18.8 1.3-34.5-16.8-52.6zm-39.8 71.9c0 3.6-1.8 12.5-10.7 12.5s-10.7-8.9-10.7-12.5v-40.4c0-8.7 7.3-10.9 10.7-10.9s10.7 2.1 10.7 10.9zm-106.2-71.9c-18.2-18.2-50.4-17.1-50.4-17.1s-32.2-1.1-50.4 17.1c-1.9 1.9-3.7 3.9-5.3 6-38.2-29.6-72.5-46.5-102.1-61.1v-20.7l-22.5 10.6c-54.4-22.1-89-18.2-97.3.1 0 0-24.9 32.8 61.8 110.8V352h57.9v-28.6c-6.5-4.2-13-8.7-19.4-13.6-14.8-11.2-27.4-21.6-38.4-31.4v-31c13.1 14.7 30.5 31.4 53.4 50.3l4.5 3.6v-29.8c0-6.9 1.7-18.2 10.8-18.2s10.6 6.9 10.6 15V317c18 12.2 37.3 22.1 57.7 29.6v-93.9c0-18.7-13.4-37.4-40.6-37.4-15.8-.1-30.5 8.2-38.5 21.9v-54.3c41.9 20.9 83.9 46.5 99.9 58.3-10.2 14.6-9.3 28.1-9.3 43.7 0 18.7-1.4 34.3 16.8 52.5s50.4 17.1 50.4 17.1 32.3 1.1 50.4-17.1c18.2-18.2 16.7-33.8 16.7-52.5 0-18.5 1.5-34.2-16.7-52.3zM65.2 184v63.3c-48.7-54.5-38.9-76-35.2-79.1 13.5-11.4 37.5-8 64.4 2.1zm226.5 120.5c0 3.6-1.8 12.5-10.7 12.5s-10.7-8.9-10.7-12.5v-40.4c0-8.7 7.3-10.9 10.7-10.9s10.7 2.1 10.7 10.9z\"]\n};\nvar faHornbill = {\n prefix: 'fab',\n iconName: 'hornbill',\n icon: [512, 512, [], \"f592\", \"M76.38 370.3a37.8 37.8 0 1 1-32.07-32.42c-78.28-111.35 52-190.53 52-190.53-5.86 43-8.24 91.16-8.24 91.16-67.31 41.49.93 64.06 39.81 72.87a140.38 140.38 0 0 0 131.66 91.94c1.92 0 3.77-.21 5.67-.28l.11 18.86c-99.22 1.39-158.7-29.14-188.94-51.6zm108-327.7A37.57 37.57 0 0 0 181 21.45a37.95 37.95 0 1 0-31.17 54.22c-22.55 29.91-53.83 89.57-52.42 190l21.84-.15c0-.9-.14-1.77-.14-2.68A140.42 140.42 0 0 1 207 132.71c8-37.71 30.7-114.3 73.8-44.29 0 0 48.14 2.38 91.18 8.24 0 0-77.84-128-187.59-54.06zm304.19 134.17a37.94 37.94 0 1 0-53.84-28.7C403 126.13 344.89 99 251.28 100.33l.14 22.5c2.7-.15 5.39-.41 8.14-.41a140.37 140.37 0 0 1 130.49 88.76c39.1 9 105.06 31.58 38.46 72.54 0 0-2.34 48.13-8.21 91.16 0 0 133.45-81.16 49-194.61a37.45 37.45 0 0 0 19.31-3.5zM374.06 436.24c21.43-32.46 46.42-89.69 45.14-179.66l-19.52.14c.08 2.06.3 4.07.3 6.15a140.34 140.34 0 0 1-91.39 131.45c-8.85 38.95-31.44 106.66-72.77 39.49 0 0-48.12-2.34-91.19-8.22 0 0 79.92 131.34 191.9 51a37.5 37.5 0 0 0 3.64 14 37.93 37.93 0 1 0 33.89-54.29z\"]\n};\nvar faHotjar = {\n prefix: 'fab',\n iconName: 'hotjar',\n icon: [448, 512, [], \"f3b1\", \"M414.9 161.5C340.2 29 121.1 0 121.1 0S222.2 110.4 93 197.7C11.3 252.8-21 324.4 14 402.6c26.8 59.9 83.5 84.3 144.6 93.4-29.2-55.1-6.6-122.4-4.1-129.6 57.1 86.4 165 0 110.8-93.9 71 15.4 81.6 138.6 27.1 215.5 80.5-25.3 134.1-88.9 148.8-145.6 15.5-59.3 3.7-127.9-26.3-180.9z\"]\n};\nvar faHouzz = {\n prefix: 'fab',\n iconName: 'houzz',\n icon: [448, 512, [], \"f27c\", \"M275.9 330.7H171.3V480H17V32h109.5v104.5l305.1 85.6V480H275.9z\"]\n};\nvar faHtml5 = {\n prefix: 'fab',\n iconName: 'html5',\n icon: [384, 512, [], \"f13b\", \"M0 32l34.9 395.8L191.5 480l157.6-52.2L384 32H0zm308.2 127.9H124.4l4.1 49.4h175.6l-13.6 148.4-97.9 27v.3h-1.1l-98.7-27.3-6-75.8h47.7L138 320l53.5 14.5 53.7-14.5 6-62.2H84.3L71.5 112.2h241.1l-4.4 47.7z\"]\n};\nvar faHubspot = {\n prefix: 'fab',\n iconName: 'hubspot',\n icon: [512, 512, [], \"f3b2\", \"M267.4 211.6c-25.1 23.7-40.8 57.3-40.8 94.6 0 29.3 9.7 56.3 26 78L203.1 434c-4.4-1.6-9.1-2.5-14-2.5-10.8 0-20.9 4.2-28.5 11.8-7.6 7.6-11.8 17.8-11.8 28.6s4.2 20.9 11.8 28.5c7.6 7.6 17.8 11.6 28.5 11.6 10.8 0 20.9-3.9 28.6-11.6 7.6-7.6 11.8-17.8 11.8-28.5 0-4.2-.6-8.2-1.9-12.1l50-50.2c22 16.9 49.4 26.9 79.3 26.9 71.9 0 130-58.3 130-130.2 0-65.2-47.7-119.2-110.2-128.7V116c17.5-7.4 28.2-23.8 28.2-42.9 0-26.1-20.9-47.9-47-47.9S311.2 47 311.2 73.1c0 19.1 10.7 35.5 28.2 42.9v61.2c-15.2 2.1-29.6 6.7-42.7 13.6-27.6-20.9-117.5-85.7-168.9-124.8 1.2-4.4 2-9 2-13.8C129.8 23.4 106.3 0 77.4 0 48.6 0 25.2 23.4 25.2 52.2c0 28.9 23.4 52.3 52.2 52.3 9.8 0 18.9-2.9 26.8-7.6l163.2 114.7zm89.5 163.6c-38.1 0-69-30.9-69-69s30.9-69 69-69 69 30.9 69 69-30.9 69-69 69z\"]\n};\nvar faIdeal = {\n prefix: 'fab',\n iconName: 'ideal',\n icon: [576, 512, [], \"e013\", \"M125.61,165.48a49.07,49.07,0,1,0,49.06,49.06A49.08,49.08,0,0,0,125.61,165.48ZM86.15,425.84h78.94V285.32H86.15Zm151.46-211.6c0-20-10-22.53-18.74-22.53H204.82V237.5h14.05C228.62,237.5,237.61,234.69,237.61,214.24Zm201.69,46V168.93h22.75V237.5h33.69C486.5,113.08,388.61,86.19,299.67,86.19H204.84V169h14c25.6,0,41.5,17.35,41.5,45.26,0,28.81-15.52,46-41.5,46h-14V425.88h94.83c144.61,0,194.94-67.16,196.72-165.64Zm-109.75,0H273.3V169h54.43v22.73H296v10.58h30V225H296V237.5h33.51Zm74.66,0-5.16-17.67H369.31l-5.18,17.67H340.47L368,168.92h32.35l27.53,91.34ZM299.65,32H32V480H299.65c161.85,0,251-79.73,251-224.52C550.62,172,518,32,299.65,32Zm0,426.92H53.07V53.07H299.65c142.1,0,229.9,64.61,229.9,202.41C529.55,389.57,448.55,458.92,299.65,458.92Zm83.86-264.85L376,219.88H392.4l-7.52-25.81Z\"]\n};\nvar faImdb = {\n prefix: 'fab',\n iconName: 'imdb',\n icon: [448, 512, [], \"f2d8\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM21.3 229.2H21c.1-.1.2-.3.3-.4zM97 319.8H64V192h33zm113.2 0h-28.7v-86.4l-11.6 86.4h-20.6l-12.2-84.5v84.5h-29V192h42.8c3.3 19.8 6 39.9 8.7 59.9l7.6-59.9h43zm11.4 0V192h24.6c17.6 0 44.7-1.6 49 20.9 1.7 7.6 1.4 16.3 1.4 24.4 0 88.5 11.1 82.6-75 82.5zm160.9-29.2c0 15.7-2.4 30.9-22.2 30.9-9 0-15.2-3-20.9-9.8l-1.9 8.1h-29.8V192h31.7v41.7c6-6.5 12-9.2 20.9-9.2 21.4 0 22.2 12.8 22.2 30.1zM265 229.9c0-9.7 1.6-16-10.3-16v83.7c12.2.3 10.3-8.7 10.3-18.4zm85.5 26.1c0-5.4 1.1-12.7-6.2-12.7-6 0-4.9 8.9-4.9 12.7 0 .6-1.1 39.6 1.1 44.7.8 1.6 2.2 2.4 3.8 2.4 7.8 0 6.2-9 6.2-14.4z\"]\n};\nvar faInnosoft = {\n prefix: 'fab',\n iconName: 'innosoft',\n icon: [448, 512, [], \"e080\", \"M422.559,159.71a27.379,27.379,0,0,0-13.866-23.337,26.42,26.42,0,0,0-26.211.133L73.943,314.647V176.261a11.955,11.955,0,0,1,6.047-10.34L218.066,86.208a12.153,12.153,0,0,1,11.922.025l32.656,18.853L112.581,191.723v56L359.642,105.086,241.129,36.679c-10.992-6.129-22.3-6.255-33.8-.27l-164.6,95.026c-10.634,6.12-16.771,16.39-17.29,29.124l0,191.5c.17,10.135,5.08,18.672,13.474,23.428a27.037,27.037,0,0,0,26.736-.045L374.057,197.376V335.657a11.976,11.976,0,0,1-5.92,10.368L230.025,425.77a12.175,12.175,0,0,1-11.937.062l-32.723-18.9,150.051-86.627v-56L88.367,406.932l118.794,68.583a33.88,33.88,0,0,0,34.25-.327l164.527-94.995c10.746-6.631,16.649-17.118,16.624-29.528Z\"]\n};\nvar faInstagram = {\n prefix: 'fab',\n iconName: 'instagram',\n icon: [448, 512, [], \"f16d\", \"M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z\"]\n};\nvar faInstagramSquare = {\n prefix: 'fab',\n iconName: 'instagram-square',\n icon: [448, 512, [], \"e055\", \"M224,202.66A53.34,53.34,0,1,0,277.36,256,53.38,53.38,0,0,0,224,202.66Zm124.71-41a54,54,0,0,0-30.41-30.41c-21-8.29-71-6.43-94.3-6.43s-73.25-1.93-94.31,6.43a54,54,0,0,0-30.41,30.41c-8.28,21-6.43,71.05-6.43,94.33S91,329.26,99.32,350.33a54,54,0,0,0,30.41,30.41c21,8.29,71,6.43,94.31,6.43s73.24,1.93,94.3-6.43a54,54,0,0,0,30.41-30.41c8.35-21,6.43-71.05,6.43-94.33S357.1,182.74,348.75,161.67ZM224,338a82,82,0,1,1,82-82A81.9,81.9,0,0,1,224,338Zm85.38-148.3a19.14,19.14,0,1,1,19.13-19.14A19.1,19.1,0,0,1,309.42,189.74ZM400,32H48A48,48,0,0,0,0,80V432a48,48,0,0,0,48,48H400a48,48,0,0,0,48-48V80A48,48,0,0,0,400,32ZM382.88,322c-1.29,25.63-7.14,48.34-25.85,67s-41.4,24.63-67,25.85c-26.41,1.49-105.59,1.49-132,0-25.63-1.29-48.26-7.15-67-25.85s-24.63-41.42-25.85-67c-1.49-26.42-1.49-105.61,0-132,1.29-25.63,7.07-48.34,25.85-67s41.47-24.56,67-25.78c26.41-1.49,105.59-1.49,132,0,25.63,1.29,48.33,7.15,67,25.85s24.63,41.42,25.85,67.05C384.37,216.44,384.37,295.56,382.88,322Z\"]\n};\nvar faInstalod = {\n prefix: 'fab',\n iconName: 'instalod',\n icon: [512, 512, [], \"e081\", \"M153.384,480H387.113L502.554,275.765,204.229,333.211ZM504.726,240.078,387.113,32H155.669L360.23,267.9ZM124.386,48.809,7.274,256,123.236,461.154,225.627,165.561Z\"]\n};\nvar faIntercom = {\n prefix: 'fab',\n iconName: 'intercom',\n icon: [448, 512, [], \"f7af\", \"M392 32H56C25.1 32 0 57.1 0 88v336c0 30.9 25.1 56 56 56h336c30.9 0 56-25.1 56-56V88c0-30.9-25.1-56-56-56zm-108.3 82.1c0-19.8 29.9-19.8 29.9 0v199.5c0 19.8-29.9 19.8-29.9 0V114.1zm-74.6-7.5c0-19.8 29.9-19.8 29.9 0v216.5c0 19.8-29.9 19.8-29.9 0V106.6zm-74.7 7.5c0-19.8 29.9-19.8 29.9 0v199.5c0 19.8-29.9 19.8-29.9 0V114.1zM59.7 144c0-19.8 29.9-19.8 29.9 0v134.3c0 19.8-29.9 19.8-29.9 0V144zm323.4 227.8c-72.8 63-241.7 65.4-318.1 0-15-12.8 4.4-35.5 19.4-22.7 65.9 55.3 216.1 53.9 279.3 0 14.9-12.9 34.3 9.8 19.4 22.7zm5.2-93.5c0 19.8-29.9 19.8-29.9 0V144c0-19.8 29.9-19.8 29.9 0v134.3z\"]\n};\nvar faInternetExplorer = {\n prefix: 'fab',\n iconName: 'internet-explorer',\n icon: [512, 512, [], \"f26b\", \"M483.049 159.706c10.855-24.575 21.424-60.438 21.424-87.871 0-72.722-79.641-98.371-209.673-38.577-107.632-7.181-211.221 73.67-237.098 186.457 30.852-34.862 78.271-82.298 121.977-101.158C125.404 166.85 79.128 228.002 43.992 291.725 23.246 329.651 0 390.94 0 436.747c0 98.575 92.854 86.5 180.251 42.006 31.423 15.43 66.559 15.573 101.695 15.573 97.124 0 184.249-54.294 216.814-146.022H377.927c-52.509 88.593-196.819 52.996-196.819-47.436H509.9c6.407-43.581-1.655-95.715-26.851-141.162zM64.559 346.877c17.711 51.15 53.703 95.871 100.266 123.304-88.741 48.94-173.267 29.096-100.266-123.304zm115.977-108.873c2-55.151 50.276-94.871 103.98-94.871 53.418 0 101.981 39.72 103.981 94.871H180.536zm184.536-187.6c21.425-10.287 48.563-22.003 72.558-22.003 31.422 0 54.274 21.717 54.274 53.722 0 20.003-7.427 49.007-14.569 67.867-26.28-42.292-65.986-81.584-112.263-99.586z\"]\n};\nvar faInvision = {\n prefix: 'fab',\n iconName: 'invision',\n icon: [448, 512, [], \"f7b0\", \"M407.4 32H40.6C18.2 32 0 50.2 0 72.6v366.8C0 461.8 18.2 480 40.6 480h366.8c22.4 0 40.6-18.2 40.6-40.6V72.6c0-22.4-18.2-40.6-40.6-40.6zM176.1 145.6c.4 23.4-22.4 27.3-26.6 27.4-14.9 0-27.1-12-27.1-27 .1-35.2 53.1-35.5 53.7-.4zM332.8 377c-65.6 0-34.1-74-25-106.6 14.1-46.4-45.2-59-59.9.7l-25.8 103.3H177l8.1-32.5c-31.5 51.8-94.6 44.4-94.6-4.3.1-14.3.9-14 23-104.1H81.7l9.7-35.6h76.4c-33.6 133.7-32.6 126.9-32.9 138.2 0 20.9 40.9 13.5 57.4-23.2l19.8-79.4h-32.3l9.7-35.6h68.8l-8.9 40.5c40.5-75.5 127.9-47.8 101.8 38-14.2 51.1-14.6 50.7-14.9 58.8 0 15.5 17.5 22.6 31.8-16.9L386 325c-10.5 36.7-29.4 52-53.2 52z\"]\n};\nvar faIoxhost = {\n prefix: 'fab',\n iconName: 'ioxhost',\n icon: [640, 512, [], \"f208\", \"M616 160h-67.3C511.2 70.7 422.9 8 320 8 183 8 72 119 72 256c0 16.4 1.6 32.5 4.7 48H24c-13.3 0-24 10.8-24 24 0 13.3 10.7 24 24 24h67.3c37.5 89.3 125.8 152 228.7 152 137 0 248-111 248-248 0-16.4-1.6-32.5-4.7-48H616c13.3 0 24-10.8 24-24 0-13.3-10.7-24-24-24zm-96 96c0 110.5-89.5 200-200 200-75.7 0-141.6-42-175.5-104H424c13.3 0 24-10.8 24-24 0-13.3-10.7-24-24-24H125.8c-3.8-15.4-5.8-31.4-5.8-48 0-110.5 89.5-200 200-200 75.7 0 141.6 42 175.5 104H216c-13.3 0-24 10.8-24 24 0 13.3 10.7 24 24 24h298.2c3.8 15.4 5.8 31.4 5.8 48zm-304-24h208c13.3 0 24 10.7 24 24 0 13.2-10.7 24-24 24H216c-13.3 0-24-10.7-24-24 0-13.2 10.7-24 24-24z\"]\n};\nvar faItchIo = {\n prefix: 'fab',\n iconName: 'itch-io',\n icon: [512, 512, [], \"f83a\", \"M71.92 34.77C50.2 47.67 7.4 96.84 7 109.73v21.34c0 27.06 25.29 50.84 48.25 50.84 27.57 0 50.54-22.85 50.54-50 0 27.12 22.18 50 49.76 50s49-22.85 49-50c0 27.12 23.59 50 51.16 50h.5c27.57 0 51.16-22.85 51.16-50 0 27.12 21.47 50 49 50s49.76-22.85 49.76-50c0 27.12 23 50 50.54 50 23 0 48.25-23.78 48.25-50.84v-21.34c-.4-12.9-43.2-62.07-64.92-75C372.56 32.4 325.76 32 256 32S91.14 33.1 71.92 34.77zm132.32 134.39c-22 38.4-77.9 38.71-99.85.25-13.17 23.14-43.17 32.07-56 27.66-3.87 40.15-13.67 237.13 17.73 269.15 80 18.67 302.08 18.12 379.76 0 31.65-32.27 21.32-232 17.75-269.15-12.92 4.44-42.88-4.6-56-27.66-22 38.52-77.85 38.1-99.85-.24-7.1 12.49-23.05 28.94-51.76 28.94a57.54 57.54 0 0 1-51.75-28.94zm-41.58 53.77c16.47 0 31.09 0 49.22 19.78a436.91 436.91 0 0 1 88.18 0C318.22 223 332.85 223 349.31 223c52.33 0 65.22 77.53 83.87 144.45 17.26 62.15-5.52 63.67-33.95 63.73-42.15-1.57-65.49-32.18-65.49-62.79-39.25 6.43-101.93 8.79-155.55 0 0 30.61-23.34 61.22-65.49 62.79-28.42-.06-51.2-1.58-33.94-63.73 18.67-67 31.56-144.45 83.88-144.45zM256 270.79s-44.38 40.77-52.35 55.21l29-1.17v25.32c0 1.55 21.34.16 23.33.16 11.65.54 23.31 1 23.31-.16v-25.28l29 1.17c-8-14.48-52.35-55.24-52.35-55.24z\"]\n};\nvar faItunes = {\n prefix: 'fab',\n iconName: 'itunes',\n icon: [448, 512, [], \"f3b4\", \"M223.6 80.3C129 80.3 52.5 157 52.5 251.5S129 422.8 223.6 422.8s171.2-76.7 171.2-171.2c0-94.6-76.7-171.3-171.2-171.3zm79.4 240c-3.2 13.6-13.5 21.2-27.3 23.8-12.1 2.2-22.2 2.8-31.9-5-11.8-10-12-26.4-1.4-36.8 8.4-8 20.3-9.6 38-12.8 3-.5 5.6-1.2 7.7-3.7 3.2-3.6 2.2-2 2.2-80.8 0-5.6-2.7-7.1-8.4-6.1-4 .7-91.9 17.1-91.9 17.1-5 1.1-6.7 2.6-6.7 8.3 0 116.1.5 110.8-1.2 118.5-2.1 9-7.6 15.8-14.9 19.6-8.3 4.6-23.4 6.6-31.4 5.2-21.4-4-28.9-28.7-14.4-42.9 8.4-8 20.3-9.6 38-12.8 3-.5 5.6-1.2 7.7-3.7 5-5.7.9-127 2.6-133.7.4-2.6 1.5-4.8 3.5-6.4 2.1-1.7 5.8-2.7 6.7-2.7 101-19 113.3-21.4 115.1-21.4 5.7-.4 9 3 9 8.7-.1 170.6.4 161.4-1 167.6zM345.2 32H102.8C45.9 32 0 77.9 0 134.8v242.4C0 434.1 45.9 480 102.8 480h242.4c57 0 102.8-45.9 102.8-102.8V134.8C448 77.9 402.1 32 345.2 32zM223.6 444c-106.3 0-192.5-86.2-192.5-192.5S117.3 59 223.6 59s192.5 86.2 192.5 192.5S329.9 444 223.6 444z\"]\n};\nvar faItunesNote = {\n prefix: 'fab',\n iconName: 'itunes-note',\n icon: [384, 512, [], \"f3b5\", \"M381.9 388.2c-6.4 27.4-27.2 42.8-55.1 48-24.5 4.5-44.9 5.6-64.5-10.2-23.9-20.1-24.2-53.4-2.7-74.4 17-16.2 40.9-19.5 76.8-25.8 6-1.1 11.2-2.5 15.6-7.4 6.4-7.2 4.4-4.1 4.4-163.2 0-11.2-5.5-14.3-17-12.3-8.2 1.4-185.7 34.6-185.7 34.6-10.2 2.2-13.4 5.2-13.4 16.7 0 234.7 1.1 223.9-2.5 239.5-4.2 18.2-15.4 31.9-30.2 39.5-16.8 9.3-47.2 13.4-63.4 10.4-43.2-8.1-58.4-58-29.1-86.6 17-16.2 40.9-19.5 76.8-25.8 6-1.1 11.2-2.5 15.6-7.4 10.1-11.5 1.8-256.6 5.2-270.2.8-5.2 3-9.6 7.1-12.9 4.2-3.5 11.8-5.5 13.4-5.5 204-38.2 228.9-43.1 232.4-43.1 11.5-.8 18.1 6 18.1 17.6.2 344.5 1.1 326-1.8 338.5z\"]\n};\nvar faJava = {\n prefix: 'fab',\n iconName: 'java',\n icon: [384, 512, [], \"f4e4\", \"M277.74 312.9c9.8-6.7 23.4-12.5 23.4-12.5s-38.7 7-77.2 10.2c-47.1 3.9-97.7 4.7-123.1 1.3-60.1-8 33-30.1 33-30.1s-36.1-2.4-80.6 19c-52.5 25.4 130 37 224.5 12.1zm-85.4-32.1c-19-42.7-83.1-80.2 0-145.8C296 53.2 242.84 0 242.84 0c21.5 84.5-75.6 110.1-110.7 162.6-23.9 35.9 11.7 74.4 60.2 118.2zm114.6-176.2c.1 0-175.2 43.8-91.5 140.2 24.7 28.4-6.5 54-6.5 54s62.7-32.4 33.9-72.9c-26.9-37.8-47.5-56.6 64.1-121.3zm-6.1 270.5a12.19 12.19 0 0 1-2 2.6c128.3-33.7 81.1-118.9 19.8-97.3a17.33 17.33 0 0 0-8.2 6.3 70.45 70.45 0 0 1 11-3c31-6.5 75.5 41.5-20.6 91.4zM348 437.4s14.5 11.9-15.9 21.2c-57.9 17.5-240.8 22.8-291.6.7-18.3-7.9 16-19 26.8-21.3 11.2-2.4 17.7-2 17.7-2-20.3-14.3-131.3 28.1-56.4 40.2C232.84 509.4 401 461.3 348 437.4zM124.44 396c-78.7 22 47.9 67.4 148.1 24.5a185.89 185.89 0 0 1-28.2-13.8c-44.7 8.5-65.4 9.1-106 4.5-33.5-3.8-13.9-15.2-13.9-15.2zm179.8 97.2c-78.7 14.8-175.8 13.1-233.3 3.6 0-.1 11.8 9.7 72.4 13.6 92.2 5.9 233.8-3.3 237.1-46.9 0 0-6.4 16.5-76.2 29.7zM260.64 353c-59.2 11.4-93.5 11.1-136.8 6.6-33.5-3.5-11.6-19.7-11.6-19.7-86.8 28.8 48.2 61.4 169.5 25.9a60.37 60.37 0 0 1-21.1-12.8z\"]\n};\nvar faJediOrder = {\n prefix: 'fab',\n iconName: 'jedi-order',\n icon: [448, 512, [], \"f50e\", \"M398.5 373.6c95.9-122.1 17.2-233.1 17.2-233.1 45.4 85.8-41.4 170.5-41.4 170.5 105-171.5-60.5-271.5-60.5-271.5 96.9 72.7-10.1 190.7-10.1 190.7 85.8 158.4-68.6 230.1-68.6 230.1s-.4-16.9-2.2-85.7c4.3 4.5 34.5 36.2 34.5 36.2l-24.2-47.4 62.6-9.1-62.6-9.1 20.2-55.5-31.4 45.9c-2.2-87.7-7.8-305.1-7.9-306.9v-2.4 1-1 2.4c0 1-5.6 219-7.9 306.9l-31.4-45.9 20.2 55.5-62.6 9.1 62.6 9.1-24.2 47.4 34.5-36.2c-1.8 68.8-2.2 85.7-2.2 85.7s-154.4-71.7-68.6-230.1c0 0-107-118.1-10.1-190.7 0 0-165.5 99.9-60.5 271.5 0 0-86.8-84.8-41.4-170.5 0 0-78.7 111 17.2 233.1 0 0-26.2-16.1-49.4-77.7 0 0 16.9 183.3 222 185.7h4.1c205-2.4 222-185.7 222-185.7-23.6 61.5-49.9 77.7-49.9 77.7z\"]\n};\nvar faJenkins = {\n prefix: 'fab',\n iconName: 'jenkins',\n icon: [512, 512, [], \"f3b6\", \"M487.1 425c-1.4-11.2-19-23.1-28.2-31.9-5.1-5-29-23.1-30.4-29.9-1.4-6.6 9.7-21.5 13.3-28.9 5.1-10.7 8.8-23.7 11.3-32.6 18.8-66.1 20.7-156.9-6.2-211.2-10.2-20.6-38.6-49-56.4-62.5-42-31.7-119.6-35.3-170.1-16.6-14.1 5.2-27.8 9.8-40.1 17.1-33.1 19.4-68.3 32.5-78.1 71.6-24.2 10.8-31.5 41.8-30.3 77.8.2 7 4.1 15.8 2.7 22.4-.7 3.3-5.2 7.6-6.1 9.8-11.6 27.7-2.3 64 11.1 83.7 8.1 11.9 21.5 22.4 39.2 25.2.7 10.6 3.3 19.7 8.2 30.4 3.1 6.8 14.7 19 10.4 27.7-2.2 4.4-21 13.8-27.3 17.6C89 407.2 73.7 415 54.2 429c-12.6 9-32.3 10.2-29.2 31.1 2.1 14.1 10.1 31.6 14.7 45.8.7 2 1.4 4.1 2.1 6h422c4.9-15.3 9.7-30.9 14.6-47.2 3.4-11.4 10.2-27.8 8.7-39.7zM205.9 33.7c1.8-.5 3.4.7 4.9 2.4-.2 5.2-5.4 5.1-8.9 6.8-5.4 6.7-13.4 9.8-20 17.2-6.8 7.5-14.4 27.7-23.4 30-4.5 1.1-9.7-.8-13.6-.5-10.4.7-17.7 6-28.3 7.5 13.6-29.9 56.1-54 89.3-63.4zm-104.8 93.6c13.5-14.9 32.1-24.1 54.8-25.9 11.7 29.7-8.4 65-.9 97.6 2.3 9.9 10.2 25.4-2.4 25.7.3-28.3-34.8-46.3-61.3-29.6-1.8-21.5-4.9-51.7 9.8-67.8zm36.7 200.2c-1-4.1-2.7-12.9-2.3-15.1 1.6-8.7 17.1-12.5 11-24.7-11.3-.1-13.8 10.2-24.1 11.3-26.7 2.6-45.6-35.4-44.4-58.4 1-19.5 17.6-38.2 40.1-35.8 16 1.8 21.4 19.2 24.5 34.7 9.2.5 22.5-.4 26.9-7.6-.6-17.5-8.8-31.6-8.2-47.7 1-30.3 17.5-57.6 4.8-87.4 13.6-30.9 53.5-55.3 83.1-70 36.6-18.3 94.9-3.7 129.3 15.8 19.7 11.1 34.4 32.7 48.3 50.7-19.5-5.8-36.1 4.2-33.1 20.3 16.3-14.9 44.2-.2 52.5 16.4 7.9 15.8 7.8 39.3 9 62.8 2.9 57-10.4 115.9-39.1 157.1-7.7 11-14.1 23-24.9 30.6-26 18.2-65.4 34.7-99.2 23.4-44.7-15-65-44.8-89.5-78.8.7 18.7 13.8 34.1 26.8 48.4 11.3 12.5 25 26.6 39.7 32.4-12.3-2.9-31.1-3.8-36.2 7.2-28.6-1.9-55.1-4.8-68.7-24.2-10.6-15.4-21.4-41.4-26.3-61.4zm222 124.1c4.1-3 11.1-2.9 17.4-3.6-5.4-2.7-13-3.7-19.3-2.2-.1-4.2-2-6.8-3.2-10.2 10.6-3.8 35.5-28.5 49.6-20.3 6.7 3.9 9.5 26.2 10.1 37 .4 9-.8 18-4.5 22.8-18.8-.6-35.8-2.8-50.7-7 .9-6.1-1-12.1.6-16.5zm-17.2-20c-16.8.8-26-1.2-38.3-10.8.2-.8 1.4-.5 1.5-1.4 18 8 40.8-3.3 59-4.9-7.9 5.1-14.6 11.6-22.2 17.1zm-12.1 33.2c-1.6-9.4-3.5-12-2.8-20.2 25-16.6 29.7 28.6 2.8 20.2zM226 438.6c-11.6-.7-48.1-14-38.5-23.7 9.4 6.5 27.5 4.9 41.3 7.3.8 4.4-2.8 10.2-2.8 16.4zM57.7 497.1c-4.3-12.7-9.2-25.1-14.8-36.9 30.8-23.8 65.3-48.9 102.2-63.5 2.8-1.1 23.2 25.4 26.2 27.6 16.5 11.7 37 21 56.2 30.2 1.2 8.8 3.9 20.2 8.7 35.5.7 2.3 1.4 4.7 2.2 7.2H57.7zm240.6 5.7h-.8c.3-.2.5-.4.8-.5v.5zm7.5-5.7c2.1-1.4 4.3-2.8 6.4-4.3 1.1 1.4 2.2 2.8 3.2 4.3h-9.6zm15.1-24.7c-10.8 7.3-20.6 18.3-33.3 25.2-6 3.3-27 11.7-33.4 10.2-3.6-.8-3.9-5.3-5.4-9.5-3.1-9-10.1-23.4-10.8-37-.8-17.2-2.5-46 16-42.4 14.9 2.9 32.3 9.7 43.9 16.1 7.1 3.9 11.1 8.6 21.9 9.5-.1 1.4-.1 2.8-.2 4.3-5.9 3.9-15.3 3.8-21.8 7.1 9.5.4 17 2.7 23.5 5.9-.1 3.4-.3 7-.4 10.6zm53.4 24.7h-14c-.1-3.2-2.8-5.8-6.1-5.8s-5.9 2.6-6.1 5.8h-17.4c-2.8-4.4-5.7-8.6-8.9-12.5 2.1-2.2 4-4.7 6-6.9 9 3.7 14.8-4.9 21.7-4.2 7.9.8 14.2 11.7 25.4 11l-.6 12.6zm8.7 0c.2-4 .4-7.8.6-11.5 15.6-7.3 29 1.3 35.7 11.5H383zm83.4-37c-2.3 11.2-5.8 24-9.9 37.1-.2-.1-.4-.1-.6-.1H428c.6-1.1 1.2-2.2 1.9-3.3-2.6-6.1-9-8.7-10.9-15.5 12.1-22.7 6.5-93.4-24.2-78.5 4.3-6.3 15.6-11.5 20.8-19.3 13 10.4 20.8 20.3 33.2 31.4 6.8 6 20 13.3 21.4 23.1.8 5.5-2.6 18.9-3.8 25.1zM222.2 130.5c5.4-14.9 27.2-34.7 45-32 7.7 1.2 18 8.2 12.2 17.7-30.2-7-45.2 12.6-54.4 33.1-8.1-2-4.9-13.1-2.8-18.8zm184.1 63.1c8.2-3.6 22.4-.7 29.6-5.3-4.2-11.5-10.3-21.4-9.3-37.7.5 0 1 0 1.4.1 6.8 14.2 12.7 29.2 21.4 41.7-5.7 13.5-43.6 25.4-43.1 1.2zm20.4-43zm-117.2 45.7c-6.8-10.9-19-32.5-14.5-45.3 6.5 11.9 8.6 24.4 17.8 33.3 4.1 4 12.2 9 8.2 20.2-.9 2.7-7.8 8.6-11.7 9.7-14.4 4.3-47.9.9-36.6-17.1 11.9.7 27.9 7.8 36.8-.8zm27.3 70c3.8 6.6 1.4 18.7 12.1 20.6 20.2 3.4 43.6-12.3 58.1-17.8 9-15.2-.8-20.7-8.9-30.5-16.6-20-38.8-44.8-38-74.7 6.7-4.9 7.3 7.4 8.2 9.7 8.7 20.3 30.4 46.2 46.3 63.5 3.9 4.3 10.3 8.4 11 11.2 2.1 8.2-5.4 18-4.5 23.5-21.7 13.9-45.8 29.1-81.4 25.6-7.4-6.7-10.3-21.4-2.9-31.1zm-201.3-9.2c-6.8-3.9-8.4-21-16.4-21.4-11.4-.7-9.3 22.2-9.3 35.5-7.8-7.1-9.2-29.1-3.5-40.3-6.6-3.2-9.5 3.6-13.1 5.9 4.7-34.1 49.8-15.8 42.3 20.3zm299.6 28.8c-10.1 19.2-24.4 40.4-54 41-.6-6.2-1.1-15.6 0-19.4 22.7-2.2 36.6-13.7 54-21.6zm-141.9 12.4c18.9 9.9 53.6 11 79.3 10.2 1.4 5.6 1.3 12.6 1.4 19.4-33 1.8-72-6.4-80.7-29.6zm92.2 46.7c-1.7 4.3-5.3 9.3-9.8 11.1-12.1 4.9-45.6 8.7-62.4-.3-10.7-5.7-17.5-18.5-23.4-26-2.8-3.6-16.9-12.9-.2-12.9 13.1 32.7 58 29 95.8 28.1z\"]\n};\nvar faJira = {\n prefix: 'fab',\n iconName: 'jira',\n icon: [496, 512, [], \"f7b1\", \"M490 241.7C417.1 169 320.6 71.8 248.5 0 83 164.9 6 241.7 6 241.7c-7.9 7.9-7.9 20.7 0 28.7C138.8 402.7 67.8 331.9 248.5 512c379.4-378 15.7-16.7 241.5-241.7 8-7.9 8-20.7 0-28.6zm-241.5 90l-76-75.7 76-75.7 76 75.7-76 75.7z\"]\n};\nvar faJoget = {\n prefix: 'fab',\n iconName: 'joget',\n icon: [496, 512, [], \"f3b7\", \"M378.1 45C337.6 19.9 292.6 8 248.2 8 165 8 83.8 49.9 36.9 125.9c-71.9 116.6-35.6 269.3 81 341.2s269.3 35.6 341.2-80.9c71.9-116.6 35.6-269.4-81-341.2zm51.8 323.2c-40.4 65.5-110.4 101.5-182 101.5-6.8 0-13.6-.4-20.4-1-9-13.6-19.9-33.3-23.7-42.4-5.7-13.7-27.2-45.6 31.2-67.1 51.7-19.1 176.7-16.5 208.8-17.6-4 9-8.6 17.9-13.9 26.6zm-200.8-86.3c-55.5-1.4-81.7-20.8-58.5-48.2s51.1-40.7 68.9-51.2c17.9-10.5 27.3-33.7-23.6-29.7C87.3 161.5 48.6 252.1 37.6 293c-8.8-49.7-.1-102.7 28.5-149.1C128 43.4 259.6 12.2 360.1 74.1c74.8 46.1 111.2 130.9 99.3 212.7-24.9-.5-179.3-3.6-230.3-4.9zm183.8-54.8c-22.7-6-57 11.3-86.7 27.2-29.7 15.8-31.1 8.2-31.1 8.2s40.2-28.1 50.7-34.5 31.9-14 13.4-24.6c-3.2-1.8-6.7-2.7-10.4-2.7-17.8 0-41.5 18.7-67.5 35.6-31.5 20.5-65.3 31.3-65.3 31.3l169.5-1.6 46.5-23.4s3.6-9.5-19.1-15.5z\"]\n};\nvar faJoomla = {\n prefix: 'fab',\n iconName: 'joomla',\n icon: [448, 512, [], \"f1aa\", \"M.6 92.1C.6 58.8 27.4 32 60.4 32c30 0 54.5 21.9 59.2 50.2 32.6-7.6 67.1.6 96.5 30l-44.3 44.3c-20.5-20.5-42.6-16.3-55.4-3.5-14.3 14.3-14.3 37.9 0 52.2l99.5 99.5-44 44.3c-87.7-87.2-49.7-49.7-99.8-99.7-26.8-26.5-35-64.8-24.8-98.9C20.4 144.6.6 120.7.6 92.1zm129.5 116.4l44.3 44.3c10-10 89.7-89.7 99.7-99.8 14.3-14.3 37.6-14.3 51.9 0 12.8 12.8 17 35-3.5 55.4l44 44.3c31.2-31.2 38.5-67.6 28.9-101.2 29.2-4.1 51.9-29.2 51.9-59.5 0-33.2-26.8-60.1-59.8-60.1-30.3 0-55.4 22.5-59.5 51.6-33.8-9.9-71.7-1.5-98.3 25.1-18.3 19.1-71.1 71.5-99.6 99.9zm266.3 152.2c8.2-32.7-.9-68.5-26.3-93.9-11.8-12.2 5 4.7-99.5-99.7l-44.3 44.3 99.7 99.7c14.3 14.3 14.3 37.6 0 51.9-12.8 12.8-35 17-55.4-3.5l-44 44.3c27.6 30.2 68 38.8 102.7 28 5.5 27.4 29.7 48.1 58.9 48.1 33 0 59.8-26.8 59.8-60.1 0-30.2-22.5-55-51.6-59.1zm-84.3-53.1l-44-44.3c-87 86.4-50.4 50.4-99.7 99.8-14.3 14.3-37.6 14.3-51.9 0-13.1-13.4-16.9-35.3 3.2-55.4l-44-44.3c-30.2 30.2-38 65.2-29.5 98.3-26.7 6-46.2 29.9-46.2 58.2C0 453.2 26.8 480 59.8 480c28.6 0 52.5-19.8 58.6-46.7 32.7 8.2 68.5-.6 94.2-26 32.1-32 12.2-12.4 99.5-99.7z\"]\n};\nvar faJs = {\n prefix: 'fab',\n iconName: 'js',\n icon: [448, 512, [], \"f3b8\", \"M0 32v448h448V32H0zm243.8 349.4c0 43.6-25.6 63.5-62.9 63.5-33.7 0-53.2-17.4-63.2-38.5l34.3-20.7c6.6 11.7 12.6 21.6 27.1 21.6 13.8 0 22.6-5.4 22.6-26.5V237.7h42.1v143.7zm99.6 63.5c-39.1 0-64.4-18.6-76.7-43l34.3-19.8c9 14.7 20.8 25.6 41.5 25.6 17.4 0 28.6-8.7 28.6-20.8 0-14.4-11.4-19.5-30.7-28l-10.5-4.5c-30.4-12.9-50.5-29.2-50.5-63.5 0-31.6 24.1-55.6 61.6-55.6 26.8 0 46 9.3 59.8 33.7L368 290c-7.2-12.9-15-18-27.1-18-12.3 0-20.1 7.8-20.1 18 0 12.6 7.8 17.7 25.9 25.6l10.5 4.5c35.8 15.3 55.9 31 55.9 66.2 0 37.8-29.8 58.6-69.7 58.6z\"]\n};\nvar faJsSquare = {\n prefix: 'fab',\n iconName: 'js-square',\n icon: [448, 512, [], \"f3b9\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM243.8 381.4c0 43.6-25.6 63.5-62.9 63.5-33.7 0-53.2-17.4-63.2-38.5l34.3-20.7c6.6 11.7 12.6 21.6 27.1 21.6 13.8 0 22.6-5.4 22.6-26.5V237.7h42.1v143.7zm99.6 63.5c-39.1 0-64.4-18.6-76.7-43l34.3-19.8c9 14.7 20.8 25.6 41.5 25.6 17.4 0 28.6-8.7 28.6-20.8 0-14.4-11.4-19.5-30.7-28l-10.5-4.5c-30.4-12.9-50.5-29.2-50.5-63.5 0-31.6 24.1-55.6 61.6-55.6 26.8 0 46 9.3 59.8 33.7L368 290c-7.2-12.9-15-18-27.1-18-12.3 0-20.1 7.8-20.1 18 0 12.6 7.8 17.7 25.9 25.6l10.5 4.5c35.8 15.3 55.9 31 55.9 66.2 0 37.8-29.8 58.6-69.7 58.6z\"]\n};\nvar faJsfiddle = {\n prefix: 'fab',\n iconName: 'jsfiddle',\n icon: [576, 512, [], \"f1cc\", \"M510.634 237.462c-4.727-2.621-5.664-5.748-6.381-10.776-2.352-16.488-3.539-33.619-9.097-49.095-35.895-99.957-153.99-143.386-246.849-91.646-27.37 15.25-48.971 36.369-65.493 63.903-3.184-1.508-5.458-2.71-7.824-3.686-30.102-12.421-59.049-10.121-85.331 9.167-25.531 18.737-36.422 44.548-32.676 76.408.355 3.025-1.967 7.621-4.514 9.545-39.712 29.992-56.031 78.065-41.902 124.615 13.831 45.569 57.514 79.796 105.608 81.433 30.291 1.031 60.637.546 90.959.539 84.041-.021 168.09.531 252.12-.48 52.664-.634 96.108-36.873 108.212-87.293 11.54-48.074-11.144-97.3-56.832-122.634zm21.107 156.88c-18.23 22.432-42.343 35.253-71.28 35.65-56.874.781-113.767.23-170.652.23 0 .7-163.028.159-163.728.154-43.861-.332-76.739-19.766-95.175-59.995-18.902-41.245-4.004-90.848 34.186-116.106 9.182-6.073 12.505-11.566 10.096-23.136-5.49-26.361 4.453-47.956 26.42-62.981 22.987-15.723 47.422-16.146 72.034-3.083 10.269 5.45 14.607 11.564 22.198-2.527 14.222-26.399 34.557-46.727 60.671-61.294 97.46-54.366 228.37 7.568 230.24 132.697.122 8.15 2.412 12.428 9.848 15.894 57.56 26.829 74.456 96.122 35.142 144.497zm-87.789-80.499c-5.848 31.157-34.622 55.096-66.666 55.095-16.953-.001-32.058-6.545-44.079-17.705-27.697-25.713-71.141-74.98-95.937-93.387-20.056-14.888-41.99-12.333-60.272 3.782-49.996 44.071 15.859 121.775 67.063 77.188 4.548-3.96 7.84-9.543 12.744-12.844 8.184-5.509 20.766-.884 13.168 10.622-17.358 26.284-49.33 38.197-78.863 29.301-28.897-8.704-48.84-35.968-48.626-70.179 1.225-22.485 12.364-43.06 35.414-55.965 22.575-12.638 46.369-13.146 66.991 2.474C295.68 280.7 320.467 323.97 352.185 343.47c24.558 15.099 54.254 7.363 68.823-17.506 28.83-49.209-34.592-105.016-78.868-63.46-3.989 3.744-6.917 8.932-11.41 11.72-10.975 6.811-17.333-4.113-12.809-10.353 20.703-28.554 50.464-40.44 83.271-28.214 31.429 11.714 49.108 44.366 42.76 78.186z\"]\n};\nvar faKaggle = {\n prefix: 'fab',\n iconName: 'kaggle',\n icon: [320, 512, [], \"f5fa\", \"M304.2 501.5L158.4 320.3 298.2 185c2.6-2.7 1.7-10.5-5.3-10.5h-69.2c-3.5 0-7 1.8-10.5 5.3L80.9 313.5V7.5q0-7.5-7.5-7.5H21.5Q14 0 14 7.5v497q0 7.5 7.5 7.5h51.9q7.5 0 7.5-7.5v-109l30.8-29.3 110.5 140.6c3 3.5 6.5 5.3 10.5 5.3h66.9q5.25 0 6-3z\"]\n};\nvar faKeybase = {\n prefix: 'fab',\n iconName: 'keybase',\n icon: [448, 512, [], \"f4f5\", \"M286.17 419a18 18 0 1 0 18 18 18 18 0 0 0-18-18zm111.92-147.6c-9.5-14.62-39.37-52.45-87.26-73.71q-9.1-4.06-18.38-7.27a78.43 78.43 0 0 0-47.88-104.13c-12.41-4.1-23.33-6-32.41-5.77-.6-2-1.89-11 9.4-35L198.66 32l-5.48 7.56c-8.69 12.06-16.92 23.55-24.34 34.89a51 51 0 0 0-8.29-1.25c-41.53-2.45-39-2.33-41.06-2.33-50.61 0-50.75 52.12-50.75 45.88l-2.36 36.68c-1.61 27 19.75 50.21 47.63 51.85l8.93.54a214 214 0 0 0-46.29 35.54C14 304.66 14 374 14 429.77v33.64l23.32-29.8a148.6 148.6 0 0 0 14.56 37.56c5.78 10.13 14.87 9.45 19.64 7.33 4.21-1.87 10-6.92 3.75-20.11a178.29 178.29 0 0 1-15.76-53.13l46.82-59.83-24.66 74.11c58.23-42.4 157.38-61.76 236.25-38.59 34.2 10.05 67.45.69 84.74-23.84.72-1 1.2-2.16 1.85-3.22a156.09 156.09 0 0 1 2.8 28.43c0 23.3-3.69 52.93-14.88 81.64-2.52 6.46 1.76 14.5 8.6 15.74 7.42 1.57 15.33-3.1 18.37-11.15C429 443 434 414 434 382.32c0-38.58-13-77.46-35.91-110.92zM142.37 128.58l-15.7-.93-1.39 21.79 13.13.78a93 93 0 0 0 .32 19.57l-22.38-1.34a12.28 12.28 0 0 1-11.76-12.79L107 119c1-12.17 13.87-11.27 13.26-11.32l29.11 1.73a144.35 144.35 0 0 0-7 19.17zm148.42 172.18a10.51 10.51 0 0 1-14.35-1.39l-9.68-11.49-34.42 27a8.09 8.09 0 0 1-11.13-1.08l-15.78-18.64a7.38 7.38 0 0 1 1.34-10.34l34.57-27.18-14.14-16.74-17.09 13.45a7.75 7.75 0 0 1-10.59-1s-3.72-4.42-3.8-4.53a7.38 7.38 0 0 1 1.37-10.34L214 225.19s-18.51-22-18.6-22.14a9.56 9.56 0 0 1 1.74-13.42 10.38 10.38 0 0 1 14.3 1.37l81.09 96.32a9.58 9.58 0 0 1-1.74 13.44zM187.44 419a18 18 0 1 0 18 18 18 18 0 0 0-18-18z\"]\n};\nvar faKeycdn = {\n prefix: 'fab',\n iconName: 'keycdn',\n icon: [512, 512, [], \"f3ba\", \"M63.8 409.3l60.5-59c32.1 42.8 71.1 66 126.6 67.4 30.5.7 60.3-7 86.4-22.4 5.1 5.3 18.5 19.5 20.9 22-32.2 20.7-69.6 31.1-108.1 30.2-43.3-1.1-84.6-16.7-117.7-44.4.3-.6-38.2 37.5-38.6 37.9 9.5 29.8-13.1 62.4-46.3 62.4C20.7 503.3 0 481.7 0 454.9c0-34.3 33.1-56.6 63.8-45.6zm354.9-252.4c19.1 31.3 29.6 67.4 28.7 104-1.1 44.8-19 87.5-48.6 121 .3.3 23.8 25.2 24.1 25.5 9.6-1.3 19.2 2 25.9 9.1 11.3 12 10.9 30.9-1.1 42.4-12 11.3-30.9 10.9-42.4-1.1-6.7-7-9.4-16.8-7.6-26.3-24.9-26.6-44.4-47.2-44.4-47.2 42.7-34.1 63.3-79.6 64.4-124.2.7-28.9-7.2-57.2-21.1-82.2l22.1-21zM104 53.1c6.7 7 9.4 16.8 7.6 26.3l45.9 48.1c-4.7 3.8-13.3 10.4-22.8 21.3-25.4 28.5-39.6 64.8-40.7 102.9-.7 28.9 6.1 57.2 20 82.4l-22 21.5C72.7 324 63.1 287.9 64.2 250.9c1-44.6 18.3-87.6 47.5-121.1l-25.3-26.4c-9.6 1.3-19.2-2-25.9-9.1-11.3-12-10.9-30.9 1.1-42.4C73.5 40.7 92.2 41 104 53.1zM464.9 8c26 0 47.1 22.4 47.1 48.3S490.9 104 464.9 104c-6.3.1-14-1.1-15.9-1.8l-62.9 59.7c-32.7-43.6-76.7-65.9-126.9-67.2-30.5-.7-60.3 6.8-86.2 22.4l-21.1-22C184.1 74.3 221.5 64 260 64.9c43.3 1.1 84.6 16.7 117.7 44.6l41.1-38.6c-1.5-4.7-2.2-9.6-2.2-14.5C416.5 29.7 438.9 8 464.9 8zM256.7 113.4c5.5 0 10.9.4 16.4 1.1 78.1 9.8 133.4 81.1 123.8 159.1-9.8 78.1-81.1 133.4-159.1 123.8-78.1-9.8-133.4-81.1-123.8-159.2 9.3-72.4 70.1-124.6 142.7-124.8zm-59 119.4c.6 22.7 12.2 41.8 32.4 52.2l-11 51.7h73.7l-11-51.7c20.1-10.9 32.1-29 32.4-52.2-.4-32.8-25.8-57.5-58.3-58.3-32.1.8-57.3 24.8-58.2 58.3zM256 160\"]\n};\nvar faKickstarter = {\n prefix: 'fab',\n iconName: 'kickstarter',\n icon: [448, 512, [], \"f3bb\", \"M400 480H48c-26.4 0-48-21.6-48-48V80c0-26.4 21.6-48 48-48h352c26.4 0 48 21.6 48 48v352c0 26.4-21.6 48-48 48zM199.6 178.5c0-30.7-17.6-45.1-39.7-45.1-25.8 0-40 19.8-40 44.5v154.8c0 25.8 13.7 45.6 40.5 45.6 21.5 0 39.2-14 39.2-45.6v-41.8l60.6 75.7c12.3 14.9 39 16.8 55.8 0 14.6-15.1 14.8-36.8 4-50.4l-49.1-62.8 40.5-58.7c9.4-13.5 9.5-34.5-5.6-49.1-16.4-15.9-44.6-17.3-61.4 7l-44.8 64.7v-38.8z\"]\n};\nvar faKickstarterK = {\n prefix: 'fab',\n iconName: 'kickstarter-k',\n icon: [384, 512, [], \"f3bc\", \"M147.3 114.4c0-56.2-32.5-82.4-73.4-82.4C26.2 32 0 68.2 0 113.4v283c0 47.3 25.3 83.4 74.9 83.4 39.8 0 72.4-25.6 72.4-83.4v-76.5l112.1 138.3c22.7 27.2 72.1 30.7 103.2 0 27-27.6 27.3-67.4 7.4-92.2l-90.8-114.8 74.9-107.4c17.4-24.7 17.5-63.1-10.4-89.8-30.3-29-82.4-31.6-113.6 12.8L147.3 185v-70.6z\"]\n};\nvar faKorvue = {\n prefix: 'fab',\n iconName: 'korvue',\n icon: [446, 512, [], \"f42f\", \"M386.5 34h-327C26.8 34 0 60.8 0 93.5v327.1C0 453.2 26.8 480 59.5 480h327.1c33 0 59.5-26.8 59.5-59.5v-327C446 60.8 419.2 34 386.5 34zM87.1 120.8h96v116l61.8-116h110.9l-81.2 132H87.1v-132zm161.8 272.1l-65.7-113.6v113.6h-96V262.1h191.5l88.6 130.8H248.9z\"]\n};\nvar faLaravel = {\n prefix: 'fab',\n iconName: 'laravel',\n icon: [512, 512, [], \"f3bd\", \"M504.4,115.83a5.72,5.72,0,0,0-.28-.68,8.52,8.52,0,0,0-.53-1.25,6,6,0,0,0-.54-.71,9.36,9.36,0,0,0-.72-.94c-.23-.22-.52-.4-.77-.6a8.84,8.84,0,0,0-.9-.68L404.4,55.55a8,8,0,0,0-8,0L300.12,111h0a8.07,8.07,0,0,0-.88.69,7.68,7.68,0,0,0-.78.6,8.23,8.23,0,0,0-.72.93c-.17.24-.39.45-.54.71a9.7,9.7,0,0,0-.52,1.25c-.08.23-.21.44-.28.68a8.08,8.08,0,0,0-.28,2.08V223.18l-80.22,46.19V63.44a7.8,7.8,0,0,0-.28-2.09c-.06-.24-.2-.45-.28-.68a8.35,8.35,0,0,0-.52-1.24c-.14-.26-.37-.47-.54-.72a9.36,9.36,0,0,0-.72-.94,9.46,9.46,0,0,0-.78-.6,9.8,9.8,0,0,0-.88-.68h0L115.61,1.07a8,8,0,0,0-8,0L11.34,56.49h0a6.52,6.52,0,0,0-.88.69,7.81,7.81,0,0,0-.79.6,8.15,8.15,0,0,0-.71.93c-.18.25-.4.46-.55.72a7.88,7.88,0,0,0-.51,1.24,6.46,6.46,0,0,0-.29.67,8.18,8.18,0,0,0-.28,2.1v329.7a8,8,0,0,0,4,6.95l192.5,110.84a8.83,8.83,0,0,0,1.33.54c.21.08.41.2.63.26a7.92,7.92,0,0,0,4.1,0c.2-.05.37-.16.55-.22a8.6,8.6,0,0,0,1.4-.58L404.4,400.09a8,8,0,0,0,4-6.95V287.88l92.24-53.11a8,8,0,0,0,4-7V117.92A8.63,8.63,0,0,0,504.4,115.83ZM111.6,17.28h0l80.19,46.15-80.2,46.18L31.41,63.44Zm88.25,60V278.6l-46.53,26.79-33.69,19.4V123.5l46.53-26.79Zm0,412.78L23.37,388.5V77.32L57.06,96.7l46.52,26.8V338.68a6.94,6.94,0,0,0,.12.9,8,8,0,0,0,.16,1.18h0a5.92,5.92,0,0,0,.38.9,6.38,6.38,0,0,0,.42,1v0a8.54,8.54,0,0,0,.6.78,7.62,7.62,0,0,0,.66.84l0,0c.23.22.52.38.77.58a8.93,8.93,0,0,0,.86.66l0,0,0,0,92.19,52.18Zm8-106.17-80.06-45.32,84.09-48.41,92.26-53.11,80.13,46.13-58.8,33.56Zm184.52,4.57L215.88,490.11V397.8L346.6,323.2l45.77-26.15Zm0-119.13L358.68,250l-46.53-26.79V131.79l33.69,19.4L392.37,178Zm8-105.28-80.2-46.17,80.2-46.16,80.18,46.15Zm8,105.28V178L455,151.19l33.68-19.4v91.39h0Z\"]\n};\nvar faLastfm = {\n prefix: 'fab',\n iconName: 'lastfm',\n icon: [512, 512, [], \"f202\", \"M225.8 367.1l-18.8-51s-30.5 34-76.2 34c-40.5 0-69.2-35.2-69.2-91.5 0-72.1 36.4-97.9 72.1-97.9 66.5 0 74.8 53.3 100.9 134.9 18.8 56.9 54 102.6 155.4 102.6 72.7 0 122-22.3 122-80.9 0-72.9-62.7-80.6-115-92.1-25.8-5.9-33.4-16.4-33.4-34 0-19.9 15.8-31.7 41.6-31.7 28.2 0 43.4 10.6 45.7 35.8l58.6-7c-4.7-52.8-41.1-74.5-100.9-74.5-52.8 0-104.4 19.9-104.4 83.9 0 39.9 19.4 65.1 68 76.8 44.9 10.6 79.8 13.8 79.8 45.7 0 21.7-21.1 30.5-61 30.5-59.2 0-83.9-31.1-97.9-73.9-32-96.8-43.6-163-161.3-163C45.7 113.8 0 168.3 0 261c0 89.1 45.7 137.2 127.9 137.2 66.2 0 97.9-31.1 97.9-31.1z\"]\n};\nvar faLastfmSquare = {\n prefix: 'fab',\n iconName: 'lastfm-square',\n icon: [448, 512, [], \"f203\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-92.2 312.9c-63.4 0-85.4-28.6-97.1-64.1-16.3-51-21.5-84.3-63-84.3-22.4 0-45.1 16.1-45.1 61.2 0 35.2 18 57.2 43.3 57.2 28.6 0 47.6-21.3 47.6-21.3l11.7 31.9s-19.8 19.4-61.2 19.4c-51.3 0-79.9-30.1-79.9-85.8 0-57.9 28.6-92 82.5-92 73.5 0 80.8 41.4 100.8 101.9 8.8 26.8 24.2 46.2 61.2 46.2 24.9 0 38.1-5.5 38.1-19.1 0-19.9-21.8-22-49.9-28.6-30.4-7.3-42.5-23.1-42.5-48 0-40 32.3-52.4 65.2-52.4 37.4 0 60.1 13.6 63 46.6l-36.7 4.4c-1.5-15.8-11-22.4-28.6-22.4-16.1 0-26 7.3-26 19.8 0 11 4.8 17.6 20.9 21.3 32.7 7.1 71.8 12 71.8 57.5.1 36.7-30.7 50.6-76.1 50.6z\"]\n};\nvar faLeanpub = {\n prefix: 'fab',\n iconName: 'leanpub',\n icon: [576, 512, [], \"f212\", \"M386.539 111.485l15.096 248.955-10.979-.275c-36.232-.824-71.64 8.783-102.657 27.997-31.016-19.214-66.424-27.997-102.657-27.997-45.564 0-82.07 10.705-123.516 27.723L93.117 129.6c28.546-11.803 61.484-18.115 92.226-18.115 41.173 0 73.836 13.175 102.657 42.544 27.723-28.271 59.013-41.721 98.539-42.544zM569.07 448c-25.526 0-47.485-5.215-70.542-15.645-34.31-15.645-69.993-24.978-107.871-24.978-38.977 0-74.934 12.901-102.657 40.623-27.723-27.723-63.68-40.623-102.657-40.623-37.878 0-73.561 9.333-107.871 24.978C55.239 442.236 32.731 448 8.303 448H6.93L49.475 98.859C88.726 76.626 136.486 64 181.775 64 218.83 64 256.984 71.685 288 93.095 319.016 71.685 357.17 64 394.225 64c45.289 0 93.049 12.626 132.3 34.859L569.07 448zm-43.368-44.741l-34.036-280.246c-30.742-13.999-67.248-21.41-101.009-21.41-38.428 0-74.385 12.077-102.657 38.702-28.272-26.625-64.228-38.702-102.657-38.702-33.761 0-70.267 7.411-101.009 21.41L50.298 403.259c47.211-19.487 82.894-33.486 135.045-33.486 37.604 0 70.817 9.606 102.657 29.644 31.84-20.038 65.052-29.644 102.657-29.644 52.151 0 87.834 13.999 135.045 33.486z\"]\n};\nvar faLess = {\n prefix: 'fab',\n iconName: 'less',\n icon: [640, 512, [], \"f41d\", \"M612.7 219c0-20.5 3.2-32.6 3.2-54.6 0-34.2-12.6-45.2-40.5-45.2h-20.5v24.2h6.3c14.2 0 17.3 4.7 17.3 22.1 0 16.3-1.6 32.6-1.6 51.5 0 24.2 7.9 33.6 23.6 37.3v1.6c-15.8 3.7-23.6 13.1-23.6 37.3 0 18.9 1.6 34.2 1.6 51.5 0 17.9-3.7 22.6-17.3 22.6v.5h-6.3V393h20.5c27.8 0 40.5-11 40.5-45.2 0-22.6-3.2-34.2-3.2-54.6 0-11 6.8-22.6 27.3-23.6v-27.3c-20.5-.7-27.3-12.3-27.3-23.3zm-105.6 32c-15.8-6.3-30.5-10-30.5-20.5 0-7.9 6.3-12.6 17.9-12.6s22.1 4.7 33.6 13.1l21-27.8c-13.1-10-31-20.5-55.2-20.5-35.7 0-59.9 20.5-59.9 49.4 0 25.7 22.6 38.9 41.5 46.2 16.3 6.3 32.1 11.6 32.1 22.1 0 7.9-6.3 13.1-20.5 13.1-13.1 0-26.3-5.3-40.5-16.3l-21 30.5c15.8 13.1 39.9 22.1 59.9 22.1 42 0 64.6-22.1 64.6-51s-22.5-41-43-47.8zm-358.9 59.4c-3.7 0-8.4-3.2-8.4-13.1V119.1H65.2c-28.4 0-41 11-41 45.2 0 22.6 3.2 35.2 3.2 54.6 0 11-6.8 22.6-27.3 23.6v27.3c20.5.5 27.3 12.1 27.3 23.1 0 19.4-3.2 31-3.2 53.6 0 34.2 12.6 45.2 40.5 45.2h20.5v-24.2h-6.3c-13.1 0-17.3-5.3-17.3-22.6s1.6-32.1 1.6-51.5c0-24.2-7.9-33.6-23.6-37.3v-1.6c15.8-3.7 23.6-13.1 23.6-37.3 0-18.9-1.6-34.2-1.6-51.5s3.7-22.1 17.3-22.1H93v150.8c0 32.1 11 53.1 43.1 53.1 10 0 17.9-1.6 23.6-3.7l-5.3-34.2c-3.1.8-4.6.8-6.2.8zM379.9 251c-16.3-6.3-31-10-31-20.5 0-7.9 6.3-12.6 17.9-12.6 11.6 0 22.1 4.7 33.6 13.1l21-27.8c-13.1-10-31-20.5-55.2-20.5-35.7 0-59.9 20.5-59.9 49.4 0 25.7 22.6 38.9 41.5 46.2 16.3 6.3 32.1 11.6 32.1 22.1 0 7.9-6.3 13.1-20.5 13.1-13.1 0-26.3-5.3-40.5-16.3l-20.5 30.5c15.8 13.1 39.9 22.1 59.9 22.1 42 0 64.6-22.1 64.6-51 .1-28.9-22.5-41-43-47.8zm-155-68.8c-38.4 0-75.1 32.1-74.1 82.5 0 52 34.2 82.5 79.3 82.5 18.9 0 39.9-6.8 56.2-17.9l-15.8-27.8c-11.6 6.8-22.6 10-34.2 10-21 0-37.3-10-41.5-34.2H290c.5-3.7 1.6-11 1.6-19.4.6-42.6-22.6-75.7-66.7-75.7zm-30 66.2c3.2-21 15.8-31 30.5-31 18.9 0 26.3 13.1 26.3 31h-56.8z\"]\n};\nvar faLine = {\n prefix: 'fab',\n iconName: 'line',\n icon: [448, 512, [], \"f3c0\", \"M272.1 204.2v71.1c0 1.8-1.4 3.2-3.2 3.2h-11.4c-1.1 0-2.1-.6-2.6-1.3l-32.6-44v42.2c0 1.8-1.4 3.2-3.2 3.2h-11.4c-1.8 0-3.2-1.4-3.2-3.2v-71.1c0-1.8 1.4-3.2 3.2-3.2H219c1 0 2.1.5 2.6 1.4l32.6 44v-42.2c0-1.8 1.4-3.2 3.2-3.2h11.4c1.8-.1 3.3 1.4 3.3 3.1zm-82-3.2h-11.4c-1.8 0-3.2 1.4-3.2 3.2v71.1c0 1.8 1.4 3.2 3.2 3.2h11.4c1.8 0 3.2-1.4 3.2-3.2v-71.1c0-1.7-1.4-3.2-3.2-3.2zm-27.5 59.6h-31.1v-56.4c0-1.8-1.4-3.2-3.2-3.2h-11.4c-1.8 0-3.2 1.4-3.2 3.2v71.1c0 .9.3 1.6.9 2.2.6.5 1.3.9 2.2.9h45.7c1.8 0 3.2-1.4 3.2-3.2v-11.4c0-1.7-1.4-3.2-3.1-3.2zM332.1 201h-45.7c-1.7 0-3.2 1.4-3.2 3.2v71.1c0 1.7 1.4 3.2 3.2 3.2h45.7c1.8 0 3.2-1.4 3.2-3.2v-11.4c0-1.8-1.4-3.2-3.2-3.2H301v-12h31.1c1.8 0 3.2-1.4 3.2-3.2V234c0-1.8-1.4-3.2-3.2-3.2H301v-12h31.1c1.8 0 3.2-1.4 3.2-3.2v-11.4c-.1-1.7-1.5-3.2-3.2-3.2zM448 113.7V399c-.1 44.8-36.8 81.1-81.7 81H81c-44.8-.1-81.1-36.9-81-81.7V113c.1-44.8 36.9-81.1 81.7-81H367c44.8.1 81.1 36.8 81 81.7zm-61.6 122.6c0-73-73.2-132.4-163.1-132.4-89.9 0-163.1 59.4-163.1 132.4 0 65.4 58 120.2 136.4 130.6 19.1 4.1 16.9 11.1 12.6 36.8-.7 4.1-3.3 16.1 14.1 8.8 17.4-7.3 93.9-55.3 128.2-94.7 23.6-26 34.9-52.3 34.9-81.5z\"]\n};\nvar faLinkedin = {\n prefix: 'fab',\n iconName: 'linkedin',\n icon: [448, 512, [], \"f08c\", \"M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z\"]\n};\nvar faLinkedinIn = {\n prefix: 'fab',\n iconName: 'linkedin-in',\n icon: [448, 512, [], \"f0e1\", \"M100.28 448H7.4V148.9h92.88zM53.79 108.1C24.09 108.1 0 83.5 0 53.8a53.79 53.79 0 0 1 107.58 0c0 29.7-24.1 54.3-53.79 54.3zM447.9 448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29 0-55.69 37.7-55.69 76.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5 42.69-48.3 87.88-48.3 94 0 111.28 61.9 111.28 142.3V448z\"]\n};\nvar faLinode = {\n prefix: 'fab',\n iconName: 'linode',\n icon: [448, 512, [], \"f2b8\", \"M437.4 226.3c-.3-.9-.9-1.4-1.4-2l-70-38.6c-.9-.6-2-.6-3.1 0l-58.9 36c-.9.6-1.4 1.7-1.4 2.6l-.9 31.4-24-16c-.9-.6-2.3-.6-3.1 0L240 260.9l-1.4-35.1c0-.9-.6-2-1.4-2.3l-36-24.3 33.7-17.4c1.1-.6 1.7-1.7 1.7-2.9l-5.7-132.3c0-.9-.9-2-1.7-2.6L138.6.3c-.9-.3-1.7-.3-2.3-.3L12.6 38.6c-1.4.6-2.3 2-2 3.7L38 175.4c.9 3.4 34 27.4 38.6 30.9l-26.9 12.9c-1.4.9-2 2.3-1.7 3.4l20.6 100.3c.6 2.9 23.7 23.1 27.1 26.3l-17.4 10.6c-.9.6-1.7 2-1.4 3.1 1.4 7.1 15.4 77.7 16.9 79.1l65.1 69.1c.6.6 1.4.6 2.3.9.6 0 1.1-.3 1.7-.6l83.7-66.9c.9-.6 1.1-1.4 1.1-2.3l-2-46 28 23.7c1.1.9 2.9.9 4 0l66.9-53.4c.9-.6 1.1-1.4 1.1-2.3l2.3-33.4 20.3 14c1.1.9 2.6.9 3.7 0l54.6-43.7c.6-.3 1.1-1.1 1.1-2 .9-6.5 10.3-70.8 9.7-72.8zm-204.8 4.8l4 92.6-90.6 61.2-14-96.6 100.6-57.2zm-7.7-180l5.4 126-106.6 55.4L104 97.7l120.9-46.6zM44 173.1L18 48l79.7 49.4 19.4 132.9L44 173.1zm30.6 147.8L55.7 230l70 58.3 13.7 93.4-64.8-60.8zm24.3 117.7l-13.7-67.1 61.7 60.9 9.7 67.4-57.7-61.2zm64.5 64.5l-10.6-70.9 85.7-61.4 3.1 70-78.2 62.3zm82-115.1c0-3.4.9-22.9-2-25.1l-24.3-20 22.3-14.9c2.3-1.7 1.1-5.7 1.1-8l29.4 22.6.6 68.3-27.1-22.9zm94.3-25.4l-60.9 48.6-.6-68.6 65.7-46.9-4.2 66.9zm27.7-25.7l-19.1-13.4 2-34c.3-.9-.3-2-1.1-2.6L308 259.7l.6-30 64.6 40.6-5.8 66.6zm54.6-39.8l-48.3 38.3 5.7-65.1 51.1-36.6-8.5 63.4z\"]\n};\nvar faLinux = {\n prefix: 'fab',\n iconName: 'linux',\n icon: [448, 512, [], \"f17c\", \"M220.8 123.3c1 .5 1.8 1.7 3 1.7 1.1 0 2.8-.4 2.9-1.5.2-1.4-1.9-2.3-3.2-2.9-1.7-.7-3.9-1-5.5-.1-.4.2-.8.7-.6 1.1.3 1.3 2.3 1.1 3.4 1.7zm-21.9 1.7c1.2 0 2-1.2 3-1.7 1.1-.6 3.1-.4 3.5-1.6.2-.4-.2-.9-.6-1.1-1.6-.9-3.8-.6-5.5.1-1.3.6-3.4 1.5-3.2 2.9.1 1 1.8 1.5 2.8 1.4zM420 403.8c-3.6-4-5.3-11.6-7.2-19.7-1.8-8.1-3.9-16.8-10.5-22.4-1.3-1.1-2.6-2.1-4-2.9-1.3-.8-2.7-1.5-4.1-2 9.2-27.3 5.6-54.5-3.7-79.1-11.4-30.1-31.3-56.4-46.5-74.4-17.1-21.5-33.7-41.9-33.4-72C311.1 85.4 315.7.1 234.8 0 132.4-.2 158 103.4 156.9 135.2c-1.7 23.4-6.4 41.8-22.5 64.7-18.9 22.5-45.5 58.8-58.1 96.7-6 17.9-8.8 36.1-6.2 53.3-6.5 5.8-11.4 14.7-16.6 20.2-4.2 4.3-10.3 5.9-17 8.3s-14 6-18.5 14.5c-2.1 3.9-2.8 8.1-2.8 12.4 0 3.9.6 7.9 1.2 11.8 1.2 8.1 2.5 15.7.8 20.8-5.2 14.4-5.9 24.4-2.2 31.7 3.8 7.3 11.4 10.5 20.1 12.3 17.3 3.6 40.8 2.7 59.3 12.5 19.8 10.4 39.9 14.1 55.9 10.4 11.6-2.6 21.1-9.6 25.9-20.2 12.5-.1 26.3-5.4 48.3-6.6 14.9-1.2 33.6 5.3 55.1 4.1.6 2.3 1.4 4.6 2.5 6.7v.1c8.3 16.7 23.8 24.3 40.3 23 16.6-1.3 34.1-11 48.3-27.9 13.6-16.4 36-23.2 50.9-32.2 7.4-4.5 13.4-10.1 13.9-18.3.4-8.2-4.4-17.3-15.5-29.7zM223.7 87.3c9.8-22.2 34.2-21.8 44-.4 6.5 14.2 3.6 30.9-4.3 40.4-1.6-.8-5.9-2.6-12.6-4.9 1.1-1.2 3.1-2.7 3.9-4.6 4.8-11.8-.2-27-9.1-27.3-7.3-.5-13.9 10.8-11.8 23-4.1-2-9.4-3.5-13-4.4-1-6.9-.3-14.6 2.9-21.8zM183 75.8c10.1 0 20.8 14.2 19.1 33.5-3.5 1-7.1 2.5-10.2 4.6 1.2-8.9-3.3-20.1-9.6-19.6-8.4.7-9.8 21.2-1.8 28.1 1 .8 1.9-.2-5.9 5.5-15.6-14.6-10.5-52.1 8.4-52.1zm-13.6 60.7c6.2-4.6 13.6-10 14.1-10.5 4.7-4.4 13.5-14.2 27.9-14.2 7.1 0 15.6 2.3 25.9 8.9 6.3 4.1 11.3 4.4 22.6 9.3 8.4 3.5 13.7 9.7 10.5 18.2-2.6 7.1-11 14.4-22.7 18.1-11.1 3.6-19.8 16-38.2 14.9-3.9-.2-7-1-9.6-2.1-8-3.5-12.2-10.4-20-15-8.6-4.8-13.2-10.4-14.7-15.3-1.4-4.9 0-9 4.2-12.3zm3.3 334c-2.7 35.1-43.9 34.4-75.3 18-29.9-15.8-68.6-6.5-76.5-21.9-2.4-4.7-2.4-12.7 2.6-26.4v-.2c2.4-7.6.6-16-.6-23.9-1.2-7.8-1.8-15 .9-20 3.5-6.7 8.5-9.1 14.8-11.3 10.3-3.7 11.8-3.4 19.6-9.9 5.5-5.7 9.5-12.9 14.3-18 5.1-5.5 10-8.1 17.7-6.9 8.1 1.2 15.1 6.8 21.9 16l19.6 35.6c9.5 19.9 43.1 48.4 41 68.9zm-1.4-25.9c-4.1-6.6-9.6-13.6-14.4-19.6 7.1 0 14.2-2.2 16.7-8.9 2.3-6.2 0-14.9-7.4-24.9-13.5-18.2-38.3-32.5-38.3-32.5-13.5-8.4-21.1-18.7-24.6-29.9s-3-23.3-.3-35.2c5.2-22.9 18.6-45.2 27.2-59.2 2.3-1.7.8 3.2-8.7 20.8-8.5 16.1-24.4 53.3-2.6 82.4.6-20.7 5.5-41.8 13.8-61.5 12-27.4 37.3-74.9 39.3-112.7 1.1.8 4.6 3.2 6.2 4.1 4.6 2.7 8.1 6.7 12.6 10.3 12.4 10 28.5 9.2 42.4 1.2 6.2-3.5 11.2-7.5 15.9-9 9.9-3.1 17.8-8.6 22.3-15 7.7 30.4 25.7 74.3 37.2 95.7 6.1 11.4 18.3 35.5 23.6 64.6 3.3-.1 7 .4 10.9 1.4 13.8-35.7-11.7-74.2-23.3-84.9-4.7-4.6-4.9-6.6-2.6-6.5 12.6 11.2 29.2 33.7 35.2 59 2.8 11.6 3.3 23.7.4 35.7 16.4 6.8 35.9 17.9 30.7 34.8-2.2-.1-3.2 0-4.2 0 3.2-10.1-3.9-17.6-22.8-26.1-19.6-8.6-36-8.6-38.3 12.5-12.1 4.2-18.3 14.7-21.4 27.3-2.8 11.2-3.6 24.7-4.4 39.9-.5 7.7-3.6 18-6.8 29-32.1 22.9-76.7 32.9-114.3 7.2zm257.4-11.5c-.9 16.8-41.2 19.9-63.2 46.5-13.2 15.7-29.4 24.4-43.6 25.5s-26.5-4.8-33.7-19.3c-4.7-11.1-2.4-23.1 1.1-36.3 3.7-14.2 9.2-28.8 9.9-40.6.8-15.2 1.7-28.5 4.2-38.7 2.6-10.3 6.6-17.2 13.7-21.1.3-.2.7-.3 1-.5.8 13.2 7.3 26.6 18.8 29.5 12.6 3.3 30.7-7.5 38.4-16.3 9-.3 15.7-.9 22.6 5.1 9.9 8.5 7.1 30.3 17.1 41.6 10.6 11.6 14 19.5 13.7 24.6zM173.3 148.7c2 1.9 4.7 4.5 8 7.1 6.6 5.2 15.8 10.6 27.3 10.6 11.6 0 22.5-5.9 31.8-10.8 4.9-2.6 10.9-7 14.8-10.4s5.9-6.3 3.1-6.6-2.6 2.6-6 5.1c-4.4 3.2-9.7 7.4-13.9 9.8-7.4 4.2-19.5 10.2-29.9 10.2s-18.7-4.8-24.9-9.7c-3.1-2.5-5.7-5-7.7-6.9-1.5-1.4-1.9-4.6-4.3-4.9-1.4-.1-1.8 3.7 1.7 6.5z\"]\n};\nvar faLyft = {\n prefix: 'fab',\n iconName: 'lyft',\n icon: [512, 512, [], \"f3c3\", \"M0 81.1h77.8v208.7c0 33.1 15 52.8 27.2 61-12.7 11.1-51.2 20.9-80.2-2.8C7.8 334 0 310.7 0 289V81.1zm485.9 173.5v-22h23.8v-76.8h-26.1c-10.1-46.3-51.2-80.7-100.3-80.7-56.6 0-102.7 46-102.7 102.7V357c16 2.3 35.4-.3 51.7-14 17.1-14 24.8-37.2 24.8-59v-6.7h38.8v-76.8h-38.8v-23.3c0-34.6 52.2-34.6 52.2 0v77.1c0 56.6 46 102.7 102.7 102.7v-76.5c-14.5 0-26.1-11.7-26.1-25.9zm-294.3-99v113c0 15.4-23.8 15.4-23.8 0v-113H91v132.7c0 23.8 8 54 45 63.9 37 9.8 58.2-10.6 58.2-10.6-2.1 13.4-14.5 23.3-34.9 25.3-15.5 1.6-35.2-3.6-45-7.8v70.3c25.1 7.5 51.5 9.8 77.6 4.7 47.1-9.1 76.8-48.4 76.8-100.8V155.1h-77.1v.5z\"]\n};\nvar faMagento = {\n prefix: 'fab',\n iconName: 'magento',\n icon: [448, 512, [], \"f3c4\", \"M445.7 127.9V384l-63.4 36.5V164.7L223.8 73.1 65.2 164.7l.4 255.9L2.3 384V128.1L224.2 0l221.5 127.9zM255.6 420.5L224 438.9l-31.8-18.2v-256l-63.3 36.6.1 255.9 94.9 54.9 95.1-54.9v-256l-63.4-36.6v255.9z\"]\n};\nvar faMailchimp = {\n prefix: 'fab',\n iconName: 'mailchimp',\n icon: [448, 512, [], \"f59e\", \"M330.61 243.52a36.15 36.15 0 0 1 9.3 0c1.66-3.83 1.95-10.43.45-17.61-2.23-10.67-5.25-17.14-11.48-16.13s-6.47 8.74-4.24 19.42c1.26 6 3.49 11.14 6 14.32zM277.05 252c4.47 2 7.2 3.26 8.28 2.13 1.89-1.94-3.48-9.39-12.12-13.09a31.44 31.44 0 0 0-30.61 3.68c-3 2.18-5.81 5.22-5.41 7.06.85 3.74 10-2.71 22.6-3.48 7-.44 12.8 1.75 17.26 3.71zm-9 5.13c-9.07 1.42-15 6.53-13.47 10.1.9.34 1.17.81 5.21-.81a37 37 0 0 1 18.72-1.95c2.92.34 4.31.52 4.94-.49 1.46-2.22-5.71-8-15.39-6.85zm54.17 17.1c3.38-6.87-10.9-13.93-14.3-7s10.92 13.88 14.32 6.97zm15.66-20.47c-7.66-.13-7.95 15.8-.26 15.93s7.98-15.81.28-15.96zm-218.79 78.9c-1.32.31-6 1.45-8.47-2.35-5.2-8 11.11-20.38 3-35.77-9.1-17.47-27.82-13.54-35.05-5.54-8.71 9.6-8.72 23.54-5 24.08 4.27.57 4.08-6.47 7.38-11.63a12.83 12.83 0 0 1 17.85-3.72c11.59 7.59 1.37 17.76 2.28 28.62 1.39 16.68 18.42 16.37 21.58 9a2.08 2.08 0 0 0-.2-2.33c.03.89.68-1.3-3.35-.39zm299.72-17.07c-3.35-11.73-2.57-9.22-6.78-20.52 2.45-3.67 15.29-24-3.07-43.25-10.4-10.92-33.9-16.54-41.1-18.54-1.5-11.39 4.65-58.7-21.52-83 20.79-21.55 33.76-45.29 33.73-65.65-.06-39.16-48.15-51-107.42-26.47l-12.55 5.33c-.06-.05-22.71-22.27-23.05-22.57C169.5-18-41.77 216.81 25.78 273.85l14.76 12.51a72.49 72.49 0 0 0-4.1 33.5c3.36 33.4 36 60.42 67.53 60.38 57.73 133.06 267.9 133.28 322.29 3 1.74-4.47 9.11-24.61 9.11-42.38s-10.09-25.27-16.53-25.27zm-316 48.16c-22.82-.61-47.46-21.15-49.91-45.51-6.17-61.31 74.26-75.27 84-12.33 4.54 29.64-4.67 58.49-34.12 57.81zM84.3 249.55C69.14 252.5 55.78 261.09 47.6 273c-4.88-4.07-14-12-15.59-15-13.01-24.85 14.24-73 33.3-100.21C112.42 90.56 186.19 39.68 220.36 48.91c5.55 1.57 23.94 22.89 23.94 22.89s-34.15 18.94-65.8 45.35c-42.66 32.85-74.89 80.59-94.2 132.4zM323.18 350.7s-35.74 5.3-69.51-7.07c6.21-20.16 27 6.1 96.4-13.81 15.29-4.38 35.37-13 51-25.35a102.85 102.85 0 0 1 7.12 24.28c3.66-.66 14.25-.52 11.44 18.1-3.29 19.87-11.73 36-25.93 50.84A106.86 106.86 0 0 1 362.55 421a132.45 132.45 0 0 1-20.34 8.58c-53.51 17.48-108.3-1.74-126-43a66.33 66.33 0 0 1-3.55-9.74c-7.53-27.2-1.14-59.83 18.84-80.37 1.23-1.31 2.48-2.85 2.48-4.79a8.45 8.45 0 0 0-1.92-4.54c-7-10.13-31.19-27.4-26.33-60.83 3.5-24 24.49-40.91 44.07-39.91l5 .29c8.48.5 15.89 1.59 22.88 1.88 11.69.5 22.2-1.19 34.64-11.56 4.2-3.5 7.57-6.54 13.26-7.51a17.45 17.45 0 0 1 13.6 2.24c10 6.64 11.4 22.73 11.92 34.49.29 6.72 1.1 23 1.38 27.63.63 10.67 3.43 12.17 9.11 14 3.19 1.05 6.15 1.83 10.51 3.06 13.21 3.71 21 7.48 26 12.31a16.38 16.38 0 0 1 4.74 9.29c1.56 11.37-8.82 25.4-36.31 38.16-46.71 21.68-93.68 14.45-100.48 13.68-20.15-2.71-31.63 23.32-19.55 41.15 22.64 33.41 122.4 20 151.37-21.35.69-1 .12-1.59-.73-1-41.77 28.58-97.06 38.21-128.46 26-4.77-1.85-14.73-6.44-15.94-16.67 43.6 13.49 71 .74 71 .74s2.03-2.79-.56-2.53zm-68.47-5.7zm-83.4-187.5c16.74-19.35 37.36-36.18 55.83-45.63a.73.73 0 0 1 1 1c-1.46 2.66-4.29 8.34-5.19 12.65a.75.75 0 0 0 1.16.79c11.49-7.83 31.48-16.22 49-17.3a.77.77 0 0 1 .52 1.38 41.86 41.86 0 0 0-7.71 7.74.75.75 0 0 0 .59 1.19c12.31.09 29.66 4.4 41 10.74.76.43.22 1.91-.64 1.72-69.55-15.94-123.08 18.53-134.5 26.83a.76.76 0 0 1-1-1.12z\"]\n};\nvar faMandalorian = {\n prefix: 'fab',\n iconName: 'mandalorian',\n icon: [448, 512, [], \"f50f\", \"M232.27 511.89c-1-3.26-1.69-15.83-1.39-24.58.55-15.89 1-24.72 1.4-28.76.64-6.2 2.87-20.72 3.28-21.38.6-1 .4-27.87-.24-33.13-.31-2.58-.63-11.9-.69-20.73-.13-16.47-.53-20.12-2.73-24.76-1.1-2.32-1.23-3.84-1-11.43a92.38 92.38 0 0 0-.34-12.71c-2-13-3.46-27.7-3.25-33.9s.43-7.15 2.06-9.67c3.05-4.71 6.51-14 8.62-23.27 2.26-9.86 3.88-17.18 4.59-20.74a109.54 109.54 0 0 1 4.42-15.05c2.27-6.25 2.49-15.39.37-15.39-.3 0-1.38 1.22-2.41 2.71s-4.76 4.8-8.29 7.36c-8.37 6.08-11.7 9.39-12.66 12.58s-1 7.23-.16 7.76c.34.21 1.29 2.4 2.11 4.88a28.83 28.83 0 0 1 .72 15.36c-.39 1.77-1 5.47-1.46 8.23s-1 6.46-1.25 8.22a9.85 9.85 0 0 1-1.55 4.26c-1 1-1.14.91-2.05-.53a14.87 14.87 0 0 1-1.44-4.75c-.25-1.74-1.63-7.11-3.08-11.93-3.28-10.9-3.52-16.15-1-21a14.24 14.24 0 0 0 1.67-4.61c0-2.39-2.2-5.32-7.41-9.89-7-6.18-8.63-7.92-10.23-11.3-1.71-3.6-3.06-4.06-4.54-1.54-1.78 3-2.6 9.11-3 22l-.34 12.19 2 2.25c3.21 3.7 12.07 16.45 13.78 19.83 3.41 6.74 4.34 11.69 4.41 23.56s.95 22.75 2 24.71c.36.66.51 1.35.34 1.52s.41 2.09 1.29 4.27a38.14 38.14 0 0 1 2.06 9 91 91 0 0 0 1.71 10.37c2.23 9.56 2.77 14.08 2.39 20.14-.2 3.27-.53 11.07-.73 17.32-1.31 41.76-1.85 58-2 61.21-.12 2-.39 11.51-.6 21.07-.36 16.3-1.3 27.37-2.42 28.65-.64.73-8.07-4.91-12.52-9.49-3.75-3.87-4-4.79-2.83-9.95.7-3 2.26-18.29 3.33-32.62.36-4.78.81-10.5 1-12.71.83-9.37 1.66-20.35 2.61-34.78.56-8.46 1.33-16.44 1.72-17.73s.89-9.89 1.13-19.11l.43-16.77-2.26-4.3c-1.72-3.28-4.87-6.94-13.22-15.34-6-6.07-11.84-12.3-12.91-13.85l-1.95-2.81.75-10.9c1.09-15.71 1.1-48.57 0-59.06l-.89-8.7-3.28-4.52c-5.86-8.08-5.8-7.75-6.22-33.27-.1-6.07-.38-11.5-.63-12.06-.83-1.87-3.05-2.66-8.54-3.05-8.86-.62-11-1.9-23.85-14.55-6.15-6-12.34-12-13.75-13.19-2.81-2.42-2.79-2-.56-9.63l1.35-4.65-1.69-3a32.22 32.22 0 0 0-2.59-4.07c-1.33-1.51-5.5-10.89-6-13.49a4.24 4.24 0 0 1 .87-3.9c2.23-2.86 3.4-5.68 4.45-10.73 2.33-11.19 7.74-26.09 10.6-29.22 3.18-3.47 7.7-1 9.41 5 1.34 4.79 1.37 9.79.1 18.55a101.2 101.2 0 0 0-1 11.11c0 4 .19 4.69 2.25 7.39 3.33 4.37 7.73 7.41 15.2 10.52a18.67 18.67 0 0 1 4.72 2.85c11.17 10.72 18.62 16.18 22.95 16.85 5.18.8 8 4.54 10 13.39 1.31 5.65 4 11.14 5.46 11.14a9.38 9.38 0 0 0 3.33-1.39c2-1.22 2.25-1.73 2.25-4.18a132.88 132.88 0 0 0-2-17.84c-.37-1.66-.78-4.06-.93-5.35s-.61-3.85-1-5.69c-2.55-11.16-3.65-15.46-4.1-16-1.55-2-4.08-10.2-4.93-15.92-1.64-11.11-4-14.23-12.91-17.39A43.15 43.15 0 0 1 165.24 78c-1.15-1-4-3.22-6.35-5.06s-4.41-3.53-4.6-3.76a22.7 22.7 0 0 0-2.69-2c-6.24-4.22-8.84-7-11.26-12l-2.44-5-.22-13-.22-13 6.91-6.55c3.95-3.75 8.48-7.35 10.59-8.43 3.31-1.69 4.45-1.89 11.37-2 8.53-.19 10.12 0 11.66 1.56s1.36 6.4-.29 8.5a6.66 6.66 0 0 0-1.34 2.32c0 .58-2.61 4.91-5.42 9a30.39 30.39 0 0 0-2.37 6.82c20.44 13.39 21.55 3.77 14.07 29L194 66.92c3.11-8.66 6.47-17.26 8.61-26.22.29-7.63-12-4.19-15.4-8.68-2.33-5.93 3.13-14.18 6.06-19.2 1.6-2.34 6.62-4.7 8.82-4.15.88.22 4.16-.35 7.37-1.28a45.3 45.3 0 0 1 7.55-1.68 29.57 29.57 0 0 0 6-1.29c3.65-1.11 4.5-1.17 6.35-.4a29.54 29.54 0 0 0 5.82 1.36 18.18 18.18 0 0 1 6 1.91 22.67 22.67 0 0 0 5 2.17c2.51.68 3 .57 7.05-1.67l4.35-2.4L268.32 5c10.44-.4 10.81-.47 15.26-2.68L288.16 0l2.46 1.43c1.76 1 3.14 2.73 4.85 6 2.36 4.51 2.38 4.58 1.37 7.37-.88 2.44-.89 3.3-.1 6.39a35.76 35.76 0 0 0 2.1 5.91 13.55 13.55 0 0 1 1.31 4c.31 4.33 0 5.3-2.41 6.92-2.17 1.47-7 7.91-7 9.34a14.77 14.77 0 0 1-1.07 3c-5 11.51-6.76 13.56-14.26 17-9.2 4.2-12.3 5.19-16.21 5.19-3.1 0-4 .25-4.54 1.26a18.33 18.33 0 0 1-4.09 3.71 13.62 13.62 0 0 0-4.38 4.78 5.89 5.89 0 0 1-2.49 2.91 6.88 6.88 0 0 0-2.45 1.71 67.62 67.62 0 0 1-7 5.38c-3.33 2.34-6.87 5-7.87 6A7.27 7.27 0 0 1 224 100a5.76 5.76 0 0 0-2.13 1.65c-1.31 1.39-1.49 2.11-1.14 4.6a36.45 36.45 0 0 0 1.42 5.88c1.32 3.8 1.31 7.86 0 10.57s-.89 6.65 1.35 9.59c2 2.63 2.16 4.56.71 8.84a33.45 33.45 0 0 0-1.06 8.91c0 4.88.22 6.28 1.46 8.38s1.82 2.48 3.24 2.32c2-.23 2.3-1.05 4.71-12.12 2.18-10 3.71-11.92 13.76-17.08 2.94-1.51 7.46-4 10-5.44s6.79-3.69 9.37-4.91a40.09 40.09 0 0 0 15.22-11.67c7.11-8.79 10-16.22 12.85-33.3a18.37 18.37 0 0 1 2.86-7.73 20.39 20.39 0 0 0 2.89-7.31c1-5.3 2.85-9.08 5.58-11.51 4.7-4.18 6-1.09 4.59 10.87-.46 3.86-1.1 10.33-1.44 14.38l-.61 7.36 4.45 4.09 4.45 4.09.11 8.42c.06 4.63.47 9.53.92 10.89l.82 2.47-6.43 6.28c-8.54 8.33-12.88 13.93-16.76 21.61-1.77 3.49-3.74 7.11-4.38 8-2.18 3.11-6.46 13-8.76 20.26l-2.29 7.22-7 6.49c-3.83 3.57-8 7.25-9.17 8.17-3.05 2.32-4.26 5.15-4.26 10a14.62 14.62 0 0 0 1.59 7.26 42 42 0 0 1 2.09 4.83 9.28 9.28 0 0 0 1.57 2.89c1.4 1.59 1.92 16.12.83 23.22-.68 4.48-3.63 12-4.7 12-1.79 0-4.06 9.27-5.07 20.74-.18 2-.62 5.94-1 8.7s-1 10-1.35 16.05c-.77 12.22-.19 18.77 2 23.15 3.41 6.69.52 12.69-11 22.84l-4 3.49.07 5.19a40.81 40.81 0 0 0 1.14 8.87c4.61 16 4.73 16.92 4.38 37.13-.46 26.4-.26 40.27.63 44.15a61.31 61.31 0 0 1 1.08 7c.17 2 .66 5.33 1.08 7.36.47 2.26.78 11 .79 22.74v19.06l-1.81 2.63c-2.71 3.91-15.11 13.54-15.49 12.29zm29.53-45.11c-.18-.3-.33-6.87-.33-14.59 0-14.06-.89-27.54-2.26-34.45-.4-2-.81-9.7-.9-17.06-.15-11.93-1.4-24.37-2.64-26.38-.66-1.07-3-17.66-3-21.3 0-4.23 1-6 5.28-9.13s4.86-3.14 5.48-.72c.28 1.1 1.45 5.62 2.6 10 3.93 15.12 4.14 16.27 4.05 21.74-.1 5.78-.13 6.13-1.74 17.73-1 7.07-1.17 12.39-1 28.43.17 19.4-.64 35.73-2 41.27-.71 2.78-2.8 5.48-3.43 4.43zm-71-37.58a101 101 0 0 1-1.73-10.79 100.5 100.5 0 0 0-1.73-10.79 37.53 37.53 0 0 1-1-6.49c-.31-3.19-.91-7.46-1.33-9.48-1-4.79-3.35-19.35-3.42-21.07 0-.74-.34-4.05-.7-7.36-.67-6.21-.84-27.67-.22-28.29 1-1 6.63 2.76 11.33 7.43l5.28 5.25-.45 6.47c-.25 3.56-.6 10.23-.78 14.83s-.49 9.87-.67 11.71-.61 9.36-.94 16.72c-.79 17.41-1.94 31.29-2.65 32a.62.62 0 0 1-1-.14zm-87.18-266.59c21.07 12.79 17.84 14.15 28.49 17.66 13 4.29 18.87 7.13 23.15 16.87C111.6 233.28 86.25 255 78.55 268c-31 52-6 101.59 62.75 87.21-14.18 29.23-78 28.63-98.68-4.9-24.68-39.95-22.09-118.3 61-187.66zm210.79 179c56.66 6.88 82.32-37.74 46.54-89.23 0 0-26.87-29.34-64.28-68 3-15.45 9.49-32.12 30.57-53.82 89.2 63.51 92 141.61 92.46 149.36 4.3 70.64-78.7 91.18-105.29 61.71z\"]\n};\nvar faMarkdown = {\n prefix: 'fab',\n iconName: 'markdown',\n icon: [640, 512, [], \"f60f\", \"M593.8 59.1H46.2C20.7 59.1 0 79.8 0 105.2v301.5c0 25.5 20.7 46.2 46.2 46.2h547.7c25.5 0 46.2-20.7 46.1-46.1V105.2c0-25.4-20.7-46.1-46.2-46.1zM338.5 360.6H277v-120l-61.5 76.9-61.5-76.9v120H92.3V151.4h61.5l61.5 76.9 61.5-76.9h61.5v209.2zm135.3 3.1L381.5 256H443V151.4h61.5V256H566z\"]\n};\nvar faMastodon = {\n prefix: 'fab',\n iconName: 'mastodon',\n icon: [448, 512, [], \"f4f6\", \"M433 179.11c0-97.2-63.71-125.7-63.71-125.7-62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54a102.54 102.54 0 0 1-.9-13.9c85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175z\"]\n};\nvar faMaxcdn = {\n prefix: 'fab',\n iconName: 'maxcdn',\n icon: [512, 512, [], \"f136\", \"M461.1 442.7h-97.4L415.6 200c2.3-10.2.9-19.5-4.4-25.7-5-6.1-13.7-9.6-24.2-9.6h-49.3l-59.5 278h-97.4l59.5-278h-83.4l-59.5 278H0l59.5-278-44.6-95.4H387c39.4 0 75.3 16.3 98.3 44.9 23.3 28.6 31.8 67.4 23.6 105.9l-47.8 222.6z\"]\n};\nvar faMdb = {\n prefix: 'fab',\n iconName: 'mdb',\n icon: [576, 512, [], \"f8ca\", \"M17.37 160.41L7 352h43.91l5.59-79.83L84.43 352h44.71l25.54-77.43 4.79 77.43H205l-12.79-191.59H146.7L106 277.74 63.67 160.41zm281 0h-47.9V352h47.9s95 .8 94.2-95.79c-.78-94.21-94.18-95.78-94.18-95.78zm-1.2 146.46V204.78s46 4.27 46.8 50.57-46.78 51.54-46.78 51.54zm238.29-74.24a56.16 56.16 0 0 0 8-38.31c-5.34-35.76-55.08-34.32-55.08-34.32h-51.9v191.58H482s87 4.79 87-63.85c0-43.14-33.52-55.08-33.52-55.08zm-51.9-31.94s13.57-1.59 16 9.59c1.43 6.66-4 12-4 12h-12v-21.57zm-.1 109.46l.1-24.92V267h.08s41.58-4.73 41.19 22.43c-.33 25.65-41.35 20.74-41.35 20.74z\"]\n};\nvar faMedapps = {\n prefix: 'fab',\n iconName: 'medapps',\n icon: [320, 512, [], \"f3c6\", \"M118.3 238.4c3.5-12.5 6.9-33.6 13.2-33.6 8.3 1.8 9.6 23.4 18.6 36.6 4.6-23.5 5.3-85.1 14.1-86.7 9-.7 19.7 66.5 22 77.5 9.9 4.1 48.9 6.6 48.9 6.6 1.9 7.3-24 7.6-40 7.8-4.6 14.8-5.4 27.7-11.4 28-4.7.2-8.2-28.8-17.5-49.6l-9.4 65.5c-4.4 13-15.5-22.5-21.9-39.3-3.3-.1-62.4-1.6-47.6-7.8l31-5zM228 448c21.2 0 21.2-32 0-32H92c-21.2 0-21.2 32 0 32h136zm-24 64c21.2 0 21.2-32 0-32h-88c-21.2 0-21.2 32 0 32h88zm34.2-141.5c3.2-18.9 5.2-36.4 11.9-48.8 7.9-14.7 16.1-28.1 24-41 24.6-40.4 45.9-75.2 45.9-125.5C320 69.6 248.2 0 160 0S0 69.6 0 155.2c0 50.2 21.3 85.1 45.9 125.5 7.9 12.9 16 26.3 24 41 6.7 12.5 8.7 29.8 11.9 48.9 3.5 21 36.1 15.7 32.6-5.1-3.6-21.7-5.6-40.7-15.3-58.6C66.5 246.5 33 211.3 33 155.2 33 87.3 90 32 160 32s127 55.3 127 123.2c0 56.1-33.5 91.3-66.1 151.6-9.7 18-11.7 37.4-15.3 58.6-3.4 20.6 29 26.4 32.6 5.1z\"]\n};\nvar faMedium = {\n prefix: 'fab',\n iconName: 'medium',\n icon: [448, 512, [], \"f23a\", \"M0 32v448h448V32H0zm372.2 106.1l-24 23c-2.1 1.6-3.1 4.2-2.7 6.7v169.3c-.4 2.6.6 5.2 2.7 6.7l23.5 23v5.1h-118V367l24.3-23.6c2.4-2.4 2.4-3.1 2.4-6.7V199.8l-67.6 171.6h-9.1L125 199.8v115c-.7 4.8 1 9.7 4.4 13.2l31.6 38.3v5.1H71.2v-5.1l31.6-38.3c3.4-3.5 4.9-8.4 4.1-13.2v-133c.4-3.7-1-7.3-3.8-9.8L75 138.1V133h87.3l67.4 148L289 133.1h83.2v5z\"]\n};\nvar faMediumM = {\n prefix: 'fab',\n iconName: 'medium-m',\n icon: [512, 512, [], \"f3c7\", \"M71.5 142.3c.6-5.9-1.7-11.8-6.1-15.8L20.3 72.1V64h140.2l108.4 237.7L364.2 64h133.7v8.1l-38.6 37c-3.3 2.5-5 6.7-4.3 10.8v272c-.7 4.1 1 8.3 4.3 10.8l37.7 37v8.1H307.3v-8.1l39.1-37.9c3.8-3.8 3.8-5 3.8-10.8V171.2L241.5 447.1h-14.7L100.4 171.2v184.9c-1.1 7.8 1.5 15.6 7 21.2l50.8 61.6v8.1h-144v-8L65 377.3c5.4-5.6 7.9-13.5 6.5-21.2V142.3z\"]\n};\nvar faMedrt = {\n prefix: 'fab',\n iconName: 'medrt',\n icon: [544, 512, [], \"f3c8\", \"M113.7 256c0 121.8 83.9 222.8 193.5 241.1-18.7 4.5-38.2 6.9-58.2 6.9C111.4 504 0 393 0 256S111.4 8 248.9 8c20.1 0 39.6 2.4 58.2 6.9C197.5 33.2 113.7 134.2 113.7 256m297.4 100.3c-77.7 55.4-179.6 47.5-240.4-14.6 5.5 14.1 12.7 27.7 21.7 40.5 61.6 88.2 182.4 109.3 269.7 47 87.3-62.3 108.1-184.3 46.5-272.6-9-12.9-19.3-24.3-30.5-34.2 37.4 78.8 10.7 178.5-67 233.9m-218.8-244c-1.4 1-2.7 2.1-4 3.1 64.3-17.8 135.9 4 178.9 60.5 35.7 47 42.9 106.6 24.4 158 56.7-56.2 67.6-142.1 22.3-201.8-50-65.5-149.1-74.4-221.6-19.8M296 224c-4.4 0-8-3.6-8-8v-40c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v40c0 4.4-3.6 8-8 8h-40c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h40c4.4 0 8 3.6 8 8v40c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-40c0-4.4 3.6-8 8-8h40c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8h-40z\"]\n};\nvar faMeetup = {\n prefix: 'fab',\n iconName: 'meetup',\n icon: [512, 512, [], \"f2e0\", \"M99 414.3c1.1 5.7-2.3 11.1-8 12.3-5.4 1.1-10.9-2.3-12-8-1.1-5.4 2.3-11.1 7.7-12.3 5.4-1.2 11.1 2.3 12.3 8zm143.1 71.4c-6.3 4.6-8 13.4-3.7 20 4.6 6.6 13.4 8.3 20 3.7 6.3-4.6 8-13.4 3.4-20-4.2-6.5-13.1-8.3-19.7-3.7zm-86-462.3c6.3-1.4 10.3-7.7 8.9-14-1.1-6.6-7.4-10.6-13.7-9.1-6.3 1.4-10.3 7.7-9.1 14 1.4 6.6 7.6 10.6 13.9 9.1zM34.4 226.3c-10-6.9-23.7-4.3-30.6 6-6.9 10-4.3 24 5.7 30.9 10 7.1 23.7 4.6 30.6-5.7 6.9-10.4 4.3-24.1-5.7-31.2zm272-170.9c10.6-6.3 13.7-20 7.7-30.3-6.3-10.6-19.7-14-30-7.7s-13.7 20-7.4 30.6c6 10.3 19.4 13.7 29.7 7.4zm-191.1 58c7.7-5.4 9.4-16 4.3-23.7s-15.7-9.4-23.1-4.3c-7.7 5.4-9.4 16-4.3 23.7 5.1 7.8 15.6 9.5 23.1 4.3zm372.3 156c-7.4 1.7-12.3 9.1-10.6 16.9 1.4 7.4 8.9 12.3 16.3 10.6 7.4-1.4 12.3-8.9 10.6-16.6-1.5-7.4-8.9-12.3-16.3-10.9zm39.7-56.8c-1.1-5.7-6.6-9.1-12-8-5.7 1.1-9.1 6.9-8 12.6 1.1 5.4 6.6 9.1 12.3 8 5.4-1.5 9.1-6.9 7.7-12.6zM447 138.9c-8.6 6-10.6 17.7-4.9 26.3 5.7 8.6 17.4 10.6 26 4.9 8.3-6 10.3-17.7 4.6-26.3-5.7-8.7-17.4-10.9-25.7-4.9zm-6.3 139.4c26.3 43.1 15.1 100-26.3 129.1-17.4 12.3-37.1 17.7-56.9 17.1-12 47.1-69.4 64.6-105.1 32.6-1.1.9-2.6 1.7-3.7 2.9-39.1 27.1-92.3 17.4-119.4-22.3-9.7-14.3-14.6-30.6-15.1-46.9-65.4-10.9-90-94-41.1-139.7-28.3-46.9.6-107.4 53.4-114.9C151.6 70 234.1 38.6 290.1 82c67.4-22.3 136.3 29.4 130.9 101.1 41.1 12.6 52.8 66.9 19.7 95.2zm-70 74.3c-3.1-20.6-40.9-4.6-43.1-27.1-3.1-32 43.7-101.1 40-128-3.4-24-19.4-29.1-33.4-29.4-13.4-.3-16.9 2-21.4 4.6-2.9 1.7-6.6 4.9-11.7-.3-6.3-6-11.1-11.7-19.4-12.9-12.3-2-17.7 2-26.6 9.7-3.4 2.9-12 12.9-20 9.1-3.4-1.7-15.4-7.7-24-11.4-16.3-7.1-40 4.6-48.6 20-12.9 22.9-38 113.1-41.7 125.1-8.6 26.6 10.9 48.6 36.9 47.1 11.1-.6 18.3-4.6 25.4-17.4 4-7.4 41.7-107.7 44.6-112.6 2-3.4 8.9-8 14.6-5.1 5.7 3.1 6.9 9.4 6 15.1-1.1 9.7-28 70.9-28.9 77.7-3.4 22.9 26.9 26.6 38.6 4 3.7-7.1 45.7-92.6 49.4-98.3 4.3-6.3 7.4-8.3 11.7-8 3.1 0 8.3.9 7.1 10.9-1.4 9.4-35.1 72.3-38.9 87.7-4.6 20.6 6.6 41.4 24.9 50.6 11.4 5.7 62.5 15.7 58.5-11.1zm5.7 92.3c-10.3 7.4-12.9 22-5.7 32.6 7.1 10.6 21.4 13.1 32 6 10.6-7.4 13.1-22 6-32.6-7.4-10.6-21.7-13.5-32.3-6z\"]\n};\nvar faMegaport = {\n prefix: 'fab',\n iconName: 'megaport',\n icon: [496, 512, [], \"f5a3\", \"M214.5 209.6v66.2l33.5 33.5 33.3-33.3v-66.4l-33.4-33.4zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm145.1 414.4L367 441.6l-26-19.2v-65.5l-33.4-33.4-33.4 33.4v65.5L248 441.6l-26.1-19.2v-65.5l-33.4-33.4-33.5 33.4v65.5l-26.1 19.2-26.1-19.2v-87l59.5-59.5V188l59.5-59.5V52.9l26.1-19.2L274 52.9v75.6l59.5 59.5v87.6l59.7 59.7v87.1z\"]\n};\nvar faMendeley = {\n prefix: 'fab',\n iconName: 'mendeley',\n icon: [640, 512, [], \"f7b3\", \"M624.6 325.2c-12.3-12.4-29.7-19.2-48.4-17.2-43.3-1-49.7-34.9-37.5-98.8 22.8-57.5-14.9-131.5-87.4-130.8-77.4.7-81.7 82-130.9 82-48.1 0-54-81.3-130.9-82-72.9-.8-110.1 73.3-87.4 130.8 12.2 63.9 5.8 97.8-37.5 98.8-21.2-2.3-37 6.5-53 22.5-19.9 19.7-19.3 94.8 42.6 102.6 47.1 5.9 81.6-42.9 61.2-87.8-47.3-103.7 185.9-106.1 146.5-8.2-.1.1-.2.2-.3.4-26.8 42.8 6.8 97.4 58.8 95.2 52.1 2.1 85.4-52.6 58.8-95.2-.1-.2-.2-.3-.3-.4-39.4-97.9 193.8-95.5 146.5 8.2-4.6 10-6.7 21.3-5.7 33 4.9 53.4 68.7 74.1 104.9 35.2 17.8-14.8 23.1-65.6 0-88.3zm-303.9-19.1h-.6c-43.4 0-62.8-37.5-62.8-62.8 0-34.7 28.2-62.8 62.8-62.8h.6c34.7 0 62.8 28.1 62.8 62.8 0 25-19.2 62.8-62.8 62.8z\"]\n};\nvar faMicroblog = {\n prefix: 'fab',\n iconName: 'microblog',\n icon: [448, 512, [], \"e01a\", \"M399.36,362.23c29.49-34.69,47.1-78.34,47.1-125.79C446.46,123.49,346.86,32,224,32S1.54,123.49,1.54,236.44,101.14,440.87,224,440.87a239.28,239.28,0,0,0,79.44-13.44,7.18,7.18,0,0,1,8.12,2.56c18.58,25.09,47.61,42.74,79.89,49.92a4.42,4.42,0,0,0,5.22-3.43,4.37,4.37,0,0,0-.85-3.62,87,87,0,0,1,3.69-110.69ZM329.52,212.4l-57.3,43.49L293,324.75a6.5,6.5,0,0,1-9.94,7.22L224,290.92,164.94,332a6.51,6.51,0,0,1-9.95-7.22l20.79-68.86-57.3-43.49a6.5,6.5,0,0,1,3.8-11.68l71.88-1.51,23.66-67.92a6.5,6.5,0,0,1,12.28,0l23.66,67.92,71.88,1.51a6.5,6.5,0,0,1,3.88,11.68Z\"]\n};\nvar faMicrosoft = {\n prefix: 'fab',\n iconName: 'microsoft',\n icon: [448, 512, [], \"f3ca\", \"M0 32h214.6v214.6H0V32zm233.4 0H448v214.6H233.4V32zM0 265.4h214.6V480H0V265.4zm233.4 0H448V480H233.4V265.4z\"]\n};\nvar faMix = {\n prefix: 'fab',\n iconName: 'mix',\n icon: [448, 512, [], \"f3cb\", \"M0 64v348.9c0 56.2 88 58.1 88 0V174.3c7.9-52.9 88-50.4 88 6.5v175.3c0 57.9 96 58 96 0V240c5.3-54.7 88-52.5 88 4.3v23.8c0 59.9 88 56.6 88 0V64H0z\"]\n};\nvar faMixcloud = {\n prefix: 'fab',\n iconName: 'mixcloud',\n icon: [640, 512, [], \"f289\", \"M424.43 219.729C416.124 134.727 344.135 68 256.919 68c-72.266 0-136.224 46.516-159.205 114.074-54.545 8.029-96.63 54.822-96.63 111.582 0 62.298 50.668 112.966 113.243 112.966h289.614c52.329 0 94.969-42.362 94.969-94.693 0-45.131-32.118-83.063-74.48-92.2zm-20.489 144.53H114.327c-39.04 0-70.881-31.564-70.881-70.604s31.841-70.604 70.881-70.604c18.827 0 36.548 7.475 49.838 20.766 19.963 19.963 50.133-10.227 30.18-30.18-14.675-14.398-32.672-24.365-52.053-29.349 19.935-44.3 64.79-73.926 114.628-73.926 69.496 0 125.979 56.483 125.979 125.702 0 13.568-2.215 26.857-6.369 39.594-8.943 27.517 32.133 38.939 40.147 13.29 2.769-8.306 4.984-16.889 6.369-25.472 19.381 7.476 33.502 26.303 33.502 48.453 0 28.795-23.535 52.33-52.607 52.33zm235.069-52.33c0 44.024-12.737 86.386-37.102 122.657-4.153 6.092-10.798 9.414-17.72 9.414-16.317 0-27.127-18.826-17.443-32.949 19.381-29.349 29.903-63.682 29.903-99.122s-10.521-69.773-29.903-98.845c-15.655-22.831 19.361-47.24 35.163-23.534 24.366 35.993 37.102 78.356 37.102 122.379zm-70.88 0c0 31.565-9.137 62.021-26.857 88.325-4.153 6.091-10.798 9.136-17.72 9.136-17.201 0-27.022-18.979-17.443-32.948 13.013-19.104 19.658-41.255 19.658-64.513 0-22.981-6.645-45.408-19.658-64.512-15.761-22.986 19.008-47.095 35.163-23.535 17.719 26.026 26.857 56.483 26.857 88.047z\"]\n};\nvar faMixer = {\n prefix: 'fab',\n iconName: 'mixer',\n icon: [512, 512, [], \"e056\", \"M114.57,76.07a45.71,45.71,0,0,0-67.51-6.41c-17.58,16.18-19,43.52-4.75,62.77l91.78,123L41.76,379.58c-14.23,19.25-13.11,46.59,4.74,62.77A45.71,45.71,0,0,0,114,435.94L242.89,262.7a12.14,12.14,0,0,0,0-14.23ZM470.24,379.58,377.91,255.45l91.78-123c14.22-19.25,12.83-46.59-4.75-62.77a45.71,45.71,0,0,0-67.51,6.41l-128,172.12a12.14,12.14,0,0,0,0,14.23L398,435.94a45.71,45.71,0,0,0,67.51,6.41C483.35,426.17,484.47,398.83,470.24,379.58Z\"]\n};\nvar faMizuni = {\n prefix: 'fab',\n iconName: 'mizuni',\n icon: [496, 512, [], \"f3cc\", \"M248 8C111 8 0 119.1 0 256c0 137 111 248 248 248s248-111 248-248C496 119.1 385 8 248 8zm-80 351.9c-31.4 10.6-58.8 27.3-80 48.2V136c0-22.1 17.9-40 40-40s40 17.9 40 40v223.9zm120-9.9c-12.9-2-26.2-3.1-39.8-3.1-13.8 0-27.2 1.1-40.2 3.1V136c0-22.1 17.9-40 40-40s40 17.9 40 40v214zm120 57.7c-21.2-20.8-48.6-37.4-80-48V136c0-22.1 17.9-40 40-40s40 17.9 40 40v271.7z\"]\n};\nvar faModx = {\n prefix: 'fab',\n iconName: 'modx',\n icon: [448, 512, [], \"f285\", \"M356 241.8l36.7 23.7V480l-133-83.8L356 241.8zM440 75H226.3l-23 37.8 153.5 96.5L440 75zm-89 142.8L55.2 32v214.5l46 29L351 217.8zM97 294.2L8 437h213.7l125-200.5L97 294.2z\"]\n};\nvar faMonero = {\n prefix: 'fab',\n iconName: 'monero',\n icon: [496, 512, [], \"f3d0\", \"M352 384h108.4C417 455.9 338.1 504 248 504S79 455.9 35.6 384H144V256.2L248 361l104-105v128zM88 336V128l159.4 159.4L408 128v208h74.8c8.5-25.1 13.2-52 13.2-80C496 119 385 8 248 8S0 119 0 256c0 28 4.6 54.9 13.2 80H88z\"]\n};\nvar faNapster = {\n prefix: 'fab',\n iconName: 'napster',\n icon: [496, 512, [], \"f3d2\", \"M298.3 373.6c-14.2 13.6-31.3 24.1-50.4 30.5-19-6.4-36.2-16.9-50.3-30.5h100.7zm44-199.6c20-16.9 43.6-29.2 69.6-36.2V299c0 219.4-328 217.6-328 .3V137.7c25.9 6.9 49.6 19.6 69.5 36.4 56.8-40 132.5-39.9 188.9-.1zm-208.8-58.5c64.4-60 164.3-60.1 228.9-.2-7.1 3.5-13.9 7.3-20.6 11.5-58.7-30.5-129.2-30.4-187.9.1-6.3-4-13.9-8.2-20.4-11.4zM43.8 93.2v69.3c-58.4 36.5-58.4 121.1.1 158.3 26.4 245.1 381.7 240.3 407.6 1.5l.3-1.7c58.7-36.3 58.9-121.7.2-158.2V93.2c-17.3.5-34 3-50.1 7.4-82-91.5-225.5-91.5-307.5.1-16.3-4.4-33.1-7-50.6-7.5zM259.2 352s36-.3 61.3-1.5c10.2-.5 21.1-4 25.5-6.5 26.3-15.1 25.4-39.2 26.2-47.4-79.5-.6-99.9-3.9-113 55.4zm-135.5-55.3c.8 8.2-.1 32.3 26.2 47.4 4.4 2.5 15.2 6 25.5 6.5 25.3 1.1 61.3 1.5 61.3 1.5-13.2-59.4-33.7-56.1-113-55.4zm169.1 123.4c-3.2-5.3-6.9-7.3-6.9-7.3-24.8 7.3-52.2 6.9-75.9 0 0 0-2.9 1.5-6.4 6.6-2.8 4.1-3.7 9.6-3.7 9.6 29.1 17.6 67.1 17.6 96.2 0-.1-.1-.3-4-3.3-8.9z\"]\n};\nvar faNeos = {\n prefix: 'fab',\n iconName: 'neos',\n icon: [512, 512, [], \"f612\", \"M415.44 512h-95.11L212.12 357.46v91.1L125.69 512H28V29.82L68.47 0h108.05l123.74 176.13V63.45L386.69 0h97.69v461.5zM38.77 35.27V496l72-52.88V194l215.5 307.64h84.79l52.35-38.17h-78.27L69 13zm82.54 466.61l80-58.78v-101l-79.76-114.4v220.94L49 501.89h72.34zM80.63 10.77l310.6 442.57h82.37V10.77h-79.75v317.56L170.91 10.77zM311 191.65l72 102.81V15.93l-72 53v122.72z\"]\n};\nvar faNimblr = {\n prefix: 'fab',\n iconName: 'nimblr',\n icon: [384, 512, [], \"f5a8\", \"M246.6 299.29c15.57 0 27.15 11.46 27.15 27s-11.62 27-27.15 27c-15.7 0-27.15-11.57-27.15-27s11.55-27 27.15-27zM113 326.25c0-15.61 11.68-27 27.15-27s27.15 11.46 27.15 27-11.47 27-27.15 27c-15.44 0-27.15-11.31-27.15-27M191.76 159C157 159 89.45 178.77 59.25 227L14 0v335.48C14 433.13 93.61 512 191.76 512s177.76-78.95 177.76-176.52S290.13 159 191.76 159zm0 308.12c-73.27 0-132.51-58.9-132.51-131.59s59.24-131.59 132.51-131.59 132.51 58.86 132.51 131.54S265 467.07 191.76 467.07z\"]\n};\nvar faNode = {\n prefix: 'fab',\n iconName: 'node',\n icon: [640, 512, [], \"f419\", \"M316.3 452c-2.1 0-4.2-.6-6.1-1.6L291 439c-2.9-1.6-1.5-2.2-.5-2.5 3.8-1.3 4.6-1.6 8.7-4 .4-.2 1-.1 1.4.1l14.8 8.8c.5.3 1.3.3 1.8 0L375 408c.5-.3.9-.9.9-1.6v-66.7c0-.7-.3-1.3-.9-1.6l-57.8-33.3c-.5-.3-1.2-.3-1.8 0l-57.8 33.3c-.6.3-.9 1-.9 1.6v66.7c0 .6.4 1.2.9 1.5l15.8 9.1c8.6 4.3 13.9-.8 13.9-5.8v-65.9c0-.9.7-1.7 1.7-1.7h7.3c.9 0 1.7.7 1.7 1.7v65.9c0 11.5-6.2 18-17.1 18-3.3 0-6 0-13.3-3.6l-15.2-8.7c-3.7-2.2-6.1-6.2-6.1-10.5v-66.7c0-4.3 2.3-8.4 6.1-10.5l57.8-33.4c3.7-2.1 8.5-2.1 12.1 0l57.8 33.4c3.7 2.2 6.1 6.2 6.1 10.5v66.7c0 4.3-2.3 8.4-6.1 10.5l-57.8 33.4c-1.7 1.1-3.8 1.7-6 1.7zm46.7-65.8c0-12.5-8.4-15.8-26.2-18.2-18-2.4-19.8-3.6-19.8-7.8 0-3.5 1.5-8.1 14.8-8.1 11.9 0 16.3 2.6 18.1 10.6.2.8.8 1.3 1.6 1.3h7.5c.5 0 .9-.2 1.2-.5.3-.4.5-.8.4-1.3-1.2-13.8-10.3-20.2-28.8-20.2-16.5 0-26.3 7-26.3 18.6 0 12.7 9.8 16.1 25.6 17.7 18.9 1.9 20.4 4.6 20.4 8.3 0 6.5-5.2 9.2-17.4 9.2-15.3 0-18.7-3.8-19.8-11.4-.1-.8-.8-1.4-1.7-1.4h-7.5c-.9 0-1.7.7-1.7 1.7 0 9.7 5.3 21.3 30.6 21.3 18.5 0 29-7.2 29-19.8zm54.5-50.1c0 6.1-5 11.1-11.1 11.1s-11.1-5-11.1-11.1c0-6.3 5.2-11.1 11.1-11.1 6-.1 11.1 4.8 11.1 11.1zm-1.8 0c0-5.2-4.2-9.3-9.4-9.3-5.1 0-9.3 4.1-9.3 9.3 0 5.2 4.2 9.4 9.3 9.4 5.2-.1 9.4-4.3 9.4-9.4zm-4.5 6.2h-2.6c-.1-.6-.5-3.8-.5-3.9-.2-.7-.4-1.1-1.3-1.1h-2.2v5h-2.4v-12.5h4.3c1.5 0 4.4 0 4.4 3.3 0 2.3-1.5 2.8-2.4 3.1 1.7.1 1.8 1.2 2.1 2.8.1 1 .3 2.7.6 3.3zm-2.8-8.8c0-1.7-1.2-1.7-1.8-1.7h-2v3.5h1.9c1.6 0 1.9-1.1 1.9-1.8zM137.3 191c0-2.7-1.4-5.1-3.7-6.4l-61.3-35.3c-1-.6-2.2-.9-3.4-1h-.6c-1.2 0-2.3.4-3.4 1L3.7 184.6C1.4 185.9 0 188.4 0 191l.1 95c0 1.3.7 2.5 1.8 3.2 1.1.7 2.5.7 3.7 0L42 268.3c2.3-1.4 3.7-3.8 3.7-6.4v-44.4c0-2.6 1.4-5.1 3.7-6.4l15.5-8.9c1.2-.7 2.4-1 3.7-1 1.3 0 2.6.3 3.7 1l15.5 8.9c2.3 1.3 3.7 3.8 3.7 6.4v44.4c0 2.6 1.4 5.1 3.7 6.4l36.4 20.9c1.1.7 2.6.7 3.7 0 1.1-.6 1.8-1.9 1.8-3.2l.2-95zM472.5 87.3v176.4c0 2.6-1.4 5.1-3.7 6.4l-61.3 35.4c-2.3 1.3-5.1 1.3-7.4 0l-61.3-35.4c-2.3-1.3-3.7-3.8-3.7-6.4v-70.8c0-2.6 1.4-5.1 3.7-6.4l61.3-35.4c2.3-1.3 5.1-1.3 7.4 0l15.3 8.8c1.7 1 3.9-.3 3.9-2.2v-94c0-2.8 3-4.6 5.5-3.2l36.5 20.4c2.3 1.2 3.8 3.7 3.8 6.4zm-46 128.9c0-.7-.4-1.3-.9-1.6l-21-12.2c-.6-.3-1.3-.3-1.9 0l-21 12.2c-.6.3-.9.9-.9 1.6v24.3c0 .7.4 1.3.9 1.6l21 12.1c.6.3 1.3.3 1.8 0l21-12.1c.6-.3.9-.9.9-1.6v-24.3zm209.8-.7c2.3-1.3 3.7-3.8 3.7-6.4V192c0-2.6-1.4-5.1-3.7-6.4l-60.9-35.4c-2.3-1.3-5.1-1.3-7.4 0l-61.3 35.4c-2.3 1.3-3.7 3.8-3.7 6.4v70.8c0 2.7 1.4 5.1 3.7 6.4l60.9 34.7c2.2 1.3 5 1.3 7.3 0l36.8-20.5c2.5-1.4 2.5-5 0-6.4L550 241.6c-1.2-.7-1.9-1.9-1.9-3.2v-22.2c0-1.3.7-2.5 1.9-3.2l19.2-11.1c1.1-.7 2.6-.7 3.7 0l19.2 11.1c1.1.7 1.9 1.9 1.9 3.2v17.4c0 2.8 3.1 4.6 5.6 3.2l36.7-21.3zM559 219c-.4.3-.7.7-.7 1.2v13.6c0 .5.3 1 .7 1.2l11.8 6.8c.4.3 1 .3 1.4 0L584 235c.4-.3.7-.7.7-1.2v-13.6c0-.5-.3-1-.7-1.2l-11.8-6.8c-.4-.3-1-.3-1.4 0L559 219zm-254.2 43.5v-70.4c0-2.6-1.6-5.1-3.9-6.4l-61.1-35.2c-2.1-1.2-5-1.4-7.4 0l-61.1 35.2c-2.3 1.3-3.9 3.7-3.9 6.4v70.4c0 2.8 1.9 5.2 4 6.4l61.2 35.2c2.4 1.4 5.2 1.3 7.4 0l61-35.2c1.8-1 3.1-2.7 3.6-4.7.1-.5.2-1.1.2-1.7zm-74.3-124.9l-.8.5h1.1l-.3-.5zm76.2 130.2l-.4-.7v.9l.4-.2z\"]\n};\nvar faNodeJs = {\n prefix: 'fab',\n iconName: 'node-js',\n icon: [448, 512, [], \"f3d3\", \"M224 508c-6.7 0-13.5-1.8-19.4-5.2l-61.7-36.5c-9.2-5.2-4.7-7-1.7-8 12.3-4.3 14.8-5.2 27.9-12.7 1.4-.8 3.2-.5 4.6.4l47.4 28.1c1.7 1 4.1 1 5.7 0l184.7-106.6c1.7-1 2.8-3 2.8-5V149.3c0-2.1-1.1-4-2.9-5.1L226.8 37.7c-1.7-1-4-1-5.7 0L36.6 144.3c-1.8 1-2.9 3-2.9 5.1v213.1c0 2 1.1 4 2.9 4.9l50.6 29.2c27.5 13.7 44.3-2.4 44.3-18.7V167.5c0-3 2.4-5.3 5.4-5.3h23.4c2.9 0 5.4 2.3 5.4 5.3V378c0 36.6-20 57.6-54.7 57.6-10.7 0-19.1 0-42.5-11.6l-48.4-27.9C8.1 389.2.7 376.3.7 362.4V149.3c0-13.8 7.4-26.8 19.4-33.7L204.6 9c11.7-6.6 27.2-6.6 38.8 0l184.7 106.7c12 6.9 19.4 19.8 19.4 33.7v213.1c0 13.8-7.4 26.7-19.4 33.7L243.4 502.8c-5.9 3.4-12.6 5.2-19.4 5.2zm149.1-210.1c0-39.9-27-50.5-83.7-58-57.4-7.6-63.2-11.5-63.2-24.9 0-11.1 4.9-25.9 47.4-25.9 37.9 0 51.9 8.2 57.7 33.8.5 2.4 2.7 4.2 5.2 4.2h24c1.5 0 2.9-.6 3.9-1.7s1.5-2.6 1.4-4.1c-3.7-44.1-33-64.6-92.2-64.6-52.7 0-84.1 22.2-84.1 59.5 0 40.4 31.3 51.6 81.8 56.6 60.5 5.9 65.2 14.8 65.2 26.7 0 20.6-16.6 29.4-55.5 29.4-48.9 0-59.6-12.3-63.2-36.6-.4-2.6-2.6-4.5-5.3-4.5h-23.9c-3 0-5.3 2.4-5.3 5.3 0 31.1 16.9 68.2 97.8 68.2 58.4-.1 92-23.2 92-63.4z\"]\n};\nvar faNpm = {\n prefix: 'fab',\n iconName: 'npm',\n icon: [576, 512, [], \"f3d4\", \"M288 288h-32v-64h32v64zm288-128v192H288v32H160v-32H0V160h576zm-416 32H32v128h64v-96h32v96h32V192zm160 0H192v160h64v-32h64V192zm224 0H352v128h64v-96h32v96h32v-96h32v96h32V192z\"]\n};\nvar faNs8 = {\n prefix: 'fab',\n iconName: 'ns8',\n icon: [640, 512, [], \"f3d5\", \"M104.324,269.172h26.067V242.994H104.324Zm52.466-26.178-.055-26.178v-.941a39.325,39.325,0,0,0-78.644.941v.166h26.4v-.166a12.98,12.98,0,0,1,25.956,0v26.178Zm52.356,25.846a91.1,91.1,0,0,1-91.1,91.1h-.609a91.1,91.1,0,0,1-91.1-91.1H0v.166A117.33,117.33,0,0,0,117.44,386.28h.775A117.331,117.331,0,0,0,235.49,268.84V242.828H209.146Zm-157.233,0a65.362,65.362,0,0,0,130.723,0H156.292a39.023,39.023,0,0,1-78.035,0V242.883H51.968v-26.62A65.42,65.42,0,0,1,182.8,217.48v25.293h26.344V217.48a91.761,91.761,0,0,0-183.522,0v25.4H51.913Zm418.4-71.173c13.67,0,24.573,6.642,30.052,18.264l.719,1.549,23.245-11.511-.609-1.439c-8.025-19.26-28.5-31.27-53.407-31.27-23.134,0-43.611,11.4-50.972,28.447-.123,26.876-.158,23.9,0,24.85,4.7,11.013,14.555,19.37,28.668,24.241a102.033,102.033,0,0,0,19.813,3.984c5.479.72,10.626,1.384,15.829,3.1,6.364,2.1,10.46,5.257,12.84,9.851v9.851c-3.708,7.527-13.781,12.342-25.791,12.342-14.334,0-25.956-6.918-31.933-19.039l-.72-1.494L415.026,280.9l.553,1.439c7.915,19.426,29.609,32.044,55.289,32.044,23.632,0,44.608-11.4,52.3-28.447l.166-25.9-.166-.664c-4.87-11.014-15.219-19.647-28.944-24.241-7.693-2.712-14.335-3.6-20.7-4.427a83.777,83.777,0,0,1-14.832-2.878c-6.31-1.937-10.4-5.092-12.619-9.63v-8.412C449.45,202.427,458.969,197.667,470.315,197.667ZM287.568,311.344h26.067v-68.4H287.568Zm352.266-53.3c-2.933-6.254-8.3-12.01-15.441-16.714A37.99,37.99,0,0,0,637.4,226l.166-25.347-.166-.664C630.038,184,610.667,173.26,589.25,173.26S548.461,184,541.1,199.992l-.166,25.347.166.664a39.643,39.643,0,0,0,13.006,15.331c-7.2,4.7-12.508,10.46-15.441,16.714l-.166,28.889.166.72c7.582,15.994,27.893,26.731,50.585,26.731s43.057-10.737,50.584-26.731l.166-28.89Zm-73.22-50.806c3.6-6.31,12.563-10.516,22.58-10.516s19.038,4.206,22.636,10.516v13.725c-3.542,6.2-12.563,10.349-22.636,10.349s-19.094-4.15-22.58-10.349Zm47.319,72.169c-3.764,6.641-13.338,10.9-24.683,10.9-11.125,0-20.976-4.372-24.684-10.9V263.25c3.708-6.309,13.5-10.515,24.684-10.515,11.345,0,20.919,4.15,24.683,10.515ZM376.4,265.962l-59.827-89.713h-29v40.623h26.51v.387l62.539,94.085H402.3V176.249H376.4Z\"]\n};\nvar faNutritionix = {\n prefix: 'fab',\n iconName: 'nutritionix',\n icon: [400, 512, [], \"f3d6\", \"M88 8.1S221.4-.1 209 112.5c0 0 19.1-74.9 103-40.6 0 0-17.7 74-88 56 0 0 14.6-54.6 66.1-56.6 0 0-39.9-10.3-82.1 48.8 0 0-19.8-94.5-93.6-99.7 0 0 75.2 19.4 77.6 107.5 0 .1-106.4 7-104-119.8zm312 315.6c0 48.5-9.7 95.3-32 132.3-42.2 30.9-105 48-168 48-62.9 0-125.8-17.1-168-48C9.7 419 0 372.2 0 323.7 0 275.3 17.7 229 40 192c42.2-30.9 97.1-48.6 160-48.6 63 0 117.8 17.6 160 48.6 22.3 37 40 83.3 40 131.7zM120 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zM192 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zM264 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zM336 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm24-39.6c-4.8-22.3-7.4-36.9-16-56-38.8-19.9-90.5-32-144-32S94.8 180.1 56 200c-8.8 19.5-11.2 33.9-16 56 42.2-7.9 98.7-14.8 160-14.8s117.8 6.9 160 14.8z\"]\n};\nvar faOctopusDeploy = {\n prefix: 'fab',\n iconName: 'octopus-deploy',\n icon: [512, 512, [], \"e082\", \"M455.6,349.2c-45.891-39.09-36.67-77.877-16.095-128.11C475.16,134.04,415.967,34.14,329.93,8.3,237.04-19.6,134.252,24.341,99.677,117.147a180.862,180.862,0,0,0-10.988,73.544c1.733,29.543,14.717,52.97,24.09,80.3,17.2,50.161-28.1,92.743-66.662,117.582-46.806,30.2-36.319,39.857-8.428,41.858,23.378,1.68,44.478-4.548,65.265-15.045,9.2-4.647,40.687-18.931,45.13-28.588C135.9,413.388,111.122,459.5,126.621,488.9c19.1,36.229,67.112-31.77,76.709-45.812,8.591-12.572,42.963-81.279,63.627-46.926,18.865,31.361,8.6,76.391,35.738,104.622,32.854,34.2,51.155-18.312,51.412-44.221.163-16.411-6.1-95.852,29.9-59.944C405.428,418,436.912,467.8,472.568,463.642c38.736-4.516-22.123-67.967-28.262-78.695,5.393,4.279,53.665,34.128,53.818,9.52C498.234,375.678,468.039,359.8,455.6,349.2Z\"]\n};\nvar faOdnoklassniki = {\n prefix: 'fab',\n iconName: 'odnoklassniki',\n icon: [320, 512, [], \"f263\", \"M275.1 334c-27.4 17.4-65.1 24.3-90 26.9l20.9 20.6 76.3 76.3c27.9 28.6-17.5 73.3-45.7 45.7-19.1-19.4-47.1-47.4-76.3-76.6L84 503.4c-28.2 27.5-73.6-17.6-45.4-45.7 19.4-19.4 47.1-47.4 76.3-76.3l20.6-20.6c-24.6-2.6-62.9-9.1-90.6-26.9-32.6-21-46.9-33.3-34.3-59 7.4-14.6 27.7-26.9 54.6-5.7 0 0 36.3 28.9 94.9 28.9s94.9-28.9 94.9-28.9c26.9-21.1 47.1-8.9 54.6 5.7 12.4 25.7-1.9 38-34.5 59.1zM30.3 129.7C30.3 58 88.6 0 160 0s129.7 58 129.7 129.7c0 71.4-58.3 129.4-129.7 129.4s-129.7-58-129.7-129.4zm66 0c0 35.1 28.6 63.7 63.7 63.7s63.7-28.6 63.7-63.7c0-35.4-28.6-64-63.7-64s-63.7 28.6-63.7 64z\"]\n};\nvar faOdnoklassnikiSquare = {\n prefix: 'fab',\n iconName: 'odnoklassniki-square',\n icon: [448, 512, [], \"f264\", \"M184.2 177.1c0-22.1 17.9-40 39.8-40s39.8 17.9 39.8 40c0 22-17.9 39.8-39.8 39.8s-39.8-17.9-39.8-39.8zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-305.1 97.1c0 44.6 36.4 80.9 81.1 80.9s81.1-36.2 81.1-80.9c0-44.8-36.4-81.1-81.1-81.1s-81.1 36.2-81.1 81.1zm174.5 90.7c-4.6-9.1-17.3-16.8-34.1-3.6 0 0-22.7 18-59.3 18s-59.3-18-59.3-18c-16.8-13.2-29.5-5.5-34.1 3.6-7.9 16.1 1.1 23.7 21.4 37 17.3 11.1 41.2 15.2 56.6 16.8l-12.9 12.9c-18.2 18-35.5 35.5-47.7 47.7-17.6 17.6 10.7 45.8 28.4 28.6l47.7-47.9c18.2 18.2 35.7 35.7 47.7 47.9 17.6 17.2 46-10.7 28.6-28.6l-47.7-47.7-13-12.9c15.5-1.6 39.1-5.9 56.2-16.8 20.4-13.3 29.3-21 21.5-37z\"]\n};\nvar faOldRepublic = {\n prefix: 'fab',\n iconName: 'old-republic',\n icon: [496, 512, [], \"f510\", \"M235.76 10.23c7.5-.31 15-.28 22.5-.09 3.61.14 7.2.4 10.79.73 4.92.27 9.79 1.03 14.67 1.62 2.93.43 5.83.98 8.75 1.46 7.9 1.33 15.67 3.28 23.39 5.4 12.24 3.47 24.19 7.92 35.76 13.21 26.56 12.24 50.94 29.21 71.63 49.88 20.03 20.09 36.72 43.55 48.89 69.19 1.13 2.59 2.44 5.1 3.47 7.74 2.81 6.43 5.39 12.97 7.58 19.63 4.14 12.33 7.34 24.99 9.42 37.83.57 3.14 1.04 6.3 1.4 9.47.55 3.83.94 7.69 1.18 11.56.83 8.34.84 16.73.77 25.1-.07 4.97-.26 9.94-.75 14.89-.24 3.38-.51 6.76-.98 10.12-.39 2.72-.63 5.46-1.11 8.17-.9 5.15-1.7 10.31-2.87 15.41-4.1 18.5-10.3 36.55-18.51 53.63-15.77 32.83-38.83 62.17-67.12 85.12a246.503 246.503 0 0 1-56.91 34.86c-6.21 2.68-12.46 5.25-18.87 7.41-3.51 1.16-7.01 2.38-10.57 3.39-6.62 1.88-13.29 3.64-20.04 5-4.66.91-9.34 1.73-14.03 2.48-5.25.66-10.5 1.44-15.79 1.74-6.69.66-13.41.84-20.12.81-6.82.03-13.65-.12-20.45-.79-3.29-.23-6.57-.5-9.83-.95-2.72-.39-5.46-.63-8.17-1.11-4.12-.72-8.25-1.37-12.35-2.22-4.25-.94-8.49-1.89-12.69-3.02-8.63-2.17-17.08-5.01-25.41-8.13-10.49-4.12-20.79-8.75-30.64-14.25-2.14-1.15-4.28-2.29-6.35-3.57-11.22-6.58-21.86-14.1-31.92-22.34-34.68-28.41-61.41-66.43-76.35-108.7-3.09-8.74-5.71-17.65-7.8-26.68-1.48-6.16-2.52-12.42-3.58-18.66-.4-2.35-.61-4.73-.95-7.09-.6-3.96-.75-7.96-1.17-11.94-.8-9.47-.71-18.99-.51-28.49.14-3.51.34-7.01.7-10.51.31-3.17.46-6.37.92-9.52.41-2.81.65-5.65 1.16-8.44.7-3.94 1.3-7.9 2.12-11.82 3.43-16.52 8.47-32.73 15.26-48.18 1.15-2.92 2.59-5.72 3.86-8.59 8.05-16.71 17.9-32.56 29.49-47.06 20-25.38 45.1-46.68 73.27-62.47 7.5-4.15 15.16-8.05 23.07-11.37 15.82-6.88 32.41-11.95 49.31-15.38 3.51-.67 7.04-1.24 10.56-1.85 2.62-.47 5.28-.7 7.91-1.08 3.53-.53 7.1-.68 10.65-1.04 2.46-.24 4.91-.36 7.36-.51m8.64 24.41c-9.23.1-18.43.99-27.57 2.23-7.3 1.08-14.53 2.6-21.71 4.3-13.91 3.5-27.48 8.34-40.46 14.42-10.46 4.99-20.59 10.7-30.18 17.22-4.18 2.92-8.4 5.8-12.34 9.03-5.08 3.97-9.98 8.17-14.68 12.59-2.51 2.24-4.81 4.7-7.22 7.06-28.22 28.79-48.44 65.39-57.5 104.69-2.04 8.44-3.54 17.02-4.44 25.65-1.1 8.89-1.44 17.85-1.41 26.8.11 7.14.38 14.28 1.22 21.37.62 7.12 1.87 14.16 3.2 21.18 1.07 4.65 2.03 9.32 3.33 13.91 6.29 23.38 16.5 45.7 30.07 65.75 8.64 12.98 18.78 24.93 29.98 35.77 16.28 15.82 35.05 29.04 55.34 39.22 7.28 3.52 14.66 6.87 22.27 9.63 5.04 1.76 10.06 3.57 15.22 4.98 11.26 3.23 22.77 5.6 34.39 7.06 2.91.29 5.81.61 8.72.9 13.82 1.08 27.74 1 41.54-.43 4.45-.6 8.92-.99 13.35-1.78 3.63-.67 7.28-1.25 10.87-2.1 4.13-.98 8.28-1.91 12.36-3.07 26.5-7.34 51.58-19.71 73.58-36.2 15.78-11.82 29.96-25.76 42.12-41.28 3.26-4.02 6.17-8.31 9.13-12.55 3.39-5.06 6.58-10.25 9.6-15.54 2.4-4.44 4.74-8.91 6.95-13.45 5.69-12.05 10.28-24.62 13.75-37.49 2.59-10.01 4.75-20.16 5.9-30.45 1.77-13.47 1.94-27.1 1.29-40.65-.29-3.89-.67-7.77-1-11.66-2.23-19.08-6.79-37.91-13.82-55.8-5.95-15.13-13.53-29.63-22.61-43.13-12.69-18.8-28.24-35.68-45.97-49.83-25.05-20-54.47-34.55-85.65-42.08-7.78-1.93-15.69-3.34-23.63-4.45-3.91-.59-7.85-.82-11.77-1.24-7.39-.57-14.81-.72-22.22-.58zM139.26 83.53c13.3-8.89 28.08-15.38 43.3-20.18-3.17 1.77-6.44 3.38-9.53 5.29-11.21 6.68-21.52 14.9-30.38 24.49-6.8 7.43-12.76 15.73-17.01 24.89-3.29 6.86-5.64 14.19-6.86 21.71-.93 4.85-1.3 9.81-1.17 14.75.13 13.66 4.44 27.08 11.29 38.82 5.92 10.22 13.63 19.33 22.36 27.26 4.85 4.36 10.24 8.09 14.95 12.6 2.26 2.19 4.49 4.42 6.43 6.91 2.62 3.31 4.89 6.99 5.99 11.1.9 3.02.66 6.2.69 9.31.02 4.1-.04 8.2.03 12.3.14 3.54-.02 7.09.11 10.63.08 2.38.02 4.76.05 7.14.16 5.77.06 11.53.15 17.3.11 2.91.02 5.82.13 8.74.03 1.63.13 3.28-.03 4.91-.91.12-1.82.18-2.73.16-10.99 0-21.88-2.63-31.95-6.93-6-2.7-11.81-5.89-17.09-9.83-5.75-4.19-11.09-8.96-15.79-14.31-6.53-7.24-11.98-15.39-16.62-23.95-1.07-2.03-2.24-4.02-3.18-6.12-1.16-2.64-2.62-5.14-3.67-7.82-4.05-9.68-6.57-19.94-8.08-30.31-.49-4.44-1.09-8.88-1.2-13.35-.7-15.73.84-31.55 4.67-46.82 2.12-8.15 4.77-16.18 8.31-23.83 6.32-14.2 15.34-27.18 26.3-38.19 6.28-6.2 13.13-11.84 20.53-16.67zm175.37-20.12c2.74.74 5.41 1.74 8.09 2.68 6.36 2.33 12.68 4.84 18.71 7.96 13.11 6.44 25.31 14.81 35.82 24.97 10.2 9.95 18.74 21.6 25.14 34.34 1.28 2.75 2.64 5.46 3.81 8.26 6.31 15.1 10 31.26 11.23 47.57.41 4.54.44 9.09.45 13.64.07 11.64-1.49 23.25-4.3 34.53-1.97 7.27-4.35 14.49-7.86 21.18-3.18 6.64-6.68 13.16-10.84 19.24-6.94 10.47-15.6 19.87-25.82 27.22-10.48 7.64-22.64 13.02-35.4 15.38-3.51.69-7.08 1.08-10.66 1.21-1.85.06-3.72.16-5.56-.1-.28-2.15 0-4.31-.01-6.46-.03-3.73.14-7.45.1-11.17.19-7.02.02-14.05.21-21.07.03-2.38-.03-4.76.03-7.14.17-5.07-.04-10.14.14-15.21.1-2.99-.24-6.04.51-8.96.66-2.5 1.78-4.86 3.09-7.08 4.46-7.31 11.06-12.96 17.68-18.26 5.38-4.18 10.47-8.77 15.02-13.84 7.68-8.37 14.17-17.88 18.78-28.27 2.5-5.93 4.52-12.1 5.55-18.46.86-4.37 1.06-8.83 1.01-13.27-.02-7.85-1.4-15.65-3.64-23.17-1.75-5.73-4.27-11.18-7.09-16.45-3.87-6.93-8.65-13.31-13.96-19.2-9.94-10.85-21.75-19.94-34.6-27.1-1.85-1.02-3.84-1.82-5.63-2.97zm-100.8 58.45c.98-1.18 1.99-2.33 3.12-3.38-.61.93-1.27 1.81-1.95 2.68-3.1 3.88-5.54 8.31-7.03 13.06-.87 3.27-1.68 6.6-1.73 10-.07 2.52-.08 5.07.32 7.57 1.13 7.63 4.33 14.85 8.77 21.12 2 2.7 4.25 5.27 6.92 7.33 1.62 1.27 3.53 2.09 5.34 3.05 3.11 1.68 6.32 3.23 9.07 5.48 2.67 2.09 4.55 5.33 4.4 8.79-.01 73.67 0 147.34-.01 221.02 0 1.35-.08 2.7.04 4.04.13 1.48.82 2.83 1.47 4.15.86 1.66 1.78 3.34 3.18 4.62.85.77 1.97 1.4 3.15 1.24 1.5-.2 2.66-1.35 3.45-2.57.96-1.51 1.68-3.16 2.28-4.85.76-2.13.44-4.42.54-6.63.14-4.03-.02-8.06.14-12.09.03-5.89.03-11.77.06-17.66.14-3.62.03-7.24.11-10.86.15-4.03-.02-8.06.14-12.09.03-5.99.03-11.98.07-17.97.14-3.62.02-7.24.11-10.86.14-3.93-.02-7.86.14-11.78.03-5.99.03-11.98.06-17.97.16-3.94-.01-7.88.19-11.82.29 1.44.13 2.92.22 4.38.19 3.61.42 7.23.76 10.84.32 3.44.44 6.89.86 10.32.37 3.1.51 6.22.95 9.31.57 4.09.87 8.21 1.54 12.29 1.46 9.04 2.83 18.11 5.09 26.99 1.13 4.82 2.4 9.61 4 14.3 2.54 7.9 5.72 15.67 10.31 22.62 1.73 2.64 3.87 4.98 6.1 7.21.27.25.55.51.88.71.6.25 1.31-.07 1.7-.57.71-.88 1.17-1.94 1.7-2.93 4.05-7.8 8.18-15.56 12.34-23.31.7-1.31 1.44-2.62 2.56-3.61 1.75-1.57 3.84-2.69 5.98-3.63 2.88-1.22 5.9-2.19 9.03-2.42 6.58-.62 13.11.75 19.56 1.85 3.69.58 7.4 1.17 11.13 1.41 3.74.1 7.48.05 11.21-.28 8.55-.92 16.99-2.96 24.94-6.25 5.3-2.24 10.46-4.83 15.31-7.93 11.46-7.21 21.46-16.57 30.04-27.01 1.17-1.42 2.25-2.9 3.46-4.28-1.2 3.24-2.67 6.37-4.16 9.48-1.25 2.9-2.84 5.61-4.27 8.42-5.16 9.63-11.02 18.91-17.75 27.52-4.03 5.21-8.53 10.05-13.33 14.57-6.64 6.05-14.07 11.37-22.43 14.76-8.21 3.37-17.31 4.63-26.09 3.29-3.56-.58-7.01-1.69-10.41-2.88-2.79-.97-5.39-2.38-8.03-3.69-3.43-1.71-6.64-3.81-9.71-6.08 2.71 3.06 5.69 5.86 8.7 8.61 4.27 3.76 8.74 7.31 13.63 10.23 3.98 2.45 8.29 4.4 12.84 5.51 1.46.37 2.96.46 4.45.6-1.25 1.1-2.63 2.04-3.99 2.98-9.61 6.54-20.01 11.86-30.69 16.43-20.86 8.7-43.17 13.97-65.74 15.34-4.66.24-9.32.36-13.98.36-4.98-.11-9.97-.13-14.92-.65-11.2-.76-22.29-2.73-33.17-5.43-10.35-2.71-20.55-6.12-30.3-10.55-8.71-3.86-17.12-8.42-24.99-13.79-1.83-1.31-3.74-2.53-5.37-4.08 6.6-1.19 13.03-3.39 18.99-6.48 5.74-2.86 10.99-6.66 15.63-11.07 2.24-2.19 4.29-4.59 6.19-7.09-3.43 2.13-6.93 4.15-10.62 5.78-4.41 2.16-9.07 3.77-13.81 5.02-5.73 1.52-11.74 1.73-17.61 1.14-8.13-.95-15.86-4.27-22.51-8.98-4.32-2.94-8.22-6.43-11.96-10.06-9.93-10.16-18.2-21.81-25.66-33.86-3.94-6.27-7.53-12.75-11.12-19.22-1.05-2.04-2.15-4.05-3.18-6.1 2.85 2.92 5.57 5.97 8.43 8.88 8.99 8.97 18.56 17.44 29.16 24.48 7.55 4.9 15.67 9.23 24.56 11.03 3.11.73 6.32.47 9.47.81 2.77.28 5.56.2 8.34.3 5.05.06 10.11.04 15.16-.16 3.65-.16 7.27-.66 10.89-1.09 2.07-.25 4.11-.71 6.14-1.2 3.88-.95 8.11-.96 11.83.61 4.76 1.85 8.44 5.64 11.38 9.71 2.16 3.02 4.06 6.22 5.66 9.58 1.16 2.43 2.46 4.79 3.55 7.26 1 2.24 2.15 4.42 3.42 6.52.67 1.02 1.4 2.15 2.62 2.55 1.06-.75 1.71-1.91 2.28-3.03 2.1-4.16 3.42-8.65 4.89-13.05 2.02-6.59 3.78-13.27 5.19-20.02 2.21-9.25 3.25-18.72 4.54-28.13.56-3.98.83-7.99 1.31-11.97.87-10.64 1.9-21.27 2.24-31.94.08-1.86.24-3.71.25-5.57.01-4.35.25-8.69.22-13.03-.01-2.38-.01-4.76 0-7.13.05-5.07-.2-10.14-.22-15.21-.2-6.61-.71-13.2-1.29-19.78-.73-5.88-1.55-11.78-3.12-17.51-2.05-7.75-5.59-15.03-9.8-21.82-3.16-5.07-6.79-9.88-11.09-14.03-3.88-3.86-8.58-7.08-13.94-8.45-1.5-.41-3.06-.45-4.59-.64.07-2.99.7-5.93 1.26-8.85 1.59-7.71 3.8-15.3 6.76-22.6 1.52-4.03 3.41-7.9 5.39-11.72 3.45-6.56 7.62-12.79 12.46-18.46zm31.27 1.7c.35-.06.71-.12 1.07-.19.19 1.79.09 3.58.1 5.37v38.13c-.01 1.74.13 3.49-.15 5.22-.36-.03-.71-.05-1.06-.05-.95-3.75-1.72-7.55-2.62-11.31-.38-1.53-.58-3.09-1.07-4.59-1.7-.24-3.43-.17-5.15-.2-5.06-.01-10.13 0-15.19-.01-1.66-.01-3.32.09-4.98-.03-.03-.39-.26-.91.16-1.18 1.28-.65 2.72-.88 4.06-1.35 3.43-1.14 6.88-2.16 10.31-3.31 1.39-.48 2.9-.72 4.16-1.54.04-.56.02-1.13-.05-1.68-1.23-.55-2.53-.87-3.81-1.28-3.13-1.03-6.29-1.96-9.41-3.02-1.79-.62-3.67-1-5.41-1.79-.03-.37-.07-.73-.11-1.09 5.09-.19 10.2.06 15.3-.12 3.36-.13 6.73.08 10.09-.07.12-.39.26-.77.37-1.16 1.08-4.94 2.33-9.83 3.39-14.75zm5.97-.2c.36.05.72.12 1.08.2.98 3.85 1.73 7.76 2.71 11.61.36 1.42.56 2.88 1.03 4.27 2.53.18 5.07-.01 7.61.05 5.16.12 10.33.12 15.49.07.76-.01 1.52.03 2.28.08-.04.36-.07.72-.1 1.08-1.82.83-3.78 1.25-5.67 1.89-3.73 1.23-7.48 2.39-11.22 3.57-.57.17-1.12.42-1.67.64-.15.55-.18 1.12-.12 1.69.87.48 1.82.81 2.77 1.09 4.88 1.52 9.73 3.14 14.63 4.6.38.13.78.27 1.13.49.4.27.23.79.15 1.18-1.66.13-3.31.03-4.97.04-5.17.01-10.33-.01-15.5.01-1.61.03-3.22-.02-4.82.21-.52 1.67-.72 3.42-1.17 5.11-.94 3.57-1.52 7.24-2.54 10.78-.36.01-.71.02-1.06.06-.29-1.73-.15-3.48-.15-5.22v-38.13c.02-1.78-.08-3.58.11-5.37zM65.05 168.33c1.12-2.15 2.08-4.4 3.37-6.46-1.82 7.56-2.91 15.27-3.62 23-.8 7.71-.85 15.49-.54 23.23 1.05 19.94 5.54 39.83 14.23 57.88 2.99 5.99 6.35 11.83 10.5 17.11 6.12 7.47 12.53 14.76 19.84 21.09 4.8 4.1 9.99 7.78 15.54 10.8 3.27 1.65 6.51 3.39 9.94 4.68 5.01 2.03 10.19 3.61 15.42 4.94 3.83.96 7.78 1.41 11.52 2.71 5 1.57 9.47 4.61 13.03 8.43 4.93 5.23 8.09 11.87 10.2 18.67.99 2.9 1.59 5.91 2.17 8.92.15.75.22 1.52.16 2.29-6.5 2.78-13.26 5.06-20.26 6.18-4.11.78-8.29.99-12.46 1.08-10.25.24-20.47-1.76-30.12-5.12-3.74-1.42-7.49-2.85-11.03-4.72-8.06-3.84-15.64-8.7-22.46-14.46-2.92-2.55-5.83-5.13-8.4-8.03-9.16-9.83-16.3-21.41-21.79-33.65-2.39-5.55-4.61-11.18-6.37-16.96-1.17-3.94-2.36-7.89-3.26-11.91-.75-2.94-1.22-5.95-1.87-8.92-.46-2.14-.69-4.32-1.03-6.48-.85-5.43-1.28-10.93-1.33-16.43.11-6.18.25-12.37 1.07-18.5.4-2.86.67-5.74 1.15-8.6.98-5.7 2.14-11.37 3.71-16.93 3.09-11.65 7.48-22.95 12.69-33.84zm363.73-6.44c1.1 1.66 1.91 3.48 2.78 5.26 2.1 4.45 4.24 8.9 6.02 13.49 7.61 18.76 12.3 38.79 13.04 59.05.02 1.76.07 3.52.11 5.29.13 9.57-1.27 19.09-3.18 28.45-.73 3.59-1.54 7.17-2.58 10.69-4.04 14.72-10 29-18.41 41.78-8.21 12.57-19.01 23.55-31.84 31.41-5.73 3.59-11.79 6.64-18.05 9.19-5.78 2.19-11.71 4.03-17.8 5.11-6.4 1.05-12.91 1.52-19.4 1.23-7.92-.48-15.78-2.07-23.21-4.85-1.94-.8-3.94-1.46-5.84-2.33-.21-1.51.25-2.99.53-4.46 1.16-5.74 3.03-11.36 5.7-16.58 2.37-4.51 5.52-8.65 9.46-11.9 2.43-2.05 5.24-3.61 8.16-4.83 3.58-1.5 7.47-1.97 11.24-2.83 7.23-1.71 14.37-3.93 21.15-7 10.35-4.65 19.71-11.38 27.65-19.46 1.59-1.61 3.23-3.18 4.74-4.87 3.37-3.76 6.71-7.57 9.85-11.53 7.48-10.07 12.82-21.59 16.71-33.48 1.58-5.3 3.21-10.6 4.21-16.05.63-2.87 1.04-5.78 1.52-8.68.87-6.09 1.59-12.22 1.68-18.38.12-6.65.14-13.32-.53-19.94-.73-7.99-1.87-15.96-3.71-23.78z\"]\n};\nvar faOpencart = {\n prefix: 'fab',\n iconName: 'opencart',\n icon: [640, 512, [], \"f23d\", \"M423.3 440.7c0 25.3-20.3 45.6-45.6 45.6s-45.8-20.3-45.8-45.6 20.6-45.8 45.8-45.8c25.4 0 45.6 20.5 45.6 45.8zm-253.9-45.8c-25.3 0-45.6 20.6-45.6 45.8s20.3 45.6 45.6 45.6 45.8-20.3 45.8-45.6-20.5-45.8-45.8-45.8zm291.7-270C158.9 124.9 81.9 112.1 0 25.7c34.4 51.7 53.3 148.9 373.1 144.2 333.3-5 130 86.1 70.8 188.9 186.7-166.7 319.4-233.9 17.2-233.9z\"]\n};\nvar faOpenid = {\n prefix: 'fab',\n iconName: 'openid',\n icon: [448, 512, [], \"f19b\", \"M271.5 432l-68 32C88.5 453.7 0 392.5 0 318.2c0-71.5 82.5-131 191.7-144.3v43c-71.5 12.5-124 53-124 101.3 0 51 58.5 93.3 135.7 103v-340l68-33.2v384zM448 291l-131.3-28.5 36.8-20.7c-19.5-11.5-43.5-20-70-24.8v-43c46.2 5.5 87.7 19.5 120.3 39.3l35-19.8L448 291z\"]\n};\nvar faOpera = {\n prefix: 'fab',\n iconName: 'opera',\n icon: [496, 512, [], \"f26a\", \"M313.9 32.7c-170.2 0-252.6 223.8-147.5 355.1 36.5 45.4 88.6 75.6 147.5 75.6 36.3 0 70.3-11.1 99.4-30.4-43.8 39.2-101.9 63-165.3 63-3.9 0-8 0-11.9-.3C104.6 489.6 0 381.1 0 248 0 111 111 0 248 0h.8c63.1.3 120.7 24.1 164.4 63.1-29-19.4-63.1-30.4-99.3-30.4zm101.8 397.7c-40.9 24.7-90.7 23.6-132-5.8 56.2-20.5 97.7-91.6 97.7-176.6 0-84.7-41.2-155.8-97.4-176.6 41.8-29.2 91.2-30.3 132.9-5 105.9 98.7 105.5 265.7-1.2 364z\"]\n};\nvar faOptinMonster = {\n prefix: 'fab',\n iconName: 'optin-monster',\n icon: [576, 512, [], \"f23c\", \"M572.6 421.4c5.6-9.5 4.7-15.2-5.4-11.6-3-4.9-7-9.5-11.1-13.8 2.9-9.7-.7-14.2-10.8-9.2-4.6-3.2-10.3-6.5-15.9-9.2 0-15.1-11.6-11.6-17.6-5.7-10.4-1.5-18.7-.3-26.8 5.7.3-6.5.3-13 .3-19.7 12.6 0 40.2-11 45.9-36.2 1.4-6.8 1.6-13.8-.3-21.9-3-13.5-14.3-21.3-25.1-25.7-.8-5.9-7.6-14.3-14.9-15.9s-12.4 4.9-14.1 10.3c-8.5 0-19.2 2.8-21.1 8.4-5.4-.5-11.1-1.4-16.8-1.9 2.7-1.9 5.4-3.5 8.4-4.6 5.4-9.2 14.6-11.4 25.7-11.6V256c19.5-.5 43-5.9 53.8-18.1 12.7-13.8 14.6-37.3 12.4-55.1-2.4-17.3-9.7-37.6-24.6-48.1-8.4-5.9-21.6-.8-22.7 9.5-2.2 19.6 1.2 30-38.6 25.1-10.3-23.8-24.6-44.6-42.7-60C341 49.6 242.9 55.5 166.4 71.7c19.7 4.6 41.1 8.6 59.7 16.5-26.2 2.4-52.7 11.3-76.2 23.2-32.8 17-44 29.9-56.7 42.4 14.9-2.2 28.9-5.1 43.8-3.8-9.7 5.4-18.4 12.2-26.5 20-25.8.9-23.8-5.3-26.2-25.9-1.1-10.5-14.3-15.4-22.7-9.7-28.1 19.9-33.5 79.9-12.2 103.5 10.8 12.2 35.1 17.3 54.9 17.8-.3 1.1-.3 1.9-.3 2.7 10.8.5 19.5 2.7 24.6 11.6 3 1.1 5.7 2.7 8.1 4.6-5.4.5-11.1 1.4-16.5 1.9-3.3-6.6-13.7-8.1-21.1-8.1-1.6-5.7-6.5-12.2-14.1-10.3-6.8 1.9-14.1 10-14.9 15.9-22.5 9.5-30.1 26.8-25.1 47.6 5.3 24.8 33 36.2 45.9 36.2v19.7c-6.6-5-14.3-7.5-26.8-5.7-5.5-5.5-17.3-10.1-17.3 5.7-5.9 2.7-11.4 5.9-15.9 9.2-9.8-4.9-13.6-1.7-11.1 9.2-4.1 4.3-7.8 8.6-11.1 13.8-10.2-3.7-11 2.2-5.4 11.6-1.1 3.5-1.6 7-1.9 10.8-.5 31.6 44.6 64 73.5 65.1 17.3.5 34.6-8.4 43-23.5 113.2 4.9 226.7 4.1 340.2 0 8.1 15.1 25.4 24.3 42.7 23.5 29.2-1.1 74.3-33.5 73.5-65.1.2-3.7-.7-7.2-1.7-10.7zm-73.8-254c1.1-3 2.4-8.4 2.4-14.6 0-5.9 6.8-8.1 14.1-.8 11.1 11.6 14.9 40.5 13.8 51.1-4.1-13.6-13-29-30.3-35.7zm-4.6 6.7c19.5 6.2 28.6 27.6 29.7 48.9-1.1 2.7-3 5.4-4.9 7.6-5.7 5.9-15.4 10-26.2 12.2 4.3-21.3.3-47.3-12.7-63 4.9-.8 10.9-2.4 14.1-5.7zm-24.1 6.8c13.8 11.9 20 39.2 14.1 63.5-4.1.5-8.1.8-11.6.8-1.9-21.9-6.8-44-14.3-64.6 3.7.3 8.1.3 11.8.3zM47.5 203c-1.1-10.5 2.4-39.5 13.8-51.1 7-7.3 14.1-5.1 14.1.8 0 6.2 1.4 11.6 2.4 14.6-17.3 6.8-26.2 22.2-30.3 35.7zm9.7 27.6c-1.9-2.2-3.5-4.9-4.9-7.6 1.4-21.3 10.3-42.7 29.7-48.9 3.2 3.2 9.2 4.9 14.1 5.7-13 15.7-17 41.6-12.7 63-10.8-2.2-20.5-6-26.2-12.2zm47.9 14.6c-4.1 0-8.1-.3-12.7-.8-4.6-18.6-1.9-38.9 5.4-53v.3l12.2-5.1c4.9-1.9 9.7-3.8 14.9-4.9-10.7 19.7-17.4 41.3-19.8 63.5zm184-162.7c41.9 0 76.2 34 76.2 75.9 0 42.2-34.3 76.2-76.2 76.2s-76.2-34-76.2-76.2c0-41.8 34.3-75.9 76.2-75.9zm115.6 174.3c-.3 17.8-7 48.9-23 57-13.2 6.6-6.5-7.5-16.5-58.1 13.3.3 26.6.3 39.5 1.1zm-54-1.6c.8 4.9 3.8 40.3-1.6 41.9-11.6 3.5-40 4.3-51.1-1.1-4.1-3-4.6-35.9-4.3-41.1v.3c18.9-.3 38.1-.3 57 0zM278.3 309c-13 3.5-41.6 4.1-54.6-1.6-6.5-2.7-3.8-42.4-1.9-51.6 19.2-.5 38.4-.5 57.8-.8v.3c1.1 8.3 3.3 51.2-1.3 53.7zm-106.5-51.1c12.2-.8 24.6-1.4 36.8-1.6-2.4 15.4-3 43.5-4.9 52.2-1.1 6.8-4.3 6.8-9.7 4.3-21.9-9.8-27.6-35.2-22.2-54.9zm-35.4 31.3c7.8-1.1 15.7-1.9 23.5-2.7 1.6 6.2 3.8 11.9 7 17.6 10 17 44 35.7 45.1 7 6.2 14.9 40.8 12.2 54.9 10.8 15.7-1.4 23.8-1.4 26.8-14.3 12.4 4.3 30.8 4.1 44 3 11.3-.8 20.8-.5 24.6-8.9 1.1 5.1 1.9 11.6 4.6 16.8 10.8 21.3 37.3 1.4 46.8-31.6 8.6.8 17.6 1.9 26.5 2.7-.4 1.3-3.8 7.3 7.3 11.6-47.6 47-95.7 87.8-163.2 107-63.2-20.8-112.1-59.5-155.9-106.5 9.6-3.4 10.4-8.8 8-12.5zm-21.6 172.5c-3.8 17.8-21.9 29.7-39.7 28.9-19.2-.8-46.5-17-59.2-36.5-2.7-31.1 43.8-61.3 66.2-54.6 14.9 4.3 27.8 30.8 33.5 54 0 3-.3 5.7-.8 8.2zm-8.7-66c-.5-13.5-.5-27-.3-40.5h.3c2.7-1.6 5.7-3.8 7.8-6.5 6.5-1.6 13-5.1 15.1-9.2 3.3-7.1-7-7.5-5.4-12.4 2.7-1.1 5.7-2.2 7.8-3.5 29.2 29.2 58.6 56.5 97.3 77-36.8 11.3-72.4 27.6-105.9 47-1.2-18.6-7.7-35.9-16.7-51.9zm337.6 64.6c-103 3.5-206.2 4.1-309.4 0 0 .3 0 .3-.3.3v-.3h.3c35.1-21.6 72.2-39.2 112.4-50.8 11.6 5.1 23 9.5 34.9 13.2 2.2.8 2.2.8 4.3 0 14.3-4.1 28.4-9.2 42.2-15.4 41.5 11.7 78.8 31.7 115.6 53zm10.5-12.4c-35.9-19.5-73-35.9-111.9-47.6 38.1-20 71.9-47.3 103.5-76.7 2.2 1.4 4.6 2.4 7.6 3.2 0 .8.3 1.9.5 2.4-4.6 2.7-7.8 6.2-5.9 10.3 2.2 3.8 8.6 7.6 15.1 8.9 2.4 2.7 5.1 5.1 8.1 6.8 0 13.8-.3 27.6-.8 41.3l.3-.3c-9.3 15.9-15.5 37-16.5 51.7zm105.9 6.2c-12.7 19.5-40 35.7-59.2 36.5-19.3.9-40.5-13.2-40.5-37 5.7-23.2 18.9-49.7 33.5-54 22.7-6.9 69.2 23.4 66.2 54.5zM372.9 75.2c-3.8-72.1-100.8-79.7-126-23.5 44.6-24.3 90.3-15.7 126 23.5zM74.8 407.1c-15.7 1.6-49.5 25.4-49.5 43.2 0 11.6 15.7 19.5 32.2 14.9 12.2-3.2 31.1-17.6 35.9-27.3 6-11.6-3.7-32.7-18.6-30.8zm215.9-176.2c28.6 0 51.9-21.6 51.9-48.4 0-36.1-40.5-58.1-72.2-44.3 9.5 3 16.5 11.6 16.5 21.6 0 23.3-33.3 32-46.5 11.3-7.3 34.1 19.4 59.8 50.3 59.8zM68 474.1c.5 6.5 12.2 12.7 21.6 9.5 6.8-2.7 14.6-10.5 17.3-16.2 3-7-1.1-20-9.7-18.4-8.9 1.6-29.7 16.7-29.2 25.1zm433.2-67c-14.9-1.9-24.6 19.2-18.9 30.8 4.9 9.7 24.1 24.1 36.2 27.3 16.5 4.6 32.2-3.2 32.2-14.9 0-17.8-33.8-41.6-49.5-43.2zM478.8 449c-8.4-1.6-12.4 11.3-9.5 18.4 2.4 5.7 10.3 13.5 17.3 16.2 9.2 3.2 21.1-3 21.3-9.5.9-8.4-20.2-23.5-29.1-25.1z\"]\n};\nvar faOrcid = {\n prefix: 'fab',\n iconName: 'orcid',\n icon: [512, 512, [], \"f8d2\", \"M294.75 188.19h-45.92V342h47.47c67.62 0 83.12-51.34 83.12-76.91 0-41.64-26.54-76.9-84.67-76.9zM256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm-80.79 360.76h-29.84v-207.5h29.84zm-14.92-231.14a19.57 19.57 0 1 1 19.57-19.57 19.64 19.64 0 0 1-19.57 19.57zM300 369h-81V161.26h80.6c76.73 0 110.44 54.83 110.44 103.85C410 318.39 368.38 369 300 369z\"]\n};\nvar faOsi = {\n prefix: 'fab',\n iconName: 'osi',\n icon: [512, 512, [], \"f41a\", \"M8 266.44C10.3 130.64 105.4 34 221.8 18.34c138.8-18.6 255.6 75.8 278 201.1 21.3 118.8-44 230-151.6 274-9.3 3.8-14.4 1.7-18-7.7q-26.7-69.45-53.4-139c-3.1-8.1-1-13.2 7-16.8 24.2-11 39.3-29.4 43.3-55.8a71.47 71.47 0 0 0-64.5-82.2c-39-3.4-71.8 23.7-77.5 59.7-5.2 33 11.1 63.7 41.9 77.7 9.6 4.4 11.5 8.6 7.8 18.4q-26.85 69.9-53.7 139.9c-2.6 6.9-8.3 9.3-15.5 6.5-52.6-20.3-101.4-61-130.8-119-24.9-49.2-25.2-87.7-26.8-108.7zm20.9-1.9c.4 6.6.6 14.3 1.3 22.1 6.3 71.9 49.6 143.5 131 183.1 3.2 1.5 4.4.8 5.6-2.3q22.35-58.65 45-117.3c1.3-3.3.6-4.8-2.4-6.7-31.6-19.9-47.3-48.5-45.6-86 1-21.6 9.3-40.5 23.8-56.3 30-32.7 77-39.8 115.5-17.6a91.64 91.64 0 0 1 45.2 90.4c-3.6 30.6-19.3 53.9-45.7 69.8-2.7 1.6-3.5 2.9-2.3 6q22.8 58.8 45.2 117.7c1.2 3.1 2.4 3.8 5.6 2.3 35.5-16.6 65.2-40.3 88.1-72 34.8-48.2 49.1-101.9 42.3-161-13.7-117.5-119.4-214.8-255.5-198-106.1 13-195.3 102.5-197.1 225.8z\"]\n};\nvar faPage4 = {\n prefix: 'fab',\n iconName: 'page4',\n icon: [496, 512, [], \"f3d7\", \"M248 504C111 504 0 393 0 256S111 8 248 8c20.9 0 41.3 2.6 60.7 7.5L42.3 392H248v112zm0-143.6V146.8L98.6 360.4H248zm96 31.6v92.7c45.7-19.2 84.5-51.7 111.4-92.7H344zm57.4-138.2l-21.2 8.4 21.2 8.3v-16.7zm-20.3 54.5c-6.7 0-8 6.3-8 12.9v7.7h16.2v-10c0-5.9-2.3-10.6-8.2-10.6zM496 256c0 37.3-8.2 72.7-23 104.4H344V27.3C433.3 64.8 496 153.1 496 256zM360.4 143.6h68.2V96h-13.9v32.6h-13.9V99h-13.9v29.6h-12.7V96h-13.9v47.6zm68.1 185.3H402v-11c0-15.4-5.6-25.2-20.9-25.2-15.4 0-20.7 10.6-20.7 25.9v25.3h68.2v-15zm0-103l-68.2 29.7V268l68.2 29.5v-16.6l-14.4-5.7v-26.5l14.4-5.9v-16.9zm-4.8-68.5h-35.6V184H402v-12.2h11c8.6 15.8 1.3 35.3-18.6 35.3-22.5 0-28.3-25.3-15.5-37.7l-11.6-10.6c-16.2 17.5-12.2 63.9 27.1 63.9 34 0 44.7-35.9 29.3-65.3z\"]\n};\nvar faPagelines = {\n prefix: 'fab',\n iconName: 'pagelines',\n icon: [384, 512, [], \"f18c\", \"M384 312.7c-55.1 136.7-187.1 54-187.1 54-40.5 81.8-107.4 134.4-184.6 134.7-16.1 0-16.6-24.4 0-24.4 64.4-.3 120.5-42.7 157.2-110.1-41.1 15.9-118.6 27.9-161.6-82.2 109-44.9 159.1 11.2 178.3 45.5 9.9-24.4 17-50.9 21.6-79.7 0 0-139.7 21.9-149.5-98.1 119.1-47.9 152.6 76.7 152.6 76.7 1.6-16.7 3.3-52.6 3.3-53.4 0 0-106.3-73.7-38.1-165.2 124.6 43 61.4 162.4 61.4 162.4.5 1.6.5 23.8 0 33.4 0 0 45.2-89 136.4-57.5-4.2 134-141.9 106.4-141.9 106.4-4.4 27.4-11.2 53.4-20 77.5 0 0 83-91.8 172-20z\"]\n};\nvar faPalfed = {\n prefix: 'fab',\n iconName: 'palfed',\n icon: [576, 512, [], \"f3d8\", \"M384.9 193.9c0-47.4-55.2-44.2-95.4-29.8-1.3 39.4-2.5 80.7-3 119.8.7 2.8 2.6 6.2 15.1 6.2 36.8 0 83.4-42.8 83.3-96.2zm-194.5 72.2c.2 0 6.5-2.7 11.2-2.7 26.6 0 20.7 44.1-14.4 44.1-21.5 0-37.1-18.1-37.1-43 0-42 42.9-95.6 100.7-126.5 1-12.4 3-22 10.5-28.2 11.2-9 26.6-3.5 29.5 11.1 72.2-22.2 135.2 1 135.2 72 0 77.9-79.3 152.6-140.1 138.2-.1 39.4.9 74.4 2.7 100v.2c.2 3.4.6 12.5-5.3 19.1-9.6 10.6-33.4 10-36.4-22.3-4.1-44.4.2-206.1 1.4-242.5-21.5 15-58.5 50.3-58.5 75.9.2 2.5.4 4 .6 4.6zM8 181.1s-.1 37.4 38.4 37.4h30l22.4 217.2s0 44.3 44.7 44.3h288.9s44.7-.4 44.7-44.3l22.4-217.2h30s38.4 1.2 38.4-37.4c0 0 .1-37.4-38.4-37.4h-30.1c-7.3-25.6-30.2-74.3-119.4-74.3h-28V50.3s-2.7-18.4-21.1-18.4h-85.8s-21.1 0-21.1 18.4v19.1h-28.1s-105 4.2-120.5 74.3h-29S8 142.5 8 181.1z\"]\n};\nvar faPatreon = {\n prefix: 'fab',\n iconName: 'patreon',\n icon: [512, 512, [], \"f3d9\", \"M512 194.8c0 101.3-82.4 183.8-183.8 183.8-101.7 0-184.4-82.4-184.4-183.8 0-101.6 82.7-184.3 184.4-184.3C429.6 10.5 512 93.2 512 194.8zM0 501.5h90v-491H0v491z\"]\n};\nvar faPaypal = {\n prefix: 'fab',\n iconName: 'paypal',\n icon: [384, 512, [], \"f1ed\", \"M111.4 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.3c-7.6 0-13.1-6.6-12.1-13.9L58.8 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2zM357.1 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6z\"]\n};\nvar faPennyArcade = {\n prefix: 'fab',\n iconName: 'penny-arcade',\n icon: [640, 512, [], \"f704\", \"M421.91 164.27c-4.49 19.45-1.4 6.06-15.1 65.29l39.73-10.61c-22.34-49.61-17.29-38.41-24.63-54.68zm-206.09 51.11c-20.19 5.4-11.31 3.03-39.63 10.58l4.46 46.19c28.17-7.59 20.62-5.57 34.82-9.34 42.3-9.79 32.85-56.42.35-47.43zm326.16-26.19l-45.47-99.2c-5.69-12.37-19.46-18.84-32.62-15.33-70.27 18.75-38.72 10.32-135.59 36.23a27.618 27.618 0 0 0-18.89 17.41C144.26 113.27 0 153.75 0 226.67c0 33.5 30.67 67.11 80.9 95.37l1.74 17.88a27.891 27.891 0 0 0-17.77 28.67l4.3 44.48c1.39 14.31 13.43 25.21 27.8 25.2 5.18-.01-3.01 1.78 122.53-31.76 12.57-3.37 21.12-15.02 20.58-28.02 216.59 45.5 401.99-5.98 399.89-84.83.01-28.15-22.19-66.56-97.99-104.47zM255.14 298.3l-21.91 5.88-48.44 12.91 2.46 23.55 20.53-5.51 4.51 44.51-115.31 30.78-4.3-44.52 20.02-5.35-11.11-114.64-20.12 5.39-4.35-44.5c178.15-47.54 170.18-46.42 186.22-46.65 56.66-1.13 64.15 71.84 42.55 104.43a86.7 86.7 0 0 1-50.75 33.72zm199.18 16.62l-3.89-39.49 14.9-3.98-6.61-14.68-57.76 15.42-4.1 17.54 19.2-5.12 4.05 39.54-112.85 30.07-4.46-44.43 20.99-5.59 33.08-126.47-17.15 4.56-4.2-44.48c93.36-24.99 65.01-17.41 135.59-36.24l66.67 145.47 20.79-5.56 4.3 44.48-108.55 28.96z\"]\n};\nvar faPerbyte = {\n prefix: 'fab',\n iconName: 'perbyte',\n icon: [448, 512, [], \"e083\", \"M305.314,284.578H246.6V383.3h58.711q24.423,0,38.193-13.77t13.77-36.11q0-21.826-14.032-35.335T305.314,284.578ZM149.435,128.7H90.724v98.723h58.711q24.42,0,38.19-13.773t13.77-36.107q0-21.826-14.029-35.338T149.435,128.7ZM366.647,32H81.353A81.445,81.445,0,0,0,0,113.352V398.647A81.445,81.445,0,0,0,81.353,480H366.647A81.445,81.445,0,0,0,448,398.647V113.352A81.445,81.445,0,0,0,366.647,32Zm63.635,366.647a63.706,63.706,0,0,1-63.635,63.635H81.353a63.706,63.706,0,0,1-63.635-63.635V113.352A63.706,63.706,0,0,1,81.353,49.718H366.647a63.706,63.706,0,0,1,63.635,63.634ZM305.314,128.7H246.6v98.723h58.711q24.423,0,38.193-13.773t13.77-36.107q0-21.826-14.032-35.338T305.314,128.7Z\"]\n};\nvar faPeriscope = {\n prefix: 'fab',\n iconName: 'periscope',\n icon: [448, 512, [], \"f3da\", \"M370 63.6C331.4 22.6 280.5 0 226.6 0 111.9 0 18.5 96.2 18.5 214.4c0 75.1 57.8 159.8 82.7 192.7C137.8 455.5 192.6 512 226.6 512c41.6 0 112.9-94.2 120.9-105 24.6-33.1 82-118.3 82-192.6 0-56.5-21.1-110.1-59.5-150.8zM226.6 493.9c-42.5 0-190-167.3-190-279.4 0-107.4 83.9-196.3 190-196.3 100.8 0 184.7 89 184.7 196.3.1 112.1-147.4 279.4-184.7 279.4zM338 206.8c0 59.1-51.1 109.7-110.8 109.7-100.6 0-150.7-108.2-92.9-181.8v.4c0 24.5 20.1 44.4 44.8 44.4 24.7 0 44.8-19.9 44.8-44.4 0-18.2-11.1-33.8-26.9-40.7 76.6-19.2 141 39.3 141 112.4z\"]\n};\nvar faPhabricator = {\n prefix: 'fab',\n iconName: 'phabricator',\n icon: [496, 512, [], \"f3db\", \"M323 262.1l-.1-13s21.7-19.8 21.1-21.2l-9.5-20c-.6-1.4-29.5-.5-29.5-.5l-9.4-9.3s.2-28.5-1.2-29.1l-20.1-9.2c-1.4-.6-20.7 21-20.7 21l-13.1-.2s-20.5-21.4-21.9-20.8l-20 8.3c-1.4.5.2 28.9.2 28.9l-9.1 9.1s-29.2-.9-29.7.4l-8.1 19.8c-.6 1.4 21 21 21 21l.1 12.9s-21.7 19.8-21.1 21.2l9.5 20c.6 1.4 29.5.5 29.5.5l9.4 9.3s-.2 31.8 1.2 32.3l20.1 8.3c1.4.6 20.7-23.5 20.7-23.5l13.1.2s20.5 23.8 21.8 23.3l20-7.5c1.4-.6-.2-32.1-.2-32.1l9.1-9.1s29.2.9 29.7-.5l8.1-19.8c.7-1.1-20.9-20.7-20.9-20.7zm-44.9-8.7c.7 17.1-12.8 31.6-30.1 32.4-17.3.8-32.1-12.5-32.8-29.6-.7-17.1 12.8-31.6 30.1-32.3 17.3-.8 32.1 12.5 32.8 29.5zm201.2-37.9l-97-97-.1.1c-75.1-73.3-195.4-72.8-269.8 1.6-50.9 51-27.8 27.9-95.7 95.3-22.3 22.3-22.3 58.7 0 81 69.9 69.4 46.4 46 97.4 97l.1-.1c75.1 73.3 195.4 72.9 269.8-1.6 51-50.9 27.9-27.9 95.3-95.3 22.3-22.3 22.3-58.7 0-81zM140.4 363.8c-59.6-59.5-59.6-156 0-215.5 59.5-59.6 156-59.5 215.6 0 59.5 59.5 59.6 156 0 215.6-59.6 59.5-156 59.4-215.6-.1z\"]\n};\nvar faPhoenixFramework = {\n prefix: 'fab',\n iconName: 'phoenix-framework',\n icon: [640, 512, [], \"f3dc\", \"M212.9 344.3c3.8-.1 22.8-1.4 25.6-2.2-2.4-2.6-43.6-1-68-49.6-4.3-8.6-7.5-17.6-6.4-27.6 2.9-25.5 32.9-30 52-18.5 36 21.6 63.3 91.3 113.7 97.5 37 4.5 84.6-17 108.2-45.4-.6-.1-.8-.2-1-.1-.4.1-.8.2-1.1.3-33.3 12.1-94.3 9.7-134.7-14.8-37.6-22.8-53.1-58.7-51.8-74.6 1.8-21.3 22.9-23.2 35.9-19.6 14.4 3.9 24.4 17.6 38.9 27.4 15.6 10.4 32.9 13.7 51.3 10.3 14.9-2.7 34.4-12.3 36.5-14.5-1.1-.1-1.8-.1-2.5-.2-6.2-.6-12.4-.8-18.5-1.7C279.8 194.5 262.1 47.4 138.5 37.9 94.2 34.5 39.1 46 2.2 72.9c-.8.6-1.5 1.2-2.2 1.8.1.2.1.3.2.5.8 0 1.6-.1 2.4-.2 6.3-1 12.5-.8 18.7.3 23.8 4.3 47.7 23.1 55.9 76.5 5.3 34.3-.7 50.8 8 86.1 19 77.1 91 107.6 127.7 106.4zM75.3 64.9c-.9-1-.9-1.2-1.3-2 12.1-2.6 24.2-4.1 36.6-4.8-1.1 14.7-22.2 21.3-35.3 6.8zm196.9 350.5c-42.8 1.2-92-26.7-123.5-61.4-4.6-5-16.8-20.2-18.6-23.4l.4-.4c6.6 4.1 25.7 18.6 54.8 27 24.2 7 48.1 6.3 71.6-3.3 22.7-9.3 41-.5 43.1 2.9-18.5 3.8-20.1 4.4-24 7.9-5.1 4.4-4.6 11.7 7 17.2 26.2 12.4 63-2.8 97.2 25.4 2.4 2 8.1 7.8 10.1 10.7-.1.2-.3.3-.4.5-4.8-1.5-16.4-7.5-40.2-9.3-24.7-2-46.3 5.3-77.5 6.2zm174.8-252c16.4-5.2 41.3-13.4 66.5-3.3 16.1 6.5 26.2 18.7 32.1 34.6 3.5 9.4 5.1 19.7 5.1 28.7-.2 0-.4 0-.6.1-.2-.4-.4-.9-.5-1.3-5-22-29.9-43.8-67.6-29.9-50.2 18.6-130.4 9.7-176.9-48-.7-.9-2.4-1.7-1.3-3.2.1-.2 2.1.6 3 1.3 18.1 13.4 38.3 21.9 60.3 26.2 30.5 6.1 54.6 2.9 79.9-5.2zm102.7 117.5c-32.4.2-33.8 50.1-103.6 64.4-18.2 3.7-38.7 4.6-44.9 4.2v-.4c2.8-1.5 14.7-2.6 29.7-16.6 7.9-7.3 15.3-15.1 22.8-22.9 19.5-20.2 41.4-42.2 81.9-39 23.1 1.8 29.3 8.2 36.1 12.7.3.2.4.5.7.9-.5 0-.7.1-.9 0-7-2.7-14.3-3.3-21.8-3.3zm-12.3-24.1c-.1.2-.1.4-.2.6-28.9-4.4-48-7.9-68.5 4-17 9.9-31.4 20.5-62 24.4-27.1 3.4-45.1 2.4-66.1-8-.3-.2-.6-.4-1-.6 0-.2.1-.3.1-.5 24.9 3.8 36.4 5.1 55.5-5.8 22.3-12.9 40.1-26.6 71.3-31 29.6-4.1 51.3 2.5 70.9 16.9zM268.6 97.3c-.6-.6-1.1-1.2-2.1-2.3 7.6 0 29.7-1.2 53.4 8.4 19.7 8 32.2 21 50.2 32.9 11.1 7.3 23.4 9.3 36.4 8.1 4.3-.4 8.5-1.2 12.8-1.7.4-.1.9 0 1.5.3-.6.4-1.2.9-1.8 1.2-8.1 4-16.7 6.3-25.6 7.1-26.1 2.6-50.3-3.7-73.4-15.4-19.3-9.9-36.4-22.9-51.4-38.6zM640 335.7c-3.5 3.1-22.7 11.6-42.7 5.3-12.3-3.9-19.5-14.9-31.6-24.1-10-7.6-20.9-7.9-28.1-8.4.6-.8.9-1.2 1.2-1.4 14.8-9.2 30.5-12.2 47.3-6.5 12.5 4.2 19.2 13.5 30.4 24.2 10.8 10.4 21 9.9 23.1 10.5.1-.1.2 0 .4.4zm-212.5 137c2.2 1.2 1.6 1.5 1.5 2-18.5-1.4-33.9-7.6-46.8-22.2-21.8-24.7-41.7-27.9-48.6-29.7.5-.2.8-.4 1.1-.4 13.1.1 26.1.7 38.9 3.9 25.3 6.4 35 25.4 41.6 35.3 3.2 4.8 7.3 8.3 12.3 11.1z\"]\n};\nvar faPhoenixSquadron = {\n prefix: 'fab',\n iconName: 'phoenix-squadron',\n icon: [512, 512, [], \"f511\", \"M96 63.38C142.49 27.25 201.55 7.31 260.51 8.81c29.58-.38 59.11 5.37 86.91 15.33-24.13-4.63-49-6.34-73.38-2.45C231.17 27 191 48.84 162.21 80.87c5.67-1 10.78-3.67 16-5.86 18.14-7.87 37.49-13.26 57.23-14.83 19.74-2.13 39.64-.43 59.28 1.92-14.42 2.79-29.12 4.57-43 9.59-34.43 11.07-65.27 33.16-86.3 62.63-13.8 19.71-23.63 42.86-24.67 67.13-.35 16.49 5.22 34.81 19.83 44a53.27 53.27 0 0 0 37.52 6.74c15.45-2.46 30.07-8.64 43.6-16.33 11.52-6.82 22.67-14.55 32-24.25 3.79-3.22 2.53-8.45 2.62-12.79-2.12-.34-4.38-1.11-6.3.3a203 203 0 0 1-35.82 15.37c-20 6.17-42.16 8.46-62.1.78 12.79 1.73 26.06.31 37.74-5.44 20.23-9.72 36.81-25.2 54.44-38.77a526.57 526.57 0 0 1 88.9-55.31c25.71-12 52.94-22.78 81.57-24.12-15.63 13.72-32.15 26.52-46.78 41.38-14.51 14-27.46 29.5-40.11 45.18-3.52 4.6-8.95 6.94-13.58 10.16a150.7 150.7 0 0 0-51.89 60.1c-9.33 19.68-14.5 41.85-11.77 63.65 1.94 13.69 8.71 27.59 20.9 34.91 12.9 8 29.05 8.07 43.48 5.1 32.8-7.45 61.43-28.89 81-55.84 20.44-27.52 30.52-62.2 29.16-96.35-.52-7.5-1.57-15-1.66-22.49 8 19.48 14.82 39.71 16.65 60.83 2 14.28.75 28.76-1.62 42.9-1.91 11-5.67 21.51-7.78 32.43a165 165 0 0 0 39.34-81.07 183.64 183.64 0 0 0-14.21-104.64c20.78 32 32.34 69.58 35.71 107.48.49 12.73.49 25.51 0 38.23A243.21 243.21 0 0 1 482 371.34c-26.12 47.34-68 85.63-117.19 108-78.29 36.23-174.68 31.32-248-14.68A248.34 248.34 0 0 1 25.36 366 238.34 238.34 0 0 1 0 273.08v-31.34C3.93 172 40.87 105.82 96 63.38m222 80.33a79.13 79.13 0 0 0 16-4.48c5-1.77 9.24-5.94 10.32-11.22-8.96 4.99-17.98 9.92-26.32 15.7z\"]\n};\nvar faPhp = {\n prefix: 'fab',\n iconName: 'php',\n icon: [640, 512, [], \"f457\", \"M320 104.5c171.4 0 303.2 72.2 303.2 151.5S491.3 407.5 320 407.5c-171.4 0-303.2-72.2-303.2-151.5S148.7 104.5 320 104.5m0-16.8C143.3 87.7 0 163 0 256s143.3 168.3 320 168.3S640 349 640 256 496.7 87.7 320 87.7zM218.2 242.5c-7.9 40.5-35.8 36.3-70.1 36.3l13.7-70.6c38 0 63.8-4.1 56.4 34.3zM97.4 350.3h36.7l8.7-44.8c41.1 0 66.6 3 90.2-19.1 26.1-24 32.9-66.7 14.3-88.1-9.7-11.2-25.3-16.7-46.5-16.7h-70.7L97.4 350.3zm185.7-213.6h36.5l-8.7 44.8c31.5 0 60.7-2.3 74.8 10.7 14.8 13.6 7.7 31-8.3 113.1h-37c15.4-79.4 18.3-86 12.7-92-5.4-5.8-17.7-4.6-47.4-4.6l-18.8 96.6h-36.5l32.7-168.6zM505 242.5c-8 41.1-36.7 36.3-70.1 36.3l13.7-70.6c38.2 0 63.8-4.1 56.4 34.3zM384.2 350.3H421l8.7-44.8c43.2 0 67.1 2.5 90.2-19.1 26.1-24 32.9-66.7 14.3-88.1-9.7-11.2-25.3-16.7-46.5-16.7H417l-32.8 168.7z\"]\n};\nvar faPiedPiper = {\n prefix: 'fab',\n iconName: 'pied-piper',\n icon: [480, 512, [], \"f2ae\", \"M455.93,23.2C429.23,30,387.79,51.69,341.35,90.66A206,206,0,0,0,240,64C125.13,64,32,157.12,32,272s93.13,208,208,208,208-93.13,208-208a207.25,207.25,0,0,0-58.75-144.81,155.35,155.35,0,0,0-17,27.4A176.16,176.16,0,0,1,417.1,272c0,97.66-79.44,177.11-177.09,177.11a175.81,175.81,0,0,1-87.63-23.4c82.94-107.33,150.79-37.77,184.31-226.65,5.79-32.62,28-94.26,126.23-160.18C471,33.45,465.35,20.8,455.93,23.2ZM125,406.4A176.66,176.66,0,0,1,62.9,272C62.9,174.34,142.35,94.9,240,94.9a174,174,0,0,1,76.63,17.75C250.64,174.76,189.77,265.52,125,406.4Z\"]\n};\nvar faPiedPiperAlt = {\n prefix: 'fab',\n iconName: 'pied-piper-alt',\n icon: [576, 512, [], \"f1a8\", \"M244 246c-3.2-2-6.3-2.9-10.1-2.9-6.6 0-12.6 3.2-19.3 3.7l1.7 4.9zm135.9 197.9c-19 0-64.1 9.5-79.9 19.8l6.9 45.1c35.7 6.1 70.1 3.6 106-9.8-4.8-10-23.5-55.1-33-55.1zM340.8 177c6.6 2.8 11.5 9.2 22.7 22.1 2-1.4 7.5-5.2 7.5-8.6 0-4.9-11.8-13.2-13.2-23 11.2-5.7 25.2-6 37.6-8.9 68.1-16.4 116.3-52.9 146.8-116.7C548.3 29.3 554 16.1 554.6 2l-2 2.6c-28.4 50-33 63.2-81.3 100-31.9 24.4-69.2 40.2-106.6 54.6l-6.3-.3v-21.8c-19.6 1.6-19.7-14.6-31.6-23-18.7 20.6-31.6 40.8-58.9 51.1-12.7 4.8-19.6 10-25.9 21.8 34.9-16.4 91.2-13.5 98.8-10zM555.5 0l-.6 1.1-.3.9.6-.6zm-59.2 382.1c-33.9-56.9-75.3-118.4-150-115.5l-.3-6c-1.1-13.5 32.8 3.2 35.1-31l-14.4 7.2c-19.8-45.7-8.6-54.3-65.5-54.3-14.7 0-26.7 1.7-41.4 4.6 2.9 18.6 2.2 36.7-10.9 50.3l19.5 5.5c-1.7 3.2-2.9 6.3-2.9 9.8 0 21 42.8 2.9 42.8 33.6 0 18.4-36.8 60.1-54.9 60.1-8 0-53.7-50-53.4-60.1l.3-4.6 52.3-11.5c13-2.6 12.3-22.7-2.9-22.7-3.7 0-43.1 9.2-49.4 10.6-2-5.2-7.5-14.1-13.8-14.1-3.2 0-6.3 3.2-9.5 4-9.2 2.6-31 2.9-21.5 20.1L15.9 298.5c-5.5 1.1-8.9 6.3-8.9 11.8 0 6 5.5 10.9 11.5 10.9 8 0 131.3-28.4 147.4-32.2 2.6 3.2 4.6 6.3 7.8 8.6 20.1 14.4 59.8 85.9 76.4 85.9 24.1 0 58-22.4 71.3-41.9 3.2-4.3 6.9-7.5 12.4-6.9.6 13.8-31.6 34.2-33 43.7-1.4 10.2-1 35.2-.3 41.1 26.7 8.1 52-3.6 77.9-2.9 4.3-21 10.6-41.9 9.8-63.5l-.3-9.5c-1.4-34.2-10.9-38.5-34.8-58.6-1.1-1.1-2.6-2.6-3.7-4 2.2-1.4 1.1-1 4.6-1.7 88.5 0 56.3 183.6 111.5 229.9 33.1-15 72.5-27.9 103.5-47.2-29-25.6-52.6-45.7-72.7-79.9zm-196.2 46.1v27.2l11.8-3.4-2.9-23.8zm-68.7-150.4l24.1 61.2 21-13.8-31.3-50.9zm84.4 154.9l2 12.4c9-1.5 58.4-6.6 58.4-14.1 0-1.4-.6-3.2-.9-4.6-26.8 0-36.9 3.8-59.5 6.3z\"]\n};\nvar faPiedPiperHat = {\n prefix: 'fab',\n iconName: 'pied-piper-hat',\n icon: [640, 512, [], \"f4e5\", \"M640 24.9c-80.8 53.6-89.4 92.5-96.4 104.4-6.7 12.2-11.7 60.3-23.3 83.6-11.7 23.6-54.2 42.2-66.1 50-11.7 7.8-28.3 38.1-41.9 64.2-108.1-4.4-167.4 38.8-259.2 93.6 29.4-9.7 43.3-16.7 43.3-16.7 94.2-36 139.3-68.3 281.1-49.2 1.1 0 1.9.6 2.8.8 3.9 2.2 5.3 6.9 3.1 10.8l-53.9 95.8c-2.5 4.7-7.8 7.2-13.1 6.1-126.8-23.8-226.9 17.3-318.9 18.6C24.1 488 0 453.4 0 451.8c0-1.1.6-1.7 1.7-1.7 0 0 38.3 0 103.1-15.3C178.4 294.5 244 245.4 315.4 245.4c0 0 71.7 0 90.6 61.9 22.8-39.7 28.3-49.2 28.3-49.2 5.3-9.4 35-77.2 86.4-141.4 51.5-64 90.4-79.9 119.3-91.8z\"]\n};\nvar faPiedPiperPp = {\n prefix: 'fab',\n iconName: 'pied-piper-pp',\n icon: [448, 512, [], \"f1a7\", \"M205.3 174.6c0 21.1-14.2 38.1-31.7 38.1-7.1 0-12.8-1.2-17.2-3.7v-68c4.4-2.7 10.1-4.2 17.2-4.2 17.5 0 31.7 16.9 31.7 37.8zm52.6 67c-7.1 0-12.8 1.5-17.2 4.2v68c4.4 2.5 10.1 3.7 17.2 3.7 17.4 0 31.7-16.9 31.7-37.8 0-21.1-14.3-38.1-31.7-38.1zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM185 255.1c41 0 74.2-35.6 74.2-79.6 0-44-33.2-79.6-74.2-79.6-12 0-24.1 3.2-34.6 8.8h-45.7V311l51.8-10.1v-50.6c8.6 3.1 18.1 4.8 28.5 4.8zm158.4 25.3c0-44-33.2-79.6-73.9-79.6-3.2 0-6.4.2-9.6.7-3.7 12.5-10.1 23.8-19.2 33.4-13.8 15-32.2 23.8-51.8 24.8V416l51.8-10.1v-50.6c8.6 3.2 18.2 4.7 28.7 4.7 40.8 0 74-35.6 74-79.6z\"]\n};\nvar faPiedPiperSquare = {\n prefix: 'fab',\n iconName: 'pied-piper-square',\n icon: [448, 512, [], \"e01e\", \"M32 419L0 479.2l.8-328C.8 85.3 54 32 120 32h327.2c-93 28.9-189.9 94.2-253.9 168.6C122.7 282 82.6 338 32 419M448 32S305.2 98.8 261.6 199.1c-23.2 53.6-28.9 118.1-71 158.6-28.9 27.8-69.8 38.2-105.3 56.3-23.2 12-66.4 40.5-84.9 66h328.4c66 0 119.3-53.3 119.3-119.2-.1 0-.1-328.8-.1-328.8z\"]\n};\nvar faPinterest = {\n prefix: 'fab',\n iconName: 'pinterest',\n icon: [496, 512, [], \"f0d2\", \"M496 256c0 137-111 248-248 248-25.6 0-50.2-3.9-73.4-11.1 10.1-16.5 25.2-43.5 30.8-65 3-11.6 15.4-59 15.4-59 8.1 15.4 31.7 28.5 56.8 28.5 74.8 0 128.7-68.8 128.7-154.3 0-81.9-66.9-143.2-152.9-143.2-107 0-163.9 71.8-163.9 150.1 0 36.4 19.4 81.7 50.3 96.1 4.7 2.2 7.2 1.2 8.3-3.3.8-3.4 5-20.3 6.9-28.1.6-2.5.3-4.7-1.7-7.1-10.1-12.5-18.3-35.3-18.3-56.6 0-54.7 41.4-107.6 112-107.6 60.9 0 103.6 41.5 103.6 100.9 0 67.1-33.9 113.6-78 113.6-24.3 0-42.6-20.1-36.7-44.8 7-29.5 20.5-61.3 20.5-82.6 0-19-10.2-34.9-31.4-34.9-24.9 0-44.9 25.7-44.9 60.2 0 22 7.4 36.8 7.4 36.8s-24.5 103.8-29 123.2c-5 21.4-3 51.6-.9 71.2C65.4 450.9 0 361.1 0 256 0 119 111 8 248 8s248 111 248 248z\"]\n};\nvar faPinterestP = {\n prefix: 'fab',\n iconName: 'pinterest-p',\n icon: [384, 512, [], \"f231\", \"M204 6.5C101.4 6.5 0 74.9 0 185.6 0 256 39.6 296 63.6 296c9.9 0 15.6-27.6 15.6-35.4 0-9.3-23.7-29.1-23.7-67.8 0-80.4 61.2-137.4 140.4-137.4 68.1 0 118.5 38.7 118.5 109.8 0 53.1-21.3 152.7-90.3 152.7-24.9 0-46.2-18-46.2-43.8 0-37.8 26.4-74.4 26.4-113.4 0-66.2-93.9-54.2-93.9 25.8 0 16.8 2.1 35.4 9.6 50.7-13.8 59.4-42 147.9-42 209.1 0 18.9 2.7 37.5 4.5 56.4 3.4 3.8 1.7 3.4 6.9 1.5 50.4-69 48.6-82.5 71.4-172.8 12.3 23.4 44.1 36 69.3 36 106.2 0 153.9-103.5 153.9-196.8C384 71.3 298.2 6.5 204 6.5z\"]\n};\nvar faPinterestSquare = {\n prefix: 'fab',\n iconName: 'pinterest-square',\n icon: [448, 512, [], \"f0d3\", \"M448 80v352c0 26.5-21.5 48-48 48H154.4c9.8-16.4 22.4-40 27.4-59.3 3-11.5 15.3-58.4 15.3-58.4 8 15.3 31.4 28.2 56.3 28.2 74.1 0 127.4-68.1 127.4-152.7 0-81.1-66.2-141.8-151.4-141.8-106 0-162.2 71.1-162.2 148.6 0 36 19.2 80.8 49.8 95.1 4.7 2.2 7.1 1.2 8.2-3.3.8-3.4 5-20.1 6.8-27.8.6-2.5.3-4.6-1.7-7-10.1-12.3-18.3-34.9-18.3-56 0-54.2 41-106.6 110.9-106.6 60.3 0 102.6 41.1 102.6 99.9 0 66.4-33.5 112.4-77.2 112.4-24.1 0-42.1-19.9-36.4-44.4 6.9-29.2 20.3-60.7 20.3-81.8 0-53-75.5-45.7-75.5 25 0 21.7 7.3 36.5 7.3 36.5-31.4 132.8-36.1 134.5-29.6 192.6l2.2.8H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48z\"]\n};\nvar faPlaystation = {\n prefix: 'fab',\n iconName: 'playstation',\n icon: [576, 512, [], \"f3df\", \"M570.9 372.3c-11.3 14.2-38.8 24.3-38.8 24.3L327 470.2v-54.3l150.9-53.8c17.1-6.1 19.8-14.8 5.8-19.4-13.9-4.6-39.1-3.3-56.2 2.9L327 381.1v-56.4c23.2-7.8 47.1-13.6 75.7-16.8 40.9-4.5 90.9.6 130.2 15.5 44.2 14 49.2 34.7 38 48.9zm-224.4-92.5v-139c0-16.3-3-31.3-18.3-35.6-11.7-3.8-19 7.1-19 23.4v347.9l-93.8-29.8V32c39.9 7.4 98 24.9 129.2 35.4C424.1 94.7 451 128.7 451 205.2c0 74.5-46 102.8-104.5 74.6zM43.2 410.2c-45.4-12.8-53-39.5-32.3-54.8 19.1-14.2 51.7-24.9 51.7-24.9l134.5-47.8v54.5l-96.8 34.6c-17.1 6.1-19.7 14.8-5.8 19.4 13.9 4.6 39.1 3.3 56.2-2.9l46.4-16.9v48.8c-51.6 9.3-101.4 7.3-153.9-10z\"]\n};\nvar faProductHunt = {\n prefix: 'fab',\n iconName: 'product-hunt',\n icon: [512, 512, [], \"f288\", \"M326.3 218.8c0 20.5-16.7 37.2-37.2 37.2h-70.3v-74.4h70.3c20.5 0 37.2 16.7 37.2 37.2zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-128.1-37.2c0-47.9-38.9-86.8-86.8-86.8H169.2v248h49.6v-74.4h70.3c47.9 0 86.8-38.9 86.8-86.8z\"]\n};\nvar faPushed = {\n prefix: 'fab',\n iconName: 'pushed',\n icon: [432, 512, [], \"f3e1\", \"M407 111.9l-98.5-9 14-33.4c10.4-23.5-10.8-40.4-28.7-37L22.5 76.9c-15.1 2.7-26 18.3-21.4 36.6l105.1 348.3c6.5 21.3 36.7 24.2 47.7 7l35.3-80.8 235.2-231.3c16.4-16.8 4.3-42.9-17.4-44.8zM297.6 53.6c5.1-.7 7.5 2.5 5.2 7.4L286 100.9 108.6 84.6l189-31zM22.7 107.9c-3.1-5.1 1-10 6.1-9.1l248.7 22.7-96.9 230.7L22.7 107.9zM136 456.4c-2.6 4-7.9 3.1-9.4-1.2L43.5 179.7l127.7 197.6c-7 15-35.2 79.1-35.2 79.1zm272.8-314.5L210.1 337.3l89.7-213.7 106.4 9.7c4 1.1 5.7 5.3 2.6 8.6z\"]\n};\nvar faPython = {\n prefix: 'fab',\n iconName: 'python',\n icon: [448, 512, [], \"f3e2\", \"M439.8 200.5c-7.7-30.9-22.3-54.2-53.4-54.2h-40.1v47.4c0 36.8-31.2 67.8-66.8 67.8H172.7c-29.2 0-53.4 25-53.4 54.3v101.8c0 29 25.2 46 53.4 54.3 33.8 9.9 66.3 11.7 106.8 0 26.9-7.8 53.4-23.5 53.4-54.3v-40.7H226.2v-13.6h160.2c31.1 0 42.6-21.7 53.4-54.2 11.2-33.5 10.7-65.7 0-108.6zM286.2 404c11.1 0 20.1 9.1 20.1 20.3 0 11.3-9 20.4-20.1 20.4-11 0-20.1-9.2-20.1-20.4.1-11.3 9.1-20.3 20.1-20.3zM167.8 248.1h106.8c29.7 0 53.4-24.5 53.4-54.3V91.9c0-29-24.4-50.7-53.4-55.6-35.8-5.9-74.7-5.6-106.8.1-45.2 8-53.4 24.7-53.4 55.6v40.7h106.9v13.6h-147c-31.1 0-58.3 18.7-66.8 54.2-9.8 40.7-10.2 66.1 0 108.6 7.6 31.6 25.7 54.2 56.8 54.2H101v-48.8c0-35.3 30.5-66.4 66.8-66.4zm-6.7-142.6c-11.1 0-20.1-9.1-20.1-20.3.1-11.3 9-20.4 20.1-20.4 11 0 20.1 9.2 20.1 20.4s-9 20.3-20.1 20.3z\"]\n};\nvar faQq = {\n prefix: 'fab',\n iconName: 'qq',\n icon: [448, 512, [], \"f1d6\", \"M433.754 420.445c-11.526 1.393-44.86-52.741-44.86-52.741 0 31.345-16.136 72.247-51.051 101.786 16.842 5.192 54.843 19.167 45.803 34.421-7.316 12.343-125.51 7.881-159.632 4.037-34.122 3.844-152.316 8.306-159.632-4.037-9.045-15.25 28.918-29.214 45.783-34.415-34.92-29.539-51.059-70.445-51.059-101.792 0 0-33.334 54.134-44.859 52.741-5.37-.65-12.424-29.644 9.347-99.704 10.261-33.024 21.995-60.478 40.144-105.779C60.683 98.063 108.982.006 224 0c113.737.006 163.156 96.133 160.264 214.963 18.118 45.223 29.912 72.85 40.144 105.778 21.768 70.06 14.716 99.053 9.346 99.704z\"]\n};\nvar faQuinscape = {\n prefix: 'fab',\n iconName: 'quinscape',\n icon: [512, 512, [], \"f459\", \"M313.6 474.6h-1a158.1 158.1 0 0 1 0-316.2c94.9 0 168.2 83.1 157 176.6 4 5.1 8.2 9.6 11.2 15.3 13.4-30.3 20.3-62.4 20.3-97.7C501.1 117.5 391.6 8 256.5 8S12 117.5 12 252.6s109.5 244.6 244.5 244.6a237.36 237.36 0 0 0 70.4-10.1c-5.2-3.5-8.9-8.1-13.3-12.5zm-.1-.1l.4.1zm78.4-168.9a99.2 99.2 0 1 0 99.2 99.2 99.18 99.18 0 0 0-99.2-99.2z\"]\n};\nvar faQuora = {\n prefix: 'fab',\n iconName: 'quora',\n icon: [448, 512, [], \"f2c4\", \"M440.5 386.7h-29.3c-1.5 13.5-10.5 30.8-33 30.8-20.5 0-35.3-14.2-49.5-35.8 44.2-34.2 74.7-87.5 74.7-153C403.5 111.2 306.8 32 205 32 105.3 32 7.3 111.7 7.3 228.7c0 134.1 131.3 221.6 249 189C276 451.3 302 480 351.5 480c81.8 0 90.8-75.3 89-93.3zM297 329.2C277.5 300 253.3 277 205.5 277c-30.5 0-54.3 10-69 22.8l12.2 24.3c6.2-3 13-4 19.8-4 35.5 0 53.7 30.8 69.2 61.3-10 3-20.7 4.2-32.7 4.2-75 0-107.5-53-107.5-156.7C97.5 124.5 130 71 205 71c76.2 0 108.7 53.5 108.7 157.7.1 41.8-5.4 75.6-16.7 100.5z\"]\n};\nvar faRProject = {\n prefix: 'fab',\n iconName: 'r-project',\n icon: [581, 512, [], \"f4f7\", \"M581 226.6C581 119.1 450.9 32 290.5 32S0 119.1 0 226.6C0 322.4 103.3 402 239.4 418.1V480h99.1v-61.5c24.3-2.7 47.6-7.4 69.4-13.9L448 480h112l-67.4-113.7c54.5-35.4 88.4-84.9 88.4-139.7zm-466.8 14.5c0-73.5 98.9-133 220.8-133s211.9 40.7 211.9 133c0 50.1-26.5 85-70.3 106.4-2.4-1.6-4.7-2.9-6.4-3.7-10.2-5.2-27.8-10.5-27.8-10.5s86.6-6.4 86.6-92.7-90.6-87.9-90.6-87.9h-199V361c-74.1-21.5-125.2-67.1-125.2-119.9zm225.1 38.3v-55.6c57.8 0 87.8-6.8 87.8 27.3 0 36.5-38.2 28.3-87.8 28.3zm-.9 72.5H365c10.8 0 18.9 11.7 24 19.2-16.1 1.9-33 2.8-50.6 2.9v-22.1z\"]\n};\nvar faRaspberryPi = {\n prefix: 'fab',\n iconName: 'raspberry-pi',\n icon: [407, 512, [], \"f7bb\", \"M372 232.5l-3.7-6.5c.1-46.4-21.4-65.3-46.5-79.7 7.6-2 15.4-3.6 17.6-13.2 13.1-3.3 15.8-9.4 17.1-15.8 3.4-2.3 14.8-8.7 13.6-19.7 6.4-4.4 10-10.1 8.1-18.1 6.9-7.5 8.7-13.7 5.8-19.4 8.3-10.3 4.6-15.6 1.1-20.9 6.2-11.2.7-23.2-16.6-21.2-6.9-10.1-21.9-7.8-24.2-7.8-2.6-3.2-6-6-16.5-4.7-6.8-6.1-14.4-5-22.3-2.1-9.3-7.3-15.5-1.4-22.6.8C271.6.6 269 5.5 263.5 7.6c-12.3-2.6-16.1 3-22 8.9l-6.9-.1c-18.6 10.8-27.8 32.8-31.1 44.1-3.3-11.3-12.5-33.3-31.1-44.1l-6.9.1c-5.9-5.9-9.7-11.5-22-8.9-5.6-2-8.1-7-19.4-3.4-4.6-1.4-8.9-4.4-13.9-4.3-2.6.1-5.5 1-8.7 3.5-7.9-3-15.5-4-22.3 2.1-10.5-1.3-14 1.4-16.5 4.7-2.3 0-17.3-2.3-24.2 7.8C21.2 16 15.8 28 22 39.2c-3.5 5.4-7.2 10.7 1.1 20.9-2.9 5.7-1.1 11.9 5.8 19.4-1.8 8 1.8 13.7 8.1 18.1-1.2 11 10.2 17.4 13.6 19.7 1.3 6.4 4 12.4 17.1 15.8 2.2 9.5 10 11.2 17.6 13.2-25.1 14.4-46.6 33.3-46.5 79.7l-3.7 6.5c-28.8 17.2-54.7 72.7-14.2 117.7 2.6 14.1 7.1 24.2 11 35.4 5.9 45.2 44.5 66.3 54.6 68.8 14.9 11.2 30.8 21.8 52.2 29.2C159 504.2 181 512 203 512h1c22.1 0 44-7.8 64.2-28.4 21.5-7.4 37.3-18 52.2-29.2 10.2-2.5 48.7-23.6 54.6-68.8 3.9-11.2 8.4-21.3 11-35.4 40.6-45.1 14.7-100.5-14-117.7zm-22.2-8c-1.5 18.7-98.9-65.1-82.1-67.9 45.7-7.5 83.6 19.2 82.1 67.9zm-43 93.1c-24.5 15.8-59.8 5.6-78.8-22.8s-14.6-64.2 9.9-80c24.5-15.8 59.8-5.6 78.8 22.8s14.6 64.2-9.9 80zM238.9 29.3c.8 4.2 1.8 6.8 2.9 7.6 5.4-5.8 9.8-11.7 16.8-17.3 0 3.3-1.7 6.8 2.5 9.4 3.7-5 8.8-9.5 15.5-13.3-3.2 5.6-.6 7.3 1.2 9.6 5.1-4.4 10-8.8 19.4-12.3-2.6 3.1-6.2 6.2-2.4 9.8 5.3-3.3 10.6-6.6 23.1-8.9-2.8 3.1-8.7 6.3-5.1 9.4 6.6-2.5 14-4.4 22.1-5.4-3.9 3.2-7.1 6.3-3.9 8.8 7.1-2.2 16.9-5.1 26.4-2.6l-6 6.1c-.7.8 14.1.6 23.9.8-3.6 5-7.2 9.7-9.3 18.2 1 1 5.8.4 10.4 0-4.7 9.9-12.8 12.3-14.7 16.6 2.9 2.2 6.8 1.6 11.2.1-3.4 6.9-10.4 11.7-16 17.3 1.4 1 3.9 1.6 9.7.9-5.2 5.5-11.4 10.5-18.8 15 1.3 1.5 5.8 1.5 10 1.6-6.7 6.5-15.3 9.9-23.4 14.2 4 2.7 6.9 2.1 10 2.1-5.7 4.7-15.4 7.1-24.4 10 1.7 2.7 3.4 3.4 7.1 4.1-9.5 5.3-23.2 2.9-27 5.6.9 2.7 3.6 4.4 6.7 5.8-15.4.9-57.3-.6-65.4-32.3 15.7-17.3 44.4-37.5 93.7-62.6-38.4 12.8-73 30-102 53.5-34.3-15.9-10.8-55.9 5.8-71.8zm-34.4 114.6c24.2-.3 54.1 17.8 54 34.7-.1 15-21 27.1-53.8 26.9-32.1-.4-53.7-15.2-53.6-29.8 0-11.9 26.2-32.5 53.4-31.8zm-123-12.8c3.7-.7 5.4-1.5 7.1-4.1-9-2.8-18.7-5.3-24.4-10 3.1 0 6 .7 10-2.1-8.1-4.3-16.7-7.7-23.4-14.2 4.2-.1 8.7 0 10-1.6-7.4-4.5-13.6-9.5-18.8-15 5.8.7 8.3.1 9.7-.9-5.6-5.6-12.7-10.4-16-17.3 4.3 1.5 8.3 2 11.2-.1-1.9-4.2-10-6.7-14.7-16.6 4.6.4 9.4 1 10.4 0-2.1-8.5-5.8-13.3-9.3-18.2 9.8-.1 24.6 0 23.9-.8l-6-6.1c9.5-2.5 19.3.4 26.4 2.6 3.2-2.5-.1-5.6-3.9-8.8 8.1 1.1 15.4 2.9 22.1 5.4 3.5-3.1-2.3-6.3-5.1-9.4 12.5 2.3 17.8 5.6 23.1 8.9 3.8-3.6.2-6.7-2.4-9.8 9.4 3.4 14.3 7.9 19.4 12.3 1.7-2.3 4.4-4 1.2-9.6 6.7 3.8 11.8 8.3 15.5 13.3 4.1-2.6 2.5-6.2 2.5-9.4 7 5.6 11.4 11.5 16.8 17.3 1.1-.8 2-3.4 2.9-7.6 16.6 15.9 40.1 55.9 6 71.8-29-23.5-63.6-40.7-102-53.5 49.3 25 78 45.3 93.7 62.6-8 31.8-50 33.2-65.4 32.3 3.1-1.4 5.8-3.2 6.7-5.8-4-2.8-17.6-.4-27.2-5.6zm60.1 24.1c16.8 2.8-80.6 86.5-82.1 67.9-1.5-48.7 36.5-75.5 82.1-67.9zM38.2 342c-23.7-18.8-31.3-73.7 12.6-98.3 26.5-7 9 107.8-12.6 98.3zm91 98.2c-13.3 7.9-45.8 4.7-68.8-27.9-15.5-27.4-13.5-55.2-2.6-63.4 16.3-9.8 41.5 3.4 60.9 25.6 16.9 20 24.6 55.3 10.5 65.7zm-26.4-119.7c-24.5-15.8-28.9-51.6-9.9-80s54.3-38.6 78.8-22.8 28.9 51.6 9.9 80c-19.1 28.4-54.4 38.6-78.8 22.8zM205 496c-29.4 1.2-58.2-23.7-57.8-32.3-.4-12.7 35.8-22.6 59.3-22 23.7-1 55.6 7.5 55.7 18.9.5 11-28.8 35.9-57.2 35.4zm58.9-124.9c.2 29.7-26.2 53.8-58.8 54-32.6.2-59.2-23.8-59.4-53.4v-.6c-.2-29.7 26.2-53.8 58.8-54 32.6-.2 59.2 23.8 59.4 53.4v.6zm82.2 42.7c-25.3 34.6-59.6 35.9-72.3 26.3-13.3-12.4-3.2-50.9 15.1-72 20.9-23.3 43.3-38.5 58.9-26.6 10.5 10.3 16.7 49.1-1.7 72.3zm22.9-73.2c-21.5 9.4-39-105.3-12.6-98.3 43.9 24.7 36.3 79.6 12.6 98.3z\"]\n};\nvar faRavelry = {\n prefix: 'fab',\n iconName: 'ravelry',\n icon: [512, 512, [], \"f2d9\", \"M498.252,234.223c-1.208-10.34-1.7-20.826-3.746-31a310.306,310.306,0,0,0-9.622-36.6,184.068,184.068,0,0,0-30.874-57.5,251.154,251.154,0,0,0-18.818-21.689,237.362,237.362,0,0,0-47.113-36.116A240.8,240.8,0,0,0,331.356,26.65c-11.018-3.1-22.272-5.431-33.515-7.615-6.78-1.314-13.749-1.667-20.627-2.482-.316-.036-.6-.358-.9-.553q-16.143.009-32.288.006c-2.41.389-4.808.925-7.236,1.15a179.331,179.331,0,0,0-34.256,7.1,221.5,221.5,0,0,0-39.768,16.355,281.385,281.385,0,0,0-38.08,24.158c-6.167,4.61-12.268,9.36-17.974,14.518C96.539,88.494,86.34,97.72,76.785,107.555a243.878,243.878,0,0,0-33.648,43.95,206.488,206.488,0,0,0-20.494,44.6,198.2,198.2,0,0,0-7.691,34.759A201.13,201.13,0,0,0,13.4,266.385a299.716,299.716,0,0,0,4.425,40.24,226.865,226.865,0,0,0,16.73,53.3,210.543,210.543,0,0,0,24,39.528,213.589,213.589,0,0,0,26.358,28.416A251.313,251.313,0,0,0,126.7,458.455a287.831,287.831,0,0,0,55.9,25.277,269.5,269.5,0,0,0,40.641,9.835c6.071,1.01,12.275,1.253,18.412,1.873a4.149,4.149,0,0,1,1.19.56h32.289c2.507-.389,5-.937,7.527-1.143,16.336-1.332,32.107-5.335,47.489-10.717A219.992,219.992,0,0,0,379.1,460.322c9.749-6.447,19.395-13.077,28.737-20.1,5.785-4.348,10.988-9.5,16.3-14.457,3.964-3.7,7.764-7.578,11.51-11.5a232.162,232.162,0,0,0,31.427-41.639c9.542-16.045,17.355-32.905,22.3-50.926,2.859-10.413,4.947-21.045,7.017-31.652,1.032-5.279,1.251-10.723,1.87-16.087.036-.317.358-.6.552-.9V236.005A9.757,9.757,0,0,1,498.252,234.223Zm-161.117-1.15s-16.572-2.98-28.47-2.98c-27.2,0-33.57,14.9-33.57,37.04V360.8H201.582V170.062H275.1v31.931c8.924-26.822,26.771-36.189,62.04-36.189Z\"]\n};\nvar faReact = {\n prefix: 'fab',\n iconName: 'react',\n icon: [512, 512, [], \"f41b\", \"M418.2 177.2c-5.4-1.8-10.8-3.5-16.2-5.1.9-3.7 1.7-7.4 2.5-11.1 12.3-59.6 4.2-107.5-23.1-123.3-26.3-15.1-69.2.6-112.6 38.4-4.3 3.7-8.5 7.6-12.5 11.5-2.7-2.6-5.5-5.2-8.3-7.7-45.5-40.4-91.1-57.4-118.4-41.5-26.2 15.2-34 60.3-23 116.7 1.1 5.6 2.3 11.1 3.7 16.7-6.4 1.8-12.7 3.8-18.6 5.9C38.3 196.2 0 225.4 0 255.6c0 31.2 40.8 62.5 96.3 81.5 4.5 1.5 9 3 13.6 4.3-1.5 6-2.8 11.9-4 18-10.5 55.5-2.3 99.5 23.9 114.6 27 15.6 72.4-.4 116.6-39.1 3.5-3.1 7-6.3 10.5-9.7 4.4 4.3 9 8.4 13.6 12.4 42.8 36.8 85.1 51.7 111.2 36.6 27-15.6 35.8-62.9 24.4-120.5-.9-4.4-1.9-8.9-3-13.5 3.2-.9 6.3-1.9 9.4-2.9 57.7-19.1 99.5-50 99.5-81.7 0-30.3-39.4-59.7-93.8-78.4zM282.9 92.3c37.2-32.4 71.9-45.1 87.7-36 16.9 9.7 23.4 48.9 12.8 100.4-.7 3.4-1.4 6.7-2.3 10-22.2-5-44.7-8.6-67.3-10.6-13-18.6-27.2-36.4-42.6-53.1 3.9-3.7 7.7-7.2 11.7-10.7zM167.2 307.5c5.1 8.7 10.3 17.4 15.8 25.9-15.6-1.7-31.1-4.2-46.4-7.5 4.4-14.4 9.9-29.3 16.3-44.5 4.6 8.8 9.3 17.5 14.3 26.1zm-30.3-120.3c14.4-3.2 29.7-5.8 45.6-7.8-5.3 8.3-10.5 16.8-15.4 25.4-4.9 8.5-9.7 17.2-14.2 26-6.3-14.9-11.6-29.5-16-43.6zm27.4 68.9c6.6-13.8 13.8-27.3 21.4-40.6s15.8-26.2 24.4-38.9c15-1.1 30.3-1.7 45.9-1.7s31 .6 45.9 1.7c8.5 12.6 16.6 25.5 24.3 38.7s14.9 26.7 21.7 40.4c-6.7 13.8-13.9 27.4-21.6 40.8-7.6 13.3-15.7 26.2-24.2 39-14.9 1.1-30.4 1.6-46.1 1.6s-30.9-.5-45.6-1.4c-8.7-12.7-16.9-25.7-24.6-39s-14.8-26.8-21.5-40.6zm180.6 51.2c5.1-8.8 9.9-17.7 14.6-26.7 6.4 14.5 12 29.2 16.9 44.3-15.5 3.5-31.2 6.2-47 8 5.4-8.4 10.5-17 15.5-25.6zm14.4-76.5c-4.7-8.8-9.5-17.6-14.5-26.2-4.9-8.5-10-16.9-15.3-25.2 16.1 2 31.5 4.7 45.9 8-4.6 14.8-10 29.2-16.1 43.4zM256.2 118.3c10.5 11.4 20.4 23.4 29.6 35.8-19.8-.9-39.7-.9-59.5 0 9.8-12.9 19.9-24.9 29.9-35.8zM140.2 57c16.8-9.8 54.1 4.2 93.4 39 2.5 2.2 5 4.6 7.6 7-15.5 16.7-29.8 34.5-42.9 53.1-22.6 2-45 5.5-67.2 10.4-1.3-5.1-2.4-10.3-3.5-15.5-9.4-48.4-3.2-84.9 12.6-94zm-24.5 263.6c-4.2-1.2-8.3-2.5-12.4-3.9-21.3-6.7-45.5-17.3-63-31.2-10.1-7-16.9-17.8-18.8-29.9 0-18.3 31.6-41.7 77.2-57.6 5.7-2 11.5-3.8 17.3-5.5 6.8 21.7 15 43 24.5 63.6-9.6 20.9-17.9 42.5-24.8 64.5zm116.6 98c-16.5 15.1-35.6 27.1-56.4 35.3-11.1 5.3-23.9 5.8-35.3 1.3-15.9-9.2-22.5-44.5-13.5-92 1.1-5.6 2.3-11.2 3.7-16.7 22.4 4.8 45 8.1 67.9 9.8 13.2 18.7 27.7 36.6 43.2 53.4-3.2 3.1-6.4 6.1-9.6 8.9zm24.5-24.3c-10.2-11-20.4-23.2-30.3-36.3 9.6.4 19.5.6 29.5.6 10.3 0 20.4-.2 30.4-.7-9.2 12.7-19.1 24.8-29.6 36.4zm130.7 30c-.9 12.2-6.9 23.6-16.5 31.3-15.9 9.2-49.8-2.8-86.4-34.2-4.2-3.6-8.4-7.5-12.7-11.5 15.3-16.9 29.4-34.8 42.2-53.6 22.9-1.9 45.7-5.4 68.2-10.5 1 4.1 1.9 8.2 2.7 12.2 4.9 21.6 5.7 44.1 2.5 66.3zm18.2-107.5c-2.8.9-5.6 1.8-8.5 2.6-7-21.8-15.6-43.1-25.5-63.8 9.6-20.4 17.7-41.4 24.5-62.9 5.2 1.5 10.2 3.1 15 4.7 46.6 16 79.3 39.8 79.3 58 0 19.6-34.9 44.9-84.8 61.4zm-149.7-15c25.3 0 45.8-20.5 45.8-45.8s-20.5-45.8-45.8-45.8c-25.3 0-45.8 20.5-45.8 45.8s20.5 45.8 45.8 45.8z\"]\n};\nvar faReacteurope = {\n prefix: 'fab',\n iconName: 'reacteurope',\n icon: [576, 512, [], \"f75d\", \"M250.6 211.74l5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3-7.1-.1-2.3-6.8-2.3 6.8-7.2.1 5.7 4.3zm63.7 0l5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3-7.2-.1-2.3-6.8-2.3 6.8-7.2.1 5.7 4.3zm-91.3 50.5h-3.4c-4.8 0-3.8 4-3.8 12.1 0 4.7-2.3 6.1-5.8 6.1s-5.8-1.4-5.8-6.1v-36.6c0-4.7 2.3-6.1 5.8-6.1s5.8 1.4 5.8 6.1c0 7.2-.7 10.5 3.8 10.5h3.4c4.7-.1 3.8-3.9 3.8-12.3 0-9.9-6.7-14.1-16.8-14.1h-.2c-10.1 0-16.8 4.2-16.8 14.1V276c0 10.4 6.7 14.1 16.8 14.1h.2c10.1 0 16.8-3.8 16.8-14.1 0-9.86 1.1-13.76-3.8-13.76zm-80.7 17.4h-14.7v-19.3H139c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8h-11.4v-18.3H142c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8h-21.7c-2.4-.1-3.7 1.3-3.7 3.8v59.1c0 2.5 1.3 3.8 3.8 3.8h21.9c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8zm-42-18.5c4.6-2 7.3-6 7.3-12.4v-11.9c0-10.1-6.7-14.1-16.8-14.1H77.4c-2.5 0-3.8 1.3-3.8 3.8v59.1c0 2.5 1.3 3.8 3.8 3.8h3.4c2.5 0 3.8-1.3 3.8-3.8v-22.9h5.6l7.4 23.5a4.1 4.1 0 0 0 4.3 3.2h3.3c2.8 0 4-1.8 3.2-4.4zm-3.8-14c0 4.8-2.5 6.1-6.1 6.1h-5.8v-20.9h5.8c3.6 0 6.1 1.3 6.1 6.1zM176 226a3.82 3.82 0 0 0-4.2-3.4h-6.9a3.68 3.68 0 0 0-4 3.4l-11 59.2c-.5 2.7.9 4.1 3.4 4.1h3a3.74 3.74 0 0 0 4.1-3.5l1.8-11.3h12.2l1.8 11.3a3.74 3.74 0 0 0 4.1 3.5h3.5c2.6 0 3.9-1.4 3.4-4.1zm-12.3 39.3l4.7-29.7 4.7 29.7zm89.3 20.2v-53.2h7.5c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8h-25.8c-2.5 0-3.8 1.3-3.8 3.8v2.1c0 2.5 1.3 3.8 3.8 3.8h7.3v53.2c0 2.5 1.3 3.8 3.8 3.8h3.4c2.5.04 3.8-1.3 3.8-3.76zm248-.8h-19.4V258h16.1a1.89 1.89 0 0 0 2-2v-.8a1.89 1.89 0 0 0-2-2h-16.1v-25.8h19.1a1.89 1.89 0 0 0 2-2v-.8a1.77 1.77 0 0 0-2-1.9h-22.2a1.62 1.62 0 0 0-2 1.8v63a1.81 1.81 0 0 0 2 1.9H501a1.81 1.81 0 0 0 2-1.9v-.8a1.84 1.84 0 0 0-2-1.96zm-93.1-62.9h-.8c-10.1 0-15.3 4.7-15.3 14.1V276c0 9.3 5.2 14.1 15.3 14.1h.8c10.1 0 15.3-4.8 15.3-14.1v-40.1c0-9.36-5.2-14.06-15.3-14.06zm10.2 52.4c-.1 8-3 11.1-10.5 11.1s-10.5-3.1-10.5-11.1v-36.6c0-7.9 3-11.1 10.5-11.1s10.5 3.2 10.5 11.1zm-46.5-14.5c6.1-1.6 9.2-6.1 9.2-13.3v-9.7c0-9.4-5.2-14.1-15.3-14.1h-13.7a1.81 1.81 0 0 0-2 1.9v63a1.81 1.81 0 0 0 2 1.9h1.2a1.74 1.74 0 0 0 1.9-1.9v-26.9h11.6l10.4 27.2a2.32 2.32 0 0 0 2.3 1.5h1.5c1.4 0 2-1 1.5-2.3zm-6.4-3.9H355v-28.5h10.2c7.5 0 10.5 3.1 10.5 11.1v6.4c0 7.84-3 11.04-10.5 11.04zm85.9-33.1h-13.7a1.62 1.62 0 0 0-2 1.8v63a1.81 1.81 0 0 0 2 1.9h1.2a1.74 1.74 0 0 0 1.9-1.9v-26.1h10.6c10.1 0 15.3-4.8 15.3-14.1v-10.5c0-9.4-5.2-14.1-15.3-14.1zm10.2 22.8c0 7.9-3 11.1-10.5 11.1h-10.2v-29.2h10.2c7.5-.1 10.5 3.1 10.5 11zM259.5 308l-2.3-6.8-2.3 6.8-7.1.1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3zm227.6-136.1a364.42 364.42 0 0 0-35.6-11.3c19.6-78 11.6-134.7-22.3-153.9C394.7-12.66 343.3 11 291 61.94q5.1 4.95 10.2 10.2c82.5-80 119.6-53.5 120.9-52.8 22.4 12.7 36 55.8 15.5 137.8a587.83 587.83 0 0 0-84.6-13C281.1 43.64 212.4 2 170.8 2 140 2 127 23 123.2 29.74c-18.1 32-13.3 84.2.1 133.8-70.5 20.3-120.7 54.1-120.3 95 .5 59.6 103.2 87.8 122.1 92.8-20.5 81.9-10.1 135.6 22.3 153.9 28 15.8 75.1 6 138.2-55.2q-5.1-4.95-10.2-10.2c-82.5 80-119.7 53.5-120.9 52.8-22.3-12.6-36-55.6-15.5-137.9 12.4 2.9 41.8 9.5 84.6 13 71.9 100.4 140.6 142 182.1 142 30.8 0 43.8-21 47.6-27.7 18-31.9 13.3-84.1-.1-133.8 152.3-43.8 156.2-130.2 33.9-176.3zM135.9 36.84c2.9-5.1 11.9-20.3 34.9-20.3 36.8 0 98.8 39.6 163.3 126.2a714 714 0 0 0-93.9.9 547.76 547.76 0 0 1 42.2-52.4Q277.3 86 272.2 81a598.25 598.25 0 0 0-50.7 64.2 569.69 569.69 0 0 0-84.4 14.6c-.2-1.4-24.3-82.2-1.2-123zm304.8 438.3c-2.9 5.1-11.8 20.3-34.9 20.3-36.7 0-98.7-39.4-163.3-126.2a695.38 695.38 0 0 0 93.9-.9 547.76 547.76 0 0 1-42.2 52.4q5.1 5.25 10.2 10.2a588.47 588.47 0 0 0 50.7-64.2c47.3-4.7 80.3-13.5 84.4-14.6 22.7 84.4 4.5 117 1.2 123zm9.1-138.6c-3.6-11.9-7.7-24.1-12.4-36.4a12.67 12.67 0 0 1-10.7-5.7l-.1.1a19.61 19.61 0 0 1-5.4 3.6c5.7 14.3 10.6 28.4 14.7 42.2a535.3 535.3 0 0 1-72 13c3.5-5.3 17.2-26.2 32.2-54.2a24.6 24.6 0 0 1-6-3.2c-1.1 1.2-3.6 4.2-10.9 4.2-6.2 11.2-17.4 30.9-33.9 55.2a711.91 711.91 0 0 1-112.4 1c-7.9-11.2-21.5-31.1-36.8-57.8a21 21 0 0 1-3-1.5c-1.9 1.6-3.9 3.2-12.6 3.2 6.3 11.2 17.5 30.7 33.8 54.6a548.81 548.81 0 0 1-72.2-11.7q5.85-21 14.1-42.9c-3.2 0-5.4.2-8.4-1a17.58 17.58 0 0 1-6.9 1c-4.9 13.4-9.1 26.5-12.7 39.4C-31.7 297-12.1 216 126.7 175.64c3.6 11.9 7.7 24.1 12.4 36.4 10.4 0 12.9 3.4 14.4 5.3a12 12 0 0 1 2.3-2.2c-5.8-14.7-10.9-29.2-15.2-43.3 7-1.8 32.4-8.4 72-13-15.9 24.3-26.7 43.9-32.8 55.3a14.22 14.22 0 0 1 6.4 8 23.42 23.42 0 0 1 10.2-8.4c6.5-11.7 17.9-31.9 34.8-56.9a711.72 711.72 0 0 1 112.4-1c31.5 44.6 28.9 48.1 42.5 64.5a21.42 21.42 0 0 1 10.4-7.4c-6.4-11.4-17.6-31-34.3-55.5 40.4 4.1 65 10 72.2 11.7-4 14.4-8.9 29.2-14.6 44.2a20.74 20.74 0 0 1 6.8 4.3l.1.1a12.72 12.72 0 0 1 8.9-5.6c4.9-13.4 9.2-26.6 12.8-39.5a359.71 359.71 0 0 1 34.5 11c106.1 39.9 74 87.9 72.6 90.4-19.8 35.1-80.1 55.2-105.7 62.5zm-114.4-114h-1.2a1.74 1.74 0 0 0-1.9 1.9v49.8c0 7.9-2.6 11.1-10.1 11.1s-10.1-3.1-10.1-11.1v-49.8a1.69 1.69 0 0 0-1.9-1.9H309a1.81 1.81 0 0 0-2 1.9v51.5c0 9.6 5 14.1 15.1 14.1h.4c10.1 0 15.1-4.6 15.1-14.1v-51.5a2 2 0 0 0-2.2-1.9zM321.7 308l-2.3-6.8-2.3 6.8-7.1.1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3zm-31.1 7.4l-2.3-6.8-2.3 6.8-7.1.1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3zm5.1-30.8h-19.4v-26.7h16.1a1.89 1.89 0 0 0 2-2v-.8a1.89 1.89 0 0 0-2-2h-16.1v-25.8h19.1a1.89 1.89 0 0 0 2-2v-.8a1.77 1.77 0 0 0-2-1.9h-22.2a1.81 1.81 0 0 0-2 1.9v63a1.81 1.81 0 0 0 2 1.9h22.5a1.77 1.77 0 0 0 2-1.9v-.8a1.83 1.83 0 0 0-2-2.06zm-7.4-99.4L286 192l-7.1.1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3-7.1-.1z\"]\n};\nvar faReadme = {\n prefix: 'fab',\n iconName: 'readme',\n icon: [576, 512, [], \"f4d5\", \"M528.3 46.5H388.5c-48.1 0-89.9 33.3-100.4 80.3-10.6-47-52.3-80.3-100.4-80.3H48c-26.5 0-48 21.5-48 48v245.8c0 26.5 21.5 48 48 48h89.7c102.2 0 132.7 24.4 147.3 75 .7 2.8 5.2 2.8 6 0 14.7-50.6 45.2-75 147.3-75H528c26.5 0 48-21.5 48-48V94.6c0-26.4-21.3-47.9-47.7-48.1zM242 311.9c0 1.9-1.5 3.5-3.5 3.5H78.2c-1.9 0-3.5-1.5-3.5-3.5V289c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H78.2c-1.9 0-3.5-1.5-3.5-3.5v-22.9c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5V251zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H78.2c-1.9 0-3.5-1.5-3.5-3.5v-22.9c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm259.3 121.7c0 1.9-1.5 3.5-3.5 3.5H337.5c-1.9 0-3.5-1.5-3.5-3.5v-22.9c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H337.5c-1.9 0-3.5-1.5-3.5-3.5V228c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H337.5c-1.9 0-3.5-1.5-3.5-3.5v-22.8c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5V190z\"]\n};\nvar faRebel = {\n prefix: 'fab',\n iconName: 'rebel',\n icon: [512, 512, [], \"f1d0\", \"M256.5 504C117.2 504 9 387.8 13.2 249.9 16 170.7 56.4 97.7 129.7 49.5c.3 0 1.9-.6 1.1.8-5.8 5.5-111.3 129.8-14.1 226.4 49.8 49.5 90 2.5 90 2.5 38.5-50.1-.6-125.9-.6-125.9-10-24.9-45.7-40.1-45.7-40.1l28.8-31.8c24.4 10.5 43.2 38.7 43.2 38.7.8-29.6-21.9-61.4-21.9-61.4L255.1 8l44.3 50.1c-20.5 28.8-21.9 62.6-21.9 62.6 13.8-23 43.5-39.3 43.5-39.3l28.5 31.8c-27.4 8.9-45.4 39.9-45.4 39.9-15.8 28.5-27.1 89.4.6 127.3 32.4 44.6 87.7-2.8 87.7-2.8 102.7-91.9-10.5-225-10.5-225-6.1-5.5.8-2.8.8-2.8 50.1 36.5 114.6 84.4 116.2 204.8C500.9 400.2 399 504 256.5 504z\"]\n};\nvar faRedRiver = {\n prefix: 'fab',\n iconName: 'red-river',\n icon: [448, 512, [], \"f3e3\", \"M353.2 32H94.8C42.4 32 0 74.4 0 126.8v258.4C0 437.6 42.4 480 94.8 480h258.4c52.4 0 94.8-42.4 94.8-94.8V126.8c0-52.4-42.4-94.8-94.8-94.8zM144.9 200.9v56.3c0 27-21.9 48.9-48.9 48.9V151.9c0-13.2 10.7-23.9 23.9-23.9h154.2c0 27-21.9 48.9-48.9 48.9h-56.3c-12.3-.6-24.6 11.6-24 24zm176.3 72h-56.3c-12.3-.6-24.6 11.6-24 24v56.3c0 27-21.9 48.9-48.9 48.9V247.9c0-13.2 10.7-23.9 23.9-23.9h154.2c0 27-21.9 48.9-48.9 48.9z\"]\n};\nvar faReddit = {\n prefix: 'fab',\n iconName: 'reddit',\n icon: [512, 512, [], \"f1a1\", \"M201.5 305.5c-13.8 0-24.9-11.1-24.9-24.6 0-13.8 11.1-24.9 24.9-24.9 13.6 0 24.6 11.1 24.6 24.9 0 13.6-11.1 24.6-24.6 24.6zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-132.3-41.2c-9.4 0-17.7 3.9-23.8 10-22.4-15.5-52.6-25.5-86.1-26.6l17.4-78.3 55.4 12.5c0 13.6 11.1 24.6 24.6 24.6 13.8 0 24.9-11.3 24.9-24.9s-11.1-24.9-24.9-24.9c-9.7 0-18 5.8-22.1 13.8l-61.2-13.6c-3-.8-6.1 1.4-6.9 4.4l-19.1 86.4c-33.2 1.4-63.1 11.3-85.5 26.8-6.1-6.4-14.7-10.2-24.1-10.2-34.9 0-46.3 46.9-14.4 62.8-1.1 5-1.7 10.2-1.7 15.5 0 52.6 59.2 95.2 132 95.2 73.1 0 132.3-42.6 132.3-95.2 0-5.3-.6-10.8-1.9-15.8 31.3-16 19.8-62.5-14.9-62.5zM302.8 331c-18.2 18.2-76.1 17.9-93.6 0-2.2-2.2-6.1-2.2-8.3 0-2.5 2.5-2.5 6.4 0 8.6 22.8 22.8 87.3 22.8 110.2 0 2.5-2.2 2.5-6.1 0-8.6-2.2-2.2-6.1-2.2-8.3 0zm7.7-75c-13.6 0-24.6 11.1-24.6 24.9 0 13.6 11.1 24.6 24.6 24.6 13.8 0 24.9-11.1 24.9-24.6 0-13.8-11-24.9-24.9-24.9z\"]\n};\nvar faRedditAlien = {\n prefix: 'fab',\n iconName: 'reddit-alien',\n icon: [512, 512, [], \"f281\", \"M440.3 203.5c-15 0-28.2 6.2-37.9 15.9-35.7-24.7-83.8-40.6-137.1-42.3L293 52.3l88.2 19.8c0 21.6 17.6 39.2 39.2 39.2 22 0 39.7-18.1 39.7-39.7s-17.6-39.7-39.7-39.7c-15.4 0-28.7 9.3-35.3 22l-97.4-21.6c-4.9-1.3-9.7 2.2-11 7.1L246.3 177c-52.9 2.2-100.5 18.1-136.3 42.8-9.7-10.1-23.4-16.3-38.4-16.3-55.6 0-73.8 74.6-22.9 100.1-1.8 7.9-2.6 16.3-2.6 24.7 0 83.8 94.4 151.7 210.3 151.7 116.4 0 210.8-67.9 210.8-151.7 0-8.4-.9-17.2-3.1-25.1 49.9-25.6 31.5-99.7-23.8-99.7zM129.4 308.9c0-22 17.6-39.7 39.7-39.7 21.6 0 39.2 17.6 39.2 39.7 0 21.6-17.6 39.2-39.2 39.2-22 .1-39.7-17.6-39.7-39.2zm214.3 93.5c-36.4 36.4-139.1 36.4-175.5 0-4-3.5-4-9.7 0-13.7 3.5-3.5 9.7-3.5 13.2 0 27.8 28.5 120 29 149 0 3.5-3.5 9.7-3.5 13.2 0 4.1 4 4.1 10.2.1 13.7zm-.8-54.2c-21.6 0-39.2-17.6-39.2-39.2 0-22 17.6-39.7 39.2-39.7 22 0 39.7 17.6 39.7 39.7-.1 21.5-17.7 39.2-39.7 39.2z\"]\n};\nvar faRedditSquare = {\n prefix: 'fab',\n iconName: 'reddit-square',\n icon: [448, 512, [], \"f1a2\", \"M283.2 345.5c2.7 2.7 2.7 6.8 0 9.2-24.5 24.5-93.8 24.6-118.4 0-2.7-2.4-2.7-6.5 0-9.2 2.4-2.4 6.5-2.4 8.9 0 18.7 19.2 81 19.6 100.5 0 2.4-2.3 6.6-2.3 9 0zm-91.3-53.8c0-14.9-11.9-26.8-26.5-26.8-14.9 0-26.8 11.9-26.8 26.8 0 14.6 11.9 26.5 26.8 26.5 14.6 0 26.5-11.9 26.5-26.5zm90.7-26.8c-14.6 0-26.5 11.9-26.5 26.8 0 14.6 11.9 26.5 26.5 26.5 14.9 0 26.8-11.9 26.8-26.5 0-14.9-11.9-26.8-26.8-26.8zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-99.7 140.6c-10.1 0-19 4.2-25.6 10.7-24.1-16.7-56.5-27.4-92.5-28.6l18.7-84.2 59.5 13.4c0 14.6 11.9 26.5 26.5 26.5 14.9 0 26.8-12.2 26.8-26.8 0-14.6-11.9-26.8-26.8-26.8-10.4 0-19.3 6.2-23.8 14.9l-65.7-14.6c-3.3-.9-6.5 1.5-7.4 4.8l-20.5 92.8c-35.7 1.5-67.8 12.2-91.9 28.9-6.5-6.8-15.8-11-25.9-11-37.5 0-49.8 50.4-15.5 67.5-1.2 5.4-1.8 11-1.8 16.7 0 56.5 63.7 102.3 141.9 102.3 78.5 0 142.2-45.8 142.2-102.3 0-5.7-.6-11.6-2.1-17 33.6-17.2 21.2-67.2-16.1-67.2z\"]\n};\nvar faRedhat = {\n prefix: 'fab',\n iconName: 'redhat',\n icon: [512, 512, [], \"f7bc\", \"M341.52 285.56c33.65 0 82.34-6.94 82.34-47 .22-6.74.86-1.82-20.88-96.24-4.62-19.15-8.68-27.84-42.31-44.65-26.09-13.34-82.92-35.37-99.73-35.37-15.66 0-20.2 20.17-38.87 20.17-18 0-31.31-15.06-48.12-15.06-16.14 0-26.66 11-34.78 33.62-27.5 77.55-26.28 74.27-26.12 78.27 0 24.8 97.64 106.11 228.47 106.11M429 254.84c4.65 22 4.65 24.35 4.65 27.25 0 37.66-42.33 58.56-98 58.56-125.74.08-235.91-73.65-235.91-122.33a49.55 49.55 0 0 1 4.06-19.72C58.56 200.86 0 208.93 0 260.63c0 84.67 200.63 189 359.49 189 121.79 0 152.51-55.08 152.51-98.58 0-34.21-29.59-73.05-82.93-96.24\"]\n};\nvar faRenren = {\n prefix: 'fab',\n iconName: 'renren',\n icon: [512, 512, [], \"f18b\", \"M214 169.1c0 110.4-61 205.4-147.6 247.4C30 373.2 8 317.7 8 256.6 8 133.9 97.1 32.2 214 12.5v156.6zM255 504c-42.9 0-83.3-11-118.5-30.4C193.7 437.5 239.9 382.9 255 319c15.5 63.9 61.7 118.5 118.8 154.7C338.7 493 298.3 504 255 504zm190.6-87.5C359 374.5 298 279.6 298 169.1V12.5c116.9 19.7 206 121.4 206 244.1 0 61.1-22 116.6-58.4 159.9z\"]\n};\nvar faReplyd = {\n prefix: 'fab',\n iconName: 'replyd',\n icon: [448, 512, [], \"f3e6\", \"M320 480H128C57.6 480 0 422.4 0 352V160C0 89.6 57.6 32 128 32h192c70.4 0 128 57.6 128 128v192c0 70.4-57.6 128-128 128zM193.4 273.2c-6.1-2-11.6-3.1-16.4-3.1-7.2 0-13.5 1.9-18.9 5.6-5.4 3.7-9.6 9-12.8 15.8h-1.1l-4.2-18.3h-28v138.9h36.1v-89.7c1.5-5.4 4.4-9.8 8.7-13.2 4.3-3.4 9.8-5.1 16.2-5.1 4.6 0 9.8 1 15.6 3.1l4.8-34zm115.2 103.4c-3.2 2.4-7.7 4.8-13.7 7.1-6 2.3-12.8 3.5-20.4 3.5-12.2 0-21.1-3-26.5-8.9-5.5-5.9-8.5-14.7-9-26.4h83.3c.9-4.8 1.6-9.4 2.1-13.9.5-4.4.7-8.6.7-12.5 0-10.7-1.6-19.7-4.7-26.9-3.2-7.2-7.3-13-12.5-17.2-5.2-4.3-11.1-7.3-17.8-9.2-6.7-1.8-13.5-2.8-20.6-2.8-21.1 0-37.5 6.1-49.2 18.3s-17.5 30.5-17.5 55c0 22.8 5.2 40.7 15.6 53.7 10.4 13.1 26.8 19.6 49.2 19.6 10.7 0 20.9-1.5 30.4-4.6 9.5-3.1 17.1-6.8 22.6-11.2l-12-23.6zm-21.8-70.3c3.8 5.4 5.3 13.1 4.6 23.1h-51.7c.9-9.4 3.7-17 8.2-22.6 4.5-5.6 11.5-8.5 21-8.5 8.2-.1 14.1 2.6 17.9 8zm79.9 2.5c4.1 3.9 9.4 5.8 16.1 5.8 7 0 12.6-1.9 16.7-5.8s6.1-9.1 6.1-15.6-2-11.6-6.1-15.4c-4.1-3.8-9.6-5.7-16.7-5.7-6.7 0-12 1.9-16.1 5.7-4.1 3.8-6.1 8.9-6.1 15.4s2 11.7 6.1 15.6zm0 100.5c4.1 3.9 9.4 5.8 16.1 5.8 7 0 12.6-1.9 16.7-5.8s6.1-9.1 6.1-15.6-2-11.6-6.1-15.4c-4.1-3.8-9.6-5.7-16.7-5.7-6.7 0-12 1.9-16.1 5.7-4.1 3.8-6.1 8.9-6.1 15.4 0 6.6 2 11.7 6.1 15.6z\"]\n};\nvar faResearchgate = {\n prefix: 'fab',\n iconName: 'researchgate',\n icon: [448, 512, [], \"f4f8\", \"M0 32v448h448V32H0zm262.2 334.4c-6.6 3-33.2 6-50-14.2-9.2-10.6-25.3-33.3-42.2-63.6-8.9 0-14.7 0-21.4-.6v46.4c0 23.5 6 21.2 25.8 23.9v8.1c-6.9-.3-23.1-.8-35.6-.8-13.1 0-26.1.6-33.6.8v-8.1c15.5-2.9 22-1.3 22-23.9V225c0-22.6-6.4-21-22-23.9V193c25.8 1 53.1-.6 70.9-.6 31.7 0 55.9 14.4 55.9 45.6 0 21.1-16.7 42.2-39.2 47.5 13.6 24.2 30 45.6 42.2 58.9 7.2 7.8 17.2 14.7 27.2 14.7v7.3zm22.9-135c-23.3 0-32.2-15.7-32.2-32.2V167c0-12.2 8.8-30.4 34-30.4s30.4 17.9 30.4 17.9l-10.7 7.2s-5.5-12.5-19.7-12.5c-7.9 0-19.7 7.3-19.7 19.7v26.8c0 13.4 6.6 23.3 17.9 23.3 14.1 0 21.5-10.9 21.5-26.8h-17.9v-10.7h30.4c0 20.5 4.7 49.9-34 49.9zm-116.5 44.7c-9.4 0-13.6-.3-20-.8v-69.7c6.4-.6 15-.6 22.5-.6 23.3 0 37.2 12.2 37.2 34.5 0 21.9-15 36.6-39.7 36.6z\"]\n};\nvar faResolving = {\n prefix: 'fab',\n iconName: 'resolving',\n icon: [496, 512, [], \"f3e7\", \"M281.2 278.2c46-13.3 49.6-23.5 44-43.4L314 195.5c-6.1-20.9-18.4-28.1-71.1-12.8L54.7 236.8l28.6 98.6 197.9-57.2zM248.5 8C131.4 8 33.2 88.7 7.2 197.5l221.9-63.9c34.8-10.2 54.2-11.7 79.3-8.2 36.3 6.1 52.7 25 61.4 55.2l10.7 37.8c8.2 28.1 1 50.6-23.5 73.6-19.4 17.4-31.2 24.5-61.4 33.2L203 351.8l220.4 27.1 9.7 34.2-48.1 13.3-286.8-37.3 23 80.2c36.8 22 80.3 34.7 126.3 34.7 137 0 248.5-111.4 248.5-248.3C497 119.4 385.5 8 248.5 8zM38.3 388.6L0 256.8c0 48.5 14.3 93.4 38.3 131.8z\"]\n};\nvar faRev = {\n prefix: 'fab',\n iconName: 'rev',\n icon: [448, 512, [], \"f5b2\", \"M289.67 274.89a65.57 65.57 0 1 1-65.56-65.56 65.64 65.64 0 0 1 65.56 65.56zm139.55-5.05h-.13a204.69 204.69 0 0 0-74.32-153l-45.38 26.2a157.07 157.07 0 0 1 71.81 131.84C381.2 361.5 310.73 432 224.11 432S67 361.5 67 274.88c0-81.88 63-149.27 143-156.43v39.12l108.77-62.79L210 32v38.32c-106.7 7.25-191 96-191 204.57 0 111.59 89.12 202.29 200.06 205v.11h210.16V269.84z\"]\n};\nvar faRocketchat = {\n prefix: 'fab',\n iconName: 'rocketchat',\n icon: [576, 512, [], \"f3e8\", \"M284.046,224.8a34.114,34.114,0,1,0,34.317,34.113A34.217,34.217,0,0,0,284.046,224.8Zm-110.45,0a34.114,34.114,0,1,0,34.317,34.113A34.217,34.217,0,0,0,173.6,224.8Zm220.923,0a34.114,34.114,0,1,0,34.317,34.113A34.215,34.215,0,0,0,394.519,224.8Zm153.807-55.319c-15.535-24.172-37.31-45.57-64.681-63.618-52.886-34.817-122.374-54-195.666-54a405.975,405.975,0,0,0-72.032,6.357,238.524,238.524,0,0,0-49.51-36.588C99.684-11.7,40.859.711,11.135,11.421A14.291,14.291,0,0,0,5.58,34.782C26.542,56.458,61.222,99.3,52.7,138.252c-33.142,33.9-51.112,74.776-51.112,117.337,0,43.372,17.97,84.248,51.112,118.148,8.526,38.956-26.154,81.816-47.116,103.491a14.284,14.284,0,0,0,5.555,23.34c29.724,10.709,88.549,23.147,155.324-10.2a238.679,238.679,0,0,0,49.51-36.589A405.972,405.972,0,0,0,288,460.14c73.313,0,142.8-19.159,195.667-53.975,27.371-18.049,49.145-39.426,64.679-63.619,17.309-26.923,26.07-55.916,26.07-86.125C574.394,225.4,565.634,196.43,548.326,169.485ZM284.987,409.9a345.65,345.65,0,0,1-89.446-11.5l-20.129,19.393a184.366,184.366,0,0,1-37.138,27.585,145.767,145.767,0,0,1-52.522,14.87c.983-1.771,1.881-3.563,2.842-5.356q30.258-55.68,16.325-100.078c-32.992-25.962-52.778-59.2-52.778-95.4,0-83.1,104.254-150.469,232.846-150.469s232.867,67.373,232.867,150.469C517.854,342.525,413.6,409.9,284.987,409.9Z\"]\n};\nvar faRockrms = {\n prefix: 'fab',\n iconName: 'rockrms',\n icon: [496, 512, [], \"f3e9\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm157.4 419.5h-90l-112-131.3c-17.9-20.4-3.9-56.1 26.6-56.1h75.3l-84.6-99.3-84.3 98.9h-90L193.5 67.2c14.4-18.4 41.3-17.3 54.5 0l157.7 185.1c19 22.8 2 57.2-27.6 56.1-.6 0-74.2.2-74.2.2l101.5 118.9z\"]\n};\nvar faRust = {\n prefix: 'fab',\n iconName: 'rust',\n icon: [512, 512, [], \"e07a\", \"M508.52,249.75,486.7,236.24c-.17-2-.34-3.93-.55-5.88l18.72-17.5a7.35,7.35,0,0,0-2.44-12.25l-24-9c-.54-1.88-1.08-3.78-1.67-5.64l15-20.83a7.35,7.35,0,0,0-4.79-11.54l-25.42-4.15c-.9-1.73-1.79-3.45-2.73-5.15l10.68-23.42a7.35,7.35,0,0,0-6.95-10.39l-25.82.91q-1.79-2.22-3.61-4.4L439,81.84A7.36,7.36,0,0,0,430.16,73L405,78.93q-2.17-1.83-4.4-3.61l.91-25.82a7.35,7.35,0,0,0-10.39-7L367.7,53.23c-1.7-.94-3.43-1.84-5.15-2.73L358.4,25.08a7.35,7.35,0,0,0-11.54-4.79L326,35.26c-1.86-.59-3.75-1.13-5.64-1.67l-9-24a7.35,7.35,0,0,0-12.25-2.44l-17.5,18.72c-1.95-.21-3.91-.38-5.88-.55L262.25,3.48a7.35,7.35,0,0,0-12.5,0L236.24,25.3c-2,.17-3.93.34-5.88.55L212.86,7.13a7.35,7.35,0,0,0-12.25,2.44l-9,24c-1.89.55-3.79,1.08-5.66,1.68l-20.82-15a7.35,7.35,0,0,0-11.54,4.79l-4.15,25.41c-1.73.9-3.45,1.79-5.16,2.73L120.88,42.55a7.35,7.35,0,0,0-10.39,7l.92,25.81c-1.49,1.19-3,2.39-4.42,3.61L81.84,73A7.36,7.36,0,0,0,73,81.84L78.93,107c-1.23,1.45-2.43,2.93-3.62,4.41l-25.81-.91a7.42,7.42,0,0,0-6.37,3.26,7.35,7.35,0,0,0-.57,7.13l10.66,23.41c-.94,1.7-1.83,3.43-2.73,5.16L25.08,153.6a7.35,7.35,0,0,0-4.79,11.54l15,20.82c-.59,1.87-1.13,3.77-1.68,5.66l-24,9a7.35,7.35,0,0,0-2.44,12.25l18.72,17.5c-.21,1.95-.38,3.91-.55,5.88L3.48,249.75a7.35,7.35,0,0,0,0,12.5L25.3,275.76c.17,2,.34,3.92.55,5.87L7.13,299.13a7.35,7.35,0,0,0,2.44,12.25l24,9c.55,1.89,1.08,3.78,1.68,5.65l-15,20.83a7.35,7.35,0,0,0,4.79,11.54l25.42,4.15c.9,1.72,1.79,3.45,2.73,5.14L42.56,391.12a7.35,7.35,0,0,0,.57,7.13,7.13,7.13,0,0,0,6.37,3.26l25.83-.91q1.77,2.22,3.6,4.4L73,430.16A7.36,7.36,0,0,0,81.84,439L107,433.07q2.18,1.83,4.41,3.61l-.92,25.82a7.35,7.35,0,0,0,10.39,6.95l23.43-10.68c1.69.94,3.42,1.83,5.14,2.73l4.15,25.42a7.34,7.34,0,0,0,11.54,4.78l20.83-15c1.86.6,3.76,1.13,5.65,1.68l9,24a7.36,7.36,0,0,0,12.25,2.44l17.5-18.72c1.95.21,3.92.38,5.88.55l13.51,21.82a7.35,7.35,0,0,0,12.5,0l13.51-21.82c2-.17,3.93-.34,5.88-.56l17.5,18.73a7.36,7.36,0,0,0,12.25-2.44l9-24c1.89-.55,3.78-1.08,5.65-1.68l20.82,15a7.34,7.34,0,0,0,11.54-4.78l4.15-25.42c1.72-.9,3.45-1.79,5.15-2.73l23.42,10.68a7.35,7.35,0,0,0,10.39-6.95l-.91-25.82q2.22-1.79,4.4-3.61L430.16,439a7.36,7.36,0,0,0,8.84-8.84L433.07,405q1.83-2.17,3.61-4.4l25.82.91a7.23,7.23,0,0,0,6.37-3.26,7.35,7.35,0,0,0,.58-7.13L458.77,367.7c.94-1.7,1.83-3.43,2.73-5.15l25.42-4.15a7.35,7.35,0,0,0,4.79-11.54l-15-20.83c.59-1.87,1.13-3.76,1.67-5.65l24-9a7.35,7.35,0,0,0,2.44-12.25l-18.72-17.5c.21-1.95.38-3.91.55-5.87l21.82-13.51a7.35,7.35,0,0,0,0-12.5Zm-151,129.08A13.91,13.91,0,0,0,341,389.51l-7.64,35.67A187.51,187.51,0,0,1,177,424.44l-7.64-35.66a13.87,13.87,0,0,0-16.46-10.68l-31.51,6.76a187.38,187.38,0,0,1-16.26-19.21H258.3c1.72,0,2.89-.29,2.89-1.91V309.55c0-1.57-1.17-1.91-2.89-1.91H213.47l.05-34.35H262c4.41,0,23.66,1.28,29.79,25.87,1.91,7.55,6.17,32.14,9.06,40,2.89,8.82,14.6,26.46,27.1,26.46H407a187.3,187.3,0,0,1-17.34,20.09Zm25.77,34.49A15.24,15.24,0,1,1,368,398.08h.44A15.23,15.23,0,0,1,383.24,413.32Zm-225.62-.68a15.24,15.24,0,1,1-15.25-15.25h.45A15.25,15.25,0,0,1,157.62,412.64ZM69.57,234.15l32.83-14.6a13.88,13.88,0,0,0,7.06-18.33L102.69,186h26.56V305.73H75.65A187.65,187.65,0,0,1,69.57,234.15ZM58.31,198.09a15.24,15.24,0,0,1,15.23-15.25H74a15.24,15.24,0,1,1-15.67,15.24Zm155.16,24.49.05-35.32h63.26c3.28,0,23.07,3.77,23.07,18.62,0,12.29-15.19,16.7-27.68,16.7ZM399,306.71c-9.8,1.13-20.63-4.12-22-10.09-5.78-32.49-15.39-39.4-30.57-51.4,18.86-11.95,38.46-29.64,38.46-53.26,0-25.52-17.49-41.59-29.4-49.48-16.76-11-35.28-13.23-40.27-13.23H116.32A187.49,187.49,0,0,1,221.21,70.06l23.47,24.6a13.82,13.82,0,0,0,19.6.44l26.26-25a187.51,187.51,0,0,1,128.37,91.43l-18,40.57A14,14,0,0,0,408,220.43l34.59,15.33a187.12,187.12,0,0,1,.4,32.54H423.71c-1.91,0-2.69,1.27-2.69,3.13v8.82C421,301,409.31,305.58,399,306.71ZM240,60.21A15.24,15.24,0,0,1,255.21,45h.45A15.24,15.24,0,1,1,240,60.21ZM436.84,214a15.24,15.24,0,1,1,0-30.48h.44a15.24,15.24,0,0,1-.44,30.48Z\"]\n};\nvar faSafari = {\n prefix: 'fab',\n iconName: 'safari',\n icon: [512, 512, [], \"f267\", \"M274.69,274.69l-37.38-37.38L166,346ZM256,8C119,8,8,119,8,256S119,504,256,504,504,393,504,256,393,8,256,8ZM411.85,182.79l14.78-6.13A8,8,0,0,1,437.08,181h0a8,8,0,0,1-4.33,10.46L418,197.57a8,8,0,0,1-10.45-4.33h0A8,8,0,0,1,411.85,182.79ZM314.43,94l6.12-14.78A8,8,0,0,1,331,74.92h0a8,8,0,0,1,4.33,10.45l-6.13,14.78a8,8,0,0,1-10.45,4.33h0A8,8,0,0,1,314.43,94ZM256,60h0a8,8,0,0,1,8,8V84a8,8,0,0,1-8,8h0a8,8,0,0,1-8-8V68A8,8,0,0,1,256,60ZM181,74.92a8,8,0,0,1,10.46,4.33L197.57,94a8,8,0,1,1-14.78,6.12l-6.13-14.78A8,8,0,0,1,181,74.92Zm-63.58,42.49h0a8,8,0,0,1,11.31,0L140,128.72A8,8,0,0,1,140,140h0a8,8,0,0,1-11.31,0l-11.31-11.31A8,8,0,0,1,117.41,117.41ZM60,256h0a8,8,0,0,1,8-8H84a8,8,0,0,1,8,8h0a8,8,0,0,1-8,8H68A8,8,0,0,1,60,256Zm40.15,73.21-14.78,6.13A8,8,0,0,1,74.92,331h0a8,8,0,0,1,4.33-10.46L94,314.43a8,8,0,0,1,10.45,4.33h0A8,8,0,0,1,100.15,329.21Zm4.33-136h0A8,8,0,0,1,94,197.57l-14.78-6.12A8,8,0,0,1,74.92,181h0a8,8,0,0,1,10.45-4.33l14.78,6.13A8,8,0,0,1,104.48,193.24ZM197.57,418l-6.12,14.78a8,8,0,0,1-14.79-6.12l6.13-14.78A8,8,0,1,1,197.57,418ZM264,444a8,8,0,0,1-8,8h0a8,8,0,0,1-8-8V428a8,8,0,0,1,8-8h0a8,8,0,0,1,8,8Zm67-6.92h0a8,8,0,0,1-10.46-4.33L314.43,418a8,8,0,0,1,4.33-10.45h0a8,8,0,0,1,10.45,4.33l6.13,14.78A8,8,0,0,1,331,437.08Zm63.58-42.49h0a8,8,0,0,1-11.31,0L372,383.28A8,8,0,0,1,372,372h0a8,8,0,0,1,11.31,0l11.31,11.31A8,8,0,0,1,394.59,394.59ZM286.25,286.25,110.34,401.66,225.75,225.75,401.66,110.34ZM437.08,331h0a8,8,0,0,1-10.45,4.33l-14.78-6.13a8,8,0,0,1-4.33-10.45h0A8,8,0,0,1,418,314.43l14.78,6.12A8,8,0,0,1,437.08,331ZM444,264H428a8,8,0,0,1-8-8h0a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8h0A8,8,0,0,1,444,264Z\"]\n};\nvar faSalesforce = {\n prefix: 'fab',\n iconName: 'salesforce',\n icon: [640, 512, [], \"f83b\", \"M248.89 245.64h-26.35c.69-5.16 3.32-14.12 13.64-14.12 6.75 0 11.97 3.82 12.71 14.12zm136.66-13.88c-.47 0-14.11-1.77-14.11 20s13.63 20 14.11 20c13 0 14.11-13.54 14.11-20 0-21.76-13.66-20-14.11-20zm-243.22 23.76a8.63 8.63 0 0 0-3.29 7.29c0 4.78 2.08 6.05 3.29 7.05 4.7 3.7 15.07 2.12 20.93.95v-16.94c-5.32-1.07-16.73-1.96-20.93 1.65zM640 232c0 87.58-80 154.39-165.36 136.43-18.37 33-70.73 70.75-132.2 41.63-41.16 96.05-177.89 92.18-213.81-5.17C8.91 428.78-50.19 266.52 53.36 205.61 18.61 126.18 76 32 167.67 32a124.24 124.24 0 0 1 98.56 48.7c20.7-21.4 49.4-34.81 81.15-34.81 42.34 0 79 23.52 98.8 58.57C539 63.78 640 132.69 640 232zm-519.55 31.8c0-11.76-11.69-15.17-17.87-17.17-5.27-2.11-13.41-3.51-13.41-8.94 0-9.46 17-6.66 25.17-2.12 0 0 1.17.71 1.64-.47.24-.7 2.36-6.58 2.59-7.29a1.13 1.13 0 0 0-.7-1.41c-12.33-7.63-40.7-8.51-40.7 12.7 0 12.46 11.49 15.44 17.88 17.17 4.72 1.58 13.17 3 13.17 8.7 0 4-3.53 7.06-9.17 7.06a31.76 31.76 0 0 1-19-6.35c-.47-.23-1.42-.71-1.65.71l-2.4 7.47c-.47.94.23 1.18.23 1.41 1.75 1.4 10.3 6.59 22.82 6.59 13.17 0 21.4-7.06 21.4-18.11zm32-42.58c-10.13 0-18.66 3.17-21.4 5.18a1 1 0 0 0-.24 1.41l2.59 7.06a1 1 0 0 0 1.18.7c.65 0 6.8-4 16.93-4 4 0 7.06.71 9.18 2.36 3.6 2.8 3.06 8.29 3.06 10.58-4.79-.3-19.11-3.44-29.41 3.76a16.92 16.92 0 0 0-7.34 14.54c0 5.9 1.51 10.4 6.59 14.35 12.24 8.16 36.28 2 38.1 1.41 1.58-.32 3.53-.66 3.53-1.88v-33.88c.04-4.61.32-21.64-22.78-21.64zM199 200.24a1.11 1.11 0 0 0-1.18-1.18H188a1.11 1.11 0 0 0-1.17 1.18v79a1.11 1.11 0 0 0 1.17 1.18h9.88a1.11 1.11 0 0 0 1.18-1.18zm55.75 28.93c-2.1-2.31-6.79-7.53-17.65-7.53-3.51 0-14.16.23-20.7 8.94-6.35 7.63-6.58 18.11-6.58 21.41 0 3.12.15 14.26 7.06 21.17 2.64 2.91 9.06 8.23 22.81 8.23 10.82 0 16.47-2.35 18.58-3.76.47-.24.71-.71.24-1.88l-2.35-6.83a1.26 1.26 0 0 0-1.41-.7c-2.59.94-6.35 2.82-15.29 2.82-17.42 0-16.85-14.74-16.94-16.7h37.17a1.23 1.23 0 0 0 1.17-.94c-.29 0 2.07-14.7-6.09-24.23zm36.69 52.69c13.17 0 21.41-7.06 21.41-18.11 0-11.76-11.7-15.17-17.88-17.17-4.14-1.66-13.41-3.38-13.41-8.94 0-3.76 3.29-6.35 8.47-6.35a38.11 38.11 0 0 1 16.7 4.23s1.18.71 1.65-.47c.23-.7 2.35-6.58 2.58-7.29a1.13 1.13 0 0 0-.7-1.41c-7.91-4.9-16.74-4.94-20.23-4.94-12 0-20.46 7.29-20.46 17.64 0 12.46 11.48 15.44 17.87 17.17 6.11 2 13.17 3.26 13.17 8.7 0 4-3.52 7.06-9.17 7.06a31.8 31.8 0 0 1-19-6.35 1 1 0 0 0-1.65.71l-2.35 7.52c-.47.94.23 1.18.23 1.41 1.72 1.4 10.33 6.59 22.79 6.59zM357.09 224c0-.71-.24-1.18-1.18-1.18h-11.76c0-.14.94-8.94 4.47-12.47 4.16-4.15 11.76-1.64 12-1.64 1.17.47 1.41 0 1.64-.47l2.83-7.77c.7-.94 0-1.17-.24-1.41-5.09-2-17.35-2.87-24.46 4.24-5.48 5.48-7 13.92-8 19.52h-8.47a1.28 1.28 0 0 0-1.17 1.18l-1.42 7.76c0 .7.24 1.17 1.18 1.17h8.23c-8.51 47.9-8.75 50.21-10.35 55.52-1.08 3.62-3.29 6.9-5.88 7.76-.09 0-3.88 1.68-9.64-.24 0 0-.94-.47-1.41.71-.24.71-2.59 6.82-2.83 7.53s0 1.41.47 1.41c5.11 2 13 1.77 17.88 0 6.28-2.28 9.72-7.89 11.53-12.94 2.75-7.71 2.81-9.79 11.76-59.74h12.23a1.29 1.29 0 0 0 1.18-1.18zm53.39 16c-.56-1.68-5.1-18.11-25.17-18.11-15.25 0-23 10-25.16 18.11-1 3-3.18 14 0 23.52.09.3 4.41 18.12 25.16 18.12 14.95 0 22.9-9.61 25.17-18.12 3.21-9.61 1.01-20.52 0-23.52zm45.4-16.7c-5-1.65-16.62-1.9-22.11 5.41v-4.47a1.11 1.11 0 0 0-1.18-1.17h-9.4a1.11 1.11 0 0 0-1.18 1.17v55.28a1.12 1.12 0 0 0 1.18 1.18h9.64a1.12 1.12 0 0 0 1.18-1.18v-27.77c0-2.91.05-11.37 4.46-15.05 4.9-4.9 12-3.36 13.41-3.06a1.57 1.57 0 0 0 1.41-.94 74 74 0 0 0 3.06-8 1.16 1.16 0 0 0-.47-1.41zm46.81 54.1l-2.12-7.29c-.47-1.18-1.41-.71-1.41-.71-4.23 1.82-10.15 1.89-11.29 1.89-4.64 0-17.17-1.13-17.17-19.76 0-6.23 1.85-19.76 16.47-19.76a34.85 34.85 0 0 1 11.52 1.65s.94.47 1.18-.71c.94-2.59 1.64-4.47 2.59-7.53.23-.94-.47-1.17-.71-1.17-11.59-3.87-22.34-2.53-27.76 0-1.59.74-16.23 6.49-16.23 27.52 0 2.9-.58 30.11 28.94 30.11a44.45 44.45 0 0 0 15.52-2.83 1.3 1.3 0 0 0 .47-1.42zm53.87-39.52c-.8-3-5.37-16.23-22.35-16.23-16 0-23.52 10.11-25.64 18.59a38.58 38.58 0 0 0-1.65 11.76c0 25.87 18.84 29.4 29.88 29.4 10.82 0 16.46-2.35 18.58-3.76.47-.24.71-.71.24-1.88l-2.36-6.83a1.26 1.26 0 0 0-1.41-.7c-2.59.94-6.35 2.82-15.29 2.82-17.42 0-16.85-14.74-16.93-16.7h37.16a1.25 1.25 0 0 0 1.18-.94c-.24-.01.94-7.07-1.41-15.54zm-23.29-6.35c-10.33 0-13 9-13.64 14.12H546c-.88-11.92-7.62-14.13-12.73-14.13z\"]\n};\nvar faSass = {\n prefix: 'fab',\n iconName: 'sass',\n icon: [640, 512, [], \"f41e\", \"M301.84 378.92c-.3.6-.6 1.08 0 0zm249.13-87a131.16 131.16 0 0 0-58 13.5c-5.9-11.9-12-22.3-13-30.1-1.2-9.1-2.5-14.5-1.1-25.3s7.7-26.1 7.6-27.2-1.4-6.6-14.3-6.7-24 2.5-25.29 5.9a122.83 122.83 0 0 0-5.3 19.1c-2.3 11.7-25.79 53.5-39.09 75.3-4.4-8.5-8.1-16-8.9-22-1.2-9.1-2.5-14.5-1.1-25.3s7.7-26.1 7.6-27.2-1.4-6.6-14.29-6.7-24 2.5-25.3 5.9-2.7 11.4-5.3 19.1-33.89 77.3-42.08 95.4c-4.2 9.2-7.8 16.6-10.4 21.6-.4.8-.7 1.3-.9 1.7.3-.5.5-1 .5-.8-2.2 4.3-3.5 6.7-3.5 6.7v.1c-1.7 3.2-3.6 6.1-4.5 6.1-.6 0-1.9-8.4.3-19.9 4.7-24.2 15.8-61.8 15.7-63.1-.1-.7 2.1-7.2-7.3-10.7-9.1-3.3-12.4 2.2-13.2 2.2s-1.4 2-1.4 2 10.1-42.4-19.39-42.4c-18.4 0-44 20.2-56.58 38.5-7.9 4.3-25 13.6-43 23.5-6.9 3.8-14 7.7-20.7 11.4-.5-.5-.9-1-1.4-1.5-35.79-38.2-101.87-65.2-99.07-116.5 1-18.7 7.5-67.8 127.07-127.4 98-48.8 176.35-35.4 189.84-5.6 19.4 42.5-41.89 121.6-143.66 133-38.79 4.3-59.18-10.7-64.28-16.3-5.3-5.9-6.1-6.2-8.1-5.1-3.3 1.8-1.2 7 0 10.1 3 7.9 15.5 21.9 36.79 28.9 18.7 6.1 64.18 9.5 119.17-11.8 61.78-23.8 109.87-90.1 95.77-145.6C386.52 18.32 293-.18 204.57 31.22c-52.69 18.7-109.67 48.1-150.66 86.4-48.69 45.6-56.48 85.3-53.28 101.9 11.39 58.9 92.57 97.3 125.06 125.7-1.6.9-3.1 1.7-4.5 2.5-16.29 8.1-78.18 40.5-93.67 74.7-17.5 38.8 2.9 66.6 16.29 70.4 41.79 11.6 84.58-9.3 107.57-43.6s20.2-79.1 9.6-99.5c-.1-.3-.3-.5-.4-.8 4.2-2.5 8.5-5 12.8-7.5 8.29-4.9 16.39-9.4 23.49-13.3-4 10.8-6.9 23.8-8.4 42.6-1.8 22 7.3 50.5 19.1 61.7 5.2 4.9 11.49 5 15.39 5 13.8 0 20-11.4 26.89-25 8.5-16.6 16-35.9 16-35.9s-9.4 52.2 16.3 52.2c9.39 0 18.79-12.1 23-18.3v.1s.2-.4.7-1.2c1-1.5 1.5-2.4 1.5-2.4v-.3c3.8-6.5 12.1-21.4 24.59-46 16.2-31.8 31.69-71.5 31.69-71.5a201.24 201.24 0 0 0 6.2 25.8c2.8 9.5 8.7 19.9 13.4 30-3.8 5.2-6.1 8.2-6.1 8.2a.31.31 0 0 0 .1.2c-3 4-6.4 8.3-9.9 12.5-12.79 15.2-28 32.6-30 37.6-2.4 5.9-1.8 10.3 2.8 13.7 3.4 2.6 9.4 3 15.69 2.5 11.5-.8 19.6-3.6 23.5-5.4a82.2 82.2 0 0 0 20.19-10.6c12.5-9.2 20.1-22.4 19.4-39.8-.4-9.6-3.5-19.2-7.3-28.2 1.1-1.6 2.3-3.3 3.4-5C434.8 301.72 450.1 270 450.1 270a201.24 201.24 0 0 0 6.2 25.8c2.4 8.1 7.09 17 11.39 25.7-18.59 15.1-30.09 32.6-34.09 44.1-7.4 21.3-1.6 30.9 9.3 33.1 4.9 1 11.9-1.3 17.1-3.5a79.46 79.46 0 0 0 21.59-11.1c12.5-9.2 24.59-22.1 23.79-39.6-.3-7.9-2.5-15.8-5.4-23.4 15.7-6.6 36.09-10.2 62.09-7.2 55.68 6.5 66.58 41.3 64.48 55.8s-13.8 22.6-17.7 25-5.1 3.3-4.8 5.1c.5 2.6 2.3 2.5 5.6 1.9 4.6-.8 29.19-11.8 30.29-38.7 1.6-34-31.09-71.4-89-71.1zm-429.18 144.7c-18.39 20.1-44.19 27.7-55.28 21.3C54.61 451 59.31 421.42 82 400c13.8-13 31.59-25 43.39-32.4 2.7-1.6 6.6-4 11.4-6.9.8-.5 1.2-.7 1.2-.7.9-.6 1.9-1.1 2.9-1.7 8.29 30.4.3 57.2-19.1 78.3zm134.36-91.4c-6.4 15.7-19.89 55.7-28.09 53.6-7-1.8-11.3-32.3-1.4-62.3 5-15.1 15.6-33.1 21.9-40.1 10.09-11.3 21.19-14.9 23.79-10.4 3.5 5.9-12.2 49.4-16.2 59.2zm111 53c-2.7 1.4-5.2 2.3-6.4 1.6-.9-.5 1.1-2.4 1.1-2.4s13.9-14.9 19.4-21.7c3.2-4 6.9-8.7 10.89-13.9 0 .5.1 1 .1 1.6-.13 17.9-17.32 30-25.12 34.8zm85.58-19.5c-2-1.4-1.7-6.1 5-20.7 2.6-5.7 8.59-15.3 19-24.5a36.18 36.18 0 0 1 1.9 10.8c-.1 22.5-16.2 30.9-25.89 34.4z\"]\n};\nvar faSchlix = {\n prefix: 'fab',\n iconName: 'schlix',\n icon: [448, 512, [], \"f3ea\", \"M350.5 157.7l-54.2-46.1 73.4-39 78.3 44.2-97.5 40.9zM192 122.1l45.7-28.2 34.7 34.6-55.4 29-25-35.4zm-65.1 6.6l31.9-22.1L176 135l-36.7 22.5-12.4-28.8zm-23.3 88.2l-8.8-34.8 29.6-18.3 13.1 35.3-33.9 17.8zm-21.2-83.7l23.9-18.1 8.9 24-26.7 18.3-6.1-24.2zM59 206.5l-3.6-28.4 22.3-15.5 6.1 28.7L59 206.5zm-30.6 16.6l20.8-12.8 3.3 33.4-22.9 12-1.2-32.6zM1.4 268l19.2-10.2.4 38.2-21 8.8L1.4 268zm59.1 59.3l-28.3 8.3-1.6-46.8 25.1-10.7 4.8 49.2zM99 263.2l-31.1 13-5.2-40.8L90.1 221l8.9 42.2zM123.2 377l-41.6 5.9-8.1-63.5 35.2-10.8 14.5 68.4zm28.5-139.9l21.2 57.1-46.2 13.6-13.7-54.1 38.7-16.6zm85.7 230.5l-70.9-3.3-24.3-95.8 55.2-8.6 40 107.7zm-84.9-279.7l42.2-22.4 28 45.9-50.8 21.3-19.4-44.8zm41 94.9l61.3-18.7 52.8 86.6-79.8 11.3-34.3-79.2zm51.4-85.6l67.3-28.8 65.5 65.4-88.6 26.2-44.2-62.8z\"]\n};\nvar faScribd = {\n prefix: 'fab',\n iconName: 'scribd',\n icon: [384, 512, [], \"f28a\", \"M42.3 252.7c-16.1-19-24.7-45.9-24.8-79.9 0-100.4 75.2-153.1 167.2-153.1 98.6-1.6 156.8 49 184.3 70.6l-50.5 72.1-37.3-24.6 26.9-38.6c-36.5-24-79.4-36.5-123-35.8-50.7-.8-111.7 27.2-111.7 76.2 0 18.7 11.2 20.7 28.6 15.6 23.3-5.3 41.9.6 55.8 14 26.4 24.3 23.2 67.6-.7 91.9-29.2 29.5-85.2 27.3-114.8-8.4zm317.7 5.9c-15.5-18.8-38.9-29.4-63.2-28.6-38.1-2-71.1 28-70.5 67.2-.7 16.8 6 33 18.4 44.3 14.1 13.9 33 19.7 56.3 14.4 17.4-5.1 28.6-3.1 28.6 15.6 0 4.3-.5 8.5-1.4 12.7-16.7 40.9-59.5 64.4-121.4 64.4-51.9.2-102.4-16.4-144.1-47.3l33.7-39.4-35.6-27.4L0 406.3l15.4 13.8c52.5 46.8 120.4 72.5 190.7 72.2 51.4 0 94.4-10.5 133.6-44.1 57.1-51.4 54.2-149.2 20.3-189.6z\"]\n};\nvar faSearchengin = {\n prefix: 'fab',\n iconName: 'searchengin',\n icon: [460, 512, [], \"f3eb\", \"M220.6 130.3l-67.2 28.2V43.2L98.7 233.5l54.7-24.2v130.3l67.2-209.3zm-83.2-96.7l-1.3 4.7-15.2 52.9C80.6 106.7 52 145.8 52 191.5c0 52.3 34.3 95.9 83.4 105.5v53.6C57.5 340.1 0 272.4 0 191.6c0-80.5 59.8-147.2 137.4-158zm311.4 447.2c-11.2 11.2-23.1 12.3-28.6 10.5-5.4-1.8-27.1-19.9-60.4-44.4-33.3-24.6-33.6-35.7-43-56.7-9.4-20.9-30.4-42.6-57.5-52.4l-9.7-14.7c-24.7 16.9-53 26.9-81.3 28.7l2.1-6.6 15.9-49.5c46.5-11.9 80.9-54 80.9-104.2 0-54.5-38.4-102.1-96-107.1V32.3C254.4 37.4 320 106.8 320 191.6c0 33.6-11.2 64.7-29 90.4l14.6 9.6c9.8 27.1 31.5 48 52.4 57.4s32.2 9.7 56.8 43c24.6 33.2 42.7 54.9 44.5 60.3s.7 17.3-10.5 28.5zm-9.9-17.9c0-4.4-3.6-8-8-8s-8 3.6-8 8 3.6 8 8 8 8-3.6 8-8z\"]\n};\nvar faSellcast = {\n prefix: 'fab',\n iconName: 'sellcast',\n icon: [448, 512, [], \"f2da\", \"M353.4 32H94.7C42.6 32 0 74.6 0 126.6v258.7C0 437.4 42.6 480 94.7 480h258.7c52.1 0 94.7-42.6 94.7-94.6V126.6c0-52-42.6-94.6-94.7-94.6zm-50 316.4c-27.9 48.2-89.9 64.9-138.2 37.2-22.9 39.8-54.9 8.6-42.3-13.2l15.7-27.2c5.9-10.3 19.2-13.9 29.5-7.9 18.6 10.8-.1-.1 18.5 10.7 27.6 15.9 63.4 6.3 79.4-21.3 15.9-27.6 6.3-63.4-21.3-79.4-17.8-10.2-.6-.4-18.6-10.6-24.6-14.2-3.4-51.9 21.6-37.5 18.6 10.8-.1-.1 18.5 10.7 48.4 28 65.1 90.3 37.2 138.5zm21.8-208.8c-17 29.5-16.3 28.8-19 31.5-6.5 6.5-16.3 8.7-26.5 3.6-18.6-10.8.1.1-18.5-10.7-27.6-15.9-63.4-6.3-79.4 21.3s-6.3 63.4 21.3 79.4c0 0 18.5 10.6 18.6 10.6 24.6 14.2 3.4 51.9-21.6 37.5-18.6-10.8.1.1-18.5-10.7-48.2-27.8-64.9-90.1-37.1-138.4 27.9-48.2 89.9-64.9 138.2-37.2l4.8-8.4c14.3-24.9 52-3.3 37.7 21.5z\"]\n};\nvar faSellsy = {\n prefix: 'fab',\n iconName: 'sellsy',\n icon: [640, 512, [], \"f213\", \"M539.71 237.308c3.064-12.257 4.29-24.821 4.29-37.384C544 107.382 468.618 32 376.076 32c-77.22 0-144.634 53.012-163.02 127.781-15.322-13.176-34.934-20.53-55.157-20.53-46.271 0-83.962 37.69-83.962 83.961 0 7.354.92 15.015 3.065 22.369-42.9 20.225-70.785 63.738-70.785 111.234C6.216 424.843 61.68 480 129.401 480h381.198c67.72 0 123.184-55.157 123.184-123.184.001-56.384-38.916-106.025-94.073-119.508zM199.88 401.554c0 8.274-7.048 15.321-15.321 15.321H153.61c-8.274 0-15.321-7.048-15.321-15.321V290.626c0-8.273 7.048-15.321 15.321-15.321h30.949c8.274 0 15.321 7.048 15.321 15.321v110.928zm89.477 0c0 8.274-7.048 15.321-15.322 15.321h-30.949c-8.274 0-15.321-7.048-15.321-15.321V270.096c0-8.274 7.048-15.321 15.321-15.321h30.949c8.274 0 15.322 7.048 15.322 15.321v131.458zm89.477 0c0 8.274-7.047 15.321-15.321 15.321h-30.949c-8.274 0-15.322-7.048-15.322-15.321V238.84c0-8.274 7.048-15.321 15.322-15.321h30.949c8.274 0 15.321 7.048 15.321 15.321v162.714zm87.027 0c0 8.274-7.048 15.321-15.322 15.321h-28.497c-8.274 0-15.321-7.048-15.321-15.321V176.941c0-8.579 7.047-15.628 15.321-15.628h28.497c8.274 0 15.322 7.048 15.322 15.628v224.613z\"]\n};\nvar faServicestack = {\n prefix: 'fab',\n iconName: 'servicestack',\n icon: [496, 512, [], \"f3ec\", \"M88 216c81.7 10.2 273.7 102.3 304 232H0c99.5-8.1 184.5-137 88-232zm32-152c32.3 35.6 47.7 83.9 46.4 133.6C249.3 231.3 373.7 321.3 400 448h96C455.3 231.9 222.8 79.5 120 64z\"]\n};\nvar faShirtsinbulk = {\n prefix: 'fab',\n iconName: 'shirtsinbulk',\n icon: [448, 512, [], \"f214\", \"M100 410.3l30.6 13.4 4.4-9.9-30.6-13.4zm39.4 17.5l30.6 13.4 4.4-9.9-30.6-13.4zm172.1-14l4.4 9.9 30.6-13.4-4.4-9.9zM179.1 445l30.3 13.7 4.4-9.9-30.3-13.4zM60.4 392.8L91 406.2l4.4-9.6-30.6-13.7zm211.4 38.5l4.4 9.9 30.6-13.4-4.4-9.9zm-39.3 17.5l4.4 9.9 30.6-13.7-4.4-9.6zm118.4-52.2l4.4 9.6 30.6-13.4-4.4-9.9zM170 46.6h-33.5v10.5H170zm-47.2 0H89.2v10.5h33.5zm-47.3 0H42.3v10.5h33.3zm141.5 0h-33.2v10.5H217zm94.5 0H278v10.5h33.5zm47.3 0h-33.5v10.5h33.5zm-94.6 0H231v10.5h33.2zm141.5 0h-33.3v10.5h33.3zM52.8 351.1H42v33.5h10.8zm70-215.9H89.2v10.5h33.5zm-70 10.6h22.8v-10.5H42v33.5h10.8zm168.9 228.6c50.5 0 91.3-40.8 91.3-91.3 0-50.2-40.8-91.3-91.3-91.3-50.2 0-91.3 41.1-91.3 91.3 0 50.5 41.1 91.3 91.3 91.3zm-48.2-111.1c0-25.4 29.5-31.8 49.6-31.8 16.9 0 29.2 5.8 44.3 12l-8.8 16.9h-.9c-6.4-9.9-24.8-13.1-35.6-13.1-9 0-29.8 1.8-29.8 14.9 0 21.6 78.5-10.2 78.5 37.9 0 25.4-31.5 31.2-51 31.2-18.1 0-32.4-2.9-47.2-12.2l9-18.4h.9c6.1 12.2 23.6 14.9 35.9 14.9 8.7 0 32.7-1.2 32.7-14.3 0-26.1-77.6 6.3-77.6-38zM52.8 178.4H42V212h10.8zm342.4 206.2H406v-33.5h-10.8zM52.8 307.9H42v33.5h10.8zM0 3.7v406l221.7 98.6L448 409.7V3.7zm418.8 387.1L222 476.5 29.2 390.8V120.7h389.7v270.1zm0-299.3H29.2V32.9h389.7v58.6zm-366 130.1H42v33.5h10.8zm0 43.2H42v33.5h10.8zM170 135.2h-33.5v10.5H170zm225.2 163.1H406v-33.5h-10.8zm0-43.2H406v-33.5h-10.8zM217 135.2h-33.2v10.5H217zM395.2 212H406v-33.5h-10.8zm0 129.5H406V308h-10.8zm-131-206.3H231v10.5h33.2zm47.3 0H278v10.5h33.5zm83.7 33.6H406v-33.5h-33.5v10.5h22.8zm-36.4-33.6h-33.5v10.5h33.5z\"]\n};\nvar faShopify = {\n prefix: 'fab',\n iconName: 'shopify',\n icon: [448, 512, [], \"e057\", \"M388.32,104.1a4.66,4.66,0,0,0-4.4-4c-2,0-37.23-.8-37.23-.8s-21.61-20.82-29.62-28.83V503.2L442.76,472S388.72,106.5,388.32,104.1ZM288.65,70.47a116.67,116.67,0,0,0-7.21-17.61C271,32.85,255.42,22,237,22a15,15,0,0,0-4,.4c-.4-.8-1.2-1.2-1.6-2C223.4,11.63,213,7.63,200.58,8c-24,.8-48,18-67.25,48.83-13.61,21.62-24,48.84-26.82,70.06-27.62,8.4-46.83,14.41-47.23,14.81-14,4.4-14.41,4.8-16,18-1.2,10-38,291.82-38,291.82L307.86,504V65.67a41.66,41.66,0,0,0-4.4.4S297.86,67.67,288.65,70.47ZM233.41,87.69c-16,4.8-33.63,10.4-50.84,15.61,4.8-18.82,14.41-37.63,25.62-50,4.4-4.4,10.41-9.61,17.21-12.81C232.21,54.86,233.81,74.48,233.41,87.69ZM200.58,24.44A27.49,27.49,0,0,1,215,28c-6.4,3.2-12.81,8.41-18.81,14.41-15.21,16.42-26.82,42-31.62,66.45-14.42,4.41-28.83,8.81-42,12.81C131.33,83.28,163.75,25.24,200.58,24.44ZM154.15,244.61c1.6,25.61,69.25,31.22,73.25,91.66,2.8,47.64-25.22,80.06-65.65,82.47-48.83,3.2-75.65-25.62-75.65-25.62l10.4-44s26.82,20.42,48.44,18.82c14-.8,19.22-12.41,18.81-20.42-2-33.62-57.24-31.62-60.84-86.86-3.2-46.44,27.22-93.27,94.47-97.68,26-1.6,39.23,4.81,39.23,4.81L221.4,225.39s-17.21-8-37.63-6.4C154.15,221,153.75,239.8,154.15,244.61ZM249.42,82.88c0-12-1.6-29.22-7.21-43.63,18.42,3.6,27.22,24,31.23,36.43Q262.63,78.68,249.42,82.88Z\"]\n};\nvar faShopware = {\n prefix: 'fab',\n iconName: 'shopware',\n icon: [512, 512, [], \"f5b5\", \"M403.5 455.41A246.17 246.17 0 0 1 256 504C118.81 504 8 393 8 256 8 118.81 119 8 256 8a247.39 247.39 0 0 1 165.7 63.5 3.57 3.57 0 0 1-2.86 6.18A418.62 418.62 0 0 0 362.13 74c-129.36 0-222.4 53.47-222.4 155.35 0 109 92.13 145.88 176.83 178.73 33.64 13 65.4 25.36 87 41.59a3.58 3.58 0 0 1 0 5.72zM503 233.09a3.64 3.64 0 0 0-1.27-2.44c-51.76-43-93.62-60.48-144.48-60.48-84.13 0-80.25 52.17-80.25 53.63 0 42.6 52.06 62 112.34 84.49 31.07 11.59 63.19 23.57 92.68 39.93a3.57 3.57 0 0 0 5-1.82A249 249 0 0 0 503 233.09z\"]\n};\nvar faSimplybuilt = {\n prefix: 'fab',\n iconName: 'simplybuilt',\n icon: [512, 512, [], \"f215\", \"M481.2 64h-106c-14.5 0-26.6 11.8-26.6 26.3v39.6H163.3V90.3c0-14.5-12-26.3-26.6-26.3h-106C16.1 64 4.3 75.8 4.3 90.3v331.4c0 14.5 11.8 26.3 26.6 26.3h450.4c14.8 0 26.6-11.8 26.6-26.3V90.3c-.2-14.5-12-26.3-26.7-26.3zM149.8 355.8c-36.6 0-66.4-29.7-66.4-66.4 0-36.9 29.7-66.6 66.4-66.6 36.9 0 66.6 29.7 66.6 66.6 0 36.7-29.7 66.4-66.6 66.4zm212.4 0c-36.9 0-66.6-29.7-66.6-66.6 0-36.6 29.7-66.4 66.6-66.4 36.6 0 66.4 29.7 66.4 66.4 0 36.9-29.8 66.6-66.4 66.6z\"]\n};\nvar faSistrix = {\n prefix: 'fab',\n iconName: 'sistrix',\n icon: [448, 512, [], \"f3ee\", \"M448 449L301.2 300.2c20-27.9 31.9-62.2 31.9-99.2 0-93.1-74.7-168.9-166.5-168.9C74.7 32 0 107.8 0 200.9s74.7 168.9 166.5 168.9c39.8 0 76.3-14.2 105-37.9l146 148.1 30.5-31zM166.5 330.8c-70.6 0-128.1-58.3-128.1-129.9S95.9 71 166.5 71s128.1 58.3 128.1 129.9-57.4 129.9-128.1 129.9z\"]\n};\nvar faSith = {\n prefix: 'fab',\n iconName: 'sith',\n icon: [448, 512, [], \"f512\", \"M0 32l69.71 118.75-58.86-11.52 69.84 91.03a146.741 146.741 0 0 0 0 51.45l-69.84 91.03 58.86-11.52L0 480l118.75-69.71-11.52 58.86 91.03-69.84c17.02 3.04 34.47 3.04 51.48 0l91.03 69.84-11.52-58.86L448 480l-69.71-118.78 58.86 11.52-69.84-91.03c3.03-17.01 3.04-34.44 0-51.45l69.84-91.03-58.86 11.52L448 32l-118.75 69.71 11.52-58.9-91.06 69.87c-8.5-1.52-17.1-2.29-25.71-2.29s-17.21.78-25.71 2.29l-91.06-69.87 11.52 58.9L0 32zm224 99.78c31.8 0 63.6 12.12 87.85 36.37 48.5 48.5 48.49 127.21 0 175.7s-127.2 48.46-175.7-.03c-48.5-48.5-48.49-127.21 0-175.7 24.24-24.25 56.05-36.34 87.85-36.34zm0 36.66c-22.42 0-44.83 8.52-61.92 25.61-34.18 34.18-34.19 89.68 0 123.87s89.65 34.18 123.84 0c34.18-34.18 34.19-89.68 0-123.87-17.09-17.09-39.5-25.61-61.92-25.61z\"]\n};\nvar faSketch = {\n prefix: 'fab',\n iconName: 'sketch',\n icon: [512, 512, [], \"f7c6\", \"M27.5 162.2L9 187.1h90.5l6.9-130.7-78.9 105.8zM396.3 45.7L267.7 32l135.7 147.2-7.1-133.5zM112.2 218.3l-11.2-22H9.9L234.8 458zm2-31.2h284l-81.5-88.5L256.3 33zm297.3 9.1L277.6 458l224.8-261.7h-90.9zM415.4 69L406 56.4l.9 17.3 6.1 113.4h90.3zM113.5 93.5l-4.6 85.6L244.7 32 116.1 45.7zm287.7 102.7h-290l42.4 82.9L256.3 480l144.9-283.8z\"]\n};\nvar faSkyatlas = {\n prefix: 'fab',\n iconName: 'skyatlas',\n icon: [640, 512, [], \"f216\", \"M640 329.3c0 65.9-52.5 114.4-117.5 114.4-165.9 0-196.6-249.7-359.7-249.7-146.9 0-147.1 212.2 5.6 212.2 42.5 0 90.9-17.8 125.3-42.5 5.6-4.1 16.9-16.3 22.8-16.3s10.9 5 10.9 10.9c0 7.8-13.1 19.1-18.7 24.1-40.9 35.6-100.3 61.2-154.7 61.2-83.4.1-154-59-154-144.9s67.5-149.1 152.8-149.1c185.3 0 222.5 245.9 361.9 245.9 99.9 0 94.8-139.7 3.4-139.7-17.5 0-35 11.6-46.9 11.6-8.4 0-15.9-7.2-15.9-15.6 0-11.6 5.3-23.7 5.3-36.3 0-66.6-50.9-114.7-116.9-114.7-53.1 0-80 36.9-88.8 36.9-6.2 0-11.2-5-11.2-11.2 0-5.6 4.1-10.3 7.8-14.4 25.3-28.8 64.7-43.7 102.8-43.7 79.4 0 139.1 58.4 139.1 137.8 0 6.9-.3 13.7-1.2 20.6 11.9-3.1 24.1-4.7 35.9-4.7 60.7 0 111.9 45.3 111.9 107.2z\"]\n};\nvar faSkype = {\n prefix: 'fab',\n iconName: 'skype',\n icon: [448, 512, [], \"f17e\", \"M424.7 299.8c2.9-14 4.7-28.9 4.7-43.8 0-113.5-91.9-205.3-205.3-205.3-14.9 0-29.7 1.7-43.8 4.7C161.3 40.7 137.7 32 112 32 50.2 32 0 82.2 0 144c0 25.7 8.7 49.3 23.3 68.2-2.9 14-4.7 28.9-4.7 43.8 0 113.5 91.9 205.3 205.3 205.3 14.9 0 29.7-1.7 43.8-4.7 19 14.6 42.6 23.3 68.2 23.3 61.8 0 112-50.2 112-112 .1-25.6-8.6-49.2-23.2-68.1zm-194.6 91.5c-65.6 0-120.5-29.2-120.5-65 0-16 9-30.6 29.5-30.6 31.2 0 34.1 44.9 88.1 44.9 25.7 0 42.3-11.4 42.3-26.3 0-18.7-16-21.6-42-28-62.5-15.4-117.8-22-117.8-87.2 0-59.2 58.6-81.1 109.1-81.1 55.1 0 110.8 21.9 110.8 55.4 0 16.9-11.4 31.8-30.3 31.8-28.3 0-29.2-33.5-75-33.5-25.7 0-42 7-42 22.5 0 19.8 20.8 21.8 69.1 33 41.4 9.3 90.7 26.8 90.7 77.6 0 59.1-57.1 86.5-112 86.5z\"]\n};\nvar faSlack = {\n prefix: 'fab',\n iconName: 'slack',\n icon: [448, 512, [], \"f198\", \"M94.12 315.1c0 25.9-21.16 47.06-47.06 47.06S0 341 0 315.1c0-25.9 21.16-47.06 47.06-47.06h47.06v47.06zm23.72 0c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06v117.84c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06V315.1zm47.06-188.98c-25.9 0-47.06-21.16-47.06-47.06S139 32 164.9 32s47.06 21.16 47.06 47.06v47.06H164.9zm0 23.72c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06H47.06C21.16 243.96 0 222.8 0 196.9s21.16-47.06 47.06-47.06H164.9zm188.98 47.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06h-47.06V196.9zm-23.72 0c0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06V79.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06V196.9zM283.1 385.88c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06v-47.06h47.06zm0-23.72c-25.9 0-47.06-21.16-47.06-47.06 0-25.9 21.16-47.06 47.06-47.06h117.84c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06H283.1z\"]\n};\nvar faSlackHash = {\n prefix: 'fab',\n iconName: 'slack-hash',\n icon: [448, 512, [], \"f3ef\", \"M446.2 270.4c-6.2-19-26.9-29.1-46-22.9l-45.4 15.1-30.3-90 45.4-15.1c19.1-6.2 29.1-26.8 23-45.9-6.2-19-26.9-29.1-46-22.9l-45.4 15.1-15.7-47c-6.2-19-26.9-29.1-46-22.9-19.1 6.2-29.1 26.8-23 45.9l15.7 47-93.4 31.2-15.7-47c-6.2-19-26.9-29.1-46-22.9-19.1 6.2-29.1 26.8-23 45.9l15.7 47-45.3 15c-19.1 6.2-29.1 26.8-23 45.9 5 14.5 19.1 24 33.6 24.6 6.8 1 12-1.6 57.7-16.8l30.3 90L78 354.8c-19 6.2-29.1 26.9-23 45.9 5 14.5 19.1 24 33.6 24.6 6.8 1 12-1.6 57.7-16.8l15.7 47c5.9 16.9 24.7 29 46 22.9 19.1-6.2 29.1-26.8 23-45.9l-15.7-47 93.6-31.3 15.7 47c5.9 16.9 24.7 29 46 22.9 19.1-6.2 29.1-26.8 23-45.9l-15.7-47 45.4-15.1c19-6 29.1-26.7 22.9-45.7zm-254.1 47.2l-30.3-90.2 93.5-31.3 30.3 90.2-93.5 31.3z\"]\n};\nvar faSlideshare = {\n prefix: 'fab',\n iconName: 'slideshare',\n icon: [512, 512, [], \"f1e7\", \"M187.7 153.7c-34 0-61.7 25.7-61.7 57.7 0 31.7 27.7 57.7 61.7 57.7s61.7-26 61.7-57.7c0-32-27.7-57.7-61.7-57.7zm143.4 0c-34 0-61.7 25.7-61.7 57.7 0 31.7 27.7 57.7 61.7 57.7 34.3 0 61.7-26 61.7-57.7.1-32-27.4-57.7-61.7-57.7zm156.6 90l-6 4.3V49.7c0-27.4-20.6-49.7-46-49.7H76.6c-25.4 0-46 22.3-46 49.7V248c-2-1.4-4.3-2.9-6.3-4.3-15.1-10.6-25.1 4-16 17.7 18.3 22.6 53.1 50.3 106.3 72C58.3 525.1 252 555.7 248.9 457.5c0-.7.3-56.6.3-96.6 5.1 1.1 9.4 2.3 13.7 3.1 0 39.7.3 92.8.3 93.5-3.1 98.3 190.6 67.7 134.3-124 53.1-21.7 88-49.4 106.3-72 9.1-13.8-.9-28.3-16.1-17.8zm-30.5 19.2c-68.9 37.4-128.3 31.1-160.6 29.7-23.7-.9-32.6 9.1-33.7 24.9-10.3-7.7-18.6-15.5-20.3-17.1-5.1-5.4-13.7-8-27.1-7.7-31.7 1.1-89.7 7.4-157.4-28V72.3c0-34.9 8.9-45.7 40.6-45.7h317.7c30.3 0 40.9 12.9 40.9 45.7v190.6z\"]\n};\nvar faSnapchat = {\n prefix: 'fab',\n iconName: 'snapchat',\n icon: [496, 512, [], \"f2ab\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm169.5 338.9c-3.5 8.1-18.1 14-44.8 18.2-1.4 1.9-2.5 9.8-4.3 15.9-1.1 3.7-3.7 5.9-8.1 5.9h-.2c-6.2 0-12.8-2.9-25.8-2.9-17.6 0-23.7 4-37.4 13.7-14.5 10.3-28.4 19.1-49.2 18.2-21 1.6-38.6-11.2-48.5-18.2-13.8-9.7-19.8-13.7-37.4-13.7-12.5 0-20.4 3.1-25.8 3.1-5.4 0-7.5-3.3-8.3-6-1.8-6.1-2.9-14.1-4.3-16-13.8-2.1-44.8-7.5-45.5-21.4-.2-3.6 2.3-6.8 5.9-7.4 46.3-7.6 67.1-55.1 68-57.1 0-.1.1-.2.2-.3 2.5-5 3-9.2 1.6-12.5-3.4-7.9-17.9-10.7-24-13.2-15.8-6.2-18-13.4-17-18.3 1.6-8.5 14.4-13.8 21.9-10.3 5.9 2.8 11.2 4.2 15.7 4.2 3.3 0 5.5-.8 6.6-1.4-1.4-23.9-4.7-58 3.8-77.1C183.1 100 230.7 96 244.7 96c.6 0 6.1-.1 6.7-.1 34.7 0 68 17.8 84.3 54.3 8.5 19.1 5.2 53.1 3.8 77.1 1.1.6 2.9 1.3 5.7 1.4 4.3-.2 9.2-1.6 14.7-4.2 4-1.9 9.6-1.6 13.6 0 6.3 2.3 10.3 6.8 10.4 11.9.1 6.5-5.7 12.1-17.2 16.6-1.4.6-3.1 1.1-4.9 1.7-6.5 2.1-16.4 5.2-19 11.5-1.4 3.3-.8 7.5 1.6 12.5.1.1.1.2.2.3.9 2 21.7 49.5 68 57.1 4 1 7.1 5.5 4.9 10.8z\"]\n};\nvar faSnapchatGhost = {\n prefix: 'fab',\n iconName: 'snapchat-ghost',\n icon: [512, 512, [], \"f2ac\", \"M510.846 392.673c-5.211 12.157-27.239 21.089-67.36 27.318-2.064 2.786-3.775 14.686-6.507 23.956-1.625 5.566-5.623 8.869-12.128 8.869l-.297-.005c-9.395 0-19.203-4.323-38.852-4.323-26.521 0-35.662 6.043-56.254 20.588-21.832 15.438-42.771 28.764-74.027 27.399-31.646 2.334-58.025-16.908-72.871-27.404-20.714-14.643-29.828-20.582-56.241-20.582-18.864 0-30.736 4.72-38.852 4.72-8.073 0-11.213-4.922-12.422-9.04-2.703-9.189-4.404-21.263-6.523-24.13-20.679-3.209-67.31-11.344-68.498-32.15a10.627 10.627 0 0 1 8.877-11.069c69.583-11.455 100.924-82.901 102.227-85.934.074-.176.155-.344.237-.515 3.713-7.537 4.544-13.849 2.463-18.753-5.05-11.896-26.872-16.164-36.053-19.796-23.715-9.366-27.015-20.128-25.612-27.504 2.437-12.836 21.725-20.735 33.002-15.453 8.919 4.181 16.843 6.297 23.547 6.297 5.022 0 8.212-1.204 9.96-2.171-2.043-35.936-7.101-87.29 5.687-115.969C158.122 21.304 229.705 15.42 250.826 15.42c.944 0 9.141-.089 10.11-.089 52.148 0 102.254 26.78 126.723 81.643 12.777 28.65 7.749 79.792 5.695 116.009 1.582.872 4.357 1.942 8.599 2.139 6.397-.286 13.815-2.389 22.069-6.257 6.085-2.846 14.406-2.461 20.48.058l.029.01c9.476 3.385 15.439 10.215 15.589 17.87.184 9.747-8.522 18.165-25.878 25.018-2.118.835-4.694 1.655-7.434 2.525-9.797 3.106-24.6 7.805-28.616 17.271-2.079 4.904-1.256 11.211 2.46 18.748.087.168.166.342.239.515 1.301 3.03 32.615 74.46 102.23 85.934 6.427 1.058 11.163 7.877 7.725 15.859z\"]\n};\nvar faSnapchatSquare = {\n prefix: 'fab',\n iconName: 'snapchat-square',\n icon: [448, 512, [], \"f2ad\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-6.5 314.9c-3.5 8.1-18.1 14-44.8 18.2-1.4 1.9-2.5 9.8-4.3 15.9-1.1 3.7-3.7 5.9-8.1 5.9h-.2c-6.2 0-12.8-2.9-25.8-2.9-17.6 0-23.7 4-37.4 13.7-14.5 10.3-28.4 19.1-49.2 18.2-21 1.6-38.6-11.2-48.5-18.2-13.8-9.7-19.8-13.7-37.4-13.7-12.5 0-20.4 3.1-25.8 3.1-5.4 0-7.5-3.3-8.3-6-1.8-6.1-2.9-14.1-4.3-16-13.8-2.1-44.8-7.5-45.5-21.4-.2-3.6 2.3-6.8 5.9-7.4 46.3-7.6 67.1-55.1 68-57.1 0-.1.1-.2.2-.3 2.5-5 3-9.2 1.6-12.5-3.4-7.9-17.9-10.7-24-13.2-15.8-6.2-18-13.4-17-18.3 1.6-8.5 14.4-13.8 21.9-10.3 5.9 2.8 11.2 4.2 15.7 4.2 3.3 0 5.5-.8 6.6-1.4-1.4-23.9-4.7-58 3.8-77.1C159.1 100 206.7 96 220.7 96c.6 0 6.1-.1 6.7-.1 34.7 0 68 17.8 84.3 54.3 8.5 19.1 5.2 53.1 3.8 77.1 1.1.6 2.9 1.3 5.7 1.4 4.3-.2 9.2-1.6 14.7-4.2 4-1.9 9.6-1.6 13.6 0 6.3 2.3 10.3 6.8 10.4 11.9.1 6.5-5.7 12.1-17.2 16.6-1.4.6-3.1 1.1-4.9 1.7-6.5 2.1-16.4 5.2-19 11.5-1.4 3.3-.8 7.5 1.6 12.5.1.1.1.2.2.3.9 2 21.7 49.5 68 57.1 4 1 7.1 5.5 4.9 10.8z\"]\n};\nvar faSoundcloud = {\n prefix: 'fab',\n iconName: 'soundcloud',\n icon: [640, 512, [], \"f1be\", \"M111.4 256.3l5.8 65-5.8 68.3c-.3 2.5-2.2 4.4-4.4 4.4s-4.2-1.9-4.2-4.4l-5.6-68.3 5.6-65c0-2.2 1.9-4.2 4.2-4.2 2.2 0 4.1 2 4.4 4.2zm21.4-45.6c-2.8 0-4.7 2.2-5 5l-5 105.6 5 68.3c.3 2.8 2.2 5 5 5 2.5 0 4.7-2.2 4.7-5l5.8-68.3-5.8-105.6c0-2.8-2.2-5-4.7-5zm25.5-24.1c-3.1 0-5.3 2.2-5.6 5.3l-4.4 130 4.4 67.8c.3 3.1 2.5 5.3 5.6 5.3 2.8 0 5.3-2.2 5.3-5.3l5.3-67.8-5.3-130c0-3.1-2.5-5.3-5.3-5.3zM7.2 283.2c-1.4 0-2.2 1.1-2.5 2.5L0 321.3l4.7 35c.3 1.4 1.1 2.5 2.5 2.5s2.2-1.1 2.5-2.5l5.6-35-5.6-35.6c-.3-1.4-1.1-2.5-2.5-2.5zm23.6-21.9c-1.4 0-2.5 1.1-2.5 2.5l-6.4 57.5 6.4 56.1c0 1.7 1.1 2.8 2.5 2.8s2.5-1.1 2.8-2.5l7.2-56.4-7.2-57.5c-.3-1.4-1.4-2.5-2.8-2.5zm25.3-11.4c-1.7 0-3.1 1.4-3.3 3.3L47 321.3l5.8 65.8c.3 1.7 1.7 3.1 3.3 3.1 1.7 0 3.1-1.4 3.1-3.1l6.9-65.8-6.9-68.1c0-1.9-1.4-3.3-3.1-3.3zm25.3-2.2c-1.9 0-3.6 1.4-3.6 3.6l-5.8 70 5.8 67.8c0 2.2 1.7 3.6 3.6 3.6s3.6-1.4 3.9-3.6l6.4-67.8-6.4-70c-.3-2.2-2-3.6-3.9-3.6zm241.4-110.9c-1.1-.8-2.8-1.4-4.2-1.4-2.2 0-4.2.8-5.6 1.9-1.9 1.7-3.1 4.2-3.3 6.7v.8l-3.3 176.7 1.7 32.5 1.7 31.7c.3 4.7 4.2 8.6 8.9 8.6s8.6-3.9 8.6-8.6l3.9-64.2-3.9-177.5c-.4-3-2-5.8-4.5-7.2zm-26.7 15.3c-1.4-.8-2.8-1.4-4.4-1.4s-3.1.6-4.4 1.4c-2.2 1.4-3.6 3.9-3.6 6.7l-.3 1.7-2.8 160.8s0 .3 3.1 65.6v.3c0 1.7.6 3.3 1.7 4.7 1.7 1.9 3.9 3.1 6.4 3.1 2.2 0 4.2-1.1 5.6-2.5 1.7-1.4 2.5-3.3 2.5-5.6l.3-6.7 3.1-58.6-3.3-162.8c-.3-2.8-1.7-5.3-3.9-6.7zm-111.4 22.5c-3.1 0-5.8 2.8-5.8 6.1l-4.4 140.6 4.4 67.2c.3 3.3 2.8 5.8 5.8 5.8 3.3 0 5.8-2.5 6.1-5.8l5-67.2-5-140.6c-.2-3.3-2.7-6.1-6.1-6.1zm376.7 62.8c-10.8 0-21.1 2.2-30.6 6.1-6.4-70.8-65.8-126.4-138.3-126.4-17.8 0-35 3.3-50.3 9.4-6.1 2.2-7.8 4.4-7.8 9.2v249.7c0 5 3.9 8.6 8.6 9.2h218.3c43.3 0 78.6-35 78.6-78.3.1-43.6-35.2-78.9-78.5-78.9zm-296.7-60.3c-4.2 0-7.5 3.3-7.8 7.8l-3.3 136.7 3.3 65.6c.3 4.2 3.6 7.5 7.8 7.5 4.2 0 7.5-3.3 7.5-7.5l3.9-65.6-3.9-136.7c-.3-4.5-3.3-7.8-7.5-7.8zm-53.6-7.8c-3.3 0-6.4 3.1-6.4 6.7l-3.9 145.3 3.9 66.9c.3 3.6 3.1 6.4 6.4 6.4 3.6 0 6.4-2.8 6.7-6.4l4.4-66.9-4.4-145.3c-.3-3.6-3.1-6.7-6.7-6.7zm26.7 3.4c-3.9 0-6.9 3.1-6.9 6.9L227 321.3l3.9 66.4c.3 3.9 3.1 6.9 6.9 6.9s6.9-3.1 6.9-6.9l4.2-66.4-4.2-141.7c0-3.9-3-6.9-6.9-6.9z\"]\n};\nvar faSourcetree = {\n prefix: 'fab',\n iconName: 'sourcetree',\n icon: [448, 512, [], \"f7d3\", \"M427.2 203c0-112.1-90.9-203-203-203C112.1-.2 21.2 90.6 21 202.6A202.86 202.86 0 0 0 161.5 396v101.7a14.3 14.3 0 0 0 14.3 14.3h96.4a14.3 14.3 0 0 0 14.3-14.3V396.1A203.18 203.18 0 0 0 427.2 203zm-271.6 0c0-90.8 137.3-90.8 137.3 0-.1 89.9-137.3 91-137.3 0z\"]\n};\nvar faSpeakap = {\n prefix: 'fab',\n iconName: 'speakap',\n icon: [448, 512, [], \"f3f3\", \"M64 391.78C-15.41 303.59-8 167.42 80.64 87.64s224.8-73 304.21 15.24 72 224.36-16.64 304.14c-18.74 16.87 64 43.09 42 52.26-82.06 34.21-253.91 35-346.23-67.5zm213.31-211.6l38.5-40.86c-9.61-8.89-32-26.83-76.17-27.6-52.33-.91-95.86 28.3-96.77 80-.2 11.33.29 36.72 29.42 54.83 34.46 21.42 86.52 21.51 86 52.26-.37 21.28-26.42 25.81-38.59 25.6-3-.05-30.23-.46-47.61-24.62l-40 42.61c28.16 27 59 32.62 83.49 33.05 10.23.18 96.42.33 97.84-81 .28-15.81-2.07-39.72-28.86-56.59-34.36-21.64-85-19.45-84.43-49.75.41-23.25 31-25.37 37.53-25.26.43 0 26.62.26 39.62 17.37z\"]\n};\nvar faSpeakerDeck = {\n prefix: 'fab',\n iconName: 'speaker-deck',\n icon: [512, 512, [], \"f83c\", \"M213.86 296H100a100 100 0 0 1 0-200h132.84a40 40 0 0 1 0 80H98c-26.47 0-26.45 40 0 40h113.82a100 100 0 0 1 0 200H40a40 40 0 0 1 0-80h173.86c26.48 0 26.46-40 0-40zM298 416a120.21 120.21 0 0 0 51.11-80h64.55a19.83 19.83 0 0 0 19.66-20V196a19.83 19.83 0 0 0-19.66-20H296.42a60.77 60.77 0 0 0 0-80h136.93c43.44 0 78.65 35.82 78.65 80v160c0 44.18-35.21 80-78.65 80z\"]\n};\nvar faSpotify = {\n prefix: 'fab',\n iconName: 'spotify',\n icon: [496, 512, [], \"f1bc\", \"M248 8C111.1 8 0 119.1 0 256s111.1 248 248 248 248-111.1 248-248S384.9 8 248 8zm100.7 364.9c-4.2 0-6.8-1.3-10.7-3.6-62.4-37.6-135-39.2-206.7-24.5-3.9 1-9 2.6-11.9 2.6-9.7 0-15.8-7.7-15.8-15.8 0-10.3 6.1-15.2 13.6-16.8 81.9-18.1 165.6-16.5 237 26.2 6.1 3.9 9.7 7.4 9.7 16.5s-7.1 15.4-15.2 15.4zm26.9-65.6c-5.2 0-8.7-2.3-12.3-4.2-62.5-37-155.7-51.9-238.6-29.4-4.8 1.3-7.4 2.6-11.9 2.6-10.7 0-19.4-8.7-19.4-19.4s5.2-17.8 15.5-20.7c27.8-7.8 56.2-13.6 97.8-13.6 64.9 0 127.6 16.1 177 45.5 8.1 4.8 11.3 11 11.3 19.7-.1 10.8-8.5 19.5-19.4 19.5zm31-76.2c-5.2 0-8.4-1.3-12.9-3.9-71.2-42.5-198.5-52.7-280.9-29.7-3.6 1-8.1 2.6-12.9 2.6-13.2 0-23.3-10.3-23.3-23.6 0-13.6 8.4-21.3 17.4-23.9 35.2-10.3 74.6-15.2 117.5-15.2 73 0 149.5 15.2 205.4 47.8 7.8 4.5 12.9 10.7 12.9 22.6 0 13.6-11 23.3-23.2 23.3z\"]\n};\nvar faSquarespace = {\n prefix: 'fab',\n iconName: 'squarespace',\n icon: [512, 512, [], \"f5be\", \"M186.12 343.34c-9.65 9.65-9.65 25.29 0 34.94 9.65 9.65 25.29 9.65 34.94 0L378.24 221.1c19.29-19.29 50.57-19.29 69.86 0s19.29 50.57 0 69.86L293.95 445.1c19.27 19.29 50.53 19.31 69.82.04l.04-.04 119.25-119.24c38.59-38.59 38.59-101.14 0-139.72-38.59-38.59-101.15-38.59-139.72 0l-157.22 157.2zm244.53-104.8c-9.65-9.65-25.29-9.65-34.93 0l-157.2 157.18c-19.27 19.29-50.53 19.31-69.82.05l-.05-.05c-9.64-9.64-25.27-9.65-34.92-.01l-.01.01c-9.65 9.64-9.66 25.28-.02 34.93l.02.02c38.58 38.57 101.14 38.57 139.72 0l157.2-157.2c9.65-9.65 9.65-25.29.01-34.93zm-261.99 87.33l157.18-157.18c9.64-9.65 9.64-25.29 0-34.94-9.64-9.64-25.27-9.64-34.91 0L133.72 290.93c-19.28 19.29-50.56 19.3-69.85.01l-.01-.01c-19.29-19.28-19.31-50.54-.03-69.84l.03-.03L218.03 66.89c-19.28-19.29-50.55-19.3-69.85-.02l-.02.02L28.93 186.14c-38.58 38.59-38.58 101.14 0 139.72 38.6 38.59 101.13 38.59 139.73.01zm-87.33-52.4c9.64 9.64 25.27 9.64 34.91 0l157.21-157.19c19.28-19.29 50.55-19.3 69.84-.02l.02.02c9.65 9.65 25.29 9.65 34.93 0 9.65-9.65 9.65-25.29 0-34.93-38.59-38.59-101.13-38.59-139.72 0L81.33 238.54c-9.65 9.64-9.65 25.28-.01 34.93h.01z\"]\n};\nvar faStackExchange = {\n prefix: 'fab',\n iconName: 'stack-exchange',\n icon: [448, 512, [], \"f18d\", \"M17.7 332.3h412.7v22c0 37.7-29.3 68-65.3 68h-19L259.3 512v-89.7H83c-36 0-65.3-30.3-65.3-68v-22zm0-23.6h412.7v-85H17.7v85zm0-109.4h412.7v-85H17.7v85zM365 0H83C47 0 17.7 30.3 17.7 67.7V90h412.7V67.7C430.3 30.3 401 0 365 0z\"]\n};\nvar faStackOverflow = {\n prefix: 'fab',\n iconName: 'stack-overflow',\n icon: [384, 512, [], \"f16c\", \"M290.7 311L95 269.7 86.8 309l195.7 41zm51-87L188.2 95.7l-25.5 30.8 153.5 128.3zm-31.2 39.7L129.2 179l-16.7 36.5L293.7 300zM262 32l-32 24 119.3 160.3 32-24zm20.5 328h-200v39.7h200zm39.7 80H42.7V320h-40v160h359.5V320h-40z\"]\n};\nvar faStackpath = {\n prefix: 'fab',\n iconName: 'stackpath',\n icon: [448, 512, [], \"f842\", \"M244.6 232.4c0 8.5-4.26 20.49-21.34 20.49h-19.61v-41.47h19.61c17.13 0 21.34 12.36 21.34 20.98zM448 32v448H0V32zM151.3 287.84c0-21.24-12.12-34.54-46.72-44.85-20.57-7.41-26-10.91-26-18.63s7-14.61 20.41-14.61c14.09 0 20.79 8.45 20.79 18.35h30.7l.19-.57c.5-19.57-15.06-41.65-51.12-41.65-23.37 0-52.55 10.75-52.55 38.29 0 19.4 9.25 31.29 50.74 44.37 17.26 6.15 21.91 10.4 21.91 19.48 0 15.2-19.13 14.23-19.47 14.23-20.4 0-25.65-9.1-25.65-21.9h-30.8l-.18.56c-.68 31.32 28.38 45.22 56.63 45.22 29.98 0 51.12-13.55 51.12-38.29zm125.38-55.63c0-25.3-18.43-45.46-53.42-45.46h-51.78v138.18h32.17v-47.36h19.61c30.25 0 53.42-15.95 53.42-45.36zM297.94 325L347 186.78h-31.09L268 325zm106.52-138.22h-31.09L325.46 325h29.94z\"]\n};\nvar faStaylinked = {\n prefix: 'fab',\n iconName: 'staylinked',\n icon: [440, 512, [], \"f3f5\", \"M382.7 292.5l2.7 2.7-170-167.3c-3.5-3.5-9.7-3.7-13.8-.5L144.3 171c-4.2 3.2-4.6 8.7-1.1 12.2l68.1 64.3c3.6 3.5 9.9 3.7 14 .5l.1-.1c4.1-3.2 10.4-3 14 .5l84 81.3c3.6 3.5 3.2 9-.9 12.2l-93.2 74c-4.2 3.3-10.5 3.1-14.2-.4L63.2 268c-3.5-3.5-9.7-3.7-13.9-.5L3.5 302.4c-4.2 3.2-4.7 8.7-1.2 12.2L211 510.7s7.4 6.8 17.3-.8l198-163.9c4-3.2 4.4-8.7.7-12.2zm54.5-83.4L226.7 2.5c-1.5-1.2-8-5.5-16.3 1.1L3.6 165.7c-4.2 3.2-4.8 8.7-1.2 12.2l42.3 41.7 171.7 165.1c3.7 3.5 10.1 3.7 14.3.4l50.2-38.8-.3-.3 7.7-6c4.2-3.2 4.6-8.7.9-12.2l-57.1-54.4c-3.6-3.5-10-3.7-14.2-.5l-.1.1c-4.2 3.2-10.5 3.1-14.2-.4L109 180.8c-3.6-3.5-3.1-8.9 1.1-12.2l92.2-71.5c4.1-3.2 10.3-3 13.9.5l160.4 159c3.7 3.5 10 3.7 14.1.5l45.8-35.8c4.1-3.2 4.4-8.7.7-12.2z\"]\n};\nvar faSteam = {\n prefix: 'fab',\n iconName: 'steam',\n icon: [496, 512, [], \"f1b6\", \"M496 256c0 137-111.2 248-248.4 248-113.8 0-209.6-76.3-239-180.4l95.2 39.3c6.4 32.1 34.9 56.4 68.9 56.4 39.2 0 71.9-32.4 70.2-73.5l84.5-60.2c52.1 1.3 95.8-40.9 95.8-93.5 0-51.6-42-93.5-93.7-93.5s-93.7 42-93.7 93.5v1.2L176.6 279c-15.5-.9-30.7 3.4-43.5 12.1L0 236.1C10.2 108.4 117.1 8 247.6 8 384.8 8 496 119 496 256zM155.7 384.3l-30.5-12.6a52.79 52.79 0 0 0 27.2 25.8c26.9 11.2 57.8-1.6 69-28.4 5.4-13 5.5-27.3.1-40.3-5.4-13-15.5-23.2-28.5-28.6-12.9-5.4-26.7-5.2-38.9-.6l31.5 13c19.8 8.2 29.2 30.9 20.9 50.7-8.3 19.9-31 29.2-50.8 21zm173.8-129.9c-34.4 0-62.4-28-62.4-62.3s28-62.3 62.4-62.3 62.4 28 62.4 62.3-27.9 62.3-62.4 62.3zm.1-15.6c25.9 0 46.9-21 46.9-46.8 0-25.9-21-46.8-46.9-46.8s-46.9 21-46.9 46.8c.1 25.8 21.1 46.8 46.9 46.8z\"]\n};\nvar faSteamSquare = {\n prefix: 'fab',\n iconName: 'steam-square',\n icon: [448, 512, [], \"f1b7\", \"M185.2 356.5c7.7-18.5-1-39.7-19.6-47.4l-29.5-12.2c11.4-4.3 24.3-4.5 36.4.5 12.2 5.1 21.6 14.6 26.7 26.7 5 12.2 5 25.6-.1 37.7-10.5 25.1-39.4 37-64.6 26.5-11.6-4.8-20.4-13.6-25.4-24.2l28.5 11.8c18.6 7.8 39.9-.9 47.6-19.4zM400 32H48C21.5 32 0 53.5 0 80v160.7l116.6 48.1c12-8.2 26.2-12.1 40.7-11.3l55.4-80.2v-1.1c0-48.2 39.3-87.5 87.6-87.5s87.6 39.3 87.6 87.5c0 49.2-40.9 88.7-89.6 87.5l-79 56.3c1.6 38.5-29.1 68.8-65.7 68.8-31.8 0-58.5-22.7-64.5-52.7L0 319.2V432c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-99.7 222.5c-32.2 0-58.4-26.1-58.4-58.3s26.2-58.3 58.4-58.3 58.4 26.2 58.4 58.3-26.2 58.3-58.4 58.3zm.1-14.6c24.2 0 43.9-19.6 43.9-43.8 0-24.2-19.6-43.8-43.9-43.8-24.2 0-43.9 19.6-43.9 43.8 0 24.2 19.7 43.8 43.9 43.8z\"]\n};\nvar faSteamSymbol = {\n prefix: 'fab',\n iconName: 'steam-symbol',\n icon: [448, 512, [], \"f3f6\", \"M395.5 177.5c0 33.8-27.5 61-61 61-33.8 0-61-27.3-61-61s27.3-61 61-61c33.5 0 61 27.2 61 61zm52.5.2c0 63-51 113.8-113.7 113.8L225 371.3c-4 43-40.5 76.8-84.5 76.8-40.5 0-74.7-28.8-83-67L0 358V250.7L97.2 290c15.1-9.2 32.2-13.3 52-11.5l71-101.7c.5-62.3 51.5-112.8 114-112.8C397 64 448 115 448 177.7zM203 363c0-34.7-27.8-62.5-62.5-62.5-4.5 0-9 .5-13.5 1.5l26 10.5c25.5 10.2 38 39 27.7 64.5-10.2 25.5-39.2 38-64.7 27.5-10.2-4-20.5-8.3-30.7-12.2 10.5 19.7 31.2 33.2 55.2 33.2 34.7 0 62.5-27.8 62.5-62.5zm207.5-185.3c0-42-34.3-76.2-76.2-76.2-42.3 0-76.5 34.2-76.5 76.2 0 42.2 34.3 76.2 76.5 76.2 41.9.1 76.2-33.9 76.2-76.2z\"]\n};\nvar faStickerMule = {\n prefix: 'fab',\n iconName: 'sticker-mule',\n icon: [576, 512, [], \"f3f7\", \"M561.7 199.6c-1.3.3.3 0 0 0zm-6.2-77.4c-7.7-22.3-5.1-7.2-13.4-36.9-1.6-6.5-3.6-14.5-6.2-20-4.4-8.7-4.6-7.5-4.6-9.5 0-5.3 30.7-45.3 19-46.9-5.7-.6-12.2 11.6-20.6 17-8.6 4.2-8 5-10.3 5-2.6 0-5.7-3-6.2-5-2-5.7 1.9-25.9-3.6-25.9-3.6 0-12.3 24.8-17 25.8-5.2 1.3-27.9-11.4-75.1 18-25.3 13.2-86.9 65.2-87 65.3-6.7 4.7-20 4.7-35.5 16-44.4 30.1-109.6 9.4-110.7 9-110.6-26.8-128-15.2-159 11.5-20.8 17.9-23.7 36.5-24.2 38.9-4.2 20.4 5.2 48.3 6.7 64.3 1.8 19.3-2.7 17.7 7.7 98.3.5 1 4.1 0 5.1 1.5 0 8.4-3.8 12.1-4.1 13-1.5 4.5-1.5 10.5 0 16 2.3 8.2 8.2 37.2 8.2 46.9 0 41.8.4 44 2.6 49.4 3.9 10 12.5 9.1 17 12 3.1 3.5-.5 8.5 1 12.5.5 2 3.6 4 6.2 5 9.2 3.6 27 .3 29.9-2.5 1.6-1.5.5-4.5 3.1-5 5.1 0 10.8-.5 14.4-2.5 5.1-2.5 4.1-6 1.5-10.5-.4-.8-7-13.3-9.8-16-2.1-2-5.1-3-7.2-4.5-5.8-4.9-10.3-19.4-10.3-19.5-4.6-19.4-10.3-46.3-4.1-66.8 4.6-17.2 39.5-87.7 39.6-87.8 4.1-6.5 17-11.5 27.3-7 6 1.9 19.3 22 65.4 30.9 47.9 8.7 97.4-2 112.2-2 2.8 2-1.9 13-.5 38.9 0 26.4-.4 13.7-4.1 29.9-2.2 9.7 3.4 23.2-1.5 46.9-1.4 9.8-9.9 32.7-8.2 43.4.5 1 1 2 1.5 3.5.5 4.5 1.5 8.5 4.6 10 7.3 3.6 12-3.5 9.8 11.5-.7 3.1-2.6 12 1.5 15 4.4 3.7 30.6 3.4 36.5.5 2.6-1.5 1.6-4.5 6.4-7.4 1.9-.9 11.3-.4 11.3-6.5.3-1.8-9.2-19.9-9.3-20-2.6-3.5-9.2-4.5-11.3-8-6.9-10.1-1.7-52.6.5-59.4 3-11 5.6-22.4 8.7-32.4 11-42.5 10.3-50.6 16.5-68.3.8-1.8 6.4-23.1 10.3-29.9 9.3-17 21.7-32.4 33.5-47.4 18-22.9 34-46.9 52-69.8 6.1-7 8.2-13.7 18-8 10.8 5.7 21.6 7 31.9 17 14.6 12.8 10.2 18.2 11.8 22.9 1.5 5 7.7 10.5 14.9 9.5 10.4-2 13-2.5 13.4-2.5 2.6-.5 5.7-5 7.2-8 3.1-5.5 7.2-9 7.2-16.5 0-7.7-.4-2.8-20.6-52.9z\"]\n};\nvar faStrava = {\n prefix: 'fab',\n iconName: 'strava',\n icon: [384, 512, [], \"f428\", \"M158.4 0L7 292h89.2l62.2-116.1L220.1 292h88.5zm150.2 292l-43.9 88.2-44.6-88.2h-67.6l112.2 220 111.5-220z\"]\n};\nvar faStripe = {\n prefix: 'fab',\n iconName: 'stripe',\n icon: [640, 512, [], \"f429\", \"M165 144.7l-43.3 9.2-.2 142.4c0 26.3 19.8 43.3 46.1 43.3 14.6 0 25.3-2.7 31.2-5.9v-33.8c-5.7 2.3-33.7 10.5-33.7-15.7V221h33.7v-37.8h-33.7zm89.1 51.6l-2.7-13.1H213v153.2h44.3V233.3c10.5-13.8 28.2-11.1 33.9-9.3v-40.8c-6-2.1-26.7-6-37.1 13.1zm92.3-72.3l-44.6 9.5v36.2l44.6-9.5zM44.9 228.3c0-6.9 5.8-9.6 15.1-9.7 13.5 0 30.7 4.1 44.2 11.4v-41.8c-14.7-5.8-29.4-8.1-44.1-8.1-36 0-60 18.8-60 50.2 0 49.2 67.5 41.2 67.5 62.4 0 8.2-7.1 10.9-17 10.9-14.7 0-33.7-6.1-48.6-14.2v40c16.5 7.1 33.2 10.1 48.5 10.1 36.9 0 62.3-15.8 62.3-47.8 0-52.9-67.9-43.4-67.9-63.4zM640 261.6c0-45.5-22-81.4-64.2-81.4s-67.9 35.9-67.9 81.1c0 53.5 30.3 78.2 73.5 78.2 21.2 0 37.1-4.8 49.2-11.5v-33.4c-12.1 6.1-26 9.8-43.6 9.8-17.3 0-32.5-6.1-34.5-26.9h86.9c.2-2.3.6-11.6.6-15.9zm-87.9-16.8c0-20 12.3-28.4 23.4-28.4 10.9 0 22.5 8.4 22.5 28.4zm-112.9-64.6c-17.4 0-28.6 8.2-34.8 13.9l-2.3-11H363v204.8l44.4-9.4.1-50.2c6.4 4.7 15.9 11.2 31.4 11.2 31.8 0 60.8-23.2 60.8-79.6.1-51.6-29.3-79.7-60.5-79.7zm-10.6 122.5c-10.4 0-16.6-3.8-20.9-8.4l-.3-66c4.6-5.1 11-8.8 21.2-8.8 16.2 0 27.4 18.2 27.4 41.4.1 23.9-10.9 41.8-27.4 41.8zm-126.7 33.7h44.6V183.2h-44.6z\"]\n};\nvar faStripeS = {\n prefix: 'fab',\n iconName: 'stripe-s',\n icon: [384, 512, [], \"f42a\", \"M155.3 154.6c0-22.3 18.6-30.9 48.4-30.9 43.4 0 98.5 13.3 141.9 36.7V26.1C298.3 7.2 251.1 0 203.8 0 88.1 0 11 60.4 11 161.4c0 157.9 216.8 132.3 216.8 200.4 0 26.4-22.9 34.9-54.7 34.9-47.2 0-108.2-19.5-156.1-45.5v128.5a396.09 396.09 0 0 0 156 32.4c118.6 0 200.3-51 200.3-153.6 0-170.2-218-139.7-218-203.9z\"]\n};\nvar faStudiovinari = {\n prefix: 'fab',\n iconName: 'studiovinari',\n icon: [512, 512, [], \"f3f8\", \"M480.3 187.7l4.2 28v28l-25.1 44.1-39.8 78.4-56.1 67.5-79.1 37.8-17.7 24.5-7.7 12-9.6 4s17.3-63.6 19.4-63.6c2.1 0 20.3.7 20.3.7l66.7-38.6-92.5 26.1-55.9 36.8-22.8 28-6.6 1.4 20.8-73.6 6.9-5.5 20.7 12.9 88.3-45.2 56.8-51.5 14.8-68.4-125.4 23.3 15.2-18.2-173.4-53.3 81.9-10.5-166-122.9L133.5 108 32.2 0l252.9 126.6-31.5-38L378 163 234.7 64l18.7 38.4-49.6-18.1L158.3 0l194.6 122L310 66.2l108 96.4 12-8.9-21-16.4 4.2-37.8L451 89.1l29.2 24.7 11.5 4.2-7 6.2 8.5 12-13.1 7.4-10.3 20.2 10.5 23.9z\"]\n};\nvar faStumbleupon = {\n prefix: 'fab',\n iconName: 'stumbleupon',\n icon: [512, 512, [], \"f1a4\", \"M502.9 266v69.7c0 62.1-50.3 112.4-112.4 112.4-61.8 0-112.4-49.8-112.4-111.3v-70.2l34.3 16 51.1-15.2V338c0 14.7 12 26.5 26.7 26.5S417 352.7 417 338v-72h85.9zm-224.7-58.2l34.3 16 51.1-15.2V173c0-60.5-51.1-109-112.1-109-60.8 0-112.1 48.2-112.1 108.2v162.4c0 14.9-12 26.7-26.7 26.7S86 349.5 86 334.6V266H0v69.7C0 397.7 50.3 448 112.4 448c61.6 0 112.4-49.5 112.4-110.8V176.9c0-14.7 12-26.7 26.7-26.7s26.7 12 26.7 26.7v30.9z\"]\n};\nvar faStumbleuponCircle = {\n prefix: 'fab',\n iconName: 'stumbleupon-circle',\n icon: [496, 512, [], \"f1a3\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 177.5c-9.8 0-17.8 8-17.8 17.8v106.9c0 40.9-33.9 73.9-74.9 73.9-41.4 0-74.9-33.5-74.9-74.9v-46.5h57.3v45.8c0 10 8 17.8 17.8 17.8s17.8-7.9 17.8-17.8V200.1c0-40 34.2-72.1 74.7-72.1 40.7 0 74.7 32.3 74.7 72.6v23.7l-34.1 10.1-22.9-10.7v-20.6c.1-9.6-7.9-17.6-17.7-17.6zm167.6 123.6c0 41.4-33.5 74.9-74.9 74.9-41.2 0-74.9-33.2-74.9-74.2V263l22.9 10.7 34.1-10.1v47.1c0 9.8 8 17.6 17.8 17.6s17.8-7.9 17.8-17.6v-48h57.3c-.1 45.9-.1 46.4-.1 46.4z\"]\n};\nvar faSuperpowers = {\n prefix: 'fab',\n iconName: 'superpowers',\n icon: [448, 512, [], \"f2dd\", \"M448 32c-83.3 11-166.8 22-250 33-92 12.5-163.3 86.7-169 180-3.3 55.5 18 109.5 57.8 148.2L0 480c83.3-11 166.5-22 249.8-33 91.8-12.5 163.3-86.8 168.7-179.8 3.5-55.5-18-109.5-57.7-148.2L448 32zm-79.7 232.3c-4.2 79.5-74 139.2-152.8 134.5-79.5-4.7-140.7-71-136.3-151 4.5-79.2 74.3-139.3 153-134.5 79.3 4.7 140.5 71 136.1 151z\"]\n};\nvar faSupple = {\n prefix: 'fab',\n iconName: 'supple',\n icon: [640, 512, [], \"f3f9\", \"M640 262.5c0 64.1-109 116.1-243.5 116.1-24.8 0-48.6-1.8-71.1-5 7.7.4 15.5.6 23.4.6 134.5 0 243.5-56.9 243.5-127.1 0-29.4-19.1-56.4-51.2-78 60 21.1 98.9 55.1 98.9 93.4zM47.7 227.9c-.1-70.2 108.8-127.3 243.3-127.6 7.9 0 15.6.2 23.3.5-22.5-3.2-46.3-4.9-71-4.9C108.8 96.3-.1 148.5 0 212.6c.1 38.3 39.1 72.3 99.3 93.3-32.3-21.5-51.5-48.6-51.6-78zm60.2 39.9s10.5 13.2 29.3 13.2c17.9 0 28.4-11.5 28.4-25.1 0-28-40.2-25.1-40.2-39.7 0-5.4 5.3-9.1 12.5-9.1 5.7 0 11.3 2.6 11.3 6.6v3.9h14.2v-7.9c0-12.1-15.4-16.8-25.4-16.8-16.5 0-28.5 10.2-28.5 24.1 0 26.6 40.2 25.4 40.2 39.9 0 6.6-5.8 10.1-12.3 10.1-11.9 0-20.7-10.1-20.7-10.1l-8.8 10.9zm120.8-73.6v54.4c0 11.3-7.1 17.8-17.8 17.8-10.7 0-17.8-6.5-17.8-17.7v-54.5h-15.8v55c0 18.9 13.4 31.9 33.7 31.9 20.1 0 33.4-13 33.4-31.9v-55h-15.7zm34.4 85.4h15.8v-29.5h15.5c16 0 27.2-11.5 27.2-28.1s-11.2-27.8-27.2-27.8h-39.1v13.4h7.8v72zm15.8-43v-29.1h12.9c8.7 0 13.7 5.7 13.7 14.4 0 8.9-5.1 14.7-14 14.7h-12.6zm57 43h15.8v-29.5h15.5c16 0 27.2-11.5 27.2-28.1s-11.2-27.8-27.2-27.8h-39.1v13.4h7.8v72zm15.7-43v-29.1h12.9c8.7 0 13.7 5.7 13.7 14.4 0 8.9-5 14.7-14 14.7h-12.6zm57.1 34.8c0 5.8 2.4 8.2 8.2 8.2h37.6c5.8 0 8.2-2.4 8.2-8.2v-13h-14.3v5.2c0 1.7-1 2.6-2.6 2.6h-18.6c-1.7 0-2.6-1-2.6-2.6v-61.2c0-5.7-2.4-8.2-8.2-8.2H401v13.4h5.2c1.7 0 2.6 1 2.6 2.6v61.2zm63.4 0c0 5.8 2.4 8.2 8.2 8.2H519c5.7 0 8.2-2.4 8.2-8.2v-13h-14.3v5.2c0 1.7-1 2.6-2.6 2.6h-19.7c-1.7 0-2.6-1-2.6-2.6v-20.3h27.7v-13.4H488v-22.4h19.2c1.7 0 2.6 1 2.6 2.6v5.2H524v-13c0-5.7-2.5-8.2-8.2-8.2h-51.6v13.4h7.8v63.9zm58.9-76v5.9h1.6v-5.9h2.7v-1.2h-7v1.2h2.7zm5.7-1.2v7.1h1.5v-5.7l2.3 5.7h1.3l2.3-5.7v5.7h1.5v-7.1h-2.3l-2.1 5.1-2.1-5.1h-2.4z\"]\n};\nvar faSuse = {\n prefix: 'fab',\n iconName: 'suse',\n icon: [640, 512, [], \"f7d6\", \"M471.08 102.66s-.3 18.3-.3 20.3c-9.1-3-74.4-24.1-135.7-26.3-51.9-1.8-122.8-4.3-223 57.3-19.4 12.4-73.9 46.1-99.6 109.7C7 277-.12 307 7 335.06a111 111 0 0 0 16.5 35.7c17.4 25 46.6 41.6 78.1 44.4 44.4 3.9 78.1-16 90-53.3 8.2-25.8 0-63.6-31.5-82.9-25.6-15.7-53.3-12.1-69.2-1.6-13.9 9.2-21.8 23.5-21.6 39.2.3 27.8 24.3 42.6 41.5 42.6a49 49 0 0 0 15.8-2.7c6.5-1.8 13.3-6.5 13.3-14.9 0-12.1-11.6-14.8-16.8-13.9-2.9.5-4.5 2-11.8 2.4-2-.2-12-3.1-12-14V316c.2-12.3 13.2-18 25.5-16.9 32.3 2.8 47.7 40.7 28.5 65.7-18.3 23.7-76.6 23.2-99.7-20.4-26-49.2 12.7-111.2 87-98.4 33.2 5.7 83.6 35.5 102.4 104.3h45.9c-5.7-17.6-8.9-68.3 42.7-68.3 56.7 0 63.9 39.9 79.8 68.3H460c-12.8-18.3-21.7-38.7-18.9-55.8 5.6-33.8 39.7-18.4 82.4-17.4 66.5.4 102.1-27 103.1-28 3.7-3.1 6.5-15.8 7-17.7 1.3-5.1-3.2-2.4-3.2-2.4-8.7 5.2-30.5 15.2-50.9 15.6-25.3.5-76.2-25.4-81.6-28.2-.3-.4.1 1.2-11-25.5 88.4 58.3 118.3 40.5 145.2 21.7.8-.6 4.3-2.9 3.6-5.7-13.8-48.1-22.4-62.7-34.5-69.6-37-21.6-125-34.7-129.2-35.3.1-.1-.9-.3-.9.7zm60.4 72.8a37.54 37.54 0 0 1 38.9-36.3c33.4 1.2 48.8 42.3 24.4 65.2-24.2 22.7-64.4 4.6-63.3-28.9zm38.6-25.3a26.27 26.27 0 1 0 25.4 27.2 26.19 26.19 0 0 0-25.4-27.2zm4.3 28.8c-15.4 0-15.4-15.6 0-15.6s15.4 15.64 0 15.64z\"]\n};\nvar faSwift = {\n prefix: 'fab',\n iconName: 'swift',\n icon: [448, 512, [], \"f8e1\", \"M448 156.09c0-4.51-.08-9-.2-13.52a196.31 196.31 0 0 0-2.58-29.42 99.62 99.62 0 0 0-9.22-28A94.08 94.08 0 0 0 394.84 44a99.17 99.17 0 0 0-28-9.22 195 195 0 0 0-29.43-2.59c-4.51-.12-9-.17-13.52-.2H124.14c-4.51 0-9 .08-13.52.2-2.45.07-4.91.15-7.37.27a171.68 171.68 0 0 0-22.06 2.32 103.06 103.06 0 0 0-21.21 6.1q-3.46 1.45-6.81 3.12a94.66 94.66 0 0 0-18.39 12.32c-1.88 1.61-3.69 3.28-5.43 5A93.86 93.86 0 0 0 12 85.17a99.45 99.45 0 0 0-9.22 28 196.31 196.31 0 0 0-2.54 29.4c-.13 4.51-.18 9-.21 13.52v199.83c0 4.51.08 9 .21 13.51a196.08 196.08 0 0 0 2.58 29.42 99.3 99.3 0 0 0 9.22 28A94.31 94.31 0 0 0 53.17 468a99.47 99.47 0 0 0 28 9.21 195 195 0 0 0 29.43 2.59c4.5.12 9 .17 13.52.2H323.91c4.51 0 9-.08 13.52-.2a196.59 196.59 0 0 0 29.44-2.59 99.57 99.57 0 0 0 28-9.21A94.22 94.22 0 0 0 436 426.84a99.3 99.3 0 0 0 9.22-28 194.79 194.79 0 0 0 2.59-29.42c.12-4.5.17-9 .2-13.51V172.14c-.01-5.35-.01-10.7-.01-16.05zm-69.88 241c-20-38.93-57.23-29.27-76.31-19.47-1.72 1-3.48 2-5.25 3l-.42.25c-39.5 21-92.53 22.54-145.85-.38A234.64 234.64 0 0 1 45 290.12a230.63 230.63 0 0 0 39.17 23.37c56.36 26.4 113 24.49 153 0-57-43.85-104.6-101-141.09-147.22a197.09 197.09 0 0 1-18.78-25.9c43.7 40 112.7 90.22 137.48 104.12-52.57-55.49-98.89-123.94-96.72-121.74 82.79 83.42 159.18 130.59 159.18 130.59 2.88 1.58 5 2.85 6.73 4a127.44 127.44 0 0 0 4.16-12.47c13.22-48.33-1.66-103.58-35.31-149.2C329.61 141.75 375 229.34 356.4 303.42c-.44 1.73-.95 3.4-1.44 5.09 38.52 47.4 28.04 98.17 23.13 88.59z\"]\n};\nvar faSymfony = {\n prefix: 'fab',\n iconName: 'symfony',\n icon: [512, 512, [], \"f83d\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm133.74 143.54c-11.47.41-19.4-6.45-19.77-16.87-.27-9.18 6.68-13.44 6.53-18.85-.23-6.55-10.16-6.82-12.87-6.67-39.78 1.29-48.59 57-58.89 113.85 21.43 3.15 36.65-.72 45.14-6.22 12-7.75-3.34-15.72-1.42-24.56 4-18.16 32.55-19 32 5.3-.36 17.86-25.92 41.81-77.6 35.7-10.76 59.52-18.35 115-58.2 161.72-29 34.46-58.4 39.82-71.58 40.26-24.65.85-41-12.31-41.58-29.84-.56-17 14.45-26.26 24.31-26.59 21.89-.75 30.12 25.67 14.88 34-12.09 9.71.11 12.61 2.05 12.55 10.42-.36 17.34-5.51 22.18-9 24-20 33.24-54.86 45.35-118.35 8.19-49.66 17-78 18.23-82-16.93-12.75-27.08-28.55-49.85-34.72-15.61-4.23-25.12-.63-31.81 7.83-7.92 10-5.29 23 2.37 30.7l12.63 14c15.51 17.93 24 31.87 20.8 50.62-5.06 29.93-40.72 52.9-82.88 39.94-36-11.11-42.7-36.56-38.38-50.62 7.51-24.15 42.36-11.72 34.62 13.6-2.79 8.6-4.92 8.68-6.28 13.07-4.56 14.77 41.85 28.4 51-1.39 4.47-14.52-5.3-21.71-22.25-39.85-28.47-31.75-16-65.49 2.95-79.67C204.23 140.13 251.94 197 262 205.29c37.17-109 100.53-105.46 102.43-105.53 25.16-.81 44.19 10.59 44.83 28.65.25 7.69-4.17 22.59-19.52 23.13z\"]\n};\nvar faTeamspeak = {\n prefix: 'fab',\n iconName: 'teamspeak',\n icon: [512, 512, [], \"f4f9\", \"M244.2 346.79c2.4-12.3-12-30-32.4-48.7-20.9-19.2-48.2-39.1-63.4-46.6-21.7-12-41.7-1.8-46.3 22.7-5 26.2 0 51.4 14.5 73.9 10.2 15.5 25.4 22.7 43.4 24 11.6.6 52.5 2.2 61.7-1 11.9-4.3 20.1-11.8 22.5-24.3zm205 20.8a5.22 5.22 0 0 0-8.3 2.4c-8 25.4-44.7 112.5-172.1 121.5-149.7 10.5 80.3 43.6 145.4-6.4 22.7-17.4 47.6-35 46.6-85.4-.4-10.1-4.9-26.69-11.6-32.1zm62-122.4c-.3-18.9-8.6-33.4-26-42.2-2.9-1.3-5-2.7-5.9-6.4A222.64 222.64 0 0 0 438.9 103c-1.1-1.5-3.5-3.2-2.2-5 8.5-11.5-.3-18-7-24.4Q321.4-31.11 177.4 13.09c-40.1 12.3-73.9 35.6-102 67.4-4 4.3-6.7 9.1-3 14.5 3 4 1.3 6.2-1 9.3C51.6 132 38.2 162.59 32.1 196c-.7 4.3-2.9 6-6.4 7.8-14.2 7-22.5 18.5-24.9 34L0 264.29v20.9c0 30.8 21 50.4 51.8 49 7.7-.3 11.7-4.3 12-11.5 2-77.5-2.4-95.4 3.7-125.8C92.1 72.39 234.3 5 345.3 65.39 411.4 102 445.7 159 447.6 234.79c.8 28.2 0 56.5 0 84.6 0 7 2.2 12.5 9.4 14.2 24.1 5 49.2-12 53.2-36.7 2.9-17.1 1-34.5 1-51.7zm-159.6 131.5c36.5 2.8 59.3-28.5 58.4-60.5-2.1-45.2-66.2-16.5-87.8-8-73.2 28.1-45 54.9-22.2 60.8z\"]\n};\nvar faTelegram = {\n prefix: 'fab',\n iconName: 'telegram',\n icon: [496, 512, [], \"f2c6\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm121.8 169.9l-40.7 191.8c-3 13.6-11.1 16.9-22.4 10.5l-62-45.7-29.9 28.8c-3.3 3.3-6.1 6.1-12.5 6.1l4.4-63.1 114.9-103.8c5-4.4-1.1-6.9-7.7-2.5l-142 89.4-61.2-19.1c-13.3-4.2-13.6-13.3 2.8-19.7l239.1-92.2c11.1-4 20.8 2.7 17.2 19.5z\"]\n};\nvar faTelegramPlane = {\n prefix: 'fab',\n iconName: 'telegram-plane',\n icon: [448, 512, [], \"f3fe\", \"M446.7 98.6l-67.6 318.8c-5.1 22.5-18.4 28.1-37.3 17.5l-103-75.9-49.7 47.8c-5.5 5.5-10.1 10.1-20.7 10.1l7.4-104.9 190.9-172.5c8.3-7.4-1.8-11.5-12.9-4.1L117.8 284 16.2 252.2c-22.1-6.9-22.5-22.1 4.6-32.7L418.2 66.4c18.4-6.9 34.5 4.1 28.5 32.2z\"]\n};\nvar faTencentWeibo = {\n prefix: 'fab',\n iconName: 'tencent-weibo',\n icon: [384, 512, [], \"f1d5\", \"M72.3 495.8c1.4 19.9-27.6 22.2-29.7 2.9C31 368.8 73.7 259.2 144 185.5c-15.6-34 9.2-77.1 50.6-77.1 30.3 0 55.1 24.6 55.1 55.1 0 44-49.5 70.8-86.9 45.1-65.7 71.3-101.4 169.8-90.5 287.2zM192 .1C66.1.1-12.3 134.3 43.7 242.4 52.4 259.8 79 246.9 70 229 23.7 136.4 91 29.8 192 29.8c75.4 0 136.9 61.4 136.9 136.9 0 90.8-86.9 153.9-167.7 133.1-19.1-4.1-25.6 24.4-6.6 29.1 110.7 23.2 204-60 204-162.3C358.6 74.7 284 .1 192 .1z\"]\n};\nvar faTheRedYeti = {\n prefix: 'fab',\n iconName: 'the-red-yeti',\n icon: [512, 512, [], \"f69d\", \"M488.23 241.7l20.7 7.1c-9.6-23.9-23.9-37-31.7-44.8l7.1-18.2c.2 0 12.3-27.8-2.5-30.7-.6-11.3-6.6-27-18.4-27-7.6-10.6-17.7-12.3-30.7-5.9a122.2 122.2 0 0 0-25.3 16.5c-5.3-6.4-3 .4-3-29.8-37.1-24.3-45.4-11.7-74.8 3l.5.5a239.36 239.36 0 0 0-68.4-13.3c-5.5-8.7-18.6-19.1-25.1-25.1l24.8 7.1c-5.5-5.5-26.8-12.9-34.2-15.2 18.2-4.1 29.8-20.8 42.5-33-34.9-10.1-67.9-5.9-97.9 11.8l12-44.2L182 0c-31.6 24.2-33 41.9-33.7 45.5-.9-2.4-6.3-19.6-15.2-27a35.12 35.12 0 0 0-.5 25.3c3 8.4 5.9 14.8 8.4 18.9-16-3.3-28.3-4.9-49.2 0h-3.7l33 14.3a194.26 194.26 0 0 0-46.7 67.4l-1.7 8.4 1.7 1.7 7.6-4.7c-3.3 11.6-5.3 19.4-6.6 25.8a200.18 200.18 0 0 0-27.8 40.3c-15 1-31.8 10.8-40.3 14.3l3 3.4 28.8 1c-.5 1-.7 2.2-1.2 3.2-7.3 6.4-39.8 37.7-33 80.7l20.2-22.4c.5 1.7.7 3.4 1.2 5.2 0 25.5.4 89.6 64.9 150.5 43.6 40 96 60.2 157.5 60.2 121.7 0 223-87.3 223-211.5 6.8-9.7-1.2 3 16.7-25.1l13 14.3 2.5-.5A181.84 181.84 0 0 0 495 255a44.74 44.74 0 0 0-6.8-13.3zM398 111.2l-.5 21.9c5.5 18.1 16.9 17.2 22.4 17.2l-3.4-4.7 22.4-5.4a242.44 242.44 0 0 1-27 0c12.8-2.1 33.3-29 43-11.3 3.4 7.6 6.4 17.2 9.3 27.8l1.7-5.9a56.38 56.38 0 0 1-1.7-15.2c5.4.5 8.8 3.4 9.3 10.1.5 6.4 1.7 14.8 3.4 25.3l4.7-11.3c4.6 0 4.5-3.6-2.5 20.7-20.9-8.7-35.1-8.4-46.5-8.4l18.2-16c-25.3 8.2-33 10.8-54.8 20.9-1.1-5.4-5-13.5-16-19.9-3.2 3.8-2.8.9-.7 14.8h-2.5a62.32 62.32 0 0 0-8.4-23.1l4.2-3.4c8.4-7.1 11.8-14.3 10.6-21.9-.5-6.4-5.4-13.5-13.5-20.7 5.6-3.4 15.2-.4 28.3 8.5zm-39.6-10.1c2.7 1.9 11.4 5.4 18.9 17.2 4.2 8.4 4 9.8 3.4 11.1-.5 2.4-.5 4.3-3 7.1-1.7 2.5-5.4 4.7-11.8 7.6-7.6-13-16.5-23.6-27.8-31.2zM91 143.1l1.2-1.7c1.2-2.9 4.2-7.6 9.3-15.2l2.5-3.4-13 12.3 5.4-4.7-10.1 9.3-4.2 1.2c12.3-24.1 23.1-41.3 32.5-50.2 9.3-9.3 16-16 20.2-19.4l-6.4 1.2c-11.3-4.2-19.4-7.1-24.8-8.4 2.5-.5 3.7-.5 3.2-.5 10.3 0 17.5.5 20.9 1.2a52.35 52.35 0 0 0 16 2.5l.5-1.7-8.4-35.8 13.5 29a42.89 42.89 0 0 0 5.9-14.3c1.7-6.4 5.4-13 10.1-19.4s7.6-10.6 9.3-11.3a234.68 234.68 0 0 0-6.4 25.3l-1.7 7.1-.5 4.7 2.5 2.5C190.4 39.9 214 34 239.8 34.5l21.1.5c-11.8 13.5-27.8 21.9-48.5 24.8a201.26 201.26 0 0 1-23.4 2.9l-.2-.5-2.5-1.2a20.75 20.75 0 0 0-14 2c-2.5-.2-4.9-.5-7.1-.7l-2.5 1.7.5 1.2c2 .2 3.9.5 6.2.7l-2 3.4 3.4-.5-10.6 11.3c-4.2 3-5.4 6.4-4.2 9.3l5.4-3.4h1.2a39.4 39.4 0 0 1 25.3-15.2v-3c6.4.5 13 1 19.4 1.2 6.4 0 8.4.5 5.4 1.2a189.6 189.6 0 0 1 20.7 13.5c13.5 10.1 23.6 21.9 30 35.4 8.8 18.2 13.5 37.1 13.5 56.6a141.13 141.13 0 0 1-3 28.3 209.91 209.91 0 0 1-16 46l2.5.5c18.2-19.7 41.9-16 49.2-16l-6.4 5.9 22.4 17.7-1.7 30.7c-5.4-12.3-16.5-21.1-33-27.8 16.5 14.8 23.6 21.1 21.9 20.2-4.8-2.8-3.5-1.9-10.8-3.7 4.1 4.1 17.5 18.8 18.2 20.7l.2.2-.2.2c0 1.8 1.6-1.2-14 22.9-75.2-15.3-106.27-42.7-141.2-63.2l11.8 1.2c-11.8-18.5-15.6-17.7-38.4-26.1L149 225c-8.8-3-18.2-3-28.3.5l7.6-10.6-1.2-1.7c-14.9 4.3-19.8 9.2-22.6 11.3-1.1-5.5-2.8-12.4-12.3-28.8l-1.2 27-13.2-5c1.5-25.2 5.4-50.5 13.2-74.6zm276.5 330c-49.9 25-56.1 22.4-59 23.9-29.8-11.8-50.9-31.7-63.5-58.8l30 16.5c-9.8-9.3-18.3-16.5-38.4-44.3l11.8 23.1-17.7-7.6c14.2 21.1 23.5 51.7 66.6 73.5-120.8 24.2-199-72.1-200.9-74.3a262.57 262.57 0 0 0 35.4 24.8c3.4 1.7 7.1 2.5 10.1 1.2l-16-20.7c9.2 4.2 9.5 4.5 69.1 29-42.5-20.7-73.8-40.8-93.2-60.2-.5 6.4-1.2 10.1-1.2 10.1a80.25 80.25 0 0 1 20.7 26.6c-39-18.9-57.6-47.6-71.3-82.6 49.9 55.1 118.9 37.5 120.5 37.1 34.8 16.4 69.9 23.6 113.9 10.6 3.3 0 20.3 17 25.3 39.1l4.2-3-2.5-23.6c9 9 24.9 22.6 34.4 13-15.6-5.3-23.5-9.5-29.5-31.7 4.6 4.2 7.6 9 27.8 15l1.2-1.2-10.5-14.2c11.7-4.8-3.5 1 32-10.8 4.3 34.3 9 49.2.7 89.5zm115.3-214.4l-2.5.5 3 9.3c-3.5 5.9-23.7 44.3-71.6 79.7-39.5 29.8-76.6 39.1-80.9 40.3l-7.6-7.1-1.2 3 14.3 16-7.1-4.7 3.4 4.2h-1.2l-21.9-13.5 9.3 26.6-19-27.9-1.2 2.5 7.6 29c-6.1-8.2-21-32.6-56.8-39.6l32.5 21.2a214.82 214.82 0 0 1-93.2-6.4c-4.2-1.2-8.9-2.5-13.5-4.2l1.2-3-44.8-22.4 26.1 22.4c-57.7 9.1-113-25.4-126.4-83.4l-2.5-16.4-22.27 22.3c19.5-57.5 25.6-57.9 51.4-70.1-9.1-5.3-1.6-3.3-38.4-9.3 15.8-5.8 33-15.4 73 5.2a18.5 18.5 0 0 1 3.7-1.7c.6-3.2.4-.8 1-11.8 3.9 10 3.6 8.7 3 9.3l1.7.5c12.7-6.5 8.9-4.5 17-8.9l-5.4 13.5 22.3-5.8-8.4 8.4 2.5 2.5c4.5-1.8 30.3 3.4 40.8 16l-23.6-2.5c39.4 23 51.5 54 55.8 69.6l1.7-1.2c-2.8-22.3-12.4-33.9-16-40.1 4.2 5 39.2 34.6 110.4 46-11.3-.5-23.1 5.4-34.9 18.9l46.7-20.2-9.3 21.9c7.6-10.1 14.8-23.6 21.2-39.6v-.5l1.2-3-1.2 16c13.5-41.8 25.3-78.5 35.4-109.7l13.5-27.8v-2l-5.4-4.2h10.1l5.9 4.2 2.5-1.2-3.4-16 12.3 18.9 41.8-20.2-14.8 13 .5 2.9 17.7-.5a184 184 0 0 1 33 4.2l-23.6 2.5-1.2 3 26.6 23.1a254.21 254.21 0 0 1 27 32c-11.2-3.3-10.3-3.4-21.2-3.4l12.3 32.5zm-6.1-71.3l-3.9 13-14.3-11.8zm-254.8 7.1c1.7 10.6 4.7 17.7 8.8 21.9-9.3 6.6-27.5 13.9-46.5 16l.5 1.2a50.22 50.22 0 0 0 24.8-2.5l-7.1 13c4.2-1.7 10.1-7.1 17.7-14.8 11.9-5.5 12.7-5.1 20.2-16-12.7-6.4-15.7-13.7-18.4-18.8zm3.7-102.3c-6.4-3.4-10.6 3-12.3 18.9s2.5 29.5 11.8 39.6 18.2 10.6 26.1 3 3.4-23.6-11.3-47.7a39.57 39.57 0 0 0-14.27-13.8zm-4.7 46.3c5.4 2.2 10.5 1.9 12.3-10.6v-4.7l-1.2.5c-4.3-3.1-2.5-4.5-1.7-6.2l.5-.5c-.9-1.2-5-8.1-12.5 4.7-.5-13.5.5-21.9 3-24.8 1.2-2.5 4.7-1.2 11.3 4.2 6.4 5.4 11.3 16 15.2 32.5 6.5 28-19.8 26.2-26.9 4.9zm-45-5.5c1.6.3 9.3-1.1 9.3-14.8h-.5c-5.4-1.1-2.2-5.5-.7-5.9-1.7-3-3.4-4.2-5.4-4.7-8.1 0-11.6 12.7-8.1 21.2a7.51 7.51 0 0 0 5.43 4.2zM216 82.9l-2.5.5.5 3a48.94 48.94 0 0 1 26.1 5.9c-2.5-5.5-10-14.3-28.3-14.3l.5 2.5zm-71.8 49.4c21.7 16.8 16.5 21.4 46.5 23.6l-2.9-4.7a42.67 42.67 0 0 0 14.8-28.3c1.7-16-1.2-29.5-8.8-41.3l13-7.6a2.26 2.26 0 0 0-.5-1.7 14.21 14.21 0 0 0-13.5 1.7c-12.7 6.7-28 20.9-29 22.4-1.7 1.7-3.4 5.9-5.4 13.5a99.61 99.61 0 0 0-2.9 23.6c-4.7-8-10.5-6.4-19.9-5.9l7.1 7.6c-16.5 0-23.3 15.4-23.6 16 6.8 0 4.6-7.6 30-12.3-4.3-6.3-3.3-5-4.9-6.6zm18.7-18.7c1.2-7.6 3.4-13 6.4-17.2 5.4-6.4 10.6-10.1 16-11.8 4.2-1.7 7.1 1.2 10.1 9.3a72.14 72.14 0 0 1 3 25.3c-.5 9.3-3.4 17.2-8.4 23.1-2.9 3.4-5.4 5.9-6.4 7.6a39.21 39.21 0 0 1-11.3-.5l-7.1-3.4-5.4-6.4c.8-10 1.3-18.8 3.1-26zm42 56.1c-34.8 14.4-34.7 14-36.1 14.3-20.8 4.7-19-24.4-18.9-24.8l5.9-1.2-.5-2.5c-20.2-2.6-31 4.2-32.5 4.9.5.5 3 3.4 5.9 9.3 4.2-6.4 8.8-10.1 15.2-10.6a83.47 83.47 0 0 0 1.7 33.7c.1.5 2.6 17.4 27.5 24.1 11.3 3 27 1.2 48.9-5.4l-9.2.5c-4.2-14.8-6.4-24.8-5.9-29.5 11.3-8.8 21.9-11.3 30.7-7.6h2.5l-11.8-7.6-7.1.5c-5.9 1.2-12.3 4.2-19.4 8.4z\"]\n};\nvar faThemeco = {\n prefix: 'fab',\n iconName: 'themeco',\n icon: [448, 512, [], \"f5c6\", \"M202.9 8.43c9.9-5.73 26-5.82 35.95-.21L430 115.85c10 5.6 18 19.44 18 30.86V364c0 11.44-8.06 25.29-18 31L238.81 503.74c-9.93 5.66-26 5.57-35.85-.21L17.86 395.12C8 389.34 0 375.38 0 364V146.71c0-11.44 8-25.36 17.91-31.08zm-77.4 199.83c-15.94 0-31.89.14-47.83.14v101.45H96.8V280h28.7c49.71 0 49.56-71.74 0-71.74zm140.14 100.29l-30.73-34.64c37-7.51 34.8-65.23-10.87-65.51-16.09 0-32.17-.14-48.26-.14v101.59h19.13v-33.91h18.41l29.56 33.91h22.76zm-41.59-82.32c23.34 0 23.26 32.46 0 32.46h-29.13v-32.46zm-95.56-1.6c21.18 0 21.11 38.85 0 38.85H96.18v-38.84zm192.65-18.25c-68.46 0-71 105.8 0 105.8 69.48-.01 69.41-105.8 0-105.8zm0 17.39c44.12 0 44.8 70.86 0 70.86s-44.43-70.86 0-70.86z\"]\n};\nvar faThemeisle = {\n prefix: 'fab',\n iconName: 'themeisle',\n icon: [512, 512, [], \"f2b2\", \"M208 88.286c0-10 6.286-21.714 17.715-21.714 11.142 0 17.714 11.714 17.714 21.714 0 10.285-6.572 21.714-17.714 21.714C214.286 110 208 98.571 208 88.286zm304 160c0 36.001-11.429 102.286-36.286 129.714-22.858 24.858-87.428 61.143-120.857 70.572l-1.143.286v32.571c0 16.286-12.572 30.571-29.143 30.571-10 0-19.429-5.714-24.572-14.286-5.427 8.572-14.856 14.286-24.856 14.286-10 0-19.429-5.714-24.858-14.286-5.142 8.572-14.571 14.286-24.57 14.286-10.286 0-19.429-5.714-24.858-14.286-5.143 8.572-14.571 14.286-24.571 14.286-18.857 0-29.429-15.714-29.429-32.857-16.286 12.285-35.715 19.428-56.571 19.428-22 0-43.429-8.285-60.286-22.857 10.285-.286 20.571-2.286 30.285-5.714-20.857-5.714-39.428-18.857-52-36.286 21.37 4.645 46.209 1.673 67.143-11.143-22-22-56.571-58.857-68.572-87.428C1.143 321.714 0 303.714 0 289.429c0-49.714 20.286-160 86.286-160 10.571 0 18.857 4.858 23.143 14.857a158.792 158.792 0 0 1 12-15.428c2-2.572 5.714-5.429 7.143-8.286 7.999-12.571 11.714-21.142 21.714-34C182.571 45.428 232 17.143 285.143 17.143c6 0 12 .285 17.714 1.143C313.714 6.571 328.857 0 344.572 0c14.571 0 29.714 6 40 16.286.857.858 1.428 2.286 1.428 3.428 0 3.714-10.285 13.429-12.857 16.286 4.286 1.429 15.714 6.858 15.714 12 0 2.857-2.857 5.143-4.571 7.143 31.429 27.714 49.429 67.143 56.286 108 4.286-5.143 10.285-8.572 17.143-8.572 10.571 0 20.857 7.144 28.571 14.001C507.143 187.143 512 221.714 512 248.286zM188 89.428c0 18.286 12.571 37.143 32.286 37.143 19.714 0 32.285-18.857 32.285-37.143 0-18-12.571-36.857-32.285-36.857-19.715 0-32.286 18.858-32.286 36.857zM237.714 194c0-19.714 3.714-39.143 8.571-58.286-52.039 79.534-13.531 184.571 68.858 184.571 21.428 0 42.571-7.714 60-20 2-7.429 3.714-14.857 3.714-22.572 0-14.286-6.286-21.428-20.572-21.428-4.571 0-9.143.857-13.429 1.714-63.343 12.668-107.142 3.669-107.142-63.999zm-41.142 254.858c0-11.143-8.858-20.857-20.286-20.857-11.429 0-20 9.715-20 20.857v32.571c0 11.143 8.571 21.142 20 21.142 11.428 0 20.286-9.715 20.286-21.142v-32.571zm49.143 0c0-11.143-8.572-20.857-20-20.857-11.429 0-20.286 9.715-20.286 20.857v32.571c0 11.143 8.857 21.142 20.286 21.142 11.428 0 20-10 20-21.142v-32.571zm49.713 0c0-11.143-8.857-20.857-20.285-20.857-11.429 0-20.286 9.715-20.286 20.857v32.571c0 11.143 8.857 21.142 20.286 21.142 11.428 0 20.285-9.715 20.285-21.142v-32.571zm49.715 0c0-11.143-8.857-20.857-20.286-20.857-11.428 0-20.286 9.715-20.286 20.857v32.571c0 11.143 8.858 21.142 20.286 21.142 11.429 0 20.286-10 20.286-21.142v-32.571zM421.714 286c-30.857 59.142-90.285 102.572-158.571 102.572-96.571 0-160.571-84.572-160.571-176.572 0-16.857 2-33.429 6-49.714-20 33.715-29.714 72.572-29.714 111.429 0 60.286 24.857 121.715 71.429 160.857 5.143-9.714 14.857-16.286 26-16.286 10 0 19.428 5.714 24.571 14.286 5.429-8.571 14.571-14.286 24.858-14.286 10 0 19.428 5.714 24.571 14.286 5.429-8.571 14.857-14.286 24.858-14.286 10 0 19.428 5.714 24.857 14.286 5.143-8.571 14.571-14.286 24.572-14.286 10.857 0 20.857 6.572 25.714 16 43.427-36.286 68.569-92 71.426-148.286zm10.572-99.714c0-53.714-34.571-105.714-92.572-105.714-30.285 0-58.571 15.143-78.857 36.857C240.862 183.812 233.41 254 302.286 254c28.805 0 97.357-28.538 84.286 36.857 28.857-26 45.714-65.714 45.714-104.571z\"]\n};\nvar faThinkPeaks = {\n prefix: 'fab',\n iconName: 'think-peaks',\n icon: [576, 512, [], \"f731\", \"M465.4 409.4l87.1-150.2-32-.3-55.1 95L259.2 0 23 407.4l32 .3L259.2 55.6zm-355.3-44.1h32.1l117.4-202.5L463 511.9l32.5.1-235.8-404.6z\"]\n};\nvar faTiktok = {\n prefix: 'fab',\n iconName: 'tiktok',\n icon: [448, 512, [], \"e07b\", \"M448,209.91a210.06,210.06,0,0,1-122.77-39.25V349.38A162.55,162.55,0,1,1,185,188.31V278.2a74.62,74.62,0,1,0,52.23,71.18V0l88,0a121.18,121.18,0,0,0,1.86,22.17h0A122.18,122.18,0,0,0,381,102.39a121.43,121.43,0,0,0,67,20.14Z\"]\n};\nvar faTradeFederation = {\n prefix: 'fab',\n iconName: 'trade-federation',\n icon: [496, 512, [], \"f513\", \"M248 8.8c-137 0-248 111-248 248s111 248 248 248 248-111 248-248-111-248-248-248zm0 482.8c-129.7 0-234.8-105.1-234.8-234.8S118.3 22 248 22s234.8 105.1 234.8 234.8S377.7 491.6 248 491.6zm155.1-328.5v-46.8H209.3V198H54.2l36.7 46h117.7v196.8h48.8V245h83.3v-47h-83.3v-34.8h145.7zm-73.3 45.1v23.9h-82.9v197.4h-26.8V232.1H96.3l-20.1-23.9h143.9v-80.6h171.8V152h-145v56.2zm-161.3-69l-12.4-20.7 2.1 23.8-23.5 5.4 23.3 5.4-2.1 24 12.3-20.5 22.2 9.5-15.7-18.1 15.8-18.1zm-29.6-19.7l9.3-11.5-12.7 5.9-8-12.4 1.7 13.9-14.3 3.8 13.7 2.7-.8 14.7 6.8-12.2 13.8 5.3zm165.4 145.2l-13.1 5.6-7.3-12.2 1.3 14.2-13.9 3.2 13.9 3.2-1.2 14.2 7.3-12.2 13.1 5.5-9.4-10.7zm106.9-77.2l-20.9 9.1-12-19.6 2.2 22.7-22.3 5.4 22.2 4.9-1.8 22.9 11.5-19.6 21.2 8.8-15.1-17zM248 29.9c-125.3 0-226.9 101.6-226.9 226.9S122.7 483.7 248 483.7s226.9-101.6 226.9-226.9S373.3 29.9 248 29.9zM342.6 196v51h-83.3v195.7h-52.7V245.9H89.9l-40-49.9h157.4v-81.6h197.8v50.7H259.4V196zM248 43.2c60.3 0 114.8 25 153.6 65.2H202.5V190H45.1C73.1 104.8 153.4 43.2 248 43.2zm0 427.1c-117.9 0-213.6-95.6-213.6-213.5 0-21.2 3.1-41.8 8.9-61.1L87.1 252h114.7v196.8h64.6V253h83.3v-62.7h-83.2v-19.2h145.6v-50.8c30.8 37 49.3 84.6 49.3 136.5.1 117.9-95.5 213.5-213.4 213.5zM178.8 275l-11-21.4 1.7 24.5-23.7 3.9 23.8 5.9-3.7 23.8 13-20.9 21.5 10.8-15.8-18.8 16.9-17.1z\"]\n};\nvar faTrello = {\n prefix: 'fab',\n iconName: 'trello',\n icon: [448, 512, [], \"f181\", \"M392.3 32H56.1C25.1 32 0 57.1 0 88c-.1 0 0-4 0 336 0 30.9 25.1 56 56 56h336.2c30.8-.2 55.7-25.2 55.7-56V88c.1-30.8-24.8-55.8-55.6-56zM197 371.3c-.2 14.7-12.1 26.6-26.9 26.6H87.4c-14.8.1-26.9-11.8-27-26.6V117.1c0-14.8 12-26.9 26.9-26.9h82.9c14.8 0 26.9 12 26.9 26.9v254.2zm193.1-112c0 14.8-12 26.9-26.9 26.9h-81c-14.8 0-26.9-12-26.9-26.9V117.2c0-14.8 12-26.9 26.8-26.9h81.1c14.8 0 26.9 12 26.9 26.9v142.1z\"]\n};\nvar faTumblr = {\n prefix: 'fab',\n iconName: 'tumblr',\n icon: [320, 512, [], \"f173\", \"M309.8 480.3c-13.6 14.5-50 31.7-97.4 31.7-120.8 0-147-88.8-147-140.6v-144H17.9c-5.5 0-10-4.5-10-10v-68c0-7.2 4.5-13.6 11.3-16 62-21.8 81.5-76 84.3-117.1.8-11 6.5-16.3 16.1-16.3h70.9c5.5 0 10 4.5 10 10v115.2h83c5.5 0 10 4.4 10 9.9v81.7c0 5.5-4.5 10-10 10h-83.4V360c0 34.2 23.7 53.6 68 35.8 4.8-1.9 9-3.2 12.7-2.2 3.5.9 5.8 3.4 7.4 7.9l22 64.3c1.8 5 3.3 10.6-.4 14.5z\"]\n};\nvar faTumblrSquare = {\n prefix: 'fab',\n iconName: 'tumblr-square',\n icon: [448, 512, [], \"f174\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-82.3 364.2c-8.5 9.1-31.2 19.8-60.9 19.8-75.5 0-91.9-55.5-91.9-87.9v-90h-29.7c-3.4 0-6.2-2.8-6.2-6.2v-42.5c0-4.5 2.8-8.5 7.1-10 38.8-13.7 50.9-47.5 52.7-73.2.5-6.9 4.1-10.2 10-10.2h44.3c3.4 0 6.2 2.8 6.2 6.2v72h51.9c3.4 0 6.2 2.8 6.2 6.2v51.1c0 3.4-2.8 6.2-6.2 6.2h-52.1V321c0 21.4 14.8 33.5 42.5 22.4 3-1.2 5.6-2 8-1.4 2.2.5 3.6 2.1 4.6 4.9l13.8 40.2c1 3.2 2 6.7-.3 9.1z\"]\n};\nvar faTwitch = {\n prefix: 'fab',\n iconName: 'twitch',\n icon: [512, 512, [], \"f1e8\", \"M391.17,103.47H352.54v109.7h38.63ZM285,103H246.37V212.75H285ZM120.83,0,24.31,91.42V420.58H140.14V512l96.53-91.42h77.25L487.69,256V0ZM449.07,237.75l-77.22,73.12H294.61l-67.6,64v-64H140.14V36.58H449.07Z\"]\n};\nvar faTwitter = {\n prefix: 'fab',\n iconName: 'twitter',\n icon: [512, 512, [], \"f099\", \"M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z\"]\n};\nvar faTwitterSquare = {\n prefix: 'fab',\n iconName: 'twitter-square',\n icon: [448, 512, [], \"f081\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-48.9 158.8c.2 2.8.2 5.7.2 8.5 0 86.7-66 186.6-186.6 186.6-37.2 0-71.7-10.8-100.7-29.4 5.3.6 10.4.8 15.8.8 30.7 0 58.9-10.4 81.4-28-28.8-.6-53-19.5-61.3-45.5 10.1 1.5 19.2 1.5 29.6-1.2-30-6.1-52.5-32.5-52.5-64.4v-.8c8.7 4.9 18.9 7.9 29.6 8.3a65.447 65.447 0 0 1-29.2-54.6c0-12.2 3.2-23.4 8.9-33.1 32.3 39.8 80.8 65.8 135.2 68.6-9.3-44.5 24-80.6 64-80.6 18.9 0 35.9 7.9 47.9 20.7 14.8-2.8 29-8.3 41.6-15.8-4.9 15.2-15.2 28-28.8 36.1 13.2-1.4 26-5.1 37.8-10.2-8.9 13.1-20.1 24.7-32.9 34z\"]\n};\nvar faTypo3 = {\n prefix: 'fab',\n iconName: 'typo3',\n icon: [448, 512, [], \"f42b\", \"M178.7 78.4c0-24.7 5.4-32.4 13.9-39.4-69.5 8.5-149.3 34-176.3 66.4-5.4 7.7-9.3 20.8-9.3 37.1C7 246 113.8 480 191.1 480c36.3 0 97.3-59.5 146.7-139-7 2.3-11.6 2.3-18.5 2.3-57.2 0-140.6-198.5-140.6-264.9zM301.5 32c-30.1 0-41.7 5.4-41.7 36.3 0 66.4 53.8 198.5 101.7 198.5 26.3 0 78.8-99.7 78.8-182.3 0-40.9-67-52.5-138.8-52.5z\"]\n};\nvar faUber = {\n prefix: 'fab',\n iconName: 'uber',\n icon: [448, 512, [], \"f402\", \"M414.1 32H33.9C15.2 32 0 47.2 0 65.9V446c0 18.8 15.2 34 33.9 34H414c18.7 0 33.9-15.2 33.9-33.9V65.9C448 47.2 432.8 32 414.1 32zM237.6 391.1C163 398.6 96.4 344.2 88.9 269.6h94.4V290c0 3.7 3 6.8 6.8 6.8H258c3.7 0 6.8-3 6.8-6.8v-67.9c0-3.7-3-6.8-6.8-6.8h-67.9c-3.7 0-6.8 3-6.8 6.8v20.4H88.9c7-69.4 65.4-122.2 135.1-122.2 69.7 0 128.1 52.8 135.1 122.2 7.5 74.5-46.9 141.1-121.5 148.6z\"]\n};\nvar faUbuntu = {\n prefix: 'fab',\n iconName: 'ubuntu',\n icon: [496, 512, [], \"f7df\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm52.7 93c8.8-15.2 28.3-20.5 43.5-11.7 15.3 8.8 20.5 28.3 11.7 43.6-8.8 15.2-28.3 20.5-43.5 11.7-15.3-8.9-20.5-28.4-11.7-43.6zM87.4 287.9c-17.6 0-31.9-14.3-31.9-31.9 0-17.6 14.3-31.9 31.9-31.9 17.6 0 31.9 14.3 31.9 31.9 0 17.6-14.3 31.9-31.9 31.9zm28.1 3.1c22.3-17.9 22.4-51.9 0-69.9 8.6-32.8 29.1-60.7 56.5-79.1l23.7 39.6c-51.5 36.3-51.5 112.5 0 148.8L172 370c-27.4-18.3-47.8-46.3-56.5-79zm228.7 131.7c-15.3 8.8-34.7 3.6-43.5-11.7-8.8-15.3-3.6-34.8 11.7-43.6 15.2-8.8 34.7-3.6 43.5 11.7 8.8 15.3 3.6 34.8-11.7 43.6zm.3-69.5c-26.7-10.3-56.1 6.6-60.5 35-5.2 1.4-48.9 14.3-96.7-9.4l22.5-40.3c57 26.5 123.4-11.7 128.9-74.4l46.1.7c-2.3 34.5-17.3 65.5-40.3 88.4zm-5.9-105.3c-5.4-62-71.3-101.2-128.9-74.4l-22.5-40.3c47.9-23.7 91.5-10.8 96.7-9.4 4.4 28.3 33.8 45.3 60.5 35 23.1 22.9 38 53.9 40.2 88.5l-46 .6z\"]\n};\nvar faUikit = {\n prefix: 'fab',\n iconName: 'uikit',\n icon: [448, 512, [], \"f403\", \"M443.9 128v256L218 512 0 384V169.7l87.6 45.1v117l133.5 75.5 135.8-75.5v-151l-101.1-57.6 87.6-53.1L443.9 128zM308.6 49.1L223.8 0l-88.6 54.8 86 47.3 87.4-53z\"]\n};\nvar faUmbraco = {\n prefix: 'fab',\n iconName: 'umbraco',\n icon: [510, 512, [], \"f8e8\", \"M255.35 8C118.36 7.83 7.14 118.72 7 255.68c-.07 137 111 248.2 248 248.27 136.85 0 247.82-110.7 248-247.67S392.34 8.17 255.35 8zm145 266q-1.14 40.68-14 65t-43.51 35q-30.61 10.7-85.45 10.47h-4.6q-54.78.22-85.44-10.47t-43.52-35q-12.85-24.36-14-65a224.81 224.81 0 0 1 0-30.71 418.37 418.37 0 0 1 3.6-43.88c1.88-13.39 3.57-22.58 5.4-32 1-4.88 1.28-6.42 1.82-8.45a5.09 5.09 0 0 1 4.9-3.89h.69l32 5a5.07 5.07 0 0 1 4.16 5 5 5 0 0 1 0 .77l-1.7 8.78q-2.41 13.25-4.84 33.68a380.62 380.62 0 0 0-2.64 42.15q-.28 40.43 8.13 59.83a43.87 43.87 0 0 0 31.31 25.18A243 243 0 0 0 250 340.6h10.25a242.64 242.64 0 0 0 57.27-5.16 43.86 43.86 0 0 0 31.15-25.23q8.53-19.42 8.13-59.78a388 388 0 0 0-2.6-42.15q-2.48-20.38-4.89-33.68l-1.69-8.78a5 5 0 0 1 0-.77 5 5 0 0 1 4.2-5l32-5h.82a5 5 0 0 1 4.9 3.89c.55 2.05.81 3.57 1.83 8.45 1.82 9.62 3.52 18.78 5.39 32a415.71 415.71 0 0 1 3.61 43.88 228.06 228.06 0 0 1-.04 30.73z\"]\n};\nvar faUncharted = {\n prefix: 'fab',\n iconName: 'uncharted',\n icon: [448, 512, [], \"e084\", \"M171.73,232.813A5.381,5.381,0,0,0,176.7,229.5,48.081,48.081,0,0,1,191.6,204.244c1.243-.828,1.657-2.484,1.657-4.141a4.22,4.22,0,0,0-2.071-3.312L74.429,128.473,148.958,85a9.941,9.941,0,0,0,4.968-8.281,9.108,9.108,0,0,0-4.968-8.281L126.6,55.6a9.748,9.748,0,0,0-9.523,0l-100.2,57.966a9.943,9.943,0,0,0-4.969,8.281V236.954a9.109,9.109,0,0,0,4.969,8.281L39.235,258.07a8.829,8.829,0,0,0,4.968,1.242,9.4,9.4,0,0,0,6.625-2.484,10.8,10.8,0,0,0,2.9-7.039V164.5L169.66,232.4A4.5,4.5,0,0,0,171.73,232.813ZM323.272,377.73a12.478,12.478,0,0,0-4.969,1.242l-74.528,43.062V287.882c0-2.9-2.9-5.8-6.211-4.555a53.036,53.036,0,0,1-28.984.414,4.86,4.86,0,0,0-6.21,4.555V421.619l-74.529-43.061a8.83,8.83,0,0,0-4.969-1.242,9.631,9.631,0,0,0-9.523,9.523v26.085a9.107,9.107,0,0,0,4.969,8.281l100.2,57.553A8.829,8.829,0,0,0,223.486,480a11.027,11.027,0,0,0,4.969-1.242l100.2-57.553a9.941,9.941,0,0,0,4.968-8.281V386.839C332.8,382.285,328.24,377.73,323.272,377.73ZM286.007,78a23,23,0,1,0-23-23A23,23,0,0,0,286.007,78Zm63.627-10.086a23,23,0,1,0,23,23A23,23,0,0,0,349.634,67.914ZM412.816,151.6a23,23,0,1,0-23-23A23,23,0,0,0,412.816,151.6Zm-63.182-9.2a23,23,0,1,0,23,23A23,23,0,0,0,349.634,142.4Zm-63.627,83.244a23,23,0,1,0-23-23A23,23,0,0,0,286.007,225.648Zm-62.074,36.358a23,23,0,1,0-23-23A23,23,0,0,0,223.933,262.006Zm188.883-82.358a23,23,0,1,0,23,23A23,23,0,0,0,412.816,179.648Zm0,72.272a23,23,0,1,0,23,23A23,23,0,0,0,412.816,251.92Z\"]\n};\nvar faUniregistry = {\n prefix: 'fab',\n iconName: 'uniregistry',\n icon: [384, 512, [], \"f404\", \"M192 480c39.5 0 76.2-11.8 106.8-32.2H85.3C115.8 468.2 152.5 480 192 480zm-89.1-193.1v-12.4H0v12.4c0 2.5 0 5 .1 7.4h103.1c-.2-2.4-.3-4.9-.3-7.4zm20.5 57H8.5c2.6 8.5 5.8 16.8 9.6 24.8h138.3c-12.9-5.7-24.1-14.2-33-24.8zm-17.7-34.7H1.3c.9 7.6 2.2 15 3.9 22.3h109.7c-4-6.9-7.2-14.4-9.2-22.3zm-2.8-69.3H0v17.3h102.9zm0-173.2H0v4.9h102.9zm0-34.7H0v2.5h102.9zm0 69.3H0v7.4h102.9zm0 104H0v14.8h102.9zm0-69.3H0v9.9h102.9zm0 34.6H0V183h102.9zm166.2 160.9h109.7c1.8-7.3 3.1-14.7 3.9-22.3H278.3c-2.1 7.9-5.2 15.4-9.2 22.3zm12-185.7H384V136H281.1zm0 37.2H384v-12.4H281.1zm0-74.3H384v-7.4H281.1zm0-76.7v2.5H384V32zm-203 410.9h227.7c11.8-8.7 22.7-18.6 32.2-29.7H44.9c9.6 11 21.4 21 33.2 29.7zm203-371.3H384v-4.9H281.1zm0 148.5H384v-14.8H281.1zM38.8 405.7h305.3c6.7-8.5 12.6-17.6 17.8-27.2H23c5.2 9.6 9.2 18.7 15.8 27.2zm188.8-37.1H367c3.7-8 5.8-16.2 8.5-24.8h-115c-8.8 10.7-20.1 19.2-32.9 24.8zm53.5-81.7c0 2.5-.1 5-.4 7.4h103.1c.1-2.5.2-4.9.2-7.4v-12.4H281.1zm0-29.7H384v-17.3H281.1z\"]\n};\nvar faUnity = {\n prefix: 'fab',\n iconName: 'unity',\n icon: [576, 512, [], \"e049\", \"M498.11,206.4,445.31,14.72,248.2,66.08,219,116.14l-59.2-.43L15.54,256,159.82,396.32l59.17-.43,29.24,50,197.08,51.36,52.8-191.62-30-49.63ZM223.77,124.2,374.55,86.51,288,232.33H114.87Zm0,263.63L114.87,279.71H288l86.55,145.81Zm193,14L330.17,256l86.58-145.84L458.56,256Z\"]\n};\nvar faUnsplash = {\n prefix: 'fab',\n iconName: 'unsplash',\n icon: [448, 512, [], \"e07c\", \"M448,230.17V480H0V230.17H141.13V355.09H306.87V230.17ZM306.87,32H141.13V156.91H306.87Z\"]\n};\nvar faUntappd = {\n prefix: 'fab',\n iconName: 'untappd',\n icon: [640, 512, [], \"f405\", \"M401.3 49.9c-79.8 160.1-84.6 152.5-87.9 173.2l-5.2 32.8c-1.9 12-6.6 23.5-13.7 33.4L145.6 497.1c-7.6 10.6-20.4 16.2-33.4 14.6-40.3-5-77.8-32.2-95.3-68.5-5.7-11.8-4.5-25.8 3.1-36.4l148.9-207.9c7.1-9.9 16.4-18 27.2-23.7l29.3-15.5c18.5-9.8 9.7-11.9 135.6-138.9 1-4.8 1-7.3 3.6-8 3-.7 6.6-1 6.3-4.6l-.4-4.6c-.2-1.9 1.3-3.6 3.2-3.6 4.5-.1 13.2 1.2 25.6 10 12.3 8.9 16.4 16.8 17.7 21.1.6 1.8-.6 3.7-2.4 4.2l-4.5 1.1c-3.4.9-2.5 4.4-2.3 7.4.1 2.8-2.3 3.6-6.5 6.1zM230.1 36.4c3.4.9 2.5 4.4 2.3 7.4-.2 2.7 2.1 3.5 6.4 6 7.9 15.9 15.3 30.5 22.2 44 .7 1.3 2.3 1.5 3.3.5 11.2-12 24.6-26.2 40.5-42.6 1.3-1.4 1.4-3.5.1-4.9-8-8.2-16.5-16.9-25.6-26.1-1-4.7-1-7.3-3.6-8-3-.8-6.6-1-6.3-4.6.3-3.3 1.4-8.1-2.8-8.2-4.5-.1-13.2 1.1-25.6 10-12.3 8.9-16.4 16.8-17.7 21.1-1.4 4.2 3.6 4.6 6.8 5.4zM620 406.7L471.2 198.8c-13.2-18.5-26.6-23.4-56.4-39.1-11.2-5.9-14.2-10.9-30.5-28.9-1-1.1-2.9-.9-3.6.5-46.3 88.8-47.1 82.8-49 94.8-1.7 10.7-1.3 20 .3 29.8 1.9 12 6.6 23.5 13.7 33.4l148.9 207.9c7.6 10.6 20.2 16.2 33.1 14.7 40.3-4.9 78-32 95.7-68.6 5.4-11.9 4.3-25.9-3.4-36.6z\"]\n};\nvar faUps = {\n prefix: 'fab',\n iconName: 'ups',\n icon: [384, 512, [], \"f7e0\", \"M103.2 303c-5.2 3.6-32.6 13.1-32.6-19V180H37.9v102.6c0 74.9 80.2 51.1 97.9 39V180h-32.6zM4 74.82v220.9c0 103.7 74.9 135.2 187.7 184.1 112.4-48.9 187.7-80.2 187.7-184.1V74.82c-116.3-61.6-281.8-49.6-375.4 0zm358.1 220.9c0 86.6-53.2 113.6-170.4 165.3-117.5-51.8-170.5-78.7-170.5-165.3v-126.4c102.3-93.8 231.6-100 340.9-89.8zm-209.6-107.4v212.8h32.7v-68.7c24.4 7.3 71.7-2.6 71.7-78.5 0-97.4-80.7-80.92-104.4-65.6zm32.7 117.3v-100.3c8.4-4.2 38.4-12.7 38.4 49.3 0 67.9-36.4 51.8-38.4 51zm79.1-86.4c.1 47.3 51.6 42.5 52.2 70.4.6 23.5-30.4 23-50.8 4.9v30.1c36.2 21.5 81.9 8.1 83.2-33.5 1.7-51.5-54.1-46.6-53.4-73.2.6-20.3 30.6-20.5 48.5-2.2v-28.4c-28.5-22-79.9-9.2-79.7 31.9z\"]\n};\nvar faUsb = {\n prefix: 'fab',\n iconName: 'usb',\n icon: [640, 512, [], \"f287\", \"M641.5 256c0 3.1-1.7 6.1-4.5 7.5L547.9 317c-1.4.8-2.8 1.4-4.5 1.4-1.4 0-3.1-.3-4.5-1.1-2.8-1.7-4.5-4.5-4.5-7.8v-35.6H295.7c25.3 39.6 40.5 106.9 69.6 106.9H392V354c0-5 3.9-8.9 8.9-8.9H490c5 0 8.9 3.9 8.9 8.9v89.1c0 5-3.9 8.9-8.9 8.9h-89.1c-5 0-8.9-3.9-8.9-8.9v-26.7h-26.7c-75.4 0-81.1-142.5-124.7-142.5H140.3c-8.1 30.6-35.9 53.5-69 53.5C32 327.3 0 295.3 0 256s32-71.3 71.3-71.3c33.1 0 61 22.8 69 53.5 39.1 0 43.9 9.5 74.6-60.4C255 88.7 273 95.7 323.8 95.7c7.5-20.9 27-35.6 50.4-35.6 29.5 0 53.5 23.9 53.5 53.5s-23.9 53.5-53.5 53.5c-23.4 0-42.9-14.8-50.4-35.6H294c-29.1 0-44.3 67.4-69.6 106.9h310.1v-35.6c0-3.3 1.7-6.1 4.5-7.8 2.8-1.7 6.4-1.4 8.9.3l89.1 53.5c2.8 1.1 4.5 4.1 4.5 7.2z\"]\n};\nvar faUsps = {\n prefix: 'fab',\n iconName: 'usps',\n icon: [576, 512, [], \"f7e1\", \"M460.3 241.7c25.8-41.3 15.2-48.8-11.7-48.8h-27c-.1 0-1.5-1.4-10.9 8-11.2 5.6-37.9 6.3-37.9 8.7 0 4.5 70.3-3.1 88.1 0 9.5 1.5-1.5 20.4-4.4 32-.5 4.5 2.4 2.3 3.8.1zm-112.1 22.6c64-21.3 97.3-23.9 102-26.2 4.4-2.9-4.4-6.6-26.2-5.8-51.7 2.2-137.6 37.1-172.6 53.9l-30.7-93.3h196.6c-2.7-28.2-152.9-22.6-337.9-22.6L27 415.8c196.4-97.3 258.9-130.3 321.2-151.5zM94.7 96c253.3 53.7 330 65.7 332.1 85.2 36.4 0 45.9 0 52.4 6.6 21.1 19.7-14.6 67.7-14.6 67.7-4.4 2.9-406.4 160.2-406.4 160.2h423.1L549 96z\"]\n};\nvar faUssunnah = {\n prefix: 'fab',\n iconName: 'ussunnah',\n icon: [512, 512, [], \"f407\", \"M156.8 285.1l5.7 14.4h-8.2c-1.3-3.2-3.1-7.7-3.8-9.5-2.5-6.3-1.1-8.4 0-10 1.9-2.7 3.2-4.4 3.6-5.2 0 2.2.8 5.7 2.7 10.3zm297.3 18.8c-2.1 13.8-5.7 27.1-10.5 39.7l43 23.4-44.8-18.8c-5.3 13.2-12 25.6-19.9 37.2l34.2 30.2-36.8-26.4c-8.4 11.8-18 22.6-28.7 32.3l24.9 34.7-28.1-31.8c-11 9.6-23.1 18-36.1 25.1l15.7 37.2-19.3-35.3c-13.1 6.8-27 12.1-41.6 15.9l6.7 38.4-10.5-37.4c-14.3 3.4-29.2 5.3-44.5 5.4L256 512l-1.9-38.4c-15.3-.1-30.2-2-44.5-5.3L199 505.6l6.7-38.2c-14.6-3.7-28.6-9.1-41.7-15.8l-19.2 35.1 15.6-37c-13-7-25.2-15.4-36.2-25.1l-27.9 31.6 24.7-34.4c-10.7-9.7-20.4-20.5-28.8-32.3l-36.5 26.2 33.9-29.9c-7.9-11.6-14.6-24.1-20-37.3l-44.4 18.7L67.8 344c-4.8-12.7-8.4-26.1-10.5-39.9l-51 9 50.3-14.2c-1.1-8.5-1.7-17.1-1.7-25.9 0-4.7.2-9.4.5-14.1L0 256l56-2.8c1.3-13.1 3.8-25.8 7.5-38.1L6.4 199l58.9 10.4c4-12 9.1-23.5 15.2-34.4l-55.1-30 58.3 24.6C90 159 97.2 149.2 105.3 140L55.8 96.4l53.9 38.7c8.1-8.6 17-16.5 26.6-23.6l-40-55.6 45.6 51.6c9.5-6.6 19.7-12.3 30.3-17.2l-27.3-64.9 33.8 62.1c10.5-4.4 21.4-7.9 32.7-10.4L199 6.4l19.5 69.2c11-2.1 22.3-3.2 33.8-3.4L256 0l3.6 72.2c11.5.2 22.8 1.4 33.8 3.5L313 6.4l-12.4 70.7c11.3 2.6 22.2 6.1 32.6 10.5l33.9-62.2-27.4 65.1c10.6 4.9 20.7 10.7 30.2 17.2l45.8-51.8-40.1 55.9c9.5 7.1 18.4 15 26.5 23.6l54.2-38.9-49.7 43.9c8 9.1 15.2 18.9 21.5 29.4l58.7-24.7-55.5 30.2c6.1 10.9 11.1 22.3 15.1 34.3l59.3-10.4-57.5 16.2c3.7 12.2 6.2 24.9 7.5 37.9L512 256l-56 2.8c.3 4.6.5 9.3.5 14.1 0 8.7-.6 17.3-1.6 25.8l50.7 14.3-51.5-9.1zm-21.8-31c0-97.5-79-176.5-176.5-176.5s-176.5 79-176.5 176.5 79 176.5 176.5 176.5 176.5-79 176.5-176.5zm-24 0c0 84.3-68.3 152.6-152.6 152.6s-152.6-68.3-152.6-152.6 68.3-152.6 152.6-152.6 152.6 68.3 152.6 152.6zM195 241c0 2.1 1.3 3.8 3.6 5.1 3.3 1.9 6.2 4.6 8.2 8.2 2.8-5.7 4.3-9.5 4.3-11.2 0-2.2-1.1-4.4-3.2-7-2.1-2.5-3.2-5.2-3.3-7.7-6.5 6.8-9.6 10.9-9.6 12.6zm-40.7-19c0 2.1 1.3 3.8 3.6 5.1 3.5 1.9 6.2 4.6 8.2 8.2 2.8-5.7 4.3-9.5 4.3-11.2 0-2.2-1.1-4.4-3.2-7-2.1-2.5-3.2-5.2-3.3-7.7-6.5 6.8-9.6 10.9-9.6 12.6zm-19 0c0 2.1 1.3 3.8 3.6 5.1 3.3 1.9 6.2 4.6 8.2 8.2 2.8-5.7 4.3-9.5 4.3-11.2 0-2.2-1.1-4.4-3.2-7-2.1-2.5-3.2-5.2-3.3-7.7-6.4 6.8-9.6 10.9-9.6 12.6zm204.9 87.9c-8.4-3-8.7-6.8-8.7-15.6V182c-8.2 12.5-14.2 18.6-18 18.6 6.3 14.4 9.5 23.9 9.5 28.3v64.3c0 2.2-2.2 6.5-4.7 6.5h-18c-2.8-7.5-10.2-26.9-15.3-40.3-2 2.5-7.2 9.2-10.7 13.7 2.4 1.6 4.1 3.6 5.2 6.3 2.6 6.7 6.4 16.5 7.9 20.2h-9.2c-3.9-10.4-9.6-25.4-11.8-31.1-2 2.5-7.2 9.2-10.7 13.7 2.4 1.6 4.1 3.6 5.2 6.3.8 2 2.8 7.3 4.3 10.9H256c-1.5-4.1-5.6-14.6-8.4-22-2 2.5-7.2 9.2-10.7 13.7 2.5 1.6 4.3 3.6 5.2 6.3.2.6.5 1.4.6 1.7H225c-4.6-13.9-11.4-27.7-11.4-34.1 0-2.2.3-5.1 1.1-8.2-8.8 10.8-14 15.9-14 25 0 7.5 10.4 28.3 10.4 33.3 0 1.7-.5 3.3-1.4 4.9-9.6-12.7-15.5-20.7-18.8-20.7h-12l-11.2-28c-3.8-9.6-5.7-16-5.7-18.8 0-3.8.5-7.7 1.7-12.2-1 1.3-3.7 4.7-5.5 7.1-.8-2.1-3.1-7.7-4.6-11.5-2.1 2.5-7.5 9.1-11.2 13.6.9 2.3 3.3 8.1 4.9 12.2-2.5 3.3-9.1 11.8-13.6 17.7-4 5.3-5.8 13.3-2.7 21.8 2.5 6.7 2 7.9-1.7 14.1H191c5.5 0 14.3 14 15.5 22 13.2-16 15.4-19.6 16.8-21.6h107c3.9 0 7.2-1.9 9.9-5.8zm20.1-26.6V181.7c-9 12.5-15.9 18.6-20.7 18.6 7.1 14.4 10.7 23.9 10.7 28.3v66.3c0 17.5 8.6 20.4 24 20.4 8.1 0 12.5-.8 13.7-2.7-4.3-1.6-7.6-2.5-9.9-3.3-8.1-3.2-17.8-7.4-17.8-26z\"]\n};\nvar faVaadin = {\n prefix: 'fab',\n iconName: 'vaadin',\n icon: [448, 512, [], \"f408\", \"M224.5 140.7c1.5-17.6 4.9-52.7 49.8-52.7h98.6c20.7 0 32.1-7.8 32.1-21.6V54.1c0-12.2 9.3-22.1 21.5-22.1S448 41.9 448 54.1v36.5c0 42.9-21.5 62-66.8 62H280.7c-30.1 0-33 14.7-33 27.1 0 1.3-.1 2.5-.2 3.7-.7 12.3-10.9 22.2-23.4 22.2s-22.7-9.8-23.4-22.2c-.1-1.2-.2-2.4-.2-3.7 0-12.3-3-27.1-33-27.1H66.8c-45.3 0-66.8-19.1-66.8-62V54.1C0 41.9 9.4 32 21.6 32s21.5 9.9 21.5 22.1v12.3C43.1 80.2 54.5 88 75.2 88h98.6c44.8 0 48.3 35.1 49.8 52.7h.9zM224 456c11.5 0 21.4-7 25.7-16.3 1.1-1.8 97.1-169.6 98.2-171.4 11.9-19.6-3.2-44.3-27.2-44.3-13.9 0-23.3 6.4-29.8 20.3L224 362l-66.9-117.7c-6.4-13.9-15.9-20.3-29.8-20.3-24 0-39.1 24.6-27.2 44.3 1.1 1.9 97.1 169.6 98.2 171.4 4.3 9.3 14.2 16.3 25.7 16.3z\"]\n};\nvar faViacoin = {\n prefix: 'fab',\n iconName: 'viacoin',\n icon: [384, 512, [], \"f237\", \"M384 32h-64l-80.7 192h-94.5L64 32H0l48 112H0v48h68.5l13.8 32H0v48h102.8L192 480l89.2-208H384v-48h-82.3l13.8-32H384v-48h-48l48-112zM192 336l-27-64h54l-27 64z\"]\n};\nvar faViadeo = {\n prefix: 'fab',\n iconName: 'viadeo',\n icon: [448, 512, [], \"f2a9\", \"M276.2 150.5v.7C258.3 98.6 233.6 47.8 205.4 0c43.3 29.2 67 100 70.8 150.5zm32.7 121.7c7.6 18.2 11 37.5 11 57 0 77.7-57.8 141-137.8 139.4l3.8-.3c74.2-46.7 109.3-118.6 109.3-205.1 0-38.1-6.5-75.9-18.9-112 1 11.7 1 23.7 1 35.4 0 91.8-18.1 241.6-116.6 280C95 455.2 49.4 398 49.4 329.2c0-75.6 57.4-142.3 135.4-142.3 16.8 0 33.7 3.1 49.1 9.6 1.7-15.1 6.5-29.9 13.4-43.3-19.9-7.2-41.2-10.7-62.5-10.7-161.5 0-238.7 195.9-129.9 313.7 67.9 74.6 192 73.9 259.8 0 56.6-61.3 60.9-142.4 36.4-201-12.7 8-27.1 13.9-42.2 17zM418.1 11.7c-31 66.5-81.3 47.2-115.8 80.1-12.4 12-20.6 34-20.6 50.5 0 14.1 4.5 27.1 12 38.8 47.4-11 98.3-46 118.2-90.7-.7 5.5-4.8 14.4-7.2 19.2-20.3 35.7-64.6 65.6-99.7 84.9 14.8 14.4 33.7 25.8 55 25.8 79 0 110.1-134.6 58.1-208.6z\"]\n};\nvar faViadeoSquare = {\n prefix: 'fab',\n iconName: 'viadeo-square',\n icon: [448, 512, [], \"f2aa\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM280.7 381.2c-42.4 46.2-120 46.6-162.4 0-68-73.6-19.8-196.1 81.2-196.1 13.3 0 26.6 2.1 39.1 6.7-4.3 8.4-7.3 17.6-8.4 27.1-9.7-4.1-20.2-6-30.7-6-48.8 0-84.6 41.7-84.6 88.9 0 43 28.5 78.7 69.5 85.9 61.5-24 72.9-117.6 72.9-175 0-7.3 0-14.8-.6-22.1-11.2-32.9-26.6-64.6-44.2-94.5 27.1 18.3 41.9 62.5 44.2 94.1v.4c7.7 22.5 11.8 46.2 11.8 70 0 54.1-21.9 99-68.3 128.2l-2.4.2c50 1 86.2-38.6 86.2-87.2 0-12.2-2.1-24.3-6.9-35.7 9.5-1.9 18.5-5.6 26.4-10.5 15.3 36.6 12.6 87.3-22.8 125.6zM309 233.7c-13.3 0-25.1-7.1-34.4-16.1 21.9-12 49.6-30.7 62.3-53 1.5-3 4.1-8.6 4.5-12-12.5 27.9-44.2 49.8-73.9 56.7-4.7-7.3-7.5-15.5-7.5-24.3 0-10.3 5.2-24.1 12.9-31.6 21.6-20.5 53-8.5 72.4-50 32.5 46.2 13.1 130.3-36.3 130.3z\"]\n};\nvar faViber = {\n prefix: 'fab',\n iconName: 'viber',\n icon: [512, 512, [], \"f409\", \"M444 49.9C431.3 38.2 379.9.9 265.3.4c0 0-135.1-8.1-200.9 52.3C27.8 89.3 14.9 143 13.5 209.5c-1.4 66.5-3.1 191.1 117 224.9h.1l-.1 51.6s-.8 20.9 13 25.1c16.6 5.2 26.4-10.7 42.3-27.8 8.7-9.4 20.7-23.2 29.8-33.7 82.2 6.9 145.3-8.9 152.5-11.2 16.6-5.4 110.5-17.4 125.7-142 15.8-128.6-7.6-209.8-49.8-246.5zM457.9 287c-12.9 104-89 110.6-103 115.1-6 1.9-61.5 15.7-131.2 11.2 0 0-52 62.7-68.2 79-5.3 5.3-11.1 4.8-11-5.7 0-6.9.4-85.7.4-85.7-.1 0-.1 0 0 0-101.8-28.2-95.8-134.3-94.7-189.8 1.1-55.5 11.6-101 42.6-131.6 55.7-50.5 170.4-43 170.4-43 96.9.4 143.3 29.6 154.1 39.4 35.7 30.6 53.9 103.8 40.6 211.1zm-139-80.8c.4 8.6-12.5 9.2-12.9.6-1.1-22-11.4-32.7-32.6-33.9-8.6-.5-7.8-13.4.7-12.9 27.9 1.5 43.4 17.5 44.8 46.2zm20.3 11.3c1-42.4-25.5-75.6-75.8-79.3-8.5-.6-7.6-13.5.9-12.9 58 4.2 88.9 44.1 87.8 92.5-.1 8.6-13.1 8.2-12.9-.3zm47 13.4c.1 8.6-12.9 8.7-12.9.1-.6-81.5-54.9-125.9-120.8-126.4-8.5-.1-8.5-12.9 0-12.9 73.7.5 133 51.4 133.7 139.2zM374.9 329v.2c-10.8 19-31 40-51.8 33.3l-.2-.3c-21.1-5.9-70.8-31.5-102.2-56.5-16.2-12.8-31-27.9-42.4-42.4-10.3-12.9-20.7-28.2-30.8-46.6-21.3-38.5-26-55.7-26-55.7-6.7-20.8 14.2-41 33.3-51.8h.2c9.2-4.8 18-3.2 23.9 3.9 0 0 12.4 14.8 17.7 22.1 5 6.8 11.7 17.7 15.2 23.8 6.1 10.9 2.3 22-3.7 26.6l-12 9.6c-6.1 4.9-5.3 14-5.3 14s17.8 67.3 84.3 84.3c0 0 9.1.8 14-5.3l9.6-12c4.6-6 15.7-9.8 26.6-3.7 14.7 8.3 33.4 21.2 45.8 32.9 7 5.7 8.6 14.4 3.8 23.6z\"]\n};\nvar faVimeo = {\n prefix: 'fab',\n iconName: 'vimeo',\n icon: [448, 512, [], \"f40a\", \"M403.2 32H44.8C20.1 32 0 52.1 0 76.8v358.4C0 459.9 20.1 480 44.8 480h358.4c24.7 0 44.8-20.1 44.8-44.8V76.8c0-24.7-20.1-44.8-44.8-44.8zM377 180.8c-1.4 31.5-23.4 74.7-66 129.4-44 57.2-81.3 85.8-111.7 85.8-18.9 0-34.8-17.4-47.9-52.3-25.5-93.3-36.4-148-57.4-148-2.4 0-10.9 5.1-25.4 15.2l-15.2-19.6c37.3-32.8 72.9-69.2 95.2-71.2 25.2-2.4 40.7 14.8 46.5 51.7 20.7 131.2 29.9 151 67.6 91.6 13.5-21.4 20.8-37.7 21.8-48.9 3.5-33.2-25.9-30.9-45.8-22.4 15.9-52.1 46.3-77.4 91.2-76 33.3.9 49 22.5 47.1 64.7z\"]\n};\nvar faVimeoSquare = {\n prefix: 'fab',\n iconName: 'vimeo-square',\n icon: [448, 512, [], \"f194\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-16.2 149.6c-1.4 31.1-23.2 73.8-65.3 127.9-43.5 56.5-80.3 84.8-110.4 84.8-18.7 0-34.4-17.2-47.3-51.6-25.2-92.3-35.9-146.4-56.7-146.4-2.4 0-10.8 5-25.1 15.1L64 192c36.9-32.4 72.1-68.4 94.1-70.4 24.9-2.4 40.2 14.6 46 51.1 20.5 129.6 29.6 149.2 66.8 90.5 13.4-21.2 20.6-37.2 21.5-48.3 3.4-32.8-25.6-30.6-45.2-22.2 15.7-51.5 45.8-76.5 90.1-75.1 32.9 1 48.4 22.4 46.5 64z\"]\n};\nvar faVimeoV = {\n prefix: 'fab',\n iconName: 'vimeo-v',\n icon: [448, 512, [], \"f27d\", \"M447.8 153.6c-2 43.6-32.4 103.3-91.4 179.1-60.9 79.2-112.4 118.8-154.6 118.8-26.1 0-48.2-24.1-66.3-72.3C100.3 250 85.3 174.3 56.2 174.3c-3.4 0-15.1 7.1-35.2 21.1L0 168.2c51.6-45.3 100.9-95.7 131.8-98.5 34.9-3.4 56.3 20.5 64.4 71.5 28.7 181.5 41.4 208.9 93.6 126.7 18.7-29.6 28.8-52.1 30.2-67.6 4.8-45.9-35.8-42.8-63.3-31 22-72.1 64.1-107.1 126.2-105.1 45.8 1.2 67.5 31.1 64.9 89.4z\"]\n};\nvar faVine = {\n prefix: 'fab',\n iconName: 'vine',\n icon: [384, 512, [], \"f1ca\", \"M384 254.7v52.1c-18.4 4.2-36.9 6.1-52.1 6.1-36.9 77.4-103 143.8-125.1 156.2-14 7.9-27.1 8.4-42.7-.8C137 452 34.2 367.7 0 102.7h74.5C93.2 261.8 139 343.4 189.3 404.5c27.9-27.9 54.8-65.1 75.6-106.9-49.8-25.3-80.1-80.9-80.1-145.6 0-65.6 37.7-115.1 102.2-115.1 114.9 0 106.2 127.9 81.6 181.5 0 0-46.4 9.2-63.5-20.5 3.4-11.3 8.2-30.8 8.2-48.5 0-31.3-11.3-46.6-28.4-46.6-18.2 0-30.8 17.1-30.8 50 .1 79.2 59.4 118.7 129.9 101.9z\"]\n};\nvar faVk = {\n prefix: 'fab',\n iconName: 'vk',\n icon: [576, 512, [], \"f189\", \"M545 117.7c3.7-12.5 0-21.7-17.8-21.7h-58.9c-15 0-21.9 7.9-25.6 16.7 0 0-30 73.1-72.4 120.5-13.7 13.7-20 18.1-27.5 18.1-3.7 0-9.4-4.4-9.4-16.9V117.7c0-15-4.2-21.7-16.6-21.7h-92.6c-9.4 0-15 7-15 13.5 0 14.2 21.2 17.5 23.4 57.5v86.8c0 19-3.4 22.5-10.9 22.5-20 0-68.6-73.4-97.4-157.4-5.8-16.3-11.5-22.9-26.6-22.9H38.8c-16.8 0-20.2 7.9-20.2 16.7 0 15.6 20 93.1 93.1 195.5C160.4 378.1 229 416 291.4 416c37.5 0 42.1-8.4 42.1-22.9 0-66.8-3.4-73.1 15.4-73.1 8.7 0 23.7 4.4 58.7 38.1 40 40 46.6 57.9 69 57.9h58.9c16.8 0 25.3-8.4 20.4-25-11.2-34.9-86.9-106.7-90.3-111.5-8.7-11.2-6.2-16.2 0-26.2.1-.1 72-101.3 79.4-135.6z\"]\n};\nvar faVnv = {\n prefix: 'fab',\n iconName: 'vnv',\n icon: [640, 512, [], \"f40b\", \"M104.9 352c-34.1 0-46.4-30.4-46.4-30.4L2.6 210.1S-7.8 192 13 192h32.8c10.4 0 13.2 8.7 18.8 18.1l36.7 74.5s5.2 13.1 21.1 13.1 21.1-13.1 21.1-13.1l36.7-74.5c5.6-9.5 8.4-18.1 18.8-18.1h32.8c20.8 0 10.4 18.1 10.4 18.1l-55.8 111.5S174.2 352 140 352h-35.1zm395 0c-34.1 0-46.4-30.4-46.4-30.4l-55.9-111.5S387.2 192 408 192h32.8c10.4 0 13.2 8.7 18.8 18.1l36.7 74.5s5.2 13.1 21.1 13.1 21.1-13.1 21.1-13.1l36.8-74.5c5.6-9.5 8.4-18.1 18.8-18.1H627c20.8 0 10.4 18.1 10.4 18.1l-55.9 111.5S569.3 352 535.1 352h-35.2zM337.6 192c34.1 0 46.4 30.4 46.4 30.4l55.9 111.5s10.4 18.1-10.4 18.1h-32.8c-10.4 0-13.2-8.7-18.8-18.1l-36.7-74.5s-5.2-13.1-21.1-13.1c-15.9 0-21.1 13.1-21.1 13.1l-36.7 74.5c-5.6 9.4-8.4 18.1-18.8 18.1h-32.9c-20.8 0-10.4-18.1-10.4-18.1l55.9-111.5s12.2-30.4 46.4-30.4h35.1z\"]\n};\nvar faVuejs = {\n prefix: 'fab',\n iconName: 'vuejs',\n icon: [448, 512, [], \"f41f\", \"M356.9 64.3H280l-56 88.6-48-88.6H0L224 448 448 64.3h-91.1zm-301.2 32h53.8L224 294.5 338.4 96.3h53.8L224 384.5 55.7 96.3z\"]\n};\nvar faWatchmanMonitoring = {\n prefix: 'fab',\n iconName: 'watchman-monitoring',\n icon: [512, 512, [], \"e087\", \"M256,16C123.452,16,16,123.452,16,256S123.452,496,256,496,496,388.548,496,256,388.548,16,256,16ZM121.69,429.122C70.056,388.972,36.741,326.322,36.741,256a218.519,218.519,0,0,1,9.587-64.122l102.9-17.895-.121,10.967-13.943,2.013s-.144,12.5-.144,19.549a12.778,12.778,0,0,0,4.887,10.349l9.468,7.4Zm105.692-283.27,8.48-7.618s6.934-5.38-.143-9.344c-7.188-4.024-39.53-34.5-39.53-34.5-5.348-5.477-8.257-7.347-15.46,0,0,0-32.342,30.474-39.529,34.5-7.078,3.964-.144,9.344-.144,9.344l8.481,7.618-.048,4.369L75.982,131.045c39.644-56.938,105.532-94.3,180.018-94.3A218.754,218.754,0,0,1,420.934,111.77l-193.512,37.7Zm34.063,329.269-33.9-250.857,9.467-7.4a12.778,12.778,0,0,0,4.888-10.349c0-7.044-.144-19.549-.144-19.549l-13.943-2.013-.116-10.474,241.711,31.391A218.872,218.872,0,0,1,475.259,256C475.259,375.074,379.831,472.212,261.445,475.121Z\"]\n};\nvar faWaze = {\n prefix: 'fab',\n iconName: 'waze',\n icon: [512, 512, [], \"f83f\", \"M502.17 201.67C516.69 287.53 471.23 369.59 389 409.8c13 34.1-12.4 70.2-48.32 70.2a51.68 51.68 0 0 1-51.57-49c-6.44.19-64.2 0-76.33-.64A51.69 51.69 0 0 1 159 479.92c-33.86-1.36-57.95-34.84-47-67.92-37.21-13.11-72.54-34.87-99.62-70.8-13-17.28-.48-41.8 20.84-41.8 46.31 0 32.22-54.17 43.15-110.26C94.8 95.2 193.12 32 288.09 32c102.48 0 197.15 70.67 214.08 169.67zM373.51 388.28c42-19.18 81.33-56.71 96.29-102.14 40.48-123.09-64.15-228-181.71-228-83.45 0-170.32 55.42-186.07 136-9.53 48.91 5 131.35-68.75 131.35C58.21 358.6 91.6 378.11 127 389.54c24.66-21.8 63.87-15.47 79.83 14.34 14.22 1 79.19 1.18 87.9.82a51.69 51.69 0 0 1 78.78-16.42zM205.12 187.13c0-34.74 50.84-34.75 50.84 0s-50.84 34.74-50.84 0zm116.57 0c0-34.74 50.86-34.75 50.86 0s-50.86 34.75-50.86 0zm-122.61 70.69c-3.44-16.94 22.18-22.18 25.62-5.21l.06.28c4.14 21.42 29.85 44 64.12 43.07 35.68-.94 59.25-22.21 64.11-42.77 4.46-16.05 28.6-10.36 25.47 6-5.23 22.18-31.21 62-91.46 62.9-42.55 0-80.88-27.84-87.9-64.25z\"]\n};\nvar faWeebly = {\n prefix: 'fab',\n iconName: 'weebly',\n icon: [512, 512, [], \"f5cc\", \"M425.09 65.83c-39.88 0-73.28 25.73-83.66 64.33-18.16-58.06-65.5-64.33-84.95-64.33-19.78 0-66.8 6.28-85.28 64.33-10.38-38.6-43.45-64.33-83.66-64.33C38.59 65.83 0 99.72 0 143.03c0 28.96 4.18 33.27 77.17 233.48 22.37 60.57 67.77 69.35 92.74 69.35 39.23 0 70.04-19.46 85.93-53.98 15.89 34.83 46.69 54.29 85.93 54.29 24.97 0 70.36-9.1 92.74-69.67 76.55-208.65 77.5-205.58 77.5-227.2.63-48.32-36.01-83.47-86.92-83.47zm26.34 114.81l-65.57 176.44c-7.92 21.49-21.22 37.22-46.24 37.22-23.44 0-37.38-12.41-44.03-33.9l-39.28-117.42h-.95L216.08 360.4c-6.96 21.5-20.9 33.6-44.02 33.6-25.02 0-38.33-15.74-46.24-37.22L60.88 181.55c-5.38-14.83-7.92-23.91-7.92-34.5 0-16.34 15.84-29.36 38.33-29.36 18.69 0 31.99 11.8 36.11 29.05l44.03 139.82h.95l44.66-136.79c6.02-19.67 16.47-32.08 38.96-32.08s32.94 12.11 38.96 32.08l44.66 136.79h.95l44.03-139.82c4.12-17.25 17.42-29.05 36.11-29.05 22.17 0 38.33 13.32 38.33 35.71-.32 7.87-4.12 16.04-7.61 27.24z\"]\n};\nvar faWeibo = {\n prefix: 'fab',\n iconName: 'weibo',\n icon: [512, 512, [], \"f18a\", \"M407 177.6c7.6-24-13.4-46.8-37.4-41.7-22 4.8-28.8-28.1-7.1-32.8 50.1-10.9 92.3 37.1 76.5 84.8-6.8 21.2-38.8 10.8-32-10.3zM214.8 446.7C108.5 446.7 0 395.3 0 310.4c0-44.3 28-95.4 76.3-143.7C176 67 279.5 65.8 249.9 161c-4 13.1 12.3 5.7 12.3 6 79.5-33.6 140.5-16.8 114 51.4-3.7 9.4 1.1 10.9 8.3 13.1 135.7 42.3 34.8 215.2-169.7 215.2zm143.7-146.3c-5.4-55.7-78.5-94-163.4-85.7-84.8 8.6-148.8 60.3-143.4 116s78.5 94 163.4 85.7c84.8-8.6 148.8-60.3 143.4-116zM347.9 35.1c-25.9 5.6-16.8 43.7 8.3 38.3 72.3-15.2 134.8 52.8 111.7 124-7.4 24.2 29.1 37 37.4 12 31.9-99.8-55.1-195.9-157.4-174.3zm-78.5 311c-17.1 38.8-66.8 60-109.1 46.3-40.8-13.1-58-53.4-40.3-89.7 17.7-35.4 63.1-55.4 103.4-45.1 42 10.8 63.1 50.2 46 88.5zm-86.3-30c-12.9-5.4-30 .3-38 12.9-8.3 12.9-4.3 28 8.6 34 13.1 6 30.8.3 39.1-12.9 8-13.1 3.7-28.3-9.7-34zm32.6-13.4c-5.1-1.7-11.4.6-14.3 5.4-2.9 5.1-1.4 10.6 3.7 12.9 5.1 2 11.7-.3 14.6-5.4 2.8-5.2 1.1-10.9-4-12.9z\"]\n};\nvar faWeixin = {\n prefix: 'fab',\n iconName: 'weixin',\n icon: [576, 512, [], \"f1d7\", \"M385.2 167.6c6.4 0 12.6.3 18.8 1.1C387.4 90.3 303.3 32 207.7 32 100.5 32 13 104.8 13 197.4c0 53.4 29.3 97.5 77.9 131.6l-19.3 58.6 68-34.1c24.4 4.8 43.8 9.7 68.2 9.7 6.2 0 12.1-.3 18.3-.8-4-12.9-6.2-26.6-6.2-40.8-.1-84.9 72.9-154 165.3-154zm-104.5-52.9c14.5 0 24.2 9.7 24.2 24.4 0 14.5-9.7 24.2-24.2 24.2-14.8 0-29.3-9.7-29.3-24.2.1-14.7 14.6-24.4 29.3-24.4zm-136.4 48.6c-14.5 0-29.3-9.7-29.3-24.2 0-14.8 14.8-24.4 29.3-24.4 14.8 0 24.4 9.7 24.4 24.4 0 14.6-9.6 24.2-24.4 24.2zM563 319.4c0-77.9-77.9-141.3-165.4-141.3-92.7 0-165.4 63.4-165.4 141.3S305 460.7 397.6 460.7c19.3 0 38.9-5.1 58.6-9.9l53.4 29.3-14.8-48.6C534 402.1 563 363.2 563 319.4zm-219.1-24.5c-9.7 0-19.3-9.7-19.3-19.6 0-9.7 9.7-19.3 19.3-19.3 14.8 0 24.4 9.7 24.4 19.3 0 10-9.7 19.6-24.4 19.6zm107.1 0c-9.7 0-19.3-9.7-19.3-19.6 0-9.7 9.7-19.3 19.3-19.3 14.5 0 24.4 9.7 24.4 19.3.1 10-9.9 19.6-24.4 19.6z\"]\n};\nvar faWhatsapp = {\n prefix: 'fab',\n iconName: 'whatsapp',\n icon: [448, 512, [], \"f232\", \"M380.9 97.1C339 55.1 283.2 32 223.9 32c-122.4 0-222 99.6-222 222 0 39.1 10.2 77.3 29.6 111L0 480l117.7-30.9c32.4 17.7 68.9 27 106.1 27h.1c122.3 0 224.1-99.6 224.1-222 0-59.3-25.2-115-67.1-157zm-157 341.6c-33.2 0-65.7-8.9-94-25.7l-6.7-4-69.8 18.3L72 359.2l-4.4-7c-18.5-29.4-28.2-63.3-28.2-98.2 0-101.7 82.8-184.5 184.6-184.5 49.3 0 95.6 19.2 130.4 54.1 34.8 34.9 56.2 81.2 56.1 130.5 0 101.8-84.9 184.6-186.6 184.6zm101.2-138.2c-5.5-2.8-32.8-16.2-37.9-18-5.1-1.9-8.8-2.8-12.5 2.8-3.7 5.6-14.3 18-17.6 21.8-3.2 3.7-6.5 4.2-12 1.4-32.6-16.3-54-29.1-75.5-66-5.7-9.8 5.7-9.1 16.3-30.3 1.8-3.7.9-6.9-.5-9.7-1.4-2.8-12.5-30.1-17.1-41.2-4.5-10.8-9.1-9.3-12.5-9.5-3.2-.2-6.9-.2-10.6-.2-3.7 0-9.7 1.4-14.8 6.9-5.1 5.6-19.4 19-19.4 46.3 0 27.3 19.9 53.7 22.6 57.4 2.8 3.7 39.1 59.7 94.8 83.8 35.2 15.2 49 16.5 66.6 13.9 10.7-1.6 32.8-13.4 37.4-26.4 4.6-13 4.6-24.1 3.2-26.4-1.3-2.5-5-3.9-10.5-6.6z\"]\n};\nvar faWhatsappSquare = {\n prefix: 'fab',\n iconName: 'whatsapp-square',\n icon: [448, 512, [], \"f40c\", \"M224 122.8c-72.7 0-131.8 59.1-131.9 131.8 0 24.9 7 49.2 20.2 70.1l3.1 5-13.3 48.6 49.9-13.1 4.8 2.9c20.2 12 43.4 18.4 67.1 18.4h.1c72.6 0 133.3-59.1 133.3-131.8 0-35.2-15.2-68.3-40.1-93.2-25-25-58-38.7-93.2-38.7zm77.5 188.4c-3.3 9.3-19.1 17.7-26.7 18.8-12.6 1.9-22.4.9-47.5-9.9-39.7-17.2-65.7-57.2-67.7-59.8-2-2.6-16.2-21.5-16.2-41s10.2-29.1 13.9-33.1c3.6-4 7.9-5 10.6-5 2.6 0 5.3 0 7.6.1 2.4.1 5.7-.9 8.9 6.8 3.3 7.9 11.2 27.4 12.2 29.4s1.7 4.3.3 6.9c-7.6 15.2-15.7 14.6-11.6 21.6 15.3 26.3 30.6 35.4 53.9 47.1 4 2 6.3 1.7 8.6-1 2.3-2.6 9.9-11.6 12.5-15.5 2.6-4 5.3-3.3 8.9-2 3.6 1.3 23.1 10.9 27.1 12.9s6.6 3 7.6 4.6c.9 1.9.9 9.9-2.4 19.1zM400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM223.9 413.2c-26.6 0-52.7-6.7-75.8-19.3L64 416l22.5-82.2c-13.9-24-21.2-51.3-21.2-79.3C65.4 167.1 136.5 96 223.9 96c42.4 0 82.2 16.5 112.2 46.5 29.9 30 47.9 69.8 47.9 112.2 0 87.4-72.7 158.5-160.1 158.5z\"]\n};\nvar faWhmcs = {\n prefix: 'fab',\n iconName: 'whmcs',\n icon: [448, 512, [], \"f40d\", \"M448 161v-21.3l-28.5-8.8-2.2-10.4 20.1-20.7L427 80.4l-29 7.5-7.2-7.5 7.5-28.2-19.1-11.6-21.3 21-10.7-3.2-7-26.4h-22.6l-6.2 26.4-12.1 3.2-19.7-21-19.4 11 8.1 27.7-8.1 8.4-28.5-7.5-11 19.1 20.7 21-2.9 10.4-28.5 7.8-.3 21.7 28.8 7.5 2.4 12.1-20.1 19.9 10.4 18.5 29.6-7.5 7.2 8.6-8.1 26.9 19.9 11.6 19.4-20.4 11.6 2.9 6.7 28.5 22.6.3 6.7-28.8 11.6-3.5 20.7 21.6 20.4-12.1-8.8-28 7.8-8.1 28.8 8.8 10.3-20.1-20.9-18.8 2.2-12.1 29.1-7zm-119.2 45.2c-31.3 0-56.8-25.4-56.8-56.8s25.4-56.8 56.8-56.8 56.8 25.4 56.8 56.8c0 31.5-25.4 56.8-56.8 56.8zm72.3 16.4l46.9 14.5V277l-55.1 13.4-4.1 22.7 38.9 35.3-19.2 37.9-54-16.7-14.6 15.2 16.7 52.5-38.3 22.7-38.9-40.5-21.7 6.6-12.6 54-42.4-.5-12.6-53.6-21.7-5.6-36.4 38.4-37.4-21.7 15.2-50.5-13.7-16.1-55.5 14.1-19.7-34.8 37.9-37.4-4.8-22.8-54-14.1.5-40.9L54 219.9l5.7-19.7-38.9-39.4L41.5 125l53.6 14.1 15.2-15.7-15.2-52 36.4-20.7 36.8 39.4L191 84l11.6-52H245l11.6 45.9L234 72l-6.3-1.7-3.3 5.7-11 19.1-3.3 5.6 4.6 4.6 17.2 17.4-.3 1-23.8 6.5-6.2 1.7-.1 6.4-.2 12.9C153.8 161.6 118 204 118 254.7c0 58.3 47.3 105.7 105.7 105.7 50.5 0 92.7-35.4 103.2-82.8l13.2.2 6.9.1 1.6-6.7 5.6-24 1.9-.6 17.1 17.8 4.7 4.9 5.8-3.4 20.4-12.1 5.8-3.5-2-6.5-6.8-21.2z\"]\n};\nvar faWikipediaW = {\n prefix: 'fab',\n iconName: 'wikipedia-w',\n icon: [640, 512, [], \"f266\", \"M640 51.2l-.3 12.2c-28.1.8-45 15.8-55.8 40.3-25 57.8-103.3 240-155.3 358.6H415l-81.9-193.1c-32.5 63.6-68.3 130-99.2 193.1-.3.3-15 0-15-.3C172 352.3 122.8 243.4 75.8 133.4 64.4 106.7 26.4 63.4.2 63.7c0-3.1-.3-10-.3-14.2h161.9v13.9c-19.2 1.1-52.8 13.3-43.3 34.2 21.9 49.7 103.6 240.3 125.6 288.6 15-29.7 57.8-109.2 75.3-142.8-13.9-28.3-58.6-133.9-72.8-160-9.7-17.8-36.1-19.4-55.8-19.7V49.8l142.5.3v13.1c-19.4.6-38.1 7.8-29.4 26.1 18.9 40 30.6 68.1 48.1 104.7 5.6-10.8 34.7-69.4 48.1-100.8 8.9-20.6-3.9-28.6-38.6-29.4.3-3.6 0-10.3.3-13.6 44.4-.3 111.1-.3 123.1-.6v13.6c-22.5.8-45.8 12.8-58.1 31.7l-59.2 122.8c6.4 16.1 63.3 142.8 69.2 156.7L559.2 91.8c-8.6-23.1-36.4-28.1-47.2-28.3V49.6l127.8 1.1.2.5z\"]\n};\nvar faWindows = {\n prefix: 'fab',\n iconName: 'windows',\n icon: [448, 512, [], \"f17a\", \"M0 93.7l183.6-25.3v177.4H0V93.7zm0 324.6l183.6 25.3V268.4H0v149.9zm203.8 28L448 480V268.4H203.8v177.9zm0-380.6v180.1H448V32L203.8 65.7z\"]\n};\nvar faWix = {\n prefix: 'fab',\n iconName: 'wix',\n icon: [640, 512, [], \"f5cf\", \"M393.38 131.69c0 13.03 2.08 32.69-28.68 43.83-9.52 3.45-15.95 9.66-15.95 9.66 0-31 4.72-42.22 17.4-48.86 9.75-5.11 27.23-4.63 27.23-4.63zm-115.8 35.54l-34.24 132.66-28.48-108.57c-7.69-31.99-20.81-48.53-48.43-48.53-27.37 0-40.66 16.18-48.43 48.53L89.52 299.89 55.28 167.23C49.73 140.51 23.86 128.96 0 131.96l65.57 247.93s21.63 1.56 32.46-3.96c14.22-7.25 20.98-12.84 29.59-46.57 7.67-30.07 29.11-118.41 31.12-124.7 4.76-14.94 11.09-13.81 15.4 0 1.97 6.3 23.45 94.63 31.12 124.7 8.6 33.73 15.37 39.32 29.59 46.57 10.82 5.52 32.46 3.96 32.46 3.96l65.57-247.93c-24.42-3.07-49.82 8.93-55.3 35.27zm115.78 5.21s-4.1 6.34-13.46 11.57c-6.01 3.36-11.78 5.64-17.97 8.61-15.14 7.26-13.18 13.95-13.18 35.2v152.07s16.55 2.09 27.37-3.43c13.93-7.1 17.13-13.95 17.26-44.78V181.41l-.02.01v-8.98zm163.44 84.08L640 132.78s-35.11-5.98-52.5 9.85c-13.3 12.1-24.41 29.55-54.18 72.47-.47.73-6.25 10.54-13.07 0-29.29-42.23-40.8-60.29-54.18-72.47-17.39-15.83-52.5-9.85-52.5-9.85l83.2 123.74-82.97 123.36s36.57 4.62 53.95-11.21c11.49-10.46 17.58-20.37 52.51-70.72 6.81-10.52 12.57-.77 13.07 0 29.4 42.38 39.23 58.06 53.14 70.72 17.39 15.83 53.32 11.21 53.32 11.21L556.8 256.52z\"]\n};\nvar faWizardsOfTheCoast = {\n prefix: 'fab',\n iconName: 'wizards-of-the-coast',\n icon: [640, 512, [], \"f730\", \"M219.19 345.69c-1.9 1.38-11.07 8.44-.26 23.57 4.64 6.42 14.11 12.79 21.73 6.55 6.5-4.88 7.35-12.92.26-23.04-5.47-7.76-14.28-12.88-21.73-7.08zm336.75 75.94c-.34 1.7-.55 1.67.79 0 2.09-4.19 4.19-10.21 4.98-19.9 3.14-38.49-40.33-71.49-101.34-78.03-54.73-6.02-124.38 9.17-188.8 60.49l-.26 1.57c2.62 4.98 4.98 10.74 3.4 21.21l.79.26c63.89-58.4 131.19-77.25 184.35-73.85 58.4 3.67 100.03 34.04 100.03 68.08-.01 9.96-2.63 15.72-3.94 20.17zM392.28 240.42c.79 7.07 4.19 10.21 9.17 10.47 5.5.26 9.43-2.62 10.47-6.55.79-3.4 2.09-29.85 2.09-29.85s-11.26 6.55-14.93 10.47c-3.66 3.68-7.33 8.39-6.8 15.46zm-50.02-151.1C137.75 89.32 13.1 226.8.79 241.2c-1.05.52-1.31.79.79 1.31 60.49 16.5 155.81 81.18 196.13 202.16l1.05.26c55.25-69.92 140.88-128.05 236.99-128.05 80.92 0 130.15 42.16 130.15 80.39 0 18.33-6.55 33.52-22.26 46.35 0 .96-.2.79.79.79 14.66-10.74 27.5-28.8 27.5-48.18 0-22.78-12.05-38.23-12.05-38.23 7.07 7.07 10.74 16.24 10.74 16.24 5.76-40.85 26.97-62.32 26.97-62.32-2.36-9.69-6.81-17.81-6.81-17.81 7.59 8.12 14.4 27.5 14.4 41.37 0 10.47-3.4 22.78-12.57 31.95l.26.52c8.12-4.98 16.5-16.76 16.5-37.97 0-15.71-4.71-25.92-4.71-25.92 5.76-5.24 11.26-9.17 15.97-11.78.79 3.4 2.09 9.69 2.36 14.93 0 1.05.79 1.83 1.05 0 .79-5.76-.26-16.24-.26-16.5 6.02-3.14 9.69-4.45 9.69-4.45C617.74 176 489.43 89.32 342.26 89.32zm-99.24 289.62c-11.06 8.99-24.2 4.08-30.64-4.19-7.45-9.58-6.76-24.09 4.19-32.47 14.85-11.35 27.08-.49 31.16 5.5.28.39 12.13 16.57-4.71 31.16zm2.09-136.43l9.43-17.81 11.78 70.96-12.57 6.02-24.62-28.8 14.14-26.71 3.67 4.45-1.83-8.11zm18.59 117.58l-.26-.26c2.05-4.1-2.5-6.61-17.54-31.69-1.31-2.36-3.14-2.88-4.45-2.62l-.26-.52c7.86-5.76 15.45-10.21 25.4-15.71l.52.26c1.31 1.83 2.09 2.88 3.4 4.71l-.26.52c-1.05-.26-2.36-.79-5.24.26-2.09.79-7.86 3.67-12.31 7.59v1.31c1.57 2.36 3.93 6.55 5.76 9.69h.26c10.05-6.28 7.56-4.55 11.52-7.86h.26c.52 1.83.52 1.83 1.83 5.5l-.26.26c-3.06.61-4.65.34-11.52 5.5v.26c9.46 17.02 11.01 16.75 12.57 15.97l.26.26c-2.34 1.59-6.27 4.21-9.68 6.57zm55.26-32.47c-3.14 1.57-6.02 2.88-9.95 4.98l-.26-.26c1.29-2.59 1.16-2.71-11.78-32.47l-.26-.26c-.15 0-8.9 3.65-9.95 7.33h-.52l-1.05-5.76.26-.52c7.29-4.56 25.53-11.64 27.76-12.57l.52.26 3.14 4.98-.26.52c-3.53-1.76-7.35.76-12.31 2.62v.26c12.31 32.01 12.67 30.64 14.66 30.64v.25zm44.77-16.5c-4.19 1.05-5.24 1.31-9.69 2.88l-.26-.26.52-4.45c-1.05-3.4-3.14-11.52-3.67-13.62l-.26-.26c-3.4.79-8.9 2.62-12.83 3.93l-.26.26c.79 2.62 3.14 9.95 4.19 13.88.79 2.36 1.83 2.88 2.88 3.14v.52c-3.67 1.05-7.07 2.62-10.21 3.93l-.26-.26c1.05-1.31 1.05-2.88.26-4.98-1.05-3.14-8.12-23.83-9.17-27.23-.52-1.83-1.57-3.14-2.62-3.14v-.52c3.14-1.05 6.02-2.09 10.74-3.4l.26.26-.26 4.71c1.31 3.93 2.36 7.59 3.14 9.69h.26c3.93-1.31 9.43-2.88 12.83-3.93l.26-.26-2.62-9.43c-.52-1.83-1.05-3.4-2.62-3.93v-.26c4.45-1.05 7.33-1.83 10.74-2.36l.26.26c-1.05 1.31-1.05 2.88-.52 4.45 1.57 6.28 4.71 20.43 6.28 26.45.54 2.62 1.85 3.41 2.63 3.93zm32.21-6.81l-.26.26c-4.71.52-14.14 2.36-22.52 4.19l-.26-.26.79-4.19c-1.57-7.86-3.4-18.59-4.98-26.19-.26-1.83-.79-2.88-2.62-3.67l.79-.52c9.17-1.57 20.16-2.36 24.88-2.62l.26.26c.52 2.36.79 3.14 1.57 5.5l-.26.26c-1.14-1.14-3.34-3.2-16.24-.79l-.26.26c.26 1.57 1.05 6.55 1.57 9.95l.26.26c9.52-1.68 4.76-.06 10.74-2.36h.26c0 1.57-.26 1.83-.26 5.24h-.26c-4.81-1.03-2.15-.9-10.21 0l-.26.26c.26 2.09 1.57 9.43 2.09 12.57l.26.26c1.15.38 14.21-.65 16.24-4.71h.26c-.53 2.38-1.05 4.21-1.58 6.04zm10.74-44.51c-4.45 2.36-8.12 2.88-11 2.88-.25.02-11.41 1.09-17.54-9.95-6.74-10.79-.98-25.2 5.5-31.69 8.8-8.12 23.35-10.1 28.54-17.02 8.03-10.33-13.04-22.31-29.59-5.76l-2.62-2.88 5.24-16.24c25.59-1.57 45.2-3.04 50.02 16.24.79 3.14 0 9.43-.26 12.05 0 2.62-1.83 18.85-2.09 23.04-.52 4.19-.79 18.33-.79 20.69.26 2.36.52 4.19 1.57 5.5 1.57 1.83 5.76 1.83 5.76 1.83l-.79 4.71c-11.82-1.07-10.28-.59-20.43-1.05-3.22-5.15-2.23-3.28-4.19-7.86 0 .01-4.19 3.94-7.33 5.51zm37.18 21.21c-6.35-10.58-19.82-7.16-21.73 5.5-2.63 17.08 14.3 19.79 20.69 10.21l.26.26c-.52 1.83-1.83 6.02-1.83 6.28l-.52.52c-10.3 6.87-28.5-2.5-25.66-18.59 1.94-10.87 14.44-18.93 28.8-9.95l.26.52c0 1.06-.27 3.41-.27 5.25zm5.77-87.73v-6.55c.69 0 19.65 3.28 27.76 7.33l-1.57 17.54s10.21-9.43 15.45-10.74c5.24-1.57 14.93 7.33 14.93 7.33l-11.26 11.26c-12.07-6.35-19.59-.08-20.69.79-5.29 38.72-8.6 42.17 4.45 46.09l-.52 4.71c-17.55-4.29-18.53-4.5-36.92-7.33l.79-4.71c7.25 0 7.48-5.32 7.59-6.81 0 0 4.98-53.16 4.98-55.25-.02-2.87-4.99-3.66-4.99-3.66zm10.99 114.44c-8.12-2.09-14.14-11-10.74-20.69 3.14-9.43 12.31-12.31 18.85-10.21 9.17 2.62 12.83 11.78 10.74 19.38-2.61 8.9-9.42 13.87-18.85 11.52zm42.16 9.69c-2.36-.52-7.07-2.36-8.64-2.88v-.26l1.57-1.83c.59-8.24.59-7.27.26-7.59-4.82-1.81-6.66-2.36-7.07-2.36-1.31 1.83-2.88 4.45-3.67 5.5l-.79 3.4v.26c-1.31-.26-3.93-1.31-6.02-1.57v-.26l2.62-1.83c3.4-4.71 9.95-14.14 13.88-20.16v-2.09l.52-.26c2.09.79 5.5 2.09 7.59 2.88.48.48.18-1.87-1.05 25.14-.24 1.81.02 2.6.8 3.91zm-4.71-89.82c11.25-18.27 30.76-16.19 34.04-3.4L539.7 198c2.34-6.25-2.82-9.9-4.45-11.26l1.83-3.67c12.22 10.37 16.38 13.97 22.52 20.43-25.91 73.07-30.76 80.81-24.62 84.32l-1.83 4.45c-6.37-3.35-8.9-4.42-17.81-8.64l2.09-6.81c-.26-.26-3.93 3.93-9.69 3.67-19.06-1.3-22.89-31.75-9.67-52.9zm29.33 79.34c0-5.71-6.34-7.89-7.86-5.24-1.31 2.09 1.05 4.98 2.88 8.38 1.57 2.62 2.62 6.28 1.05 9.43-2.64 6.34-12.4 5.31-15.45-.79 0-.7-.27.09 1.83-4.71l.79-.26c-.57 5.66 6.06 9.61 8.38 4.98 1.05-2.09-.52-5.5-2.09-8.38-1.57-2.62-3.67-6.28-1.83-9.69 2.72-5.06 11.25-4.47 14.66 2.36v.52l-2.36 3.4zm21.21 13.36c-1.96-3.27-.91-2.14-4.45-4.71h-.26c-2.36 4.19-5.76 10.47-8.64 16.24-1.31 2.36-1.05 3.4-.79 3.93l-.26.26-5.76-4.45.26-.26 2.09-1.31c3.14-5.76 6.55-12.05 9.17-17.02v-.26c-2.64-1.98-1.22-1.51-6.02-1.83v-.26l3.14-3.4h.26c3.67 2.36 9.95 6.81 12.31 8.9l.26.26-1.31 3.91zm27.23-44.26l-2.88-2.88c.79-2.36 1.83-4.98 2.09-7.59.75-9.74-11.52-11.84-11.52-4.98 0 4.98 7.86 19.38 7.86 27.76 0 10.21-5.76 15.71-13.88 16.5-8.38.79-20.16-10.47-20.16-10.47l4.98-14.4 2.88 2.09c-2.97 17.8 17.68 20.37 13.35 5.24-1.06-4.02-18.75-34.2 2.09-38.23 13.62-2.36 23.04 16.5 23.04 16.5l-7.85 10.46zm35.62-10.21c-11-30.38-60.49-127.53-191.95-129.62-53.42-1.05-94.27 15.45-132.76 37.97l85.63-9.17-91.39 20.69 25.14 19.64-3.93-16.5c7.5-1.71 39.15-8.45 66.77-8.9l-22.26 80.39c13.61-.7 18.97-8.98 19.64-22.78l4.98-1.05.26 26.71c-22.46 3.21-37.3 6.69-49.49 9.95l13.09-43.21-61.54-36.66 2.36 8.12 10.21 4.98c6.28 18.59 19.38 56.56 20.43 58.66 1.95 4.28 3.16 5.78 12.05 4.45l1.05 4.98c-16.08 4.86-23.66 7.61-39.02 14.4l-2.36-4.71c4.4-2.94 8.73-3.94 5.5-12.83-23.7-62.5-21.48-58.14-22.78-59.44l2.36-4.45 33.52 67.3c-3.84-11.87 1.68 1.69-32.99-78.82l-41.9 88.51 4.71-13.88-35.88-42.16 27.76 93.48-11.78 8.38C95 228.58 101.05 231.87 93.23 231.52c-5.5-.26-13.62 5.5-13.62 5.5L74.63 231c30.56-23.53 31.62-24.33 58.4-42.68l4.19 7.07s-5.76 4.19-7.86 7.07c-5.9 9.28 1.67 13.28 61.8 75.68l-18.85-58.92 39.8-10.21 25.66 30.64 4.45-12.31-4.98-24.62 13.09-3.4.52 3.14 3.67-10.47-94.27 29.33 11.26-4.98-13.62-42.42 17.28-9.17 30.11 36.14 28.54-13.09c-1.41-7.47-2.47-14.5-4.71-19.64l17.28 13.88 4.71-2.09-59.18-42.68 23.08 11.5c18.98-6.07 25.23-7.47 32.21-9.69l2.62 11c-12.55 12.55 1.43 16.82 6.55 19.38l-13.62-61.01 12.05 28.28c4.19-1.31 7.33-2.09 7.33-2.09l2.62 8.64s-3.14 1.05-6.28 2.09l8.9 20.95 33.78-65.73-20.69 61.01c42.42-24.09 81.44-36.66 131.98-35.88 67.04 1.05 167.33 40.85 199.8 139.83.78 2.1-.01 2.63-.79.27zM203.48 152.43s1.83-.52 4.19-1.31l9.43 7.59c-.4 0-3.44-.25-11.26 2.36l-2.36-8.64zm143.76 38.5c-1.57-.6-26.46-4.81-33.26 20.69l21.73 17.02 11.53-37.71zM318.43 67.07c-58.4 0-106.05 12.05-114.96 14.4v.79c8.38 2.09 14.4 4.19 21.21 11.78l1.57.26c6.55-1.83 48.97-13.88 110.24-13.88 180.16 0 301.67 116.79 301.67 223.37v9.95c0 1.31.79 2.62 1.05.52.52-2.09.79-8.64.79-19.64.26-83.79-96.63-227.55-321.57-227.55zm211.06 169.68c1.31-5.76 0-12.31-7.33-13.09-9.62-1.13-16.14 23.79-17.02 33.52-.79 5.5-1.31 14.93 6.02 14.93 4.68-.01 9.72-.91 18.33-35.36zm-61.53 42.95c-2.62-.79-9.43-.79-12.57 10.47-1.83 6.81.52 13.35 6.02 14.66 3.67 1.05 8.9.52 11.78-10.74 2.62-9.94-1.83-13.61-5.23-14.39zM491 300.65c1.83.52 3.14 1.05 5.76 1.83 0-1.83.52-8.38.79-12.05-1.05 1.31-5.5 8.12-6.55 9.95v.27z\"]\n};\nvar faWodu = {\n prefix: 'fab',\n iconName: 'wodu',\n icon: [640, 512, [], \"e088\", \"M178.414 339.706H141.1L112.166 223.475h-.478L83.228 339.706H45.2L0 168.946H37.548L64.574 285.177h.478L94.707 168.946h35.157l29.178 117.667h.479L187.5 168.946h36.831zM271.4 212.713c38.984 0 64.1 25.828 64.1 65.291 0 39.222-25.111 65.05-64.1 65.05-38.743 0-63.855-25.828-63.855-65.05C207.547 238.541 232.659 212.713 271.4 212.713zm0 104.753c23.2 0 30.133-19.852 30.133-39.462 0-19.852-6.934-39.7-30.133-39.7-27.7 0-29.894 19.85-29.894 39.7C241.508 297.614 248.443 317.466 271.4 317.466zM435.084 323.922h-.478c-7.893 13.392-21.765 19.132-37.548 19.132-37.31 0-55.485-32.045-55.485-66.246 0-33.243 18.415-64.095 54.767-64.095 14.589 0 28.938 6.218 36.831 18.416h.24V168.946h33.96v170.76H435.084zM405.428 238.3c-22.24 0-29.894 19.134-29.894 39.463 0 19.371 8.848 39.7 29.894 39.7 22.482 0 29.178-19.613 29.178-39.94C434.606 257.436 427.432 238.3 405.428 238.3zM592.96 339.706H560.673V322.487h-.718c-8.609 13.87-23.436 20.567-37.786 20.567-36.113 0-45.2-20.328-45.2-50.941V216.061h33.959V285.9c0 20.329 5.979 30.372 21.765 30.372 18.415 0 26.306-10.283 26.306-35.393V216.061H592.96zM602.453 302.876H640v36.83H602.453z\"]\n};\nvar faWolfPackBattalion = {\n prefix: 'fab',\n iconName: 'wolf-pack-battalion',\n icon: [512, 512, [], \"f514\", \"M267.73 471.53l10.56 15.84 5.28-12.32 5.28 7V512c21.06-7.92 21.11-66.86 25.51-97.21 4.62-31.89-.88-92.81 81.37-149.11-8.88-23.61-12-49.43-2.64-80.05C421 189 447 196.21 456.43 239.73l-30.35 8.36c11.15 23 17 46.76 13.2 72.14L412 313.18l-6.16 33.43-18.47-7-8.8 33.39-19.35-7 26.39 21.11 8.8-28.15L419 364.2l7-35.63 26.39 14.52c.25-20 7-58.06-8.8-84.45l26.39 5.28c4-22.07-2.38-39.21-7.92-56.74l22.43 9.68c-.44-25.07-29.94-56.79-61.58-58.5-20.22-1.09-56.74-25.17-54.1-51.9 2-19.87 17.45-42.62 43.11-49.7-44 36.51-9.68 67.3 5.28 73.46 4.4-11.44 17.54-69.08 0-130.2-40.39 22.87-89.65 65.1-93.2 147.79l-58 38.71-3.52 93.25L369.78 220l7 7-17.59 3.52-44 38.71-15.84-5.28-28.1 49.25-3.52 119.64 21.11 15.84-32.55 15.84-32.55-15.84 21.11-15.84-3.52-119.64-28.15-49.26-15.84 5.28-44-38.71-17.58-3.51 7-7 107.33 59.82-3.52-93.25-58.06-38.71C185 65.1 135.77 22.87 95.3 0c-17.54 61.12-4.4 118.76 0 130.2 15-6.16 49.26-36.95 5.28-73.46 25.66 7.08 41.15 29.83 43.11 49.7 2.63 26.74-33.88 50.81-54.1 51.9-31.65 1.72-61.15 33.44-61.59 58.51l22.43-9.68c-5.54 17.53-11.91 34.67-7.92 56.74l26.39-5.28c-15.76 26.39-9.05 64.43-8.8 84.45l26.39-14.52 7 35.63 24.63-5.28 8.8 28.15L153.35 366 134 373l-8.8-33.43-18.47 7-6.16-33.43-27.27 7c-3.82-25.38 2-49.1 13.2-72.14l-30.35-8.36c9.4-43.52 35.47-50.77 63.34-54.1 9.36 30.62 6.24 56.45-2.64 80.05 82.25 56.3 76.75 117.23 81.37 149.11 4.4 30.35 4.45 89.29 25.51 97.21v-29.83l5.28-7 5.28 12.32 10.56-15.84 11.44 21.11 11.43-21.1zm79.17-95L331.06 366c7.47-4.36 13.76-8.42 19.35-12.32-.6 7.22-.27 13.84-3.51 22.84zm28.15-49.26c-.4 10.94-.9 21.66-1.76 31.67-7.85-1.86-15.57-3.8-21.11-7 8.24-7.94 15.55-16.32 22.87-24.68zm24.63 5.28c0-13.43-2.05-24.21-5.28-33.43a235 235 0 0 1-18.47 27.27zm3.52-80.94c19.44 12.81 27.8 33.66 29.91 56.3-12.32-4.53-24.63-9.31-36.95-10.56 5.06-12 6.65-28.14 7-45.74zm-1.76-45.74c.81 14.3 1.84 28.82 1.76 42.23 19.22-8.11 29.78-9.72 44-14.08-10.61-18.96-27.2-25.53-45.76-28.16zM165.68 376.52L181.52 366c-7.47-4.36-13.76-8.42-19.35-12.32.6 7.26.27 13.88 3.51 22.88zm-28.15-49.26c.4 10.94.9 21.66 1.76 31.67 7.85-1.86 15.57-3.8 21.11-7-8.24-7.93-15.55-16.31-22.87-24.67zm-24.64 5.28c0-13.43 2-24.21 5.28-33.43a235 235 0 0 0 18.47 27.27zm-3.52-80.94c-19.44 12.81-27.8 33.66-29.91 56.3 12.32-4.53 24.63-9.31 37-10.56-5-12-6.65-28.14-7-45.74zm1.76-45.74c-.81 14.3-1.84 28.82-1.76 42.23-19.22-8.11-29.78-9.72-44-14.08 10.63-18.95 27.23-25.52 45.76-28.15z\"]\n};\nvar faWordpress = {\n prefix: 'fab',\n iconName: 'wordpress',\n icon: [512, 512, [], \"f19a\", \"M61.7 169.4l101.5 278C92.2 413 43.3 340.2 43.3 256c0-30.9 6.6-60.1 18.4-86.6zm337.9 75.9c0-26.3-9.4-44.5-17.5-58.7-10.8-17.5-20.9-32.4-20.9-49.9 0-19.6 14.8-37.8 35.7-37.8.9 0 1.8.1 2.8.2-37.9-34.7-88.3-55.9-143.7-55.9-74.3 0-139.7 38.1-177.8 95.9 5 .2 9.7.3 13.7.3 22.2 0 56.7-2.7 56.7-2.7 11.5-.7 12.8 16.2 1.4 17.5 0 0-11.5 1.3-24.3 2l77.5 230.4L249.8 247l-33.1-90.8c-11.5-.7-22.3-2-22.3-2-11.5-.7-10.1-18.2 1.3-17.5 0 0 35.1 2.7 56 2.7 22.2 0 56.7-2.7 56.7-2.7 11.5-.7 12.8 16.2 1.4 17.5 0 0-11.5 1.3-24.3 2l76.9 228.7 21.2-70.9c9-29.4 16-50.5 16-68.7zm-139.9 29.3l-63.8 185.5c19.1 5.6 39.2 8.7 60.1 8.7 24.8 0 48.5-4.3 70.6-12.1-.6-.9-1.1-1.9-1.5-2.9l-65.4-179.2zm183-120.7c.9 6.8 1.4 14 1.4 21.9 0 21.6-4 45.8-16.2 76.2l-65 187.9C426.2 403 468.7 334.5 468.7 256c0-37-9.4-71.8-26-102.1zM504 256c0 136.8-111.3 248-248 248C119.2 504 8 392.7 8 256 8 119.2 119.2 8 256 8c136.7 0 248 111.2 248 248zm-11.4 0c0-130.5-106.2-236.6-236.6-236.6C125.5 19.4 19.4 125.5 19.4 256S125.6 492.6 256 492.6c130.5 0 236.6-106.1 236.6-236.6z\"]\n};\nvar faWordpressSimple = {\n prefix: 'fab',\n iconName: 'wordpress-simple',\n icon: [512, 512, [], \"f411\", \"M256 8C119.3 8 8 119.2 8 256c0 136.7 111.3 248 248 248s248-111.3 248-248C504 119.2 392.7 8 256 8zM33 256c0-32.3 6.9-63 19.3-90.7l106.4 291.4C84.3 420.5 33 344.2 33 256zm223 223c-21.9 0-43-3.2-63-9.1l66.9-194.4 68.5 187.8c.5 1.1 1 2.1 1.6 3.1-23.1 8.1-48 12.6-74 12.6zm30.7-327.5c13.4-.7 25.5-2.1 25.5-2.1 12-1.4 10.6-19.1-1.4-18.4 0 0-36.1 2.8-59.4 2.8-21.9 0-58.7-2.8-58.7-2.8-12-.7-13.4 17.7-1.4 18.4 0 0 11.4 1.4 23.4 2.1l34.7 95.2L200.6 393l-81.2-241.5c13.4-.7 25.5-2.1 25.5-2.1 12-1.4 10.6-19.1-1.4-18.4 0 0-36.1 2.8-59.4 2.8-4.2 0-9.1-.1-14.4-.3C109.6 73 178.1 33 256 33c58 0 110.9 22.2 150.6 58.5-1-.1-1.9-.2-2.9-.2-21.9 0-37.4 19.1-37.4 39.6 0 18.4 10.6 33.9 21.9 52.3 8.5 14.8 18.4 33.9 18.4 61.5 0 19.1-7.3 41.2-17 72.1l-22.2 74.3-80.7-239.6zm81.4 297.2l68.1-196.9c12.7-31.8 17-57.2 17-79.9 0-8.2-.5-15.8-1.5-22.9 17.4 31.8 27.3 68.2 27.3 107 0 82.3-44.6 154.1-110.9 192.7z\"]\n};\nvar faWpbeginner = {\n prefix: 'fab',\n iconName: 'wpbeginner',\n icon: [512, 512, [], \"f297\", \"M462.799 322.374C519.01 386.682 466.961 480 370.944 480c-39.602 0-78.824-17.687-100.142-50.04-6.887.356-22.702.356-29.59 0C219.848 462.381 180.588 480 141.069 480c-95.49 0-148.348-92.996-91.855-157.626C-29.925 190.523 80.479 32 256.006 32c175.632 0 285.87 158.626 206.793 290.374zm-339.647-82.972h41.529v-58.075h-41.529v58.075zm217.18 86.072v-23.839c-60.506 20.915-132.355 9.198-187.589-33.971l.246 24.897c51.101 46.367 131.746 57.875 187.343 32.913zm-150.753-86.072h166.058v-58.075H189.579v58.075z\"]\n};\nvar faWpexplorer = {\n prefix: 'fab',\n iconName: 'wpexplorer',\n icon: [512, 512, [], \"f2de\", \"M512 256c0 141.2-114.7 256-256 256C114.8 512 0 397.3 0 256S114.7 0 256 0s256 114.7 256 256zm-32 0c0-123.2-100.3-224-224-224C132.5 32 32 132.5 32 256s100.5 224 224 224 224-100.5 224-224zM160.9 124.6l86.9 37.1-37.1 86.9-86.9-37.1 37.1-86.9zm110 169.1l46.6 94h-14.6l-50-100-48.9 100h-14l51.1-106.9-22.3-9.4 6-14 68.6 29.1-6 14.3-16.5-7.1zm-11.8-116.3l68.6 29.4-29.4 68.3L230 246l29.1-68.6zm80.3 42.9l54.6 23.1-23.4 54.3-54.3-23.1 23.1-54.3z\"]\n};\nvar faWpforms = {\n prefix: 'fab',\n iconName: 'wpforms',\n icon: [448, 512, [], \"f298\", \"M448 75.2v361.7c0 24.3-19 43.2-43.2 43.2H43.2C19.3 480 0 461.4 0 436.8V75.2C0 51.1 18.8 32 43.2 32h361.7c24 0 43.1 18.8 43.1 43.2zm-37.3 361.6V75.2c0-3-2.6-5.8-5.8-5.8h-9.3L285.3 144 224 94.1 162.8 144 52.5 69.3h-9.3c-3.2 0-5.8 2.8-5.8 5.8v361.7c0 3 2.6 5.8 5.8 5.8h361.7c3.2.1 5.8-2.7 5.8-5.8zM150.2 186v37H76.7v-37h73.5zm0 74.4v37.3H76.7v-37.3h73.5zm11.1-147.3l54-43.7H96.8l64.5 43.7zm210 72.9v37h-196v-37h196zm0 74.4v37.3h-196v-37.3h196zm-84.6-147.3l64.5-43.7H232.8l53.9 43.7zM371.3 335v37.3h-99.4V335h99.4z\"]\n};\nvar faWpressr = {\n prefix: 'fab',\n iconName: 'wpressr',\n icon: [496, 512, [], \"f3e4\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm171.33 158.6c-15.18 34.51-30.37 69.02-45.63 103.5-2.44 5.51-6.89 8.24-12.97 8.24-23.02-.01-46.03.06-69.05-.05-5.12-.03-8.25 1.89-10.34 6.72-10.19 23.56-20.63 47-30.95 70.5-1.54 3.51-4.06 5.29-7.92 5.29-45.94-.01-91.87-.02-137.81 0-3.13 0-5.63-1.15-7.72-3.45-11.21-12.33-22.46-24.63-33.68-36.94-2.69-2.95-2.79-6.18-1.21-9.73 8.66-19.54 17.27-39.1 25.89-58.66 12.93-29.35 25.89-58.69 38.75-88.08 1.7-3.88 4.28-5.68 8.54-5.65 14.24.1 28.48.02 42.72.05 6.24.01 9.2 4.84 6.66 10.59-13.6 30.77-27.17 61.55-40.74 92.33-5.72 12.99-11.42 25.99-17.09 39-3.91 8.95 7.08 11.97 10.95 5.6.23-.37-1.42 4.18 30.01-67.69 1.36-3.1 3.41-4.4 6.77-4.39 15.21.08 30.43.02 45.64.04 5.56.01 7.91 3.64 5.66 8.75-8.33 18.96-16.71 37.9-24.98 56.89-4.98 11.43 8.08 12.49 11.28 5.33.04-.08 27.89-63.33 32.19-73.16 2.02-4.61 5.44-6.51 10.35-6.5 26.43.05 52.86 0 79.29.05 12.44.02 13.93-13.65 3.9-13.64-25.26.03-50.52.02-75.78.02-6.27 0-7.84-2.47-5.27-8.27 5.78-13.06 11.59-26.11 17.3-39.21 1.73-3.96 4.52-5.79 8.84-5.78 23.09.06 25.98.02 130.78.03 6.08-.01 8.03 2.79 5.62 8.27z\"]\n};\nvar faXbox = {\n prefix: 'fab',\n iconName: 'xbox',\n icon: [512, 512, [], \"f412\", \"M369.9 318.2c44.3 54.3 64.7 98.8 54.4 118.7-7.9 15.1-56.7 44.6-92.6 55.9-29.6 9.3-68.4 13.3-100.4 10.2-38.2-3.7-76.9-17.4-110.1-39C93.3 445.8 87 438.3 87 423.4c0-29.9 32.9-82.3 89.2-142.1 32-33.9 76.5-73.7 81.4-72.6 9.4 2.1 84.3 75.1 112.3 109.5zM188.6 143.8c-29.7-26.9-58.1-53.9-86.4-63.4-15.2-5.1-16.3-4.8-28.7 8.1-29.2 30.4-53.5 79.7-60.3 122.4-5.4 34.2-6.1 43.8-4.2 60.5 5.6 50.5 17.3 85.4 40.5 120.9 9.5 14.6 12.1 17.3 9.3 9.9-4.2-11-.3-37.5 9.5-64 14.3-39 53.9-112.9 120.3-194.4zm311.6 63.5C483.3 127.3 432.7 77 425.6 77c-7.3 0-24.2 6.5-36 13.9-23.3 14.5-41 31.4-64.3 52.8C367.7 197 427.5 283.1 448.2 346c6.8 20.7 9.7 41.1 7.4 52.3-1.7 8.5-1.7 8.5 1.4 4.6 6.1-7.7 19.9-31.3 25.4-43.5 7.4-16.2 15-40.2 18.6-58.7 4.3-22.5 3.9-70.8-.8-93.4zM141.3 43C189 40.5 251 77.5 255.6 78.4c.7.1 10.4-4.2 21.6-9.7 63.9-31.1 94-25.8 107.4-25.2-63.9-39.3-152.7-50-233.9-11.7-23.4 11.1-24 11.9-9.4 11.2z\"]\n};\nvar faXing = {\n prefix: 'fab',\n iconName: 'xing',\n icon: [384, 512, [], \"f168\", \"M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3c.2 0 .2-.1 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2l44.7 77.5zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1z\"]\n};\nvar faXingSquare = {\n prefix: 'fab',\n iconName: 'xing-square',\n icon: [448, 512, [], \"f169\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM140.4 320.2H93.8c-5.5 0-8.7-5.3-6-10.3l49.3-86.7c.1 0 .1-.1 0-.2l-31.4-54c-3-5.6.2-10.1 6-10.1h46.6c5.2 0 9.5 2.9 12.9 8.7l31.9 55.3c-1.3 2.3-18 31.7-50.1 88.2-3.5 6.2-7.7 9.1-12.6 9.1zm219.7-214.1L257.3 286.8v.2l65.5 119c2.8 5.1.1 10.1-6 10.1h-46.6c-5.5 0-9.7-2.9-12.9-8.7l-66-120.3c2.3-4.1 36.8-64.9 103.4-182.3 3.3-5.8 7.4-8.7 12.5-8.7h46.9c5.7-.1 8.8 4.7 6 10z\"]\n};\nvar faYCombinator = {\n prefix: 'fab',\n iconName: 'y-combinator',\n icon: [448, 512, [], \"f23b\", \"M448 32v448H0V32h448zM236 287.5L313.5 142h-32.7L235 233c-4.7 9.3-9 18.3-12.8 26.8L210 233l-45.2-91h-35l76.7 143.8v94.5H236v-92.8z\"]\n};\nvar faYahoo = {\n prefix: 'fab',\n iconName: 'yahoo',\n icon: [512, 512, [], \"f19e\", \"M223.69,141.06,167,284.23,111,141.06H14.93L120.76,390.19,82.19,480h94.17L317.27,141.06Zm105.4,135.79a58.22,58.22,0,1,0,58.22,58.22A58.22,58.22,0,0,0,329.09,276.85ZM394.65,32l-93,223.47H406.44L499.07,32Z\"]\n};\nvar faYammer = {\n prefix: 'fab',\n iconName: 'yammer',\n icon: [512, 512, [], \"f840\", \"M421.78 152.17A23.06 23.06 0 0 0 400.9 112c-.83.43-1.71.9-2.63 1.4-15.25 8.4-118.33 80.62-106.69 88.77s82.04-23.61 130.2-50zm0 217.17c-48.16-26.38-118.64-58.1-130.2-50s91.42 80.35 106.69 88.74c.92.51 1.8 1 2.63 1.41a23.07 23.07 0 0 0 20.88-40.15zM464.21 237c-.95 0-1.95-.06-3-.06-17.4 0-142.52 13.76-136.24 26.51s83.3 18.74 138.21 18.76a23 23 0 0 0 1-45.21zM31 96.65a24.88 24.88 0 0 1 46.14-18.4l81 205.06h1.21l77-203.53a23.52 23.52 0 0 1 44.45 15.27L171.2 368.44C152.65 415.66 134.08 448 77.91 448a139.67 139.67 0 0 1-23.81-1.95 21.31 21.31 0 0 1 6.9-41.77c.66.06 10.91.66 13.86.66 30.47 0 43.74-18.94 58.07-59.41z\"]\n};\nvar faYandex = {\n prefix: 'fab',\n iconName: 'yandex',\n icon: [256, 512, [], \"f413\", \"M153.1 315.8L65.7 512H2l96-209.8c-45.1-22.9-75.2-64.4-75.2-141.1C22.7 53.7 90.8 0 171.7 0H254v512h-55.1V315.8h-45.8zm45.8-269.3h-29.4c-44.4 0-87.4 29.4-87.4 114.6 0 82.3 39.4 108.8 87.4 108.8h29.4V46.5z\"]\n};\nvar faYandexInternational = {\n prefix: 'fab',\n iconName: 'yandex-international',\n icon: [320, 512, [], \"f414\", \"M129.5 512V345.9L18.5 48h55.8l81.8 229.7L250.2 0h51.3L180.8 347.8V512h-51.3z\"]\n};\nvar faYarn = {\n prefix: 'fab',\n iconName: 'yarn',\n icon: [496, 512, [], \"f7e3\", \"M393.9 345.2c-39 9.3-48.4 32.1-104 47.4 0 0-2.7 4-10.4 5.8-13.4 3.3-63.9 6-68.5 6.1-12.4.1-19.9-3.2-22-8.2-6.4-15.3 9.2-22 9.2-22-8.1-5-9-9.9-9.8-8.1-2.4 5.8-3.6 20.1-10.1 26.5-8.8 8.9-25.5 5.9-35.3.8-10.8-5.7.8-19.2.8-19.2s-5.8 3.4-10.5-3.6c-6-9.3-17.1-37.3 11.5-62-1.3-10.1-4.6-53.7 40.6-85.6 0 0-20.6-22.8-12.9-43.3 5-13.4 7-13.3 8.6-13.9 5.7-2.2 11.3-4.6 15.4-9.1 20.6-22.2 46.8-18 46.8-18s12.4-37.8 23.9-30.4c3.5 2.3 16.3 30.6 16.3 30.6s13.6-7.9 15.1-5c8.2 16 9.2 46.5 5.6 65.1-6.1 30.6-21.4 47.1-27.6 57.5-1.4 2.4 16.5 10 27.8 41.3 10.4 28.6 1.1 52.7 2.8 55.3.8 1.4 13.7.8 36.4-13.2 12.8-7.9 28.1-16.9 45.4-17 16.7-.5 17.6 19.2 4.9 22.2zM496 256c0 136.9-111.1 248-248 248S0 392.9 0 256 111.1 8 248 8s248 111.1 248 248zm-79.3 75.2c-1.7-13.6-13.2-23-28-22.8-22 .3-40.5 11.7-52.8 19.2-4.8 3-8.9 5.2-12.4 6.8 3.1-44.5-22.5-73.1-28.7-79.4 7.8-11.3 18.4-27.8 23.4-53.2 4.3-21.7 3-55.5-6.9-74.5-1.6-3.1-7.4-11.2-21-7.4-9.7-20-13-22.1-15.6-23.8-1.1-.7-23.6-16.4-41.4 28-12.2.9-31.3 5.3-47.5 22.8-2 2.2-5.9 3.8-10.1 5.4h.1c-8.4 3-12.3 9.9-16.9 22.3-6.5 17.4.2 34.6 6.8 45.7-17.8 15.9-37 39.8-35.7 82.5-34 36-11.8 73-5.6 79.6-1.6 11.1 3.7 19.4 12 23.8 12.6 6.7 30.3 9.6 43.9 2.8 4.9 5.2 13.8 10.1 30 10.1 6.8 0 58-2.9 72.6-6.5 6.8-1.6 11.5-4.5 14.6-7.1 9.8-3.1 36.8-12.3 62.2-28.7 18-11.7 24.2-14.2 37.6-17.4 12.9-3.2 21-15.1 19.4-28.2z\"]\n};\nvar faYelp = {\n prefix: 'fab',\n iconName: 'yelp',\n icon: [384, 512, [], \"f1e9\", \"M42.9 240.32l99.62 48.61c19.2 9.4 16.2 37.51-4.5 42.71L30.5 358.45a22.79 22.79 0 0 1-28.21-19.6 197.16 197.16 0 0 1 9-85.32 22.8 22.8 0 0 1 31.61-13.21zm44 239.25a199.45 199.45 0 0 0 79.42 32.11A22.78 22.78 0 0 0 192.94 490l3.9-110.82c.7-21.3-25.5-31.91-39.81-16.1l-74.21 82.4a22.82 22.82 0 0 0 4.09 34.09zm145.34-109.92l58.81 94a22.93 22.93 0 0 0 34 5.5 198.36 198.36 0 0 0 52.71-67.61A23 23 0 0 0 364.17 370l-105.42-34.26c-20.31-6.5-37.81 15.8-26.51 33.91zm148.33-132.23a197.44 197.44 0 0 0-50.41-69.31 22.85 22.85 0 0 0-34 4.4l-62 91.92c-11.9 17.7 4.7 40.61 25.2 34.71L366 268.63a23 23 0 0 0 14.61-31.21zM62.11 30.18a22.86 22.86 0 0 0-9.9 32l104.12 180.44c11.7 20.2 42.61 11.9 42.61-11.4V22.88a22.67 22.67 0 0 0-24.5-22.8 320.37 320.37 0 0 0-112.33 30.1z\"]\n};\nvar faYoast = {\n prefix: 'fab',\n iconName: 'yoast',\n icon: [448, 512, [], \"f2b1\", \"M91.3 76h186l-7 18.9h-179c-39.7 0-71.9 31.6-71.9 70.3v205.4c0 35.4 24.9 70.3 84 70.3V460H91.3C41.2 460 0 419.8 0 370.5V165.2C0 115.9 40.7 76 91.3 76zm229.1-56h66.5C243.1 398.1 241.2 418.9 202.2 459.3c-20.8 21.6-49.3 31.7-78.3 32.7v-51.1c49.2-7.7 64.6-49.9 64.6-75.3 0-20.1.6-12.6-82.1-223.2h61.4L218.2 299 320.4 20zM448 161.5V460H234c6.6-9.6 10.7-16.3 12.1-19.4h182.5V161.5c0-32.5-17.1-51.9-48.2-62.9l6.7-17.6c41.7 13.6 60.9 43.1 60.9 80.5z\"]\n};\nvar faYoutube = {\n prefix: 'fab',\n iconName: 'youtube',\n icon: [576, 512, [], \"f167\", \"M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z\"]\n};\nvar faYoutubeSquare = {\n prefix: 'fab',\n iconName: 'youtube-square',\n icon: [448, 512, [], \"f431\", \"M186.8 202.1l95.2 54.1-95.2 54.1V202.1zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-42 176.3s0-59.6-7.6-88.2c-4.2-15.8-16.5-28.2-32.2-32.4C337.9 128 224 128 224 128s-113.9 0-142.2 7.7c-15.7 4.2-28 16.6-32.2 32.4-7.6 28.5-7.6 88.2-7.6 88.2s0 59.6 7.6 88.2c4.2 15.8 16.5 27.7 32.2 31.9C110.1 384 224 384 224 384s113.9 0 142.2-7.7c15.7-4.2 28-16.1 32.2-31.9 7.6-28.5 7.6-88.1 7.6-88.1z\"]\n};\nvar faZhihu = {\n prefix: 'fab',\n iconName: 'zhihu',\n icon: [640, 512, [], \"f63f\", \"M170.54 148.13v217.54l23.43.01 7.71 26.37 42.01-26.37h49.53V148.13H170.54zm97.75 193.93h-27.94l-27.9 17.51-5.08-17.47-11.9-.04V171.75h72.82v170.31zm-118.46-94.39H97.5c1.74-27.1 2.2-51.59 2.2-73.46h51.16s1.97-22.56-8.58-22.31h-88.5c3.49-13.12 7.87-26.66 13.12-40.67 0 0-24.07 0-32.27 21.57-3.39 8.9-13.21 43.14-30.7 78.12 5.89-.64 25.37-1.18 36.84-22.21 2.11-5.89 2.51-6.66 5.14-14.53h28.87c0 10.5-1.2 66.88-1.68 73.44H20.83c-11.74 0-15.56 23.62-15.56 23.62h65.58C66.45 321.1 42.83 363.12 0 396.34c20.49 5.85 40.91-.93 51-9.9 0 0 22.98-20.9 35.59-69.25l53.96 64.94s7.91-26.89-1.24-39.99c-7.58-8.92-28.06-33.06-36.79-41.81L87.9 311.95c4.36-13.98 6.99-27.55 7.87-40.67h61.65s-.09-23.62-7.59-23.62v.01zm412.02-1.6c20.83-25.64 44.98-58.57 44.98-58.57s-18.65-14.8-27.38-4.06c-6 8.15-36.83 48.2-36.83 48.2l19.23 14.43zm-150.09-59.09c-9.01-8.25-25.91 2.13-25.91 2.13s39.52 55.04 41.12 57.45l19.46-13.73s-25.67-37.61-34.66-45.86h-.01zM640 258.35c-19.78 0-130.91.93-131.06.93v-101c4.81 0 12.42-.4 22.85-1.2 40.88-2.41 70.13-4 87.77-4.81 0 0 12.22-27.19-.59-33.44-3.07-1.18-23.17 4.58-23.17 4.58s-165.22 16.49-232.36 18.05c1.6 8.82 7.62 17.08 15.78 19.55 13.31 3.48 22.69 1.7 49.15.89 24.83-1.6 43.68-2.43 56.51-2.43v99.81H351.41s2.82 22.31 25.51 22.85h107.94v70.92c0 13.97-11.19 21.99-24.48 21.12-14.08.11-26.08-1.15-41.69-1.81 1.99 3.97 6.33 14.39 19.31 21.84 9.88 4.81 16.17 6.57 26.02 6.57 29.56 0 45.67-17.28 44.89-45.31v-73.32h122.36c9.68 0 8.7-23.78 8.7-23.78l.03-.01z\"]\n};\nvar _iconsCache = {\n fa500px: fa500px,\n faAccessibleIcon: faAccessibleIcon,\n faAccusoft: faAccusoft,\n faAcquisitionsIncorporated: faAcquisitionsIncorporated,\n faAdn: faAdn,\n faAdversal: faAdversal,\n faAffiliatetheme: faAffiliatetheme,\n faAirbnb: faAirbnb,\n faAlgolia: faAlgolia,\n faAlipay: faAlipay,\n faAmazon: faAmazon,\n faAmazonPay: faAmazonPay,\n faAmilia: faAmilia,\n faAndroid: faAndroid,\n faAngellist: faAngellist,\n faAngrycreative: faAngrycreative,\n faAngular: faAngular,\n faAppStore: faAppStore,\n faAppStoreIos: faAppStoreIos,\n faApper: faApper,\n faApple: faApple,\n faApplePay: faApplePay,\n faArtstation: faArtstation,\n faAsymmetrik: faAsymmetrik,\n faAtlassian: faAtlassian,\n faAudible: faAudible,\n faAutoprefixer: faAutoprefixer,\n faAvianex: faAvianex,\n faAviato: faAviato,\n faAws: faAws,\n faBandcamp: faBandcamp,\n faBattleNet: faBattleNet,\n faBehance: faBehance,\n faBehanceSquare: faBehanceSquare,\n faBimobject: faBimobject,\n faBitbucket: faBitbucket,\n faBitcoin: faBitcoin,\n faBity: faBity,\n faBlackTie: faBlackTie,\n faBlackberry: faBlackberry,\n faBlogger: faBlogger,\n faBloggerB: faBloggerB,\n faBluetooth: faBluetooth,\n faBluetoothB: faBluetoothB,\n faBootstrap: faBootstrap,\n faBtc: faBtc,\n faBuffer: faBuffer,\n faBuromobelexperte: faBuromobelexperte,\n faBuyNLarge: faBuyNLarge,\n faBuysellads: faBuysellads,\n faCanadianMapleLeaf: faCanadianMapleLeaf,\n faCcAmazonPay: faCcAmazonPay,\n faCcAmex: faCcAmex,\n faCcApplePay: faCcApplePay,\n faCcDinersClub: faCcDinersClub,\n faCcDiscover: faCcDiscover,\n faCcJcb: faCcJcb,\n faCcMastercard: faCcMastercard,\n faCcPaypal: faCcPaypal,\n faCcStripe: faCcStripe,\n faCcVisa: faCcVisa,\n faCentercode: faCentercode,\n faCentos: faCentos,\n faChrome: faChrome,\n faChromecast: faChromecast,\n faCloudflare: faCloudflare,\n faCloudscale: faCloudscale,\n faCloudsmith: faCloudsmith,\n faCloudversify: faCloudversify,\n faCodepen: faCodepen,\n faCodiepie: faCodiepie,\n faConfluence: faConfluence,\n faConnectdevelop: faConnectdevelop,\n faContao: faContao,\n faCottonBureau: faCottonBureau,\n faCpanel: faCpanel,\n faCreativeCommons: faCreativeCommons,\n faCreativeCommonsBy: faCreativeCommonsBy,\n faCreativeCommonsNc: faCreativeCommonsNc,\n faCreativeCommonsNcEu: faCreativeCommonsNcEu,\n faCreativeCommonsNcJp: faCreativeCommonsNcJp,\n faCreativeCommonsNd: faCreativeCommonsNd,\n faCreativeCommonsPd: faCreativeCommonsPd,\n faCreativeCommonsPdAlt: faCreativeCommonsPdAlt,\n faCreativeCommonsRemix: faCreativeCommonsRemix,\n faCreativeCommonsSa: faCreativeCommonsSa,\n faCreativeCommonsSampling: faCreativeCommonsSampling,\n faCreativeCommonsSamplingPlus: faCreativeCommonsSamplingPlus,\n faCreativeCommonsShare: faCreativeCommonsShare,\n faCreativeCommonsZero: faCreativeCommonsZero,\n faCriticalRole: faCriticalRole,\n faCss3: faCss3,\n faCss3Alt: faCss3Alt,\n faCuttlefish: faCuttlefish,\n faDAndD: faDAndD,\n faDAndDBeyond: faDAndDBeyond,\n faDailymotion: faDailymotion,\n faDashcube: faDashcube,\n faDeezer: faDeezer,\n faDelicious: faDelicious,\n faDeploydog: faDeploydog,\n faDeskpro: faDeskpro,\n faDev: faDev,\n faDeviantart: faDeviantart,\n faDhl: faDhl,\n faDiaspora: faDiaspora,\n faDigg: faDigg,\n faDigitalOcean: faDigitalOcean,\n faDiscord: faDiscord,\n faDiscourse: faDiscourse,\n faDochub: faDochub,\n faDocker: faDocker,\n faDraft2digital: faDraft2digital,\n faDribbble: faDribbble,\n faDribbbleSquare: faDribbbleSquare,\n faDropbox: faDropbox,\n faDrupal: faDrupal,\n faDyalog: faDyalog,\n faEarlybirds: faEarlybirds,\n faEbay: faEbay,\n faEdge: faEdge,\n faEdgeLegacy: faEdgeLegacy,\n faElementor: faElementor,\n faEllo: faEllo,\n faEmber: faEmber,\n faEmpire: faEmpire,\n faEnvira: faEnvira,\n faErlang: faErlang,\n faEthereum: faEthereum,\n faEtsy: faEtsy,\n faEvernote: faEvernote,\n faExpeditedssl: faExpeditedssl,\n faFacebook: faFacebook,\n faFacebookF: faFacebookF,\n faFacebookMessenger: faFacebookMessenger,\n faFacebookSquare: faFacebookSquare,\n faFantasyFlightGames: faFantasyFlightGames,\n faFedex: faFedex,\n faFedora: faFedora,\n faFigma: faFigma,\n faFirefox: faFirefox,\n faFirefoxBrowser: faFirefoxBrowser,\n faFirstOrder: faFirstOrder,\n faFirstOrderAlt: faFirstOrderAlt,\n faFirstdraft: faFirstdraft,\n faFlickr: faFlickr,\n faFlipboard: faFlipboard,\n faFly: faFly,\n faFontAwesome: faFontAwesome,\n faFontAwesomeAlt: faFontAwesomeAlt,\n faFontAwesomeFlag: faFontAwesomeFlag,\n faFontAwesomeLogoFull: faFontAwesomeLogoFull,\n faFonticons: faFonticons,\n faFonticonsFi: faFonticonsFi,\n faFortAwesome: faFortAwesome,\n faFortAwesomeAlt: faFortAwesomeAlt,\n faForumbee: faForumbee,\n faFoursquare: faFoursquare,\n faFreeCodeCamp: faFreeCodeCamp,\n faFreebsd: faFreebsd,\n faFulcrum: faFulcrum,\n faGalacticRepublic: faGalacticRepublic,\n faGalacticSenate: faGalacticSenate,\n faGetPocket: faGetPocket,\n faGg: faGg,\n faGgCircle: faGgCircle,\n faGit: faGit,\n faGitAlt: faGitAlt,\n faGitSquare: faGitSquare,\n faGithub: faGithub,\n faGithubAlt: faGithubAlt,\n faGithubSquare: faGithubSquare,\n faGitkraken: faGitkraken,\n faGitlab: faGitlab,\n faGitter: faGitter,\n faGlide: faGlide,\n faGlideG: faGlideG,\n faGofore: faGofore,\n faGoodreads: faGoodreads,\n faGoodreadsG: faGoodreadsG,\n faGoogle: faGoogle,\n faGoogleDrive: faGoogleDrive,\n faGooglePay: faGooglePay,\n faGooglePlay: faGooglePlay,\n faGooglePlus: faGooglePlus,\n faGooglePlusG: faGooglePlusG,\n faGooglePlusSquare: faGooglePlusSquare,\n faGoogleWallet: faGoogleWallet,\n faGratipay: faGratipay,\n faGrav: faGrav,\n faGripfire: faGripfire,\n faGrunt: faGrunt,\n faGuilded: faGuilded,\n faGulp: faGulp,\n faHackerNews: faHackerNews,\n faHackerNewsSquare: faHackerNewsSquare,\n faHackerrank: faHackerrank,\n faHips: faHips,\n faHireAHelper: faHireAHelper,\n faHive: faHive,\n faHooli: faHooli,\n faHornbill: faHornbill,\n faHotjar: faHotjar,\n faHouzz: faHouzz,\n faHtml5: faHtml5,\n faHubspot: faHubspot,\n faIdeal: faIdeal,\n faImdb: faImdb,\n faInnosoft: faInnosoft,\n faInstagram: faInstagram,\n faInstagramSquare: faInstagramSquare,\n faInstalod: faInstalod,\n faIntercom: faIntercom,\n faInternetExplorer: faInternetExplorer,\n faInvision: faInvision,\n faIoxhost: faIoxhost,\n faItchIo: faItchIo,\n faItunes: faItunes,\n faItunesNote: faItunesNote,\n faJava: faJava,\n faJediOrder: faJediOrder,\n faJenkins: faJenkins,\n faJira: faJira,\n faJoget: faJoget,\n faJoomla: faJoomla,\n faJs: faJs,\n faJsSquare: faJsSquare,\n faJsfiddle: faJsfiddle,\n faKaggle: faKaggle,\n faKeybase: faKeybase,\n faKeycdn: faKeycdn,\n faKickstarter: faKickstarter,\n faKickstarterK: faKickstarterK,\n faKorvue: faKorvue,\n faLaravel: faLaravel,\n faLastfm: faLastfm,\n faLastfmSquare: faLastfmSquare,\n faLeanpub: faLeanpub,\n faLess: faLess,\n faLine: faLine,\n faLinkedin: faLinkedin,\n faLinkedinIn: faLinkedinIn,\n faLinode: faLinode,\n faLinux: faLinux,\n faLyft: faLyft,\n faMagento: faMagento,\n faMailchimp: faMailchimp,\n faMandalorian: faMandalorian,\n faMarkdown: faMarkdown,\n faMastodon: faMastodon,\n faMaxcdn: faMaxcdn,\n faMdb: faMdb,\n faMedapps: faMedapps,\n faMedium: faMedium,\n faMediumM: faMediumM,\n faMedrt: faMedrt,\n faMeetup: faMeetup,\n faMegaport: faMegaport,\n faMendeley: faMendeley,\n faMicroblog: faMicroblog,\n faMicrosoft: faMicrosoft,\n faMix: faMix,\n faMixcloud: faMixcloud,\n faMixer: faMixer,\n faMizuni: faMizuni,\n faModx: faModx,\n faMonero: faMonero,\n faNapster: faNapster,\n faNeos: faNeos,\n faNimblr: faNimblr,\n faNode: faNode,\n faNodeJs: faNodeJs,\n faNpm: faNpm,\n faNs8: faNs8,\n faNutritionix: faNutritionix,\n faOctopusDeploy: faOctopusDeploy,\n faOdnoklassniki: faOdnoklassniki,\n faOdnoklassnikiSquare: faOdnoklassnikiSquare,\n faOldRepublic: faOldRepublic,\n faOpencart: faOpencart,\n faOpenid: faOpenid,\n faOpera: faOpera,\n faOptinMonster: faOptinMonster,\n faOrcid: faOrcid,\n faOsi: faOsi,\n faPage4: faPage4,\n faPagelines: faPagelines,\n faPalfed: faPalfed,\n faPatreon: faPatreon,\n faPaypal: faPaypal,\n faPennyArcade: faPennyArcade,\n faPerbyte: faPerbyte,\n faPeriscope: faPeriscope,\n faPhabricator: faPhabricator,\n faPhoenixFramework: faPhoenixFramework,\n faPhoenixSquadron: faPhoenixSquadron,\n faPhp: faPhp,\n faPiedPiper: faPiedPiper,\n faPiedPiperAlt: faPiedPiperAlt,\n faPiedPiperHat: faPiedPiperHat,\n faPiedPiperPp: faPiedPiperPp,\n faPiedPiperSquare: faPiedPiperSquare,\n faPinterest: faPinterest,\n faPinterestP: faPinterestP,\n faPinterestSquare: faPinterestSquare,\n faPlaystation: faPlaystation,\n faProductHunt: faProductHunt,\n faPushed: faPushed,\n faPython: faPython,\n faQq: faQq,\n faQuinscape: faQuinscape,\n faQuora: faQuora,\n faRProject: faRProject,\n faRaspberryPi: faRaspberryPi,\n faRavelry: faRavelry,\n faReact: faReact,\n faReacteurope: faReacteurope,\n faReadme: faReadme,\n faRebel: faRebel,\n faRedRiver: faRedRiver,\n faReddit: faReddit,\n faRedditAlien: faRedditAlien,\n faRedditSquare: faRedditSquare,\n faRedhat: faRedhat,\n faRenren: faRenren,\n faReplyd: faReplyd,\n faResearchgate: faResearchgate,\n faResolving: faResolving,\n faRev: faRev,\n faRocketchat: faRocketchat,\n faRockrms: faRockrms,\n faRust: faRust,\n faSafari: faSafari,\n faSalesforce: faSalesforce,\n faSass: faSass,\n faSchlix: faSchlix,\n faScribd: faScribd,\n faSearchengin: faSearchengin,\n faSellcast: faSellcast,\n faSellsy: faSellsy,\n faServicestack: faServicestack,\n faShirtsinbulk: faShirtsinbulk,\n faShopify: faShopify,\n faShopware: faShopware,\n faSimplybuilt: faSimplybuilt,\n faSistrix: faSistrix,\n faSith: faSith,\n faSketch: faSketch,\n faSkyatlas: faSkyatlas,\n faSkype: faSkype,\n faSlack: faSlack,\n faSlackHash: faSlackHash,\n faSlideshare: faSlideshare,\n faSnapchat: faSnapchat,\n faSnapchatGhost: faSnapchatGhost,\n faSnapchatSquare: faSnapchatSquare,\n faSoundcloud: faSoundcloud,\n faSourcetree: faSourcetree,\n faSpeakap: faSpeakap,\n faSpeakerDeck: faSpeakerDeck,\n faSpotify: faSpotify,\n faSquarespace: faSquarespace,\n faStackExchange: faStackExchange,\n faStackOverflow: faStackOverflow,\n faStackpath: faStackpath,\n faStaylinked: faStaylinked,\n faSteam: faSteam,\n faSteamSquare: faSteamSquare,\n faSteamSymbol: faSteamSymbol,\n faStickerMule: faStickerMule,\n faStrava: faStrava,\n faStripe: faStripe,\n faStripeS: faStripeS,\n faStudiovinari: faStudiovinari,\n faStumbleupon: faStumbleupon,\n faStumbleuponCircle: faStumbleuponCircle,\n faSuperpowers: faSuperpowers,\n faSupple: faSupple,\n faSuse: faSuse,\n faSwift: faSwift,\n faSymfony: faSymfony,\n faTeamspeak: faTeamspeak,\n faTelegram: faTelegram,\n faTelegramPlane: faTelegramPlane,\n faTencentWeibo: faTencentWeibo,\n faTheRedYeti: faTheRedYeti,\n faThemeco: faThemeco,\n faThemeisle: faThemeisle,\n faThinkPeaks: faThinkPeaks,\n faTiktok: faTiktok,\n faTradeFederation: faTradeFederation,\n faTrello: faTrello,\n faTumblr: faTumblr,\n faTumblrSquare: faTumblrSquare,\n faTwitch: faTwitch,\n faTwitter: faTwitter,\n faTwitterSquare: faTwitterSquare,\n faTypo3: faTypo3,\n faUber: faUber,\n faUbuntu: faUbuntu,\n faUikit: faUikit,\n faUmbraco: faUmbraco,\n faUncharted: faUncharted,\n faUniregistry: faUniregistry,\n faUnity: faUnity,\n faUnsplash: faUnsplash,\n faUntappd: faUntappd,\n faUps: faUps,\n faUsb: faUsb,\n faUsps: faUsps,\n faUssunnah: faUssunnah,\n faVaadin: faVaadin,\n faViacoin: faViacoin,\n faViadeo: faViadeo,\n faViadeoSquare: faViadeoSquare,\n faViber: faViber,\n faVimeo: faVimeo,\n faVimeoSquare: faVimeoSquare,\n faVimeoV: faVimeoV,\n faVine: faVine,\n faVk: faVk,\n faVnv: faVnv,\n faVuejs: faVuejs,\n faWatchmanMonitoring: faWatchmanMonitoring,\n faWaze: faWaze,\n faWeebly: faWeebly,\n faWeibo: faWeibo,\n faWeixin: faWeixin,\n faWhatsapp: faWhatsapp,\n faWhatsappSquare: faWhatsappSquare,\n faWhmcs: faWhmcs,\n faWikipediaW: faWikipediaW,\n faWindows: faWindows,\n faWix: faWix,\n faWizardsOfTheCoast: faWizardsOfTheCoast,\n faWodu: faWodu,\n faWolfPackBattalion: faWolfPackBattalion,\n faWordpress: faWordpress,\n faWordpressSimple: faWordpressSimple,\n faWpbeginner: faWpbeginner,\n faWpexplorer: faWpexplorer,\n faWpforms: faWpforms,\n faWpressr: faWpressr,\n faXbox: faXbox,\n faXing: faXing,\n faXingSquare: faXingSquare,\n faYCombinator: faYCombinator,\n faYahoo: faYahoo,\n faYammer: faYammer,\n faYandex: faYandex,\n faYandexInternational: faYandexInternational,\n faYarn: faYarn,\n faYelp: faYelp,\n faYoast: faYoast,\n faYoutube: faYoutube,\n faYoutubeSquare: faYoutubeSquare,\n faZhihu: faZhihu\n};\n\nexport { _iconsCache as fab, prefix, fa500px, faAccessibleIcon, faAccusoft, faAcquisitionsIncorporated, faAdn, faAdversal, faAffiliatetheme, faAirbnb, faAlgolia, faAlipay, faAmazon, faAmazonPay, faAmilia, faAndroid, faAngellist, faAngrycreative, faAngular, faAppStore, faAppStoreIos, faApper, faApple, faApplePay, faArtstation, faAsymmetrik, faAtlassian, faAudible, faAutoprefixer, faAvianex, faAviato, faAws, faBandcamp, faBattleNet, faBehance, faBehanceSquare, faBimobject, faBitbucket, faBitcoin, faBity, faBlackTie, faBlackberry, faBlogger, faBloggerB, faBluetooth, faBluetoothB, faBootstrap, faBtc, faBuffer, faBuromobelexperte, faBuyNLarge, faBuysellads, faCanadianMapleLeaf, faCcAmazonPay, faCcAmex, faCcApplePay, faCcDinersClub, faCcDiscover, faCcJcb, faCcMastercard, faCcPaypal, faCcStripe, faCcVisa, faCentercode, faCentos, faChrome, faChromecast, faCloudflare, faCloudscale, faCloudsmith, faCloudversify, faCodepen, faCodiepie, faConfluence, faConnectdevelop, faContao, faCottonBureau, faCpanel, faCreativeCommons, faCreativeCommonsBy, faCreativeCommonsNc, faCreativeCommonsNcEu, faCreativeCommonsNcJp, faCreativeCommonsNd, faCreativeCommonsPd, faCreativeCommonsPdAlt, faCreativeCommonsRemix, faCreativeCommonsSa, faCreativeCommonsSampling, faCreativeCommonsSamplingPlus, faCreativeCommonsShare, faCreativeCommonsZero, faCriticalRole, faCss3, faCss3Alt, faCuttlefish, faDAndD, faDAndDBeyond, faDailymotion, faDashcube, faDeezer, faDelicious, faDeploydog, faDeskpro, faDev, faDeviantart, faDhl, faDiaspora, faDigg, faDigitalOcean, faDiscord, faDiscourse, faDochub, faDocker, faDraft2digital, faDribbble, faDribbbleSquare, faDropbox, faDrupal, faDyalog, faEarlybirds, faEbay, faEdge, faEdgeLegacy, faElementor, faEllo, faEmber, faEmpire, faEnvira, faErlang, faEthereum, faEtsy, faEvernote, faExpeditedssl, faFacebook, faFacebookF, faFacebookMessenger, faFacebookSquare, faFantasyFlightGames, faFedex, faFedora, faFigma, faFirefox, faFirefoxBrowser, faFirstOrder, faFirstOrderAlt, faFirstdraft, faFlickr, faFlipboard, faFly, faFontAwesome, faFontAwesomeAlt, faFontAwesomeFlag, faFontAwesomeLogoFull, faFonticons, faFonticonsFi, faFortAwesome, faFortAwesomeAlt, faForumbee, faFoursquare, faFreeCodeCamp, faFreebsd, faFulcrum, faGalacticRepublic, faGalacticSenate, faGetPocket, faGg, faGgCircle, faGit, faGitAlt, faGitSquare, faGithub, faGithubAlt, faGithubSquare, faGitkraken, faGitlab, faGitter, faGlide, faGlideG, faGofore, faGoodreads, faGoodreadsG, faGoogle, faGoogleDrive, faGooglePay, faGooglePlay, faGooglePlus, faGooglePlusG, faGooglePlusSquare, faGoogleWallet, faGratipay, faGrav, faGripfire, faGrunt, faGuilded, faGulp, faHackerNews, faHackerNewsSquare, faHackerrank, faHips, faHireAHelper, faHive, faHooli, faHornbill, faHotjar, faHouzz, faHtml5, faHubspot, faIdeal, faImdb, faInnosoft, faInstagram, faInstagramSquare, faInstalod, faIntercom, faInternetExplorer, faInvision, faIoxhost, faItchIo, faItunes, faItunesNote, faJava, faJediOrder, faJenkins, faJira, faJoget, faJoomla, faJs, faJsSquare, faJsfiddle, faKaggle, faKeybase, faKeycdn, faKickstarter, faKickstarterK, faKorvue, faLaravel, faLastfm, faLastfmSquare, faLeanpub, faLess, faLine, faLinkedin, faLinkedinIn, faLinode, faLinux, faLyft, faMagento, faMailchimp, faMandalorian, faMarkdown, faMastodon, faMaxcdn, faMdb, faMedapps, faMedium, faMediumM, faMedrt, faMeetup, faMegaport, faMendeley, faMicroblog, faMicrosoft, faMix, faMixcloud, faMixer, faMizuni, faModx, faMonero, faNapster, faNeos, faNimblr, faNode, faNodeJs, faNpm, faNs8, faNutritionix, faOctopusDeploy, faOdnoklassniki, faOdnoklassnikiSquare, faOldRepublic, faOpencart, faOpenid, faOpera, faOptinMonster, faOrcid, faOsi, faPage4, faPagelines, faPalfed, faPatreon, faPaypal, faPennyArcade, faPerbyte, faPeriscope, faPhabricator, faPhoenixFramework, faPhoenixSquadron, faPhp, faPiedPiper, faPiedPiperAlt, faPiedPiperHat, faPiedPiperPp, faPiedPiperSquare, faPinterest, faPinterestP, faPinterestSquare, faPlaystation, faProductHunt, faPushed, faPython, faQq, faQuinscape, faQuora, faRProject, faRaspberryPi, faRavelry, faReact, faReacteurope, faReadme, faRebel, faRedRiver, faReddit, faRedditAlien, faRedditSquare, faRedhat, faRenren, faReplyd, faResearchgate, faResolving, faRev, faRocketchat, faRockrms, faRust, faSafari, faSalesforce, faSass, faSchlix, faScribd, faSearchengin, faSellcast, faSellsy, faServicestack, faShirtsinbulk, faShopify, faShopware, faSimplybuilt, faSistrix, faSith, faSketch, faSkyatlas, faSkype, faSlack, faSlackHash, faSlideshare, faSnapchat, faSnapchatGhost, faSnapchatSquare, faSoundcloud, faSourcetree, faSpeakap, faSpeakerDeck, faSpotify, faSquarespace, faStackExchange, faStackOverflow, faStackpath, faStaylinked, faSteam, faSteamSquare, faSteamSymbol, faStickerMule, faStrava, faStripe, faStripeS, faStudiovinari, faStumbleupon, faStumbleuponCircle, faSuperpowers, faSupple, faSuse, faSwift, faSymfony, faTeamspeak, faTelegram, faTelegramPlane, faTencentWeibo, faTheRedYeti, faThemeco, faThemeisle, faThinkPeaks, faTiktok, faTradeFederation, faTrello, faTumblr, faTumblrSquare, faTwitch, faTwitter, faTwitterSquare, faTypo3, faUber, faUbuntu, faUikit, faUmbraco, faUncharted, faUniregistry, faUnity, faUnsplash, faUntappd, faUps, faUsb, faUsps, faUssunnah, faVaadin, faViacoin, faViadeo, faViadeoSquare, faViber, faVimeo, faVimeoSquare, faVimeoV, faVine, faVk, faVnv, faVuejs, faWatchmanMonitoring, faWaze, faWeebly, faWeibo, faWeixin, faWhatsapp, faWhatsappSquare, faWhmcs, faWikipediaW, faWindows, faWix, faWizardsOfTheCoast, faWodu, faWolfPackBattalion, faWordpress, faWordpressSimple, faWpbeginner, faWpexplorer, faWpforms, faWpressr, faXbox, faXing, faXingSquare, faYCombinator, faYahoo, faYammer, faYandex, faYandexInternational, faYarn, faYelp, faYoast, faYoutube, faYoutubeSquare, faZhihu };\n","import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\nimport 'flatpickr/dist/flatpickr.css';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatStepperModule } from '@angular/material/stepper';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatNativeDateModule, MAT_DATE_LOCALE, MatOptionModule } from '@angular/material/core';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatSnackBarModule, MAT_SNACK_BAR_DEFAULT_OPTIONS } from '@angular/material/snack-bar';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSliderModule } from '@angular/material/slider';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\n\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\nimport { library } from '@fortawesome/fontawesome-svg-core'; // Import library explicitly\nimport {\n faAngleDown,\n faCheckCircle,\n faUser,\n faTrash,\n faUpload\n // Add other icons used in the project\n} from '@fortawesome/free-solid-svg-icons';\n\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { HtvaPipe } from './pipes/htva.pipe';\nimport { CommonModule, CurrencyPipe } from '@angular/common';\nimport { LayoutModule } from '@angular/cdk/layout';\nimport { TranslateModule, TranslateLoader } from '@ngx-translate/core';\nimport { HttpClient } from '@angular/common/http';\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\nimport { HeaderComponent } from '../header/header.component';\nimport { FooterComponent } from '../footer/footer.component';\nimport { SpinnerOverlayComponent } from '../core/spinner-overlay/spinner-overlay.component';\nimport { SortbyPipe } from './pipes/sortby.pipe';\nimport { FileUploadModule } from 'ng2-file-upload';\nimport { SafeHtmlPipe } from './pipes/safe-html.pipe';\nimport { InlineSVGModule } from 'ng-inline-svg';\nimport { FlatpickrModule } from 'angularx-flatpickr';\nimport { RatingModule } from 'ng-starrating';\n\nimport * as fpickr from 'flatpickr/dist/l10n/fr';\nimport { TooltipComponent } from '../tooltip/tooltip.component';\nimport { TimeOfDayPipe } from './pipes/time-of-day.pipe';\n\nimport { ShareButtonsModule } from 'ngx-sharebuttons/buttons';\nimport { ShareIconsModule } from 'ngx-sharebuttons/icons';\nimport { BigSelectComponent } from '../step1/big-select/big-select.component';\nimport { RouterModule } from '@angular/router';\nimport { BreadcrumbComponent } from '../components/breadcrumb/breadcrumb.component';\n\n// AoT requires an exported function for factories\nexport function HttpLoaderFactory(http: HttpClient) {\n return new TranslateHttpLoader(http);\n}\n\n@NgModule({\n imports: [\n CommonModule,\n LayoutModule,\n RouterModule,\n FontAwesomeModule,\n MatButtonModule,\n MatCheckboxModule,\n MatCardModule,\n MatTooltipModule,\n MatExpansionModule,\n MatFormFieldModule,\n MatInputModule,\n MatMenuModule,\n MatIconModule,\n MatSelectModule,\n MatSlideToggleModule,\n MatBadgeModule,\n ReactiveFormsModule,\n FormsModule,\n FileUploadModule,\n RatingModule,\n MatProgressSpinnerModule,\n InlineSVGModule.forRoot(),\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useFactory: HttpLoaderFactory,\n deps: [HttpClient]\n }\n }),\n FlatpickrModule.forRoot({\n locale: fpickr.default.fr,\n defaultHour: 12\n })\n ],\n exports: [\n CommonModule,\n LayoutModule,\n ReactiveFormsModule,\n FormsModule,\n FontAwesomeModule,\n MatButtonModule,\n MatCheckboxModule,\n MatCardModule,\n MatStepperModule,\n MatFormFieldModule,\n MatInputModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatRadioModule,\n MatSelectModule,\n MatOptionModule,\n MatSliderModule,\n MatDialogModule,\n MatExpansionModule,\n MatButtonToggleModule,\n MatTabsModule,\n MatTooltipModule,\n MatSnackBarModule,\n MatSlideToggleModule,\n MatBadgeModule,\n MatIconModule,\n MatAutocompleteModule,\n HtvaPipe,\n SortbyPipe,\n SafeHtmlPipe,\n TimeOfDayPipe,\n HeaderComponent,\n TooltipComponent,\n FileUploadModule,\n FooterComponent,\n SpinnerOverlayComponent,\n RatingModule,\n InlineSVGModule,\n TranslateModule,\n FlatpickrModule,\n ShareButtonsModule,\n ShareIconsModule,\n BigSelectComponent,\n MatProgressSpinnerModule,\n BreadcrumbComponent\n ],\n providers: [\n { provide: MAT_DATE_LOCALE, useValue: 'fr' },\n { provide: MAT_SNACK_BAR_DEFAULT_OPTIONS, useValue: { duration: 8000 } },\n CurrencyPipe\n ],\n schemas: [CUSTOM_ELEMENTS_SCHEMA], // Add schema for custom elements\n declarations: [\n SpinnerOverlayComponent,\n HeaderComponent,\n FooterComponent,\n HtvaPipe,\n SortbyPipe,\n SafeHtmlPipe,\n TooltipComponent,\n TimeOfDayPipe,\n BigSelectComponent,\n BreadcrumbComponent\n ]\n})\nexport class SharedModule {\n constructor() {\n // Add necessary icons to the library\n library.add(faAngleDown, faCheckCircle, faUser, faTrash, faUpload);\n }\n}\n","
    \n \n
    \n
    \n {{ title }}\n
    \n \"\"\n
    \n

    \n

    \n {{ emphasis }}\n

    \n
      0\" class=\"tooltip-gallery\">\n
    • \"\"
    • \n
    \n
    \n
    \n
    \n","import { Component, OnInit, Input } from '@angular/core';\n\n@Component({\n selector: 'app-tooltip',\n templateUrl: './tooltip.component.html',\n styleUrls: ['./tooltip.component.scss']\n})\nexport class TooltipComponent implements OnInit {\n @Input() title: string;\n @Input() content: string;\n @Input() emphasis: string;\n @Input() tooltipPosition = 'top';\n @Input() mainVisual: string;\n @Input() tooltipGallery: string[];\n\n constructor() {}\n\n ngOnInit() {}\n}\n","const prodAPI = 'https://certiservices.azurewebsites.net/';\nconst localAPI = 'http://localhost:52646/';\nconst apiRef = prodAPI;\nexport const certiCoreBaseUrl = 'https://certicore.azurewebsites.net';\nexport const certiSystemsBaseUrl = 'https://systems.certinergie.be';\nexport const certiServicesBaseUrl = 'https://certiservices.azurewebsites.net';\n\nexport const environment = {\n production: true,\n firebase: {\n apiKey: 'AIzaSyAC3LGik6S0kYASfaAYMbcVUz5pxXXOj0s',\n authDomain: 'certimmo-930d3.firebaseapp.com',\n databaseURL: 'https://certimmo-930d3.firebaseio.com',\n projectId: 'certimmo-930d3',\n storageBucket: 'certimmo-930d3.appspot.com',\n messagingSenderId: '12993987359',\n appId: '1:12993987359:web:d3ce9ea6979c978c5e662a',\n measurementId: 'G-Z0C2QXWZH5'\n },\n release: '20250331.4',\n stripeCheckoutUrl: 'https://certinergie-stripe-prod.azurewebsites.net/api/checkout-session',\n stripeGetStatusUrl: 'https://certinergie-stripe-prod.azurewebsites.net/api/session-status',\n stripePublicKey: 'pk_live_RPnzJ2n7aIxtPjVP0zVoF9Z3',\n stripePublicKeyGreenfish: 'pk_live_k19XEZCDlk91w5cGmg2333HH00WzFL3USj',\n API: {\n SEND_BROCHURE: apiRef + 'api/notary/plaquette/sendmails'\n },\n CertiCore: {\n userOrdersUrl: certiCoreBaseUrl + '/api/v1/espaceclient/users/me/orders/',\n loginUrl: certiCoreBaseUrl + '/api/v1/espaceclient/auth/login/',\n refresToken: certiCoreBaseUrl + '/api/v1/espaceclient/auth/refreshtoken/',\n orderInfo: certiCoreBaseUrl + '/api/v1/espaceclient/orders/',\n publicOrderInfo: certiCoreBaseUrl + '/api/v1/espaceclient/orders/anonymous/',\n askActeToTrue: certiCoreBaseUrl + '/api/v1/espaceclient/orders/{orderId}/askacte',\n agreeToPay: certiCoreBaseUrl + '/api/v1/espaceclient/orders/{orderId}/agreetopay',\n notifications: certiCoreBaseUrl + '/api/v1/users/me/notifications',\n refreshUserInfo: certiCoreBaseUrl + '/api/v1/espaceclient/auth/me/',\n deleteNotifications: certiCoreBaseUrl + '/api/v1/users/me/notifications?orderId={orderId}',\n getElecAgents: certiCoreBaseUrl + '/api/v1/espaceclient/users/employees/elec',\n checkVat: certiCoreBaseUrl + '/api/v1/helpers/vat',\n agendaEmployees: certiCoreBaseUrl + '/api/v1/espaceclient/users/employees/elec/',\n sendDocReminder: certiCoreBaseUrl + '/api/v1/espaceclient/comments/rappel/',\n checkoutInfo: certiCoreBaseUrl + '/api/v1/espaceclient/orders/{orderId}/checkout',\n checkoutInfoV2: certiCoreBaseUrl + '/api/v2/espaceclient/orders/{orderId}/checkout',\n clientComment: certiCoreBaseUrl + '/api/v1/espaceclient/comments/public/',\n sms: certiCoreBaseUrl + '/api/v1/sms',\n forgotPassword: certiCoreBaseUrl + '/api/v1/espaceclient/auth/forgotpassword'\n },\n CertiSystems: {\n onlineAgendaUrl: certiSystemsBaseUrl + '/api/onlineagenda',\n loginWeb: certiSystemsBaseUrl + '/api/LoginWeb',\n mailSending: certiSystemsBaseUrl + '/api/mailsending',\n emailWithTemplate: certiSystemsBaseUrl + '/api/EmailWithTemplate',\n packPromo: certiSystemsBaseUrl + '/api/PackPromo',\n createNewUser: certiSystemsBaseUrl + '/api/CreateNewUser',\n orderInfo: certiSystemsBaseUrl + '/api/orderinfo'\n },\n CertiServices: {\n order: certiServicesBaseUrl + '/api/Order',\n primmo: certiServicesBaseUrl + '/api/primmo'\n },\n PlanningApiMicroservice: {\n URL:\n 'https://as-certiit-microservice-planning-api-prod-b4g4fbh0h0ebbree.germanywestcentral-01.azurewebsites.net/api',\n API_KEY: '8fd5R5GsD45v9N3d21j63yfD5sE98W45d'\n },\n baseUrl: 'https://order.certinergie.be',\n certinergieBlobStorageBaseUrl: 'https://certinergie.blob.core.windows.net',\n certinergieNotaryAppBaseUrl: 'https://notary.certinergie.be',\n certiAdminBaseUrl: 'https://certiadmin.azurewebsites.net',\n googleMapsApiKey: 'AIzaSyBXzjjPS9asB2iK_wl-ZcMhRc7RLBEUS18'\n // AgmCoreModule.forRoot({\n // apiKey: 'AIzaSyBXzjjPS9asB2iK_wl-ZcMhRc7RLBEUS18',\n // libraries: ['places']\n // }),\n};\n","import { UserType } from '../models/user';\n\nexport const newUserTypes = [\n {\n id: UserType.Particulier,\n txt: 'Particulier',\n fileName: 'user-particulier'\n },\n {\n id: UserType.Agence,\n txt: 'Agence',\n fileName: 'user-agence'\n },\n {\n id: UserType.Notaire,\n txt: 'Notaire',\n fileName: 'user-notaire'\n },\n {\n id: UserType.Installateur,\n txt: 'Installateur',\n fileName: 'user-installateur'\n }\n];\n\nexport const userTypePartAndPro = [\n {\n id: -1,\n txt: 'Sélectionnez un type de client',\n fileName: 'user-type'\n },\n {\n id: UserType.Particulier,\n txt: 'New',\n fileName: 'user-type'\n },\n {\n id: UserType.Notaire,\n txt: 'Already client',\n fileName: 'user-particulier'\n },\n {\n id: UserType.Agence,\n txt: 'PRO',\n fileName: 'user-agence'\n },\n /* {\n id: UserType.Installateur,\n txt: 'Installateur',\n fileName: 'user-installateur'\n } */\n];\n\nexport const userTypePartAndNotary = [\n {\n id: -1,\n txt: 'Sélectionnez un type de client',\n fileName: 'user-type'\n },\n {\n id: UserType.Particulier,\n txt: 'Particulier',\n fileName: 'user-particulier'\n },\n {\n id: UserType.Notaire,\n txt: 'Notaire',\n fileName: 'user-professionnel'\n }\n];\n","export enum ContactTypes {\n SameAsOwner = 0,\n Other = 1,\n KeyAtAgency = 2\n}\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'app-banner',\n templateUrl: './banner.component.html',\n styleUrls: ['./banner.component.scss']\n})\nexport class BannerComponent {\n @Input() message: string = '';\n @Input() variant: 'info' | 'success' | 'warning' | 'error' = 'info';\n @Input() icon: string = 'info';\n\n get variantClass() {\n return this.variant;\n }\n}\n","\n {{ icon }}\n \n\n","\n\n\n \n \n \n \n
    \n {{ 'login-modal.connection.title' | translate }}\n
    \n
    \n
    \n
    \n \n \n {{ 'login-modal.connection.email-or-id' | translate }}\n \n \n \n {{ 'login-modal.connection.password' | translate }}\n \n {{\n isPasswordVisible ? 'password' : 'remove_red_eye'\n }}\n \n \n

    \n {{ 'login-modal.connection.password-error' | translate }}\n

    \n \n\n \n {{ 'login-modal.connection.forgot-info' | translate }}\n \n
    \n \n
    \n {{ 'login-modal.connection.banner.title' | translate }}\n
    \n {{ 'login-modal.connection.banner.content' | translate }}\n
    \n \n
    \n
    \n
    \n \n \n \n
    {{ 'login-modal.register.title' | translate }}
    \n
    \n
    \n
    \n

    \n
    {{ 'login-modal.register.basic-content.type-title' | translate }}
    \n
    \n
    \n \n \n \n

    {{ 'common.user-types.' + UserTypes.Agence | translate }}

    \n
    \n
    \n \n \n \n

    {{ 'common.user-types.' + UserTypes.Notaire | translate }}

    \n
    \n \n \n \n \n

    {{ 'common.user-types.' + UserTypes.Installateur | translate }}

    \n
    \n
    \n \n \n \n

    {{ 'common.user-types.' + UserTypes.Other | translate }}

    \n
    \n
    \n \n \n \n {{ 'login-modal.register.basic-content.type-title' | translate }}\n \n \n {{ 'common.user-types.' + other | translate }}\n \n \n \n \n \n
    \n
    \n \n {{ 'section-user.disco.lastname' | translate }}\n \n \n \n {{ 'section-user.disco.firstname' | translate }}\n \n \n \n {{ 'section-user.disco.phone' | translate }}\n \n \n \n {{ 'section-user.disco.email' | translate }}\n \n \n \n {{ 'section-user.disco.societe-name' | translate }}\n \n \n \n {{ 'section-user.disco.societe-tva' | translate }}\n \n \n
    \n \n \n
    \n \n
    \n
    \n
    \n\n \n
    \n
    \n \n \n \n {{ 'login-modal.forgot-info.title.' + recoverPasswordWindowType | translate }}\n
    \n
    \n

    \n {{ 'login-modal.forgot-info.content' | translate }}\n

    \n \n {{ 'login-modal.connection.email-or-id' | translate }}\n \n \n \n
    \n

    {{ 'login-modal.forgot-info.not-found-1' | translate }}

    \n

    {{ 'login-modal.forgot-info.not-found-2' | translate }}

    \n
    \n
    \n
    \n

    \n {{ 'login-modal.forgot-info.title1' | translate }} {{ emailFoundForOrderUserId }} ?\n

    \n \n

    \n {{ 'login-modal.email-sent-window.content1' | translate }}\n

    \n
    \n

    {{ 'login-modal.forgot-info.not-found-1' | translate }}

    \n

    {{ 'login-modal.forgot-info.not-found-2' | translate }}

    \n
    \n
    \n
    \n
    \n
    \n\n
    \n
    \n {{ 'login-modal.email-sent-window.title' | translate }}\n
    \n
    \n

    \n {{ 'login-modal.email-sent-window.content' | translate }}\n

    \n

    \n {{ 'login-modal.email-sent-window.change-email' | translate }}\n

    \n \n

    \n {{ 'login-modal.email-sent-window.title1' | translate }} {{ emailFoundForOrderUserId }}\n

    \n

    \n {{ 'login-modal.email-sent-window.content1' | translate }}\n

    \n
    \n

    \n {{ 'login-modal.email-sent-window.thanks' | translate }}\n

    \n \n
    \n
    \n
    \n\n\n\n","import { Component, OnInit, Inject, OnDestroy } from '@angular/core';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';\nimport { Store } from '@ngrx/store';\nimport { AppState } from '../../interfaces';\nimport { BreakpointObserver } from '@angular/cdk/layout';\n\nimport * as userSelector from '../../core/store/order/order.selectors';\nimport * as uiSelector from '../../core/store/ui/ui.selectors';\nimport { Observable, Subject } from 'rxjs';\nimport { AuthService } from '../../core/services/auth.service';\nimport { HttpClient, HttpParams, HttpHeaders } from '@angular/common/http';\nimport { LoggerService } from 'src/app/core/services/logger.service';\nimport { FormGroup, FormBuilder, Validators, FormControl } from '@angular/forms';\nimport { debounceTime, delay } from 'rxjs/operators';\nimport { projectID } from 'src/app/core/data/theme-config';\nimport { UserType } from 'src/app/core/models/user';\nimport { SetLoginError } from 'src/app/core/store/ui';\nimport { environment } from 'src/environments/environment';\nimport { joinPaths } from 'src/app/core/utils/paths/join';\nimport { GtmService } from 'src/app/core/services/google-tag-manager.service';\nimport { ActivatedRoute } from '@angular/router';\n\ntype RecoverPasswordWindowType = 'passwordLost' | 'newUser';\n\n@Component({\n selector: 'app-login-dialog',\n templateUrl: './login-dialog.component.html',\n styleUrls: ['./login-dialog.component.scss']\n})\nexport class LoginDialogComponent implements OnInit, OnDestroy {\n get isHainautOrNamurorNVN() {\n return projectID === 'namur' || projectID === 'hainaut' || projectID === 'nvn' || projectID === 'liege';\n }\n\n $isLoggedIn: Observable;\n $isTablette: Observable;\n $isLoggedError: Observable;\n\n debouncer: any;\n emailSent = false;\n emailAsked = false;\n emailError = false;\n emailNotInDB = false;\n language = 'fr';\n\n emailFoundForOrderUserId = '';\n userIdFoundForOrderUserId = '';\n\n displayForgotInfoWindow = false;\n recoverPasswordWindowType: RecoverPasswordWindowType = 'passwordLost';\n displayEmailProposition = false;\n showOthers = false;\n\n userFG: FormGroup;\n\n loginStatus: Subject;\n\n UserTypes = UserType;\n userTypeSelected = UserType.Notaire;\n isPasswordVisible = false;\n loginRedirectUrl: string | undefined;\n\n others = [\n UserType.Administration_Communale,\n UserType.Architecte,\n UserType.Avocat,\n UserType.Certifier,\n UserType.Expert_Immobilier,\n UserType.Surveyor,\n UserType.Promoteur,\n UserType.Other\n ];\n\n userInfo = {\n lastName: '',\n firstName: '',\n phone: '',\n email: '',\n company: '',\n tva: '',\n street: '',\n num: '',\n zip: '',\n city: ''\n };\n\n constructor(\n private authService: AuthService,\n public breakpointObserver: BreakpointObserver,\n private store: Store,\n private http: HttpClient,\n private snackBar: MatSnackBar,\n private logger: LoggerService,\n private _formBuilder: FormBuilder,\n private gtmService: GtmService,\n private route: ActivatedRoute,\n @Inject(MAT_DIALOG_DATA)\n public data: {\n register: boolean;\n forgotten: boolean;\n recoverPasswordWindowType: RecoverPasswordWindowType;\n selectedUserType: number;\n dialog: MatDialog;\n }\n ) {\n this.userTypeSelected = this.data.selectedUserType;\n this.displayForgotInfoWindow = this.data.forgotten;\n this.recoverPasswordWindowType = this.data.recoverPasswordWindowType || 'passwordLost';\n this.userFG = this._formBuilder.group({\n firstName: [{ value: this.userInfo.firstName, disabled: false }, Validators.required],\n lastName: [{ value: this.userInfo.lastName, disabled: false }, Validators.required],\n phone: [{ value: this.userInfo.phone, disabled: false }, Validators.required],\n email: [\n { value: this.userInfo.email, disabled: false },\n [Validators.required, Validators.email],\n this.isEmailUnique.bind(this)\n ],\n company: [{ value: this.userInfo.company, disabled: false }, Validators.required],\n tva: [{ value: this.userInfo.tva, disabled: false }, Validators.required]\n });\n }\n\n ngOnInit() {\n this.$isLoggedIn = this.store.select(userSelector.getIsLoggedIn);\n this.$isTablette = this.store.select(uiSelector.getIsTablette);\n this.$isLoggedError = this.store.select(uiSelector.getLoginError);\n this.$isLoggedIn.pipe(delay(100)).subscribe(logged => {\n if (logged) {\n this.closeDialog();\n }\n });\n this.loginStatus = this.authService.loginStatus;\n\n this.store.select(uiSelector.getLanguage).subscribe(ln => (this.language = ln));\n\n this.userFG.valueChanges.pipe(debounceTime(1000)).subscribe(values => {\n this.userInfo.firstName = values.firstName;\n this.userInfo.lastName = values.lastName;\n this.userInfo.phone = values.phone;\n this.userInfo.email = values.email;\n this.userInfo.company = values.company;\n this.userInfo.tva = values.tva;\n this.userInfo.street = values.street;\n this.userInfo.num = values.num;\n this.userInfo.city = values.city;\n this.userInfo.zip = values.zip;\n });\n\n const selectedUserTypeString = this.data.selectedUserType;\n this.route.queryParamMap.subscribe(params => {\n this.loginRedirectUrl = params.get('login-redirect-url') || undefined;\n });\n }\n\n ngOnDestroy() {\n this.store.dispatch(new SetLoginError(false));\n }\n\n signIn(email, pw) {\n if (email !== '' && pw !== '') {\n this.authService.login(email, pw, this.loginRedirectUrl);\n }\n }\n\n forgotPassword(email: string) {\n this.emailAsked = true;\n if (email === '') {\n this.emailError = true;\n return;\n }\n this.authService.isEmailAlreadyInUse(email).subscribe(data => {\n if (data.Data) {\n this.http\n .post(joinPaths(environment.CertiSystems.emailWithTemplate, 'sendmail'), {\n EmailType: 94,\n Recipient: email\n })\n .subscribe({\n next: val => {\n this.logger.log(`🚀`);\n this.logger.log('POST call successful value returned in body', val);\n this.snackBar.open('🚀 Email sent 🚀');\n this.emailSent = true;\n },\n error: response => {\n this.logger.log('POST call in error', response);\n this.snackBar.open('An error occured 😰');\n this.emailError = true;\n }\n });\n } else {\n this.logger.log(`Email not in DB`);\n this.emailNotInDB = true;\n }\n });\n }\n\n checkEmailForgotten(email: string) {\n // this.emailAsked = true;\n if (email === '') {\n this.emailError = true;\n return;\n }\n if (!isNaN(+email)) {\n const httpParams = new HttpParams().append('id', email);\n\n const httpOptions = {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n params: httpParams\n };\n\n this.http\n .post<{ Data: { email: string; userId: string } }>(\n joinPaths(environment.CertiSystems.loginWeb, 'GetUserEmailForOrderUserId'),\n null,\n httpOptions\n )\n .subscribe({\n next: data => {\n this.logger.log(`🚀`);\n this.logger.log('POST call successful value returned in body', data);\n this.emailFoundForOrderUserId = data.Data.email;\n this.userIdFoundForOrderUserId = data.Data.userId;\n this.displayEmailProposition = true;\n // this.resetEmail(data.Data.email);\n },\n error: response => {\n this.logger.log('POST call in error', response);\n this.snackBar.open('Une erreur a eu lieu 😰');\n this.emailError = true;\n }\n });\n return;\n }\n this.authService.isEmailAlreadyInUse(email).subscribe(data => {\n if (data.Data) {\n // this.logger.log('Email exists', data.Data);\n this.resetEmail(email);\n } else {\n this.logger.log(`Email not in DB`);\n this.emailNotInDB = true;\n }\n });\n }\n\n private resetEmail(email: string) {\n this.http.post(environment.CertiCore.forgotPassword, { Email: email }).subscribe({\n next: () => {\n this.snackBar.open('🚀 Email envoyé avec succès 🚀');\n this.emailSent = true;\n this.gtmService.emit('account_recovery_fired', {\n has_clicked_on_password_lost: this.recoverPasswordWindowType === 'passwordLost'\n });\n },\n error: response => {\n this.logger.log('POST call in error', response);\n this.snackBar.open('Une erreur a eu lieu 😰');\n this.emailError = true;\n }\n });\n }\n\n closeDialog() {\n this.data.dialog.closeAll();\n }\n\n selectUserType(type: UserType) {\n if (type === UserType.Other) {\n this.showOthers = true;\n } else if (type === UserType.Agence || type === UserType.Notaire || type === UserType.Installateur) {\n this.showOthers = false;\n }\n this.logger.log(type);\n this.userTypeSelected = type;\n }\n\n selectedClass(selectedId) {\n const cls = this.userTypeSelected === selectedId ? 'selected' : '';\n return cls;\n }\n\n askForProAccount() {\n if (this.userFG.invalid) {\n return;\n }\n const userInfo = {\n ConsumerType: 1688,\n Users: {\n Name: this.userInfo.lastName,\n Email: this.userInfo.email,\n FirstName: this.userInfo.firstName,\n PhoneNumber: this.userInfo.phone,\n Language:\n this.language === 'nl'\n ? 'nl-BE'\n : this.language === 'en'\n ? 'en-BE'\n : this.language === 'de'\n ? 'de-BE'\n : 'fr-BE',\n Addresses: {\n Company: this.userInfo.company,\n VatNumber: this.userInfo.tva,\n Street: this.userInfo.street,\n Number: this.userInfo.num,\n PostalCode: this.userInfo.zip,\n City: this.userInfo.city\n }\n },\n Comment: projectID + ' ' + this.userTypeSelected\n };\n\n this.http.post(joinPaths(environment.CertiSystems.createNewUser, 'SaveOrderClient'), userInfo).subscribe(\n val => {\n this.logger.log(`🚀`);\n this.logger.log('POST call successful value returned in body', val);\n this.snackBar.open('🚀 Email envoyé avec succès 🚀');\n this.emailSent = true;\n this.authService.loginWithUserIDAsync(val.UserID);\n this.closeDialog();\n },\n response => {\n this.logger.log('POST call in error', response);\n this.snackBar.open('Une erreur a eu lieu 😰');\n this.emailError = true;\n }\n );\n }\n\n isEmailUnique(control: FormControl) {\n clearTimeout(this.debouncer);\n\n return new Promise((resolve, reject) => {\n this.debouncer = setTimeout(() => {\n this.authService.isEmailAlreadyInUse(control.value).subscribe(data => {\n if (data.Data) {\n this.logger.log('Email exists', data.Data);\n resolve({ isEmailAlreadyInUse: true });\n } else {\n this.logger.log(`🚀`);\n resolve(null);\n }\n });\n }, 1000);\n });\n }\n\n showForgotInfo(recoverPasswordWindowType: RecoverPasswordWindowType) {\n this.displayForgotInfoWindow = true;\n this.recoverPasswordWindowType = recoverPasswordWindowType;\n }\n\n expandRegister() {\n this.data.register = true;\n }\n\n expandConnect() {\n this.data.register = false;\n }\n\n close() {\n this.data.dialog.closeAll();\n }\n\n togglePasswordVisibility() {\n this.isPasswordVisible = !this.isPasswordVisible;\n }\n}\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nvar fastDeepEqual = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n\nvar isEqual = /*@__PURE__*/getDefaultExportFromCjs(fastDeepEqual);\n\n/**\n * Copyright 2019 Google LLC. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at.\n *\n * Http://www.apache.org/licenses/LICENSE-2.0.\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst DEFAULT_ID = \"__googleMapsScriptId\";\n/**\n * The status of the [[Loader]].\n */\nvar LoaderStatus;\n(function (LoaderStatus) {\n LoaderStatus[LoaderStatus[\"INITIALIZED\"] = 0] = \"INITIALIZED\";\n LoaderStatus[LoaderStatus[\"LOADING\"] = 1] = \"LOADING\";\n LoaderStatus[LoaderStatus[\"SUCCESS\"] = 2] = \"SUCCESS\";\n LoaderStatus[LoaderStatus[\"FAILURE\"] = 3] = \"FAILURE\";\n})(LoaderStatus || (LoaderStatus = {}));\n/**\n * [[Loader]] makes it easier to add Google Maps JavaScript API to your application\n * dynamically using\n * [Promises](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise).\n * It works by dynamically creating and appending a script node to the the\n * document head and wrapping the callback function so as to return a promise.\n *\n * ```\n * const loader = new Loader({\n * apiKey: \"\",\n * version: \"weekly\",\n * libraries: [\"places\"]\n * });\n *\n * loader.load().then((google) => {\n * const map = new google.maps.Map(...)\n * })\n * ```\n */\nclass Loader {\n /**\n * Creates an instance of Loader using [[LoaderOptions]]. No defaults are set\n * using this library, instead the defaults are set by the Google Maps\n * JavaScript API server.\n *\n * ```\n * const loader = Loader({apiKey, version: 'weekly', libraries: ['places']});\n * ```\n */\n constructor({ apiKey, authReferrerPolicy, channel, client, id = DEFAULT_ID, language, libraries = [], mapIds, nonce, region, retries = 3, url = \"https://maps.googleapis.com/maps/api/js\", version, }) {\n this.callbacks = [];\n this.done = false;\n this.loading = false;\n this.errors = [];\n this.apiKey = apiKey;\n this.authReferrerPolicy = authReferrerPolicy;\n this.channel = channel;\n this.client = client;\n this.id = id || DEFAULT_ID; // Do not allow empty string\n this.language = language;\n this.libraries = libraries;\n this.mapIds = mapIds;\n this.nonce = nonce;\n this.region = region;\n this.retries = retries;\n this.url = url;\n this.version = version;\n if (Loader.instance) {\n if (!isEqual(this.options, Loader.instance.options)) {\n throw new Error(`Loader must not be called again with different options. ${JSON.stringify(this.options)} !== ${JSON.stringify(Loader.instance.options)}`);\n }\n return Loader.instance;\n }\n Loader.instance = this;\n }\n get options() {\n return {\n version: this.version,\n apiKey: this.apiKey,\n channel: this.channel,\n client: this.client,\n id: this.id,\n libraries: this.libraries,\n language: this.language,\n region: this.region,\n mapIds: this.mapIds,\n nonce: this.nonce,\n url: this.url,\n authReferrerPolicy: this.authReferrerPolicy,\n };\n }\n get status() {\n if (this.errors.length) {\n return LoaderStatus.FAILURE;\n }\n if (this.done) {\n return LoaderStatus.SUCCESS;\n }\n if (this.loading) {\n return LoaderStatus.LOADING;\n }\n return LoaderStatus.INITIALIZED;\n }\n get failed() {\n return this.done && !this.loading && this.errors.length >= this.retries + 1;\n }\n /**\n * CreateUrl returns the Google Maps JavaScript API script url given the [[LoaderOptions]].\n *\n * @ignore\n * @deprecated\n */\n createUrl() {\n let url = this.url;\n url += `?callback=__googleMapsCallback&loading=async`;\n if (this.apiKey) {\n url += `&key=${this.apiKey}`;\n }\n if (this.channel) {\n url += `&channel=${this.channel}`;\n }\n if (this.client) {\n url += `&client=${this.client}`;\n }\n if (this.libraries.length > 0) {\n url += `&libraries=${this.libraries.join(\",\")}`;\n }\n if (this.language) {\n url += `&language=${this.language}`;\n }\n if (this.region) {\n url += `®ion=${this.region}`;\n }\n if (this.version) {\n url += `&v=${this.version}`;\n }\n if (this.mapIds) {\n url += `&map_ids=${this.mapIds.join(\",\")}`;\n }\n if (this.authReferrerPolicy) {\n url += `&auth_referrer_policy=${this.authReferrerPolicy}`;\n }\n return url;\n }\n deleteScript() {\n const script = document.getElementById(this.id);\n if (script) {\n script.remove();\n }\n }\n /**\n * Load the Google Maps JavaScript API script and return a Promise.\n * @deprecated, use importLibrary() instead.\n */\n load() {\n return this.loadPromise();\n }\n /**\n * Load the Google Maps JavaScript API script and return a Promise.\n *\n * @ignore\n * @deprecated, use importLibrary() instead.\n */\n loadPromise() {\n return new Promise((resolve, reject) => {\n this.loadCallback((err) => {\n if (!err) {\n resolve(window.google);\n }\n else {\n reject(err.error);\n }\n });\n });\n }\n importLibrary(name) {\n this.execute();\n return google.maps.importLibrary(name);\n }\n /**\n * Load the Google Maps JavaScript API script with a callback.\n * @deprecated, use importLibrary() instead.\n */\n loadCallback(fn) {\n this.callbacks.push(fn);\n this.execute();\n }\n /**\n * Set the script on document.\n */\n setScript() {\n var _a, _b;\n if (document.getElementById(this.id)) {\n // TODO wrap onerror callback for cases where the script was loaded elsewhere\n this.callback();\n return;\n }\n const params = {\n key: this.apiKey,\n channel: this.channel,\n client: this.client,\n libraries: this.libraries.length && this.libraries,\n v: this.version,\n mapIds: this.mapIds,\n language: this.language,\n region: this.region,\n authReferrerPolicy: this.authReferrerPolicy,\n };\n // keep the URL minimal:\n Object.keys(params).forEach(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (key) => !params[key] && delete params[key]);\n if (!((_b = (_a = window === null || window === void 0 ? void 0 : window.google) === null || _a === void 0 ? void 0 : _a.maps) === null || _b === void 0 ? void 0 : _b.importLibrary)) {\n // tweaked copy of https://developers.google.com/maps/documentation/javascript/load-maps-js-api#dynamic-library-import\n // which also sets the base url, the id, and the nonce\n /* eslint-disable */\n ((g) => {\n // @ts-ignore\n let h, a, k, p = \"The Google Maps JavaScript API\", c = \"google\", l = \"importLibrary\", q = \"__ib__\", m = document, b = window;\n // @ts-ignore\n b = b[c] || (b[c] = {});\n // @ts-ignore\n const d = b.maps || (b.maps = {}), r = new Set(), e = new URLSearchParams(), u = () => \n // @ts-ignore\n h || (h = new Promise((f, n) => __awaiter(this, void 0, void 0, function* () {\n var _a;\n yield (a = m.createElement(\"script\"));\n a.id = this.id;\n e.set(\"libraries\", [...r] + \"\");\n // @ts-ignore\n for (k in g)\n e.set(k.replace(/[A-Z]/g, (t) => \"_\" + t[0].toLowerCase()), g[k]);\n e.set(\"callback\", c + \".maps.\" + q);\n a.src = this.url + `?` + e;\n d[q] = f;\n a.onerror = () => (h = n(Error(p + \" could not load.\")));\n // @ts-ignore\n a.nonce = this.nonce || ((_a = m.querySelector(\"script[nonce]\")) === null || _a === void 0 ? void 0 : _a.nonce) || \"\";\n m.head.append(a);\n })));\n // @ts-ignore\n d[l] ? console.warn(p + \" only loads once. Ignoring:\", g) : (d[l] = (f, ...n) => r.add(f) && u().then(() => d[l](f, ...n)));\n })(params);\n /* eslint-enable */\n }\n // While most libraries populate the global namespace when loaded via bootstrap params,\n // this is not the case for \"marker\" when used with the inline bootstrap loader\n // (and maybe others in the future). So ensure there is an importLibrary for each:\n const libraryPromises = this.libraries.map((library) => this.importLibrary(library));\n // ensure at least one library, to kick off loading...\n if (!libraryPromises.length) {\n libraryPromises.push(this.importLibrary(\"core\"));\n }\n Promise.all(libraryPromises).then(() => this.callback(), (error) => {\n const event = new ErrorEvent(\"error\", { error }); // for backwards compat\n this.loadErrorCallback(event);\n });\n }\n /**\n * Reset the loader state.\n */\n reset() {\n this.deleteScript();\n this.done = false;\n this.loading = false;\n this.errors = [];\n this.onerrorEvent = null;\n }\n resetIfRetryingFailed() {\n if (this.failed) {\n this.reset();\n }\n }\n loadErrorCallback(e) {\n this.errors.push(e);\n if (this.errors.length <= this.retries) {\n const delay = this.errors.length * Math.pow(2, this.errors.length);\n console.error(`Failed to load Google Maps script, retrying in ${delay} ms.`);\n setTimeout(() => {\n this.deleteScript();\n this.setScript();\n }, delay);\n }\n else {\n this.onerrorEvent = e;\n this.callback();\n }\n }\n callback() {\n this.done = true;\n this.loading = false;\n this.callbacks.forEach((cb) => {\n cb(this.onerrorEvent);\n });\n this.callbacks = [];\n }\n execute() {\n this.resetIfRetryingFailed();\n if (this.loading) {\n // do nothing but wait\n return;\n }\n if (this.done) {\n this.callback();\n }\n else {\n // short circuit and warn if google.maps is already loaded\n if (window.google && window.google.maps && window.google.maps.version) {\n console.warn(\"Google Maps already loaded outside @googlemaps/js-api-loader. \" +\n \"This may result in undesirable behavior as options and script parameters may not match.\");\n this.callback();\n return;\n }\n this.loading = true;\n this.setScript();\n }\n }\n}\n\nexport { DEFAULT_ID, Loader, LoaderStatus };\n","import { Injectable } from '@angular/core';\nimport { Loader } from '@googlemaps/js-api-loader';\nimport { environment } from 'src/environments/environment';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class GoogleMapsLoaderService {\n private loader: Loader;\n\n constructor() {\n this.loader = new Loader({\n apiKey: environment?.googleMapsApiKey,\n version: 'weekly',\n libraries: ['places'], // Add other libraries if needed\n });\n }\n\n loadGoogleMaps(): Promise {\n return this.loader.load();\n }\n}","export const ventePubChoices = [\n {\n id: 0,\n name: 'Première séance'\n },\n {\n id: 1,\n name: 'Faculté de surenchère'\n },\n {\n id: 2,\n name: 'Deuxième séance / adjudication définitive'\n },\n {\n id: 3,\n name: 'Folle enchère'\n }\n];\n\nexport const venteBidditChoices = [\n {\n id: 0,\n name: 'Vente online'\n },\n {\n id: 1,\n name: 'Folle enchère'\n }\n];\n","\n
    \n
    Infos complémentaires: {{ 'section-vente-type.vente-type.' + (venteType$ | async) | translate }}
    \n
    \n
      \n \n
    • \n \n \n \n \n {{ 'section-vente-type.sub-questions.vente-publique.choice.' + item.id | translate }}\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
    \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 \n \n {{ 'section-vente-type.sub-questions.vente-publique.yes' | translate }}\n \n \n {{ 'section-vente-type.sub-questions.vente-publique.no' | translate }}\n \n \n \n \n {{ 'error-messages.required-blank' | translate }}\n \n \n
    • \n
    • \n \n \n \n \n {{ 'section-vente-type.sub-questions.biddit.choice.' + item.id | translate }}\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
    • \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
    \n
    \n
    \n
    \n
    {{ 'section-cadastre.title' | translate }}
    \n
    \n \n {{ 'section-cadastre.division-label' | translate }}\n \n \n {{ 'error-messages.required-blank' | translate }}\n \n \n \n {{ 'section-cadastre.section-label' | translate }}\n \n \n {{ 'error-messages.required-blank' | translate }}\n \n \n \n {{ 'section-cadastre.cadastre-number-label' | translate }}\n \n \n {{ 'error-messages.required-blank' | translate }}\n \n \n \n {{ 'section-cadastre.RCNI-label' | translate }}\n \n \n {{ 'error-messages.required-blank' | translate }}\n \n \n
    \n
    \n
    \n
    {{ 'section-lieu-vente.title' | translate }}
    \n
    \n \n {{ 'section-user.disco.street' | translate }}\n \n \n {{ 'error-messages.required-blank' | translate }}\n \n \n \n {{ 'section-user.disco.num' | translate }}\n \n \n {{ 'error-messages.required-blank' | translate }}\n \n \n \n {{ 'section-user.disco.city' | translate }}\n \n \n {{ 'error-messages.required-blank' | translate }}\n \n \n \n {{ 'section-user.disco.zip' | translate }}\n \n \n {{ 'error-messages.required-blank' | translate }}\n \n \n
    \n
    \n
    \n
    {{ 'section-lieu-vente.description' | translate }}
    \n \n \n \n
    \n","import { Component, OnInit, Input, ViewChild } from '@angular/core';\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms';\nimport { debounceTime } from 'rxjs/operators';\nimport { Subscription, Observable } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { AppState } from 'src/app/interfaces';\nimport { SetVenteInfo } from 'src/app/core/store/order';\nimport { VenteInfo } from 'src/app/core/models/venteInfo';\nimport * as orderSelector from '../../core/store/order/order.selectors';\nimport { ventePubChoices, venteBidditChoices } from 'src/app/core/models/venteChoices';\nimport { CurrencyPipe } from '@angular/common';\n\n@Component({\n selector: 'app-vente-type-info',\n templateUrl: './vente-type-info.component.html',\n styleUrls: ['./vente-type-info.component.scss']\n})\nexport class VenteTypeInfoComponent implements OnInit {\n cadastreFG: FormGroup;\n venteFG: FormGroup;\n\n $venteInfoSub: Subscription;\n $cadastreSub: Subscription;\n\n ventePubFG: FormGroup;\n venteGreGreFG: FormGroup;\n venteBidditFG: FormGroup;\n\n ventePubSub$: Subscription;\n venteGreSub$: Subscription;\n venteBidditSub$: Subscription;\n\n minDate = new Date();\n comment: string;\n references: string;\n\n @Input()\n venteType$: Observable;\n venteInfo$: Observable;\n\n venteInfo: VenteInfo;\n\n ventePubChoices = ventePubChoices;\n venteBidditChoices = venteBidditChoices;\n\n @ViewChild('flatpickr1', { static: false }) flatpickr1: any;\n @ViewChild('flatpickr2', { static: false }) flatpickr2: any;\n @ViewChild('flatpickr3', { static: false }) flatpickr3: any;\n @ViewChild('flatpickr4', { static: false }) flatpickr4: any;\n @ViewChild('flatpickr5', { static: false }) flatpickr5: any;\n @ViewChild('flatpickr6', { static: false }) flatpickr6: any;\n\n constructor(private store: Store, private _formBuilder: FormBuilder, private currencyPipe: CurrencyPipe) {\n this.venteInfo$ = this.store.select(orderSelector.getVenteInfo);\n this.venteInfo$.subscribe(v => {\n this.venteInfo = v;\n this.comment = this.venteInfo.comment;\n this.references = this.venteInfo.references;\n });\n this.cadastreFG = this._formBuilder.group({\n division: [{ value: this.venteInfo?.division, disabled: false }],\n section: [{ value: this.venteInfo?.section, disabled: false }],\n numCadastre: [{ value: this.venteInfo?.numCadastre, disabled: false }],\n rcni: [{ value: this.venteInfo?.rcni, disabled: false }]\n });\n this.venteFG = this._formBuilder.group({\n street: [{ value: this.venteInfo?.street, disabled: false }],\n num: [{ value: this.venteInfo?.num, disabled: false }],\n city: [{ value: this.venteInfo?.city, disabled: false }],\n zip: [{ value: this.venteInfo?.zip, disabled: false }]\n });\n\n this.$cadastreSub = this.cadastreFG?.valueChanges.pipe(debounceTime(1000)).subscribe(values => {\n this.venteInfo = { ...this.venteInfo };\n this.venteInfo.division = values.division;\n this.venteInfo.section = values.section;\n this.venteInfo.numCadastre = values.numCadastre;\n this.venteInfo.rcni = values.rcni;\n\n this.store.dispatch(new SetVenteInfo(this.venteInfo));\n });\n this.$venteInfoSub = this.venteFG?.valueChanges.pipe(debounceTime(1000)).subscribe(values => {\n this.venteInfo = { ...this.venteInfo };\n this.venteInfo.street = values.street;\n this.venteInfo.num = values.num;\n this.venteInfo.city = values.city;\n this.venteInfo.zip = values.zip;\n /* this.venteInfo.statusVentePub = values.venteStatut;\n this.venteInfo.venteDate = values.venteDate; */\n\n this.store.dispatch(new SetVenteInfo(this.venteInfo));\n });\n\n this.ventePubFG = this._formBuilder.group({\n venteStatut: [\n this.ventePubChoices[this.venteInfo?.ventePub.venteStatut ? this.venteInfo.ventePub.venteStatut.id : 0]\n ],\n venteDate: [this.venteInfo?.ventePub.date_DateTime],\n ventePrice: [this.venteInfo?.ventePub.startPrice],\n references: [this.venteInfo?.references]\n });\n\n this.venteGreGreFG = this._formBuilder.group({\n venteOffre: [this.venteInfo?.greAgre.askedPrice],\n references: [this.venteInfo?.references]\n });\n\n this.venteBidditFG = this._formBuilder.group({\n venteForced: [],\n venteStatut: [\n this.venteBidditChoices[this.venteInfo?.biddit.venteStatut ? this.venteInfo?.biddit.venteStatut.id : 0]\n ],\n venteStartDate: [this.venteInfo?.biddit.startDate_DateTime],\n venteEndDate: [this.venteInfo?.biddit.endDate_DateTime],\n adjuDate: [this.venteInfo?.biddit.adjuDate_DateTime],\n infoDate: [this.venteInfo?.biddit.infoDate_DateTime],\n ventePrice: [this.venteInfo?.biddit.miseAPrix],\n venteMinEnch: [this.venteInfo?.biddit.minPrice],\n references: [this.venteInfo?.references]\n });\n }\n\n ngOnInit() {\n this.ventePubSub$ = this.ventePubFG?.valueChanges.pipe(debounceTime(1000)).subscribe(values => {\n this.venteInfo = JSON.parse(JSON.stringify(this.venteInfo));\n this.venteInfo.ventePub.venteStatut = values.venteStatut;\n this.venteInfo.ventePub.date_DateTime = values.venteDate && new Date(values.venteDate);\n this.venteInfo.ventePub.startPrice = values.ventePrice;\n this.venteInfo.references = values.references;\n\n this.store.dispatch(new SetVenteInfo(this.venteInfo));\n });\n\n this.venteGreSub$ = this.venteGreGreFG?.valueChanges.pipe(debounceTime(1000)).subscribe(values => {\n this.venteInfo = JSON.parse(JSON.stringify(this.venteInfo));\n this.venteInfo.greAgre.askedPrice = values.venteOffre;\n this.venteInfo.references = values.references;\n\n this.store.dispatch(new SetVenteInfo(this.venteInfo));\n });\n\n this.venteBidditSub$ = this.venteBidditFG?.valueChanges.pipe(debounceTime(1000)).subscribe(values => {\n this.venteInfo = JSON.parse(JSON.stringify(this.venteInfo));\n this.venteInfo.biddit.venteForced = values.venteForced;\n this.venteInfo.biddit.venteStatut = values.venteStatut;\n this.venteInfo.biddit.venteDate_DateTime = values.venteDate && new Date(values.venteDate);\n this.venteInfo.biddit.startDate_DateTime = values.venteStartDate && new Date(values.venteStartDate);\n this.venteInfo.biddit.endDate_DateTime = values.venteEndDate && new Date(values.venteEndDate);\n this.venteInfo.biddit.adjuDate_DateTime = values.adjuDate && new Date(values.adjuDate);\n this.venteInfo.biddit.infoDate_DateTime = values.infoDate && new Date(values.infoDate);\n this.venteInfo.biddit.miseAPrix = +values.ventePrice;\n this.venteInfo.biddit.minPrice = +values.venteMinEnch;\n this.venteInfo.references = values.references;\n\n this.store.dispatch(new SetVenteInfo(this.venteInfo));\n });\n }\n\n Open(id: number) {\n if (id === 1) {\n return this.flatpickr1.nativeElement._flatpickr.open();\n }\n if (id === 2) {\n return this.flatpickr2.nativeElement._flatpickr.open();\n }\n if (id === 3) {\n return this.flatpickr3.nativeElement._flatpickr.open();\n }\n if (id === 4) {\n return this.flatpickr4.nativeElement._flatpickr.open();\n }\n if (id === 5) {\n return this.flatpickr5.nativeElement._flatpickr.open();\n }\n if (id === 6) {\n return this.flatpickr6.nativeElement._flatpickr.open();\n }\n }\n\n SetComment() {\n const res = { ...this.venteInfo, comment: this.comment };\n this.store.dispatch(new SetVenteInfo(res));\n }\n\n SetReferences() {\n const res = { ...this.venteInfo, references: this.references };\n this.store.dispatch(new SetVenteInfo(res));\n }\n\n transformAmount(element) {\n if (!isNaN(element.target.value)) {\n const formattedAmount = this.currencyPipe?.transform(element.target.value, '€');\n element.target.value = formattedAmount;\n }\n }\n}\n","\n
    \n
    \n
    \n
    \n
    {{ 'section-user.disco.your-info' | translate }}
    \n
    \n \n {{ 'section-user.disco.title' | translate }}\n \n \n {{ userTitle }}\n \n \n \n \n {{ 'section-user.disco.firstname' | translate }}\n \n \n {{ 'error-messages.required-blank' | translate }}\n \n \n \n {{ 'section-user.disco.lastname' | translate }}\n \n \n {{ 'error-messages.required-blank' | translate }}\n \n \n \n \n \n +32\n \n \n +31\n \n \n +33\n \n \n +352\n \n \n +49\n \n \n \n \n {{ 'section-user.disco.gsm' | translate }}\n \n \n {{ 'error-messages.required-blank' | translate }}\n \n \n \n \n \n +32\n \n \n +31\n \n \n +33\n \n \n +352\n \n \n +49\n \n \n \n \n {{ 'section-user.disco.phone' | translate }}\n \n \n {{ 'error-messages.required-blank' | translate }}\n \n \n\n \n {{ 'section-user.disco.email' | translate }}\n \n \n {{ 'error-messages.required-blank' | translate }}\n \n \n {{ 'section-user.disco.email-error-usedemail' | translate }} \n {{\n 'section-user.disco.email-error-usedemail-login-invite' | translate\n }}\n \n \n
    \n
    \n
    \n \n {{ 'section-user.disco.societe-label' | translate }}\n \n
    \n \n {{ 'section-user.disco.societe-name' | translate }}\n \n \n {{ 'error-messages.required-blank' | translate }}\n \n \n \n {{ 'section-user.disco.societe-tva' | translate }}\n \n \n {{ 'error-messages.required-blank' | translate }}\n \n \n {{ 'error-messages.tva-invalid' | translate }}\n \n \n
    \n
    \n
    \n
    \n \n {{ 'inputs.google-map-search' | translate }}\n \n \n
    \n \n {{ 'section-user.disco.street' | translate }}\n \n \n {{ 'error-messages.required-blank' | translate }}\n \n \n \n {{ 'section-user.disco.num' | translate }}\n \n \n {{ 'error-messages.required-blank' | translate }}\n \n \n \n {{ 'section-user.disco.zip' | translate }}\n \n \n {{ 'error-messages.required-blank' | translate }}\n \n \n \n {{ 'section-user.disco.city' | translate }}\n \n \n {{ 'error-messages.required-blank' | translate }}\n \n \n \n {{ 'section-user.disco.tva' | translate }}\n \n \n {{ 'error-messages.tva-invalid' | translate }}\n \n \n
    \n
    \n
    \n
    \n \n
    \n {{ 'section-user.disco.owner-info.title' | translate }}\n
    \n\n \n {{ 'section-user.disco.owner-info.extra' | translate }}\n \n\n
    \n\n
    \n \n {{ 'section-user.disco.title' | translate }}\n \n \n {{ userTitle }}\n \n \n \n \n {{ 'section-user.disco.firstname' | translate }}\n \n \n {{ 'error-messages.required-blank' | translate }}\n \n \n \n {{ 'section-user.disco.lastname' | translate }}\n \n \n {{ 'error-messages.required-blank' | translate }}\n \n \n\n \n \n \n +32\n \n \n +31\n \n \n +33\n \n \n +352\n \n \n +49\n \n \n \n \n {{ 'section-user.disco.gsm' | translate }}\n \n \n {{ 'error-messages.required-blank' | translate }}\n \n \n \n \n \n +32\n \n \n +31\n \n \n +33\n \n \n +352\n \n \n +49\n \n \n \n \n {{ 'section-user.disco.phone' | translate }}\n \n \n \n {{ 'section-user.disco.email' | translate }}\n \n \n {{ 'error-messages.required-blank' | translate }}\n \n \n {{ 'section-user.disco.email-error-usedemail' | translate }}\n \n \n\n
    \n {{\n 'section-user.disco.does-owner-address-equal-pro-user-address' | translate\n }}\n
    \n
    \n
    \n \n \n {{ 'section-user.disco.societe-label' | translate }}\n \n
    \n \n {{ 'section-user.disco.societe-name' | translate }}\n \n \n {{ 'error-messages.required-blank' | translate }}\n \n \n \n {{ 'section-user.disco.societe-tva' | translate }}\n \n \n {{ 'error-messages.tva-invalid' | translate }}\n \n \n
    \n
    \n
    \n \n \n
    \n
    {{ 'section-user.disco.logged-in-as' | translate }}
    \n
    \n

    \n {{ 'section-user.disco.commercialname' | translate }}{{ user.commercialname }}\n

    \n

    \n {{ 'section-user.disco.lastname' | translate }}{{ user.firstname }} {{ user.lastname }}\n

    \n

    \n {{ 'section-user.connected.address' | translate }}\n {{ user.address.street }} {{ user.address.number }}, {{ user.address.zip }}\n {{ user.address.city }}\n

    \n

    \n {{ 'section-user.disco.email' | translate }}\n {{ user.email }}\n

    \n

    \n {{ 'section-user.disco.tva' | translate }}\n {{ user.tva }}\n

    \n
    \n
    \n
    \n
    \n
    {{ 'section-propriete.title' | translate }}
    \n
    \n \n {{ 'inputs.google-map-search' | translate }}\n \n \n
    \n \n {{ 'section-user.disco.street' | translate }}\n \n \n {{ 'error-messages.required-blank' | translate }}\n \n \n \n {{ 'section-user.disco.num' | translate }}\n \n \n {{ 'error-messages.required-blank' | translate }}\n \n \n \n {{ 'section-user.disco.boxnumber' | translate }}\n \n \n \n {{ 'section-user.disco.apartmentNumber' | translate }}\n \n \n \n {{ 'section-user.disco.zip' | translate }}\n \n \n {{ 'error-messages.required-blank' | translate }}\n \n \n \n {{ 'section-user.disco.city' | translate }}\n \n \n {{ 'error-messages.required-blank' | translate }}\n \n \n
    \n
    \n
    \n {{ 'section-situation.not-available' | translate }}\n
    \n
    \n -1\" [venteType$]=\"$venteType\">\n
    \n
    \n {{ 'section-accueil.title' | translate }}\n \n
    \n \n
      \n
    • \n \n {{ 'section-accueil.same-as-owner' | translate }}.\n \n
    • \n \n \n {{ 'section-accueil.key' | translate }}\n {{\n user.userType === userTypes.Agence || ($newUserType | async) === userTypes.Agence\n ? ('section-accueil.at-agency.title' | translate)\n : user.userType === userTypes.Notaire || ($newUserType | async) === userTypes.Notaire\n ? ('section-accueil.at-notary' | translate)\n : ('section-accueil.at-office' | translate)\n }}\n \n \n
      \n \n {{ 'section-user.connected.address' | translate }}\n \n \n {{ officeAddress.Address }} | {{ officeAddress.DrivingMinute }} | {{ officeAddress.Price }}€\n {{ 'section-money.tvac' | translate }} A/R\n \n \n \n
      \n
      \n
      \n \n
      \n

      {{ 'section-accueil.at-agency.info' | translate }}

      \n
      \n
      \n \n\n
    • \n \n {{ 'section-accueil.other-person' | translate }}\n \n
    • \n
    \n
    \n
    \n \n {{ 'section-user.disco.firstname' | translate }}\n \n \n {{ 'error-messages.required-blank' | translate }}\n \n \n \n {{ 'section-user.disco.lastname' | translate }}\n \n \n {{ 'error-messages.required-blank' | translate }}\n \n \n\n \n {{ 'section-user.disco.gsm' | translate }}\n \n \n {{ 'error-messages.required-blank' | translate }}\n \n \n\n \n {{ 'section-user.disco.phone' | translate }}\n \n \n \n
    \n
    1 && contactsArray\" class=\"contacts\">\n \n
    \n \n \n Description\n \n \n \n {{ 'section-user.disco.firstname' | translate }}\n \n \n \n {{ 'section-user.disco.lastname' | translate }}\n \n \n \n {{ 'section-user.disco.phone' | translate }}\n \n \n
    \n
    \n
    \n \n \n
    \n {{ 'section-accueil.date-butoir.title' | translate }}\n \n
    \n \n \n \n \n \n \n
    \n \n \n Liste des agents\n \n \n \n {{ elecAgent.Name }}\n \n \n \n\n \n \n
    \n\n
    \n \n {{ 'section-user.disco.agenda-banner' | translate }}\n \n
    \n \n
    \n \n \n {{ 'navigation.next' | translate }}\n \n
    \n \n
    \n\n","/// \n\nimport { Component, OnInit, Input, ChangeDetectorRef, ViewChild, ElementRef, ViewChildren, QueryList } from '@angular/core';\nimport { FormGroup, FormBuilder, Validators, FormControl, AbstractControl, FormArray } from '@angular/forms';\nimport { User, Owner, Contact, UserForm, UserType } from '../core/models/user';\nimport { Store } from '@ngrx/store';\nimport { AppState } from '../interfaces';\n\nimport * as orderSelector from '../core/store/order/order.selectors';\nimport * as uiSelector from '../core/store/ui/ui.selectors';\nimport * as PRODUCTS from '../core/data/products';\n\nimport { Observable, Subscription, combineLatest, of } from 'rxjs';\nimport { AuthService } from '../core/services/auth.service';\nimport { MatStepper } from '@angular/material/stepper';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { projectID } from '../core/data/theme-config';\n\nimport {\n SetAddress,\n SetOwner,\n SetContact,\n SetUserForm,\n SetDateButoir,\n SetNewUserType,\n SetGoGetKeys,\n SetContactChoice,\n SetInvoiceTo,\n SetVenteInfo,\n SetRegion,\n SetEstateStyle,\n SetAddressKey,\n SetContacts\n} from '../core/store/order';\nimport { Address } from '../core/models/address';\nimport { newUserTypes } from '../core/data/newUserTypes';\nimport { debounceTime, map, startWith, switchMap } from 'rxjs/operators';\nimport { ContactTypes } from '../core/enums/contact.enum';\nimport { SetStep2Valid } from '../core/store/ui';\nimport { filterNewUserTypes, step2HideDateButoir } from '../core/data/theme-config';\nimport { LoggerService } from '../core/services/logger.service';\nimport { VenteInfo } from '../core/models/venteInfo';\nimport { DataService } from '../core/services/data.service';\nimport { ClientOrdersService } from '../client-space/services/client-orders.service';\nimport { CompanyEmployeeDTO } from '../core/models/companyEmployeeDTO';\nimport { HttpClient } from '@angular/common/http';\nimport { OfficeAddressDTO } from '../core/models/officeAddress';\nimport { environment } from 'src/environments/environment';\nimport { joinPaths } from '../core/utils/paths/join';\nimport { GtmService } from '../core/services/google-tag-manager.service';\nimport { GoogleMapsLoaderService } from '../google-maps-loader.service';\nimport { MatDialog } from '@angular/material/dialog';\nimport { LoginDialogComponent } from '../dialogs/login-dialog/login-dialog.component';\n\n@Component({\n selector: 'app-step2',\n templateUrl: './step2.component.html',\n styleUrls: ['./step2.component.scss']\n})\nexport class Step2Component implements OnInit {\n @ViewChildren('googleMapsAutocomplete') googleMapsAutocompleteRefs!: QueryList;\n\n get isHainautOrNamurorNVN() {\n return projectID === 'namur' || projectID === 'hainaut' || projectID === 'nvn' || projectID === 'liege';\n }\n\n pResult: google.maps.places.PlaceResult;\n assetsFolder = 'assets/images/';\n debouncer: any;\n codecountry = '+32';\n mask = '0000/000000';\n gsmholder = '0412/345678';\n step2FormGroup: FormGroup;\n minDate = new Date();\n user: User;\n userForm: UserForm;\n gsm: string;\n address: Address;\n owner: Owner;\n contact: Contact;\n newUserTypes: { id: UserType; txt: string; fileName: string }[];\n contactTypes = ContactTypes;\n userTypes = UserType;\n contactChoice: string;\n newUserType: UserType;\n userType: UserType;\n isValid: boolean;\n dateButoire: Date;\n region: number;\n officeAddresses: OfficeAddressDTO[];\n vatMightBeInvalid = false;\n\n step2HideDateButoir = step2HideDateButoir;\n\n filterNewUserTypes = filterNewUserTypes;\n\n $ownerSub: Subscription;\n $contactSub: Subscription | undefined;\n $userSub: Subscription;\n $venteInfoSub: Subscription;\n $cadastreSub: Subscription;\n $goGetKeys: Observable;\n $nbOfApp: Observable;\n\n @Input() stepper: MatStepper;\n\n $isLoggedIn: Observable;\n $dateButoir: Observable;\n $newUserType: Observable;\n $contact: Observable;\n $contactChoice: Observable;\n $owner: Observable;\n $values: Observable;\n $venteType: Observable;\n $venteInfo: Observable;\n $zipCode: Observable;\n\n $isInstallateur: Observable;\n $isParticulier: Observable;\n\n $consumerAddresses: Observable;\n $addressKeyId: Observable;\n\n elecAgentControl = new FormControl();\n $elecAgents: Observable;\n $filteredElecAgents: Observable;\n\n cadastreFG: FormGroup;\n venteFG: FormGroup;\n\n isAvailableZipFlanders$: Observable;\n isAnversZip$: Observable;\n\n venteInfo = {\n street: '',\n num: '',\n city: '',\n zip: '',\n division: '',\n section: '',\n numCadastre: '',\n rcni: '',\n ventePub: {\n venteStatut: {\n id: 0,\n name: ''\n }\n }\n };\n\n userTitles = [\n 'Madame',\n 'Monsieur',\n 'Mademoiselle',\n 'Madame et Monsieur',\n 'Messieurs',\n 'Mesdames',\n 'Mesdemoiselles',\n 'Professeur',\n 'Docteur',\n 'Maître',\n 'Administration provisoire',\n 'Indivision',\n 'Succession',\n 'Veuve',\n 'Veuf'\n ];\n\n doesOwnerAddressEqualProUserAddress: boolean;\n hasCompletedStep2: boolean = false;\n addressAutocompleteListenersCleanupFunctions: Array<() => void> = [];\n\n constructor(\n private googleMapsLoader: GoogleMapsLoaderService,\n private store: Store,\n private authService: AuthService,\n public dataService: DataService,\n private _formBuilder: FormBuilder,\n protected cdRef: ChangeDetectorRef,\n private clientService: ClientOrdersService,\n private http: HttpClient,\n private logger: LoggerService,\n private gtmService: GtmService,\n private dialog: MatDialog\n ) {\n this.$isLoggedIn = this.store.select(orderSelector.getIsLoggedIn);\n\n this.$contact = this.store.select(orderSelector.getContact);\n\n this.$contactChoice = this.store.select(orderSelector.getContactChoice);\n this.$contactChoice.subscribe(c => (this.contactChoice = c));\n this.$newUserType = this.store.select(orderSelector.getUserType);\n this.store.select(orderSelector.getUserInfo).subscribe(u => (this.user = u));\n this.store.select(orderSelector.getUserForm).subscribe(u => (this.userForm = u));\n this.$owner = this.store.select(orderSelector.getOwner);\n this.$newUserType.subscribe(ut => (this.newUserType = ut));\n this.store.select(orderSelector.getUserType).subscribe(ut => (this.userType = ut));\n this.$venteType = this.store.select(orderSelector.getVenteType);\n this.$zipCode = this.store.select(orderSelector.getAddress)?.pipe(map(ad => ad.zip));\n this.$consumerAddresses = this.store.select(orderSelector.getConsumerAddresses);\n this.$addressKeyId = this.store.select(orderSelector.getAddressKey);\n this.$nbOfApp = this.store.select(orderSelector.getNbOfAppartments);\n this.$isInstallateur = this.authService.isInstallateur;\n this.$isParticulier = this.authService.isParticulier;\n this.$elecAgents = this.clientService\n .getElecAgents()\n ?.pipe(map(agents => agents.sort((a, b) => a.Name.localeCompare(b.Name))));\n\n this.$filteredElecAgents = this.elecAgentControl?.valueChanges?.pipe(\n startWith(''),\n switchMap(value => this._filter(value))\n );\n\n this.isAvailableZipFlanders$ = this.$zipCode?.pipe(\n map(code => {\n let res = true;\n if (+code > 999 && +code < 10000) {\n if (\n this.region === 2 &&\n !(\n (+code >= 1500 && +code < 2000) ||\n //(+code >= 2050 && +code <= 2160) ||\n //(+code >= 2200 && +code <= 2240) ||\n // +code == 2260 ||\n //+code == 2270 ||\n //+code == 2288 ||\n //+code == 2290 ||\n //(+code >= 2500 && +code <= 2890) ||\n (+code >= 3000 && +code <= 3499)\n )\n //(+code >= 9000 && +code < 10000)\n ) {\n res = false;\n }\n }\n return res;\n })\n );\n\n this.isAnversZip$ = this.$zipCode?.pipe(\n map(code => {\n let res = false;\n if (+code >= 2000 && +code < 3000) {\n res = true;\n }\n return res;\n })\n );\n this.$venteInfo = this.store.select(orderSelector.getVenteInfo);\n this.store.select(orderSelector.getRegion).subscribe(re => (this.region = re));\n this.$venteInfo.subscribe(v => (this.venteInfo = v));\n\n this.$owner.subscribe(o => {\n this.owner = o;\n });\n\n this.venteFG = this._formBuilder.group({\n street: [{ value: this.venteInfo?.street, disabled: false }],\n num: [{ value: this.venteInfo?.num, disabled: false }],\n city: [{ value: this.venteInfo?.city, disabled: false }],\n zip: [{ value: this.venteInfo?.zip, disabled: false }]\n });\n\n this.cadastreFG = this._formBuilder.group({\n division: [{ value: this.venteInfo?.division, disabled: false }],\n section: [{ value: this.venteInfo?.section, disabled: false }],\n numCadastre: [{ value: this.venteInfo?.numCadastre, disabled: false }],\n rcni: [{ value: this.venteInfo?.rcni, disabled: false }]\n });\n\n this.$venteInfoSub = this.venteFG.valueChanges?.pipe(debounceTime(1000)).subscribe(values => {\n this.venteInfo = { ...this.venteInfo };\n this.venteInfo.street = values.street;\n this.venteInfo.num = values.num;\n this.venteInfo.city = values.city;\n this.venteInfo.zip = values.zip;\n /* this.venteInfo.statusVentePub = values.venteStatut;\n this.venteInfo.venteDate = values.venteDate; */\n\n this.store.dispatch(new SetVenteInfo(this.venteInfo));\n });\n\n this.$cadastreSub = this.cadastreFG.valueChanges?.pipe(debounceTime(1000)).subscribe(values => {\n this.venteInfo = { ...this.venteInfo };\n this.venteInfo.division = values.division;\n this.venteInfo.section = values.section;\n this.venteInfo.numCadastre = values.numCadastre;\n this.venteInfo.rcni = values.rcni;\n\n this.store.dispatch(new SetVenteInfo(this.venteInfo));\n });\n\n this.$contact.subscribe(c => (this.contact = c));\n this.store.select(orderSelector.getAddress).subscribe(a => (this.address = a));\n\n combineLatest(this.$isLoggedIn, this.$newUserType, this.$contactChoice, (bool, newUserType, contactChoice) => ({\n bool,\n newUserType,\n contactChoice\n })).subscribe(({ bool, newUserType, contactChoice }) => {\n const isConnectedPart = bool && this.userType === UserType.Particulier;\n const isNewUserPart = !bool && newUserType === UserType.Particulier;\n const isParticulier = isNewUserPart || isConnectedPart;\n const notLogAndNotPart = !bool && !isParticulier;\n // this.logger.log('connected?', bool);\n // this.logger.log('isParticulier', isParticulier);\n if (!bool && isParticulier) {\n this.step2FormGroup = this._formBuilder.group({\n user: this._formBuilder.group({\n title: [\n {\n value: this.userForm.title,\n disabled: false\n }\n ],\n firstName: [\n {\n value: this.userForm.firstname,\n disabled: false\n },\n Validators.required\n ],\n lastName: [\n {\n value: this.userForm.lastname,\n disabled: false\n },\n Validators.required\n ],\n gsm: [\n {\n value: this.userForm.gsm,\n disabled: false\n },\n Validators.required\n ],\n indicator: [\n {\n value: this.userForm.indicator === '' ? this.codecountry : this.userForm.indicator,\n disabled: false\n },\n Validators.required\n ],\n indicatorphone: [\n {\n value: this.userForm.indicatorphone === '' ? this.codecountry : this.userForm.indicatorphone,\n disabled: false\n },\n Validators.required\n ],\n phone: [\n {\n value: this.userForm.phone,\n disabled: false\n }\n ],\n email: [\n {\n value: this.userForm.email,\n disabled: false\n },\n [Validators.required, Validators.email],\n this.isEmailUnique.bind(this)\n ],\n companyname: [\n {\n value: this.userForm.companyname,\n disabled: false\n }\n ],\n usertva: [\n {\n value: this.userForm.tva,\n disabled: false\n }\n ]\n }),\n address: this._formBuilder.group({\n orderStreet: [this.address?.street, Validators.required],\n orderNum: [this.address?.number, Validators.required],\n orderZip: [this.address?.zip, [Validators.required, this.inputZipCode.bind(this)]],\n orderCity: [this.address?.city, Validators.required],\n orderBoxNumber: [this.address?.boxNumber],\n orderApartmentNumber: [this.address?.apartmentNumber]\n }),\n contact: this._formBuilder.group({\n firstName: [\n {\n value: this.contact?.firstname,\n disabled: contactChoice !== 'other'\n },\n Validators.required\n ],\n lastName: [\n {\n value: this.contact?.lastname,\n disabled: contactChoice !== 'other'\n },\n Validators.required\n ],\n phone: [\n {\n value: this.contact?.phone,\n disabled: contactChoice !== 'other'\n }\n ],\n gsm: [\n {\n value: this.contact?.gsm,\n disabled: contactChoice !== 'other'\n },\n Validators.required\n ],\n contacts: this._formBuilder.array([])\n }),\n date: this._formBuilder.group({\n dateButoir: ['']\n })\n });\n\n this.$userSub = this.step2FormGroup\n ?.get('user')\n ?.valueChanges?.pipe(debounceTime(500))\n .subscribe(values => {\n const user = new UserForm();\n user.title = values.title;\n user.firstname = values.firstName;\n user.lastname = values.lastName;\n user.phone = values.phone;\n user.gsm = values.gsm;\n user.indicator = values.indicator;\n user.indicatorphone = values.indicatorphone;\n user.email = values.email;\n user.commercialname = values.companyname;\n user.companyname = values.companyname;\n user.tva = values.usertva;\n user.address.street = this.address.street;\n user.address.number = this.address.number;\n user.address.zip = this.address.zip;\n user.address.city = this.address.city;\n user.address.boxNumber = this.address.boxNumber;\n user.address.apartmentNumber = this.address.apartmentNumber;\n this.store.dispatch(new SetUserForm(user));\n });\n } else if (notLogAndNotPart) {\n this.step2FormGroup = this._formBuilder?.group({\n user: this._formBuilder.group({\n title: [\n {\n value: this.userForm?.title,\n disabled: bool\n }\n ],\n firstName: [\n {\n value: this.userForm?.firstname,\n disabled: bool\n },\n Validators.required\n ],\n gsm: [\n {\n value: this.userForm?.gsm,\n disabled: false\n },\n Validators.required\n ],\n indicator: [\n {\n value: this.userForm?.indicator === '' ? this.codecountry : this.userForm?.indicator,\n disabled: false\n },\n Validators.required\n ],\n indicatorphone: [\n {\n value: this.userForm?.indicatorphone === '' ? this.codecountry : this.userForm?.indicatorphone,\n disabled: false\n },\n Validators.required\n ],\n lastName: [\n {\n value: this.userForm?.lastname,\n disabled: bool\n },\n Validators.required\n ],\n phone: [\n {\n value: this.userForm?.phone,\n disabled: bool\n }\n ],\n email: [\n {\n value: this.userForm?.email,\n disabled: bool\n },\n [Validators.required, Validators.email],\n this.isEmailUnique.bind(this)\n ],\n tva: [\n {\n value: this.userForm?.tva,\n disabled: !notLogAndNotPart\n }\n ],\n userStreet: [\n {\n value: this.userForm?.address?.street,\n disabled: !notLogAndNotPart\n },\n Validators.required\n ],\n userNum: [\n {\n value: this.userForm?.address?.number,\n disabled: !notLogAndNotPart\n },\n Validators.required\n ],\n userZip: [\n {\n value: this.userForm?.address?.zip,\n disabled: !notLogAndNotPart\n },\n Validators.required\n ],\n userCity: [\n {\n value: this.userForm?.address?.city,\n disabled: !notLogAndNotPart\n },\n Validators.required\n ],\n userBoxNumber: [\n {\n value: this.userForm?.address?.boxNumber,\n disabled: !notLogAndNotPart\n }\n ],\n userApartmentNumber: [\n {\n value: this.userForm?.address?.apartmentNumber,\n disabled: !notLogAndNotPart\n }\n ]\n }),\n owner: this._formBuilder.group({\n title: [\n {\n value: this.owner?.title,\n disabled: isParticulier\n }\n ],\n firstName: [\n {\n value: this.owner?.firstname,\n disabled: isParticulier\n },\n Validators.required\n ],\n lastName: [\n {\n value: this.owner?.lastname,\n disabled: isParticulier\n },\n Validators.required\n ],\n gsm: [\n {\n value: this.owner?.gsm,\n disabled: isParticulier\n },\n Validators.required\n ],\n indicator: [\n {\n value: this.owner?.indicator === '' ? this.codecountry : this.owner?.indicator,\n disabled: false\n },\n Validators.required\n ],\n indicatorphone: [\n {\n value: this.owner?.indicatorphone === '' ? this.codecountry : this.owner?.indicatorphone,\n disabled: false\n },\n Validators.required\n ],\n phone: [\n {\n value: this.owner?.phone,\n disabled: isParticulier\n }\n ],\n email: [\n {\n value: this.owner?.email,\n disabled: isParticulier\n },\n Validators.email,\n this.isEmailUnique.bind(this)\n ],\n companyname: [\n {\n value: this.owner?.companyname,\n disabled: false\n }\n ],\n usertva: [\n {\n value: this.owner?.tva,\n disabled: false\n }\n ]\n }),\n address: this._formBuilder.group({\n orderStreet: [this.address?.street, Validators.required],\n orderNum: [this.address?.number, Validators.required],\n boxNumber: [this.address?.boxNumber],\n apartmentNumber: [this.address?.apartmentNumber],\n orderZip: [this.address?.zip, [Validators.required, this.inputZipCode.bind(this)]],\n orderCity: [this.address?.city, Validators.required]\n }),\n contact: this._formBuilder.group({\n firstName: [\n {\n value: this.contact?.firstname,\n disabled: contactChoice !== 'other'\n },\n Validators.required\n ],\n lastName: [\n {\n value: this.contact?.lastname,\n disabled: contactChoice !== 'other'\n },\n Validators.required\n ],\n phone: [\n {\n value: this.contact?.phone,\n disabled: contactChoice !== 'other'\n }\n ],\n gsm: [\n {\n value: this.contact?.gsm,\n disabled: contactChoice !== 'other'\n },\n Validators.required\n ],\n contacts: this._formBuilder.array([])\n }),\n date: this._formBuilder.group({\n dateButoir: ['']\n })\n });\n\n this.$ownerSub = this.step2FormGroup\n ?.get('owner')\n ?.valueChanges?.pipe(debounceTime(1000))\n .subscribe(values => {\n const owner = new Owner();\n owner.firstname = values.firstName;\n owner.lastname = values.lastName;\n owner.phone = values.phone;\n owner.gsm = values.gsm;\n owner.indicator = values.indicator;\n owner.indicatorphone = values.indicatorphone;\n owner.email = values.email;\n owner.companyname = values.companyname;\n owner.commercialname = values.companyname;\n owner.tva = values.usertva;\n owner.title = values.title;\n this.store.dispatch(new SetOwner(owner));\n });\n\n this.$userSub = this.step2FormGroup\n ?.get('user')\n ?.valueChanges?.pipe(debounceTime(1000))\n .subscribe(values => {\n const user = new UserForm();\n user.title = values.title;\n user.firstname = values.firstName;\n user.lastname = values.lastName;\n user.phone = values.phone;\n user.gsm = values.gsm;\n user.indicator = user.indicator;\n user.indicatorphone = user.indicatorphone;\n user.email = values.email;\n user.commercialname = values.companyname;\n user.companyname = values.companyname;\n user.tva = values.tva;\n user.address.street = values.userStreet;\n user.address.number = values.userNum;\n user.address.zip = values.userZip;\n user.address.city = values.userCity;\n user.address.boxNumber = values.boxNumber;\n user.address.apartmentNumber = values.apartmentNumber;\n this.store.dispatch(new SetUserForm(user));\n });\n } else if (bool && !isParticulier) {\n // this.logger.log('this connected');\n this.step2FormGroup = this._formBuilder?.group({\n owner: this._formBuilder.group({\n title: [\n {\n value: this.owner?.title,\n disabled: isParticulier\n }\n ],\n firstName: [\n {\n value: this.owner?.firstname,\n disabled: isParticulier\n },\n Validators.required\n ],\n lastName: [\n {\n value: this.owner?.lastname,\n disabled: isParticulier\n },\n Validators.required\n ],\n gsm: [\n {\n value: this.owner?.gsm == '' ? ' ' : this.owner.gsm,\n disabled: isParticulier\n },\n Validators.required\n ],\n indicator: [\n {\n value: this.owner?.indicator === '' ? this.codecountry : this.owner?.indicator,\n disabled: false\n },\n Validators.required\n ],\n indicatorphone: [\n {\n value: this.owner?.indicatorphone === '' ? this.codecountry : this.owner?.indicatorphone,\n disabled: false\n },\n Validators.required\n ],\n phone: [\n {\n value: this.owner?.phone,\n disabled: isParticulier\n }\n ],\n email: [\n {\n value: this.owner?.email,\n disabled: isParticulier\n },\n Validators.email\n ],\n companyname: [\n {\n value: this.owner?.companyname,\n disabled: false\n }\n ],\n usertva: [\n {\n value: this.owner?.tva,\n disabled: false\n }\n ]\n }),\n address: this._formBuilder.group({\n orderStreet: [this.address?.street, Validators.required],\n orderNum: [this.address?.number, Validators.required],\n orderBoxNumber: [this.address?.boxNumber],\n orderApartmentNumber: [this.address?.apartmentNumber],\n orderZip: [this.address?.zip, [Validators.required, this.inputZipCode.bind(this)]],\n orderCity: [this.address?.city, Validators.required]\n }),\n contact: this._formBuilder.group({\n firstName: [\n {\n value: this.contact?.firstname,\n disabled: contactChoice !== 'other'\n },\n Validators.required\n ],\n lastName: [\n {\n value: this.contact?.lastname,\n disabled: contactChoice !== 'other'\n },\n Validators.required\n ],\n phone: [\n {\n value: this.contact?.phone,\n disabled: contactChoice !== 'other'\n }\n ],\n gsm: [\n {\n value: this.contact?.gsm,\n disabled: contactChoice !== 'other'\n },\n Validators.required\n ],\n contacts: this._formBuilder.array([])\n }),\n date: this._formBuilder.group({\n dateButoir: ['']\n })\n });\n\n this.$ownerSub = this.step2FormGroup\n ?.get('owner')\n ?.valueChanges?.pipe(debounceTime(1000))\n .subscribe(values => {\n const owner = new Owner();\n owner.firstname = values.firstName;\n owner.lastname = values.lastName;\n owner.phone = values.phone;\n owner.gsm = values.gsm;\n owner.indicator = values.indicator;\n owner.indicatorphone = values.indicatorphone;\n owner.email = values.email;\n owner.companyname = values.companyname;\n owner.commercialname = values.companyname;\n owner.tva = values.usertva;\n owner.title = values.title;\n this.store.dispatch(new SetOwner(owner));\n });\n } else if (bool && isParticulier) {\n this.step2FormGroup = this._formBuilder?.group({\n address: this._formBuilder.group({\n orderStreet: [this.address.street, Validators.required],\n orderNum: [this.address.number, Validators.required],\n orderBoxNumber: [this.address.boxNumber],\n orderApartmentNumber: [this.address.apartmentNumber],\n orderZip: [this.address.zip, [Validators.required, this.inputZipCode.bind(this)]],\n orderCity: [this.address.city, Validators.required]\n }),\n contact: this._formBuilder.group({\n firstName: [\n {\n value: this.contact?.firstname,\n disabled: contactChoice !== 'other'\n },\n Validators.required\n ],\n lastName: [\n {\n value: this.contact?.lastname,\n disabled: contactChoice !== 'other'\n },\n Validators.required\n ],\n phone: [\n {\n value: this.contact?.phone,\n disabled: contactChoice !== 'other'\n }\n ],\n gsm: [\n {\n value: this.contact?.gsm,\n disabled: contactChoice !== 'other'\n },\n Validators.required\n ],\n contacts: this._formBuilder.array([])\n }),\n date: this._formBuilder.group({\n dateButoir: ['']\n })\n });\n }\n // this.logger.log(this.step2FormGroup);\n if (this.contactChoice === 'sameAsOwner') {\n this.$contactSub = this.$owner.subscribe(o => {\n const c = new Contact();\n c.firstname = o.firstname;\n c.lastname = o.lastname;\n c.phone = o.phone;\n c.gsm = o.gsm;\n this.store.dispatch(new SetContact(c as Contact));\n });\n } else this.$contactSub?.unsubscribe()\n\n this.step2FormGroup\n ?.get('address')\n ?.valueChanges?.pipe(debounceTime(1000))\n .subscribe(values => {\n // this.logger.log('changes to address');\n const address = new Address();\n address.street = values.orderStreet;\n address.number = values.orderNum;\n address.zip = values.orderZip;\n address.city = values.orderCity;\n address.boxNumber = values.orderBoxNumber;\n address.apartmentNumber = values.orderApartmentNumber;\n this.store.dispatch(new SetAddress(address));\n });\n\n this.step2FormGroup\n ?.get('contact')\n ?.valueChanges?.pipe(debounceTime(1000))\n .subscribe(values => {\n this.logger.log('changes to contact');\n const contact = new Contact();\n contact.firstname = values.firstName;\n contact.lastname = values.lastName;\n contact.phone = values.phone;\n contact.gsm = values.gsm;\n this.store.dispatch(new SetContact(contact));\n this.store.dispatch(new SetContacts(values.contacts));\n\n const date = values.dateButoir as Date;\n if (date) {\n date.setHours(date.getHours() + 1);\n this.store.dispatch(new SetDateButoir(date));\n }\n });\n\n this.step2FormGroup\n ?.get('date')\n ?.valueChanges?.pipe(debounceTime(1000))\n .subscribe(values => {\n // this.logger.log('changes to date');\n const date = values.dateButoir as Date;\n if (date) {\n date.setHours(date.getHours() + 1);\n this.store.dispatch(new SetDateButoir(date));\n }\n });\n this.step2FormGroup?.statusChanges.subscribe(value => {\n this.store.dispatch(new SetStep2Valid(value === 'VALID'));\n });\n });\n\n this.minDate?.setDate(this.minDate.getDate() + 1);\n }\n\n ngOnInit() {\n this.$isLoggedIn.subscribe(bool => {\n // this.logger.log('connected?', bool);\n if (!bool) {\n }\n });\n\n this.$goGetKeys = this.store.select(orderSelector.getGoGeyKeys);\n this.newUserTypes = newUserTypes.filter(ut => this.filterNewUserTypes.every(fu => fu !== ut.id));\n this.$newUserType = this.store.select(orderSelector.getUserType);\n this.store.select(uiSelector.getStep2IsValid).subscribe(bool => (this.isValid = bool));\n this.$dateButoir = this.store.select(orderSelector.getDateButoir);\n this.$dateButoir.subscribe(d => (this.dateButoire = d));\n\n this.$zipCode.subscribe(zip => {\n if (+this.step2FormGroup?.value.address.orderZip !== +zip) {\n this.step2FormGroup.get('address').patchValue({\n orderZip: zip\n });\n }\n });\n this.onZipChanges();\n this.step2FormGroup?.updateValueAndValidity();\n\n combineLatest(\n this.store.select(orderSelector.getUser),\n this.$owner\n \n ).subscribe(([user, owner]) => {\n const isPro = user.userType !== UserType.Particulier;\n this.doesOwnerAddressEqualProUserAddress = isPro && Boolean(user.email) && user.email === owner.email;\n });\n }\n\n ngAfterViewInit(): void {\n this.googleMapsLoader\n .loadGoogleMaps()\n .then(() => {\n this.$isLoggedIn.subscribe(() => {\n this.addressAutocompleteListenersCleanupFunctions.forEach(fn => fn());\n this.addressAutocompleteListenersCleanupFunctions = this.initializeAutocomplete();\n })\n })\n .catch((error) => {\n console.error(error);\n });\n }\n\n initializeAutocomplete() {\n return this.googleMapsAutocompleteRefs.map((googleMapsAutocomplete) => {\n const inputElement = googleMapsAutocomplete.nativeElement;\n\n // Initialize Google Maps Autocomplete for each field\n const autocomplete = new google.maps.places.Autocomplete(inputElement, {\n types: ['address'],\n });\n\n // Add listener for place_changed\n autocomplete.addListener('place_changed', () => {\n const place = autocomplete.getPlace();\n this.onAutocompleteSelected(place, inputElement.id === 'googleMapsAutocompleteUser' ? 'user' : 'owner'); \n });\n\n return () => autocomplete.unbindAll()\n });\n }\n onZipChanges(): void {\n this.step2FormGroup\n ?.get('address')\n ?.valueChanges?.pipe(debounceTime(500))\n .subscribe(val => {\n const code = val.orderZip;\n const valid = this.step2FormGroup.get('address.orderZip').valid;\n let region = -1;\n if (valid) {\n if (code >= 1000 && code <= 1299) {\n region = 1;\n } else if ((code >= 1500 && code <= 3999) || (code >= 8000 && code <= 9999)) {\n region = 2;\n } else if ((code >= 1300 && code <= 1499) || (code >= 4000 && code <= 7999)) {\n region = 0;\n }\n this.setRegion(region);\n }\n });\n }\n\n setRegion(id: number) {\n if (id === -1) {\n this.setEstateStyle(-1);\n }\n this.store.dispatch(new SetRegion(id));\n }\n\n setEstateStyle(style: number) {\n this.store.dispatch(new SetEstateStyle(style));\n }\n\n newUserTypeImgUrl(selectedId, fileName) {\n let url = this.assetsFolder;\n url += fileName;\n url += this.newUserType === selectedId ? '-selected.svg' : '.svg';\n return url;\n }\n\n setNewUserType(id: UserType) {\n if ((id === UserType.Particulier || id === UserType.Installateur) && this.contactChoice === 'keyAtAgency') {\n this.setContactChoice('sameAsOwner');\n }\n this.store.dispatch(new SetNewUserType(id));\n }\n\n filterWeekend(d: Date | undefined): boolean {\n if (!d) return false;\n const day = d.getDay();\n // Prevent Saturday and Sunday from being selected.\n return day !== 0 && day !== 6;\n }\n\n logOut() {\n const logged = this.authService.logout();\n if (!logged) {\n this.stepper.reset();\n }\n }\n\n copyContact() {\n // e.preventDefault();\n if (this.owner?.firstname || this.owner?.lastname || this.owner?.phone || this.owner?.gsm) {\n // this.logger.log('owner');\n this.step2FormGroup?.get('contact').patchValue({\n firstName: this.owner.firstname,\n lastName: this.owner.lastname,\n phone: this.owner.phone,\n gsm: this.owner.gsm\n });\n } else {\n // this.logger.log(this.userForm.firstname);\n this.step2FormGroup?.get('contact').patchValue({\n firstName: this.userForm.firstname,\n lastName: this.userForm.lastname,\n phone: this.userForm.phone,\n gsm: this.userForm.gsm\n });\n }\n }\n\n setContactChoice(id: string) {\n this.store.dispatch(new SetContactChoice(id));\n if (id !== 'keyAtAgency') {\n this.dataService.removeService(PRODUCTS.DEPLACEMENT);\n }\n if (id === 'sameAsOwner') {\n this.copyContact();\n this.store.dispatch(new SetGoGetKeys(false));\n this.step2FormGroup?.get('contact').patchValue({\n firstName: this.owner.firstname,\n lastName: this.owner.lastname,\n phone: this.owner.phone,\n gsm: this.owner.gsm\n });\n } else if (id === 'other') {\n this.store.dispatch(new SetContact(new Contact()));\n this.store.dispatch(new SetGoGetKeys(false));\n this.step2FormGroup?.get('contact').patchValue({\n firstName: this.contact.firstname,\n lastName: this.contact.lastname,\n phone: this.contact.phone,\n gsm: this.contact.gsm\n });\n } else if (id === 'keyAtAgency') {\n this.store.select(orderSelector.getAddress).subscribe(add => {\n if (add.street !== '' && add.zip !== '' && add.number !== '' && add.city !== '') {\n this.http\n .get(\n joinPaths(\n environment.CertiSystems.orderInfo,\n `GetKeyAddresses?userId=${this.authService.userId}&orderAddress=${add.street} ${add.number} ${add.zip} ${add.city}`\n )\n )\n .subscribe((adds: any) => {\n this.officeAddresses = adds.Data;\n if (this.officeAddresses && this.officeAddresses.length > 0) {\n const defaultOffice = this.officeAddresses[0];\n this.setOfficeDeplacement({\n id: defaultOffice.AddressObj.AddressID,\n price: defaultOffice.Price\n });\n }\n });\n }\n });\n this.store.dispatch(new SetGoGetKeys(true));\n }\n this.step2FormGroup?.get('date').patchValue({\n dateButoir: this.dateButoire\n });\n if (this.pResult) {\n const addrObj: any = this.getFormattedAddress(this.pResult);\n this.step2FormGroup?.get('address').patchValue({\n orderStreet: addrObj.street,\n orderNum: addrObj.num,\n orderCity: addrObj.city\n });\n }\n }\n\n toStep3() {\n if (this.isValid) {\n this.store.dispatch(new SetInvoiceTo('toProprio'));\n\n if (!this.hasCompletedStep2) {\n this.hasCompletedStep2 = true;\n this.gtmService.emit('order_funnel_step_2_completed')\n }\n }\n }\n\n onAutocompleteSelected(pResult: google.maps.places.PlaceResult, type: string) {\n this.pResult = pResult;\n const address = new Address();\n\n const addrObj: any = this.getFormattedAddress(pResult);\n\n address.number = addrObj.num;\n address.street = addrObj.street;\n address.zip = addrObj.zip;\n if (!addrObj.zip) {\n address.zip = '';\n }\n address.city = addrObj.city;\n address.country = addrObj.country;\n address.lat = addrObj.lat;\n address.lng = addrObj.lng;\n\n setTimeout(() => {\n if (type === 'owner') {\n this.step2FormGroup?.get('address').patchValue({\n orderStreet: address.street,\n orderNum: address.number,\n orderZip: address.zip,\n orderCity: address.city\n });\n this.store.dispatch(new SetAddress(address));\n } else if (type === 'user') {\n const user = { ...this.userForm };\n user.address = address;\n this.step2FormGroup?.get('user')?.patchValue({\n userStreet: address.street,\n userNum: address.number,\n userZip: address.zip,\n userCity: address.city\n });\n\n this.store.dispatch(new SetUserForm(user));\n }\n this.step2FormGroup?.markAsDirty();\n this.step2FormGroup?.updateValueAndValidity();\n this.cdRef?.detectChanges();\n }, 200);\n }\n\n getFormattedAddress(place) {\n const location_obj = {};\n for (const i in place.address_components) {\n if (place.address_components.hasOwnProperty(i)) {\n const item = place.address_components[i];\n location_obj['formatted_address'] = place.formatted_address;\n if (item['types'].indexOf('locality') > -1) {\n location_obj['city'] = item['long_name'];\n } else if (item['types'].indexOf('administrative_area_level_1') > -1) {\n location_obj['admin_area_l1'] = item['short_name'];\n } else if (item['types'].indexOf('street_number') > -1) {\n location_obj['num'] = item['short_name'];\n } else if (item['types'].indexOf('route') > -1) {\n location_obj['street'] = item['long_name'];\n } else if (item['types'].indexOf('country') > -1) {\n location_obj['country'] = item['long_name'];\n } else if (item['types'].indexOf('postal_code') > -1) {\n location_obj['zip'] = item['short_name'];\n }\n }\n }\n if (place && place.geometry && place.geometry.location.lat) {\n location_obj['lat'] = place.geometry.location.lat();\n }\n if (place && place.geometry && place.geometry.location.lng) {\n location_obj['lng'] = place.geometry.location.lng();\n }\n return location_obj;\n }\n\n isEmailUnique(control: FormControl) {\n clearTimeout(this.debouncer);\n\n return new Promise((resolve, reject) => {\n this.debouncer = setTimeout(() => {\n this.authService.isEmailAlreadyInUse(control.value).subscribe(data => {\n if (data.Data) {\n this.logger.log('Email exists', data.Data);\n resolve({ isEmailAlreadyInUse: true });\n } else {\n this.logger.log(`🚀`);\n resolve(null);\n }\n });\n }, 1000);\n });\n }\n\n toggleDisplayTVA(checkbox: MatCheckbox) {\n this.logger.log(checkbox);\n }\n\n inputZipCode(control: AbstractControl): { [key: string]: any } | null {\n const pattern = new RegExp(/^(?:(?:[1-9])(?:\\d{3}))$/);\n const code = control.value + '';\n const valid = code ? code.match(pattern) : false;\n return valid ? null : { isZipCode: { valid: false, value: code } };\n }\n\n selectStatusVentePub(item) {\n this.venteInfo = JSON.parse(JSON.stringify(this.venteInfo));\n this.venteInfo.ventePub.venteStatut = item;\n this.store.dispatch(new SetVenteInfo(this.venteInfo));\n }\n\n checkTva(data: any) {\n this.dataService.checkTva(data.target.value).subscribe(res => {\n this.vatMightBeInvalid = !res;\n });\n }\n\n setAddressKey(id: string, officeAddresses: OfficeAddressDTO[]) {\n const office = officeAddresses.find(off => off.AddressObj.AddressID === id);\n this.setOfficeDeplacement({ id: office.AddressObj.AddressID, price: office.Price });\n }\n\n setOfficeDeplacement(office: { id: string; price: number }) {\n this.store.dispatch(new SetAddressKey(office));\n this.dataService.removeService(PRODUCTS.DEPLACEMENT);\n setTimeout(() => {\n this.dataService.setService(PRODUCTS.DEPLACEMENT);\n }, 200);\n }\n\n get contactsArray(): FormArray {\n return this.step2FormGroup?.get('contact.contacts') as FormArray;\n }\n\n addContacts() {\n this.contactsArray.push(this._formBuilder.group(new Contact()));\n }\n\n private _filter(value: string): Observable {\n if (typeof value !== 'string') {\n return of(null);\n }\n const filterValue = value.toLowerCase();\n\n return this.$elecAgents?.pipe(map(agents => agents.filter(agent => agent.Name.toLowerCase().includes(filterValue))));\n }\n\n displayFn(employee: CompanyEmployeeDTO): string {\n return employee && employee.Name ? employee.Name : '';\n }\n changeprefix(event) {\n switch (event.value) {\n case '+32': {\n this.mask = '0000/000000';\n this.gsmholder = '0412/345678';\n break;\n }\n case '+31': {\n this.mask = '000 000 0000';\n this.gsmholder = '021 234 5678';\n break;\n }\n case '+33': {\n this.mask = '00 00 00 00 00';\n this.gsmholder = '06 12 34 56 78';\n break;\n }\n case '+352': {\n this.mask = '0000 000 000';\n this.gsmholder = '0623 456 789';\n break;\n }\n case '+49': {\n this.mask = '000 0 0000000';\n this.gsmholder = '017 0 7654321';\n break;\n }\n default: {\n this.mask = '0000/000000';\n this.gsmholder = '0412/345678';\n break;\n }\n }\n }\n\n openLoginDialog () {\n this.dialog.open(LoginDialogComponent, {\n panelClass: ['no-padding-dialog', 'full-screen-dialog'],\n data: { dialog: this.dialog }\n });\n }\n}\n","\n
    \n {{ 'section-accueil.options-title' | translate }}\n
    \n
    \n \n {{ 'section-accueil.split-invoice' | translate }}\n {{\n ($isAgency | async)\n ? ('section-accueil.at-agency.title' | translate)\n : ('section-accueil.at-notary' | translate)\n }}\n \n \n
    0\">\n
      \n \n
    • 0\">\n {{ 'section-money.reductions.' + product.id | translate }} -\n {{ product.price - product.reduction - product.commission }} € TVAC\n
    • \n
      \n
    \n
    \n
    \n
    \n\n","import { Component, OnInit, Input } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { AppState } from 'src/app/interfaces';\nimport * as orderSelector from '../../core/store/order/order.selectors';\nimport { AuthService } from 'src/app/core/services/auth.service';\nimport * as PRODUCTS from '../../core/data/products';\nimport { map } from 'rxjs/operators';\nimport { hasSplitInvoice } from 'src/app/core/data/theme-config';\nimport { SetSplitInvoice } from 'src/app/core/store/order';\nimport { Product } from 'src/app/core/models/product';\n\n@Component({\n selector: 'app-split-invoice',\n templateUrl: './split-invoice.component.html',\n styleUrls: ['./split-invoice.component.scss']\n})\nexport class SplitInvoiceComponent implements OnInit {\n $hasImmoServices: Observable;\n $hasLegalServices: Observable;\n $isAgency: Observable;\n $isNotary: Observable;\n $productsForAgency: Observable;\n\n @Input()\n showTitle = true;\n @Input()\n showDetails = true;\n\n hasSplitInvoice = hasSplitInvoice;\n splitInvoice = false;\n\n constructor(private store: Store, private authService: AuthService) {}\n\n ngOnInit() {\n this.store.select(orderSelector.getSplitInvoice).subscribe(s => (this.splitInvoice = s));\n this.$productsForAgency = this.store.select(orderSelector.getProductsForAgency);\n this.$isAgency = this.authService.isAgency;\n this.$isNotary = this.authService.isNotary;\n this.$hasImmoServices = this.store\n .select(orderSelector.getProducts)\n .pipe(map(op => [...op].filter(pr => pr.id > 17 || pr.id === PRODUCTS.PLAN).length > 0));\n this.$hasLegalServices = this.store\n .select(orderSelector.getProducts)\n .pipe(map(op => [...op].filter(pr => pr.id === PRODUCTS.PEB || pr.id === PRODUCTS.ELEC).length > 0));\n }\n\n togglesplitInvoice() {\n this.store.dispatch(new SetSplitInvoice(this.splitInvoice));\n }\n}\n","
    \n
    \n
    \n {{ 'step3.title' | translate }}\n \n
    \n
    \n \n
    \n
    {{ 'step3.to-owner' | translate }}
    \n
    \n
    \n

    \n {{ 'step3.fullname' | translate }}: {{ owner?.companyname }} {{ owner?.firstname }}\n {{ owner?.lastname }}\n

    \n

    \n {{ 'step3.address' | translate }}: {{ address?.street }} {{ address?.number }}\n {{ address?.boxNumber }} {{ address?.apartmentNumber }}, {{ address?.zip }} {{ address?.city }}\n

    \n
    \n \n \n
    \n
    {{ 'step3.to-owner-co-notary' | translate }}
    \n
    \n
    \n

    \n {{ 'step3.fullname' | translate }}: {{ owner?.firstname }} {{ owner?.lastname }} C/o\n {{ user?.commercialname }}\n

    \n

    \n {{ 'step3.address' | translate }}: {{ user?.address?.street }} {{ user?.address?.number }}\n {{ user?.address?.boxNumber }} {{ user?.address?.apartmentNumber }},\n {{ user?.address?.zip }}\n {{ user?.address?.city }}\n

    \n
    \n \n \n
    \n
    \n {{ (userType === UserTypeEnum?.Installateur ? 'step3.to-insta' : 'step3.to-notary') | translate }}\n
    \n
    \n
    \n

    \n {{ 'step3.fullname' | translate }}: {{ user?.lastname }} {{ user?.firstname }}\n {{ user?.commercialname }}\n

    \n

    \n {{ 'step3.address' | translate }}: {{ user?.address?.street }} {{ user?.address?.number }}\n {{ user?.address?.boxNumber }} {{ user?.address?.apartmentNumber }},\n {{ user?.address?.zip }}\n {{ user?.address?.city }}\n

    \n
    \n \n \n
    \n
    {{ 'step3.to-owner-co-agency' | translate }}
    \n
    \n
    \n

    \n {{ 'step3.fullname' | translate }}: {{ owner?.firstname }} {{ owner?.lastname }} C/o\n {{ user?.commercialname }}\n

    \n

    \n {{ 'step3.address' | translate }}: {{ user?.address?.street }} {{ user?.address?.number }}\n {{ user?.address?.boxNumber }} {{ user?.address?.apartmentNumber }},\n {{ user?.address?.zip }}\n {{ user?.address?.city }}\n

    \n
    \n \n \n
    \n
    {{ 'step3.to-agency' | translate }}
    \n
    \n
    \n

    \n {{ 'step3.fullname' | translate }}: {{ user?.commercialname }}\n

    \n

    \n {{ 'step3.address' | translate }}: {{ user?.address?.street }} {{ user?.address?.number }}\n {{ user?.address?.boxNumber }} {{ user?.address?.apartmentNumber }},\n {{ user?.address?.zip }}\n {{ user?.address?.city }}\n

    \n
    \n \n \n
    \n
    {{ 'step3.to-owner' | translate }}
    \n
    \n
    \n

    \n {{ 'step3.fullname' | translate }}:{{ userForm?.companyname }} {{ userForm?.firstname }}\n {{ userForm?.lastname }}\n

    \n

    \n {{ 'step3.address' | translate }}: {{ address?.street }} {{ address?.number }}\n {{ address?.boxNumber }} {{ address?.apartmentNumber }}, {{ address?.zip }} {{ address?.city }}\n

    \n
    \n \n
    \n
    \n
    \n {{ 'step3.info' | translate }}\n
    \n
    \n \n
    \n
    \n
    \n \n \n
    \n","/// \n\nimport { Component, OnInit, AfterViewInit, ChangeDetectorRef } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { AppState } from '../interfaces';\nimport { Observable } from 'rxjs';\n\nimport * as orderSelector from '../core/store/order/order.selectors';\nimport * as uiSelector from '../core/store/ui/ui.selectors';\n\nimport { SetInvoiceTo, SetDocument } from '../core/store/order';\nimport { Owner, User, UserForm, UserType } from '../core/models/user';\nimport { Document } from '../core/models/document';\nimport { Address } from '../core/models/address';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { debounceTime } from 'rxjs/operators';\nimport { SetStep3Valid } from '../core/store/ui';\n\nimport { forceInvoiceToPro } from '../core/data/theme-config';\nimport { GtmService } from '../core/services/google-tag-manager.service';\n\n@Component({\n selector: 'app-step3',\n templateUrl: './step3.component.html',\n styleUrls: ['./step3.component.scss']\n})\nexport class Step3Component implements OnInit, AfterViewInit {\n placeResult: google.maps.places.PlaceResult;\n invoiceTo: string;\n $invoiceTo: Observable;\n $isLoggedIn: Observable;\n $isStep3Valid: Observable;\n\n otherDocFormGroup: FormGroup;\n\n UserTypeEnum = UserType;\n\n user: User;\n userForm: UserForm;\n address: Address;\n owner: Owner;\n userType: number;\n document: Document;\n\n forceToPro = forceInvoiceToPro;\n\n hasCompletedStep3: boolean = false;\n\n constructor(\n private store: Store,\n private _formBuilder: FormBuilder,\n private cdRef: ChangeDetectorRef,\n private gtmService: GtmService\n ) {\n this.store.select(orderSelector.getDocument).subscribe(d => (this.document = d));\n this.$isLoggedIn = this.store.select(orderSelector.getIsLoggedIn);\n\n this.otherDocFormGroup = this._formBuilder?.group({\n firstName: [{ value: this.document?.firstName, disabled: false }, Validators.required],\n lastName: [{ value: this.document?.lastName, disabled: false }, Validators.required],\n street: [{ value: this.document?.address.street, disabled: false }, Validators.required],\n number: [{ value: this.document?.address.number, disabled: false }, Validators.required],\n zip: [{ value: this.document?.address.zip, disabled: false }, Validators.required],\n city: [{ value: this.document?.address.city, disabled: false }, Validators.required],\n boxNumber: [{ value: this.document?.address.boxNumber, disabled: false }],\n apartmentNumber: [{ value: this.document?.address.apartmentNumber, disabled: false }],\n tva: [{ value: this.document?.tva, disabled: false }],\n companyName: [{ value: this.document?.companyName, disabled: false }]\n });\n }\n\n ngOnInit() {\n this.$invoiceTo = this.store.select(orderSelector.getInvoiceTo);\n this.$isStep3Valid = this.store.select(uiSelector.getStep3IsValid);\n\n this.$invoiceTo?.subscribe(i => {\n this.invoiceTo = i;\n if (this.invoiceTo !== 'toOther' && this.invoiceTo !== '') {\n this.store.dispatch(new SetStep3Valid(true));\n }\n const formGP = this.otherDocFormGroup;\n formGP?.statusChanges?.pipe(debounceTime(500)).subscribe(statu => {\n if (this.invoiceTo === 'toOther') {\n const statusValid = statu === 'VALID';\n let oldStatus;\n this.store.select(uiSelector.getStep3IsValid).subscribe(st => (oldStatus = st));\n if (oldStatus !== statusValid) {\n this.store.dispatch(new SetStep3Valid(statusValid));\n }\n }\n });\n });\n\n this.store.select(orderSelector.getUserInfo).subscribe(u => (this.user = u));\n this.store.select(orderSelector.getUserForm).subscribe(u => (this.userForm = u));\n this.store.select(orderSelector.getOwner).subscribe(o => (this.owner = o));\n this.store.select(orderSelector.getAddress).subscribe(a => (this.address = a));\n this.store.select(orderSelector.getUserType).subscribe(t => (this.userType = t));\n\n this.otherDocFormGroup?.valueChanges?.pipe(debounceTime(500)).subscribe(values => {\n const adr: any = {\n street: values.street,\n number: values.number,\n boxNumber: values.boxNumber,\n apartmentNumber: values.apartmentNumber,\n zip: values.zip,\n city: values.city\n };\n const doc: Document = {\n lastName: values.lastName,\n firstName: values.firstName,\n tva: values.tva,\n companyName: values.companyName,\n address: adr\n };\n\n this.store.dispatch(new SetDocument(doc));\n });\n }\n\n ngAfterViewInit(): void {\n // test updateValueAndValidity is a function\n if (this.otherDocFormGroup && typeof this.otherDocFormGroup.updateValueAndValidity === 'function') {\n this.otherDocFormGroup?.updateValueAndValidity({ onlySelf: true, emitEvent: false });\n }\n }\n\n SelectInvoice(type: string) {\n if (type !== this.invoiceTo) {\n this.store.dispatch(new SetInvoiceTo(type));\n if (type === 'toOther') {\n // this.store.dispatch(new SetDocument(new Document()));\n this.otherDocFormGroup?.updateValueAndValidity();\n }\n }\n }\n\n onAutocompleteSelected(pResult: google.maps.places.PlaceResult) {\n const address = new Address();\n const addrObj: any = this.getFormattedAddress(pResult);\n\n address.number = addrObj?.num;\n address.street = addrObj?.street;\n address.zip = addrObj?.zip;\n address.city = addrObj?.city;\n address.country = addrObj?.country;\n address.lat = addrObj?.lat;\n address.lng = addrObj?.lng;\n\n this.otherDocFormGroup?.patchValue({\n street: address?.street,\n number: address?.number,\n zip: address?.zip,\n city: address?.city\n });\n\n const doc = { ...this.document };\n doc.address = address;\n this.store.dispatch(new SetDocument(doc));\n this.otherDocFormGroup?.markAsDirty();\n this.otherDocFormGroup?.updateValueAndValidity();\n this.cdRef?.detectChanges();\n }\n\n getFormattedAddress(place) {\n const location_obj = {};\n for (const i in place.address_components) {\n if (place.address_components.hasOwnProperty(i)) {\n const item = place.address_components[i];\n\n location_obj['formatted_address'] = place.formatted_address;\n if (item['types'].indexOf('locality') > -1) {\n location_obj['city'] = item['long_name'];\n } else if (item['types'].indexOf('administrative_area_level_1') > -1) {\n location_obj['admin_area_l1'] = item['short_name'];\n } else if (item['types'].indexOf('street_number') > -1) {\n location_obj['num'] = item['short_name'];\n } else if (item['types'].indexOf('route') > -1) {\n location_obj['street'] = item['long_name'];\n } else if (item['types'].indexOf('country') > -1) {\n location_obj['country'] = item['long_name'];\n } else if (item['types'].indexOf('postal_code') > -1) {\n location_obj['zip'] = item['short_name'];\n }\n }\n }\n if (place && place.geometry && place.geometry.location.lat) {\n location_obj['lat'] = place.geometry.location.lat();\n }\n if (place && place.geometry && place.geometry.location.lng) {\n location_obj['lng'] = place.geometry.location.lng();\n }\n return location_obj;\n }\n\n toStep4() {\n if (!this.hasCompletedStep3) {\n this.hasCompletedStep3 = true;\n this.gtmService.emit('order_funnel_step_3_completed');\n }\n }\n}\n","import * as PRODUCTS from '../data/products';\n\nexport class Product {\n id: number;\n name: string;\n price: string;\n reduction: string;\n commission: number;\n\n constructor(id, price, reduction, commisison = 0) {\n this.id = id;\n this.price = price;\n this.reduction = reduction;\n this.name = this.SetName(id);\n this.commission = commisison;\n }\n\n private SetName(id: number): string {\n switch (id) {\n case PRODUCTS.URGENT_PRO:\n return 'Frais urgence NVN';\n case 1:\n return 'Certificat PEB';\n case 6:\n return 'Contrôle citerne aérienne';\n case 4:\n return 'Contrôle électrique';\n case 8:\n return 'Contrôle électrique supplémentaire';\n case 5:\n return 'Réduction';\n case 9:\n return 'Contrôle citerne - enterrée';\n case 6:\n return 'Contrôle citerne - aérienne';\n case PRODUCTS.EXTRA:\n return 'Frais de dossier Certinergie';\n case 11:\n return 'PEB Partiel';\n case 13:\n return 'Déplacement clé';\n case 14:\n return 'Plan 2D';\n case 15:\n return 'Contrôle gaz';\n case 16:\n return 'Contrôle gaz supplémentaire';\n case 17:\n return 'Plan isométrique';\n case 18:\n return 'Photo [HDR]';\n case 19:\n return 'Photos aériennes';\n case 20:\n return 'Vidéo';\n case 21:\n return 'Visite 360°';\n case 26:\n return 'Plan 3D';\n case 27:\n return 'Descriptif';\n case 28:\n return 'PEB chauffage type 1';\n case 29:\n return 'Panneau Pack panneau';\n case 30:\n return 'Pack panneau avec support';\n case 32:\n return 'Placement de vos panneaux';\n case 33:\n return 'Placement de vos panneaux avec support';\n case 34:\n return 'Code SMS';\n case 49:\n return 'PEB chauffage type 2';\n case 50:\n return 'Entretien chaudière';\n case 51:\n return 'Contrôle combi peb elec';\n case 55:\n return 'Contrôle combi gaz élec';\n case 52:\n return 'Média combi';\n case 53:\n return 'Immo light combi';\n case 54:\n return 'Immo combi';\n case 100:\n return 'Contrôle Gaz périodique';\n case 101:\n return 'Photo vidéo drone';\n case 102:\n return 'Commande panneaux';\n case 11111:\n return 'Certificat PEB';\n case 10000:\n return 'Publication standard IPL';\n case 10001:\n return 'Publication Immoweb';\n case 10002:\n return 'Mise en ligne Immovlan';\n case 10005:\n return 'Frais de dossier';\n case 10003:\n return 'Mise en ligne notaire.be';\n case 10006:\n return 'Supplément publication IPL + BIDDIT.be';\n case 10023:\n return 'Visite Ad Valoris';\n case 10024:\n return 'Vente forcée serrurier';\n case 10025:\n return 'Publication sur l’Avenir';\n case 10026:\n return 'Publication sur Proximag Andenne';\n case 10027:\n return 'Publication sur Proximag Ciney/Condroz';\n case 10028:\n return 'Publication sur Proximag Dinant/Beauraing';\n case 10029:\n return 'Publication sur Proximag Gembloux';\n case 10030:\n return 'Publication sur Proximag Namur';\n case 10031:\n return 'Publication sur Proximag Philippeville';\n case 10032:\n return 'Publication sur Proximag Couvin/Chimay';\n case 10033:\n return 'Publication sur Proximag Ciney/Dinant/Beauraing';\n case 10034:\n return 'Publication sur Proximag Charleroi';\n case 10035:\n return 'Publication sur Proximag Brabant Wallon Est';\n case 10036:\n return 'Publication sur Proximag Huy';\n case 10037:\n return 'Publication sur Proximag Hesbaye';\n case 10038:\n return 'Publication sur Proximag Famenne';\n case 10039:\n return 'Publication sur Proximag Ardennes';\n case 10040:\n return 'Visite Gil 4 semaines';\n case 10041:\n return 'Visite Gil 6 semaines';\n case 10042:\n return 'Visite Gil illimité 3 mois';\n case 10043:\n return 'Visite Gil option - 2 visites période enchère';\n case 10044:\n return 'Visite Gil option - visites illimitées pendant période d’enchère';\n case 10002:\n return 'Mise en ligne Immovlan';\n case 10003:\n return 'Mise en ligne notaire.be';\n case 10023:\n return 'Visite Ad Valoris';\n case 10040:\n return 'Visite Gil 4 semaines';\n case 10041:\n return 'Visite Gil 6 semaines';\n case 10042:\n return 'Visite Gil illimité 3 mois';\n case 10043:\n return 'Visite Gil option - 2 visites période enchère';\n case 10044:\n return 'Visite Gil option - visites illimitées pendant période d’enchère';\n case PRODUCTS.AUDIT:\n return 'Audit';\n case PRODUCTS.ELEC_PHOTOVOLTA:\n return 'Photovoltaïque - Borne recharge - Batterie';\n case PRODUCTS.AMIANTE:\n return 'Amiante';\n case PRODUCTS.ELEC_NONDOM_MAX125A:\n return 'Elec non résidentiel (<125A)';\n case PRODUCTS.ELEC_NONDOM_OVER125A:\n return 'Elec non résidentiel (>125A)';\n case PRODUCTS.NETTMAISON:\n return 'Nettoyage maison';\n case PRODUCTS.NETTJARDIN:\n return 'Nettoyage Jardin';\n case PRODUCTS.RESP_PEB:\n return 'Responsabilité PEB / Conseil PEB';\n case -2:\n return 'Web vitrine du bien';\n case -41:\n return 'Publication à la carte';\n case -42:\n return 'Panneau XL';\n default:\n return 'wrong id';\n }\n }\n}\n","
    \n
    \n
    \n \n {{ 'specific-request-dialog.dialog-title' | translate }}\n
    \n
    \n
    \n

    \n {{ 'specific-request-dialog.dialog-content' | translate }} 02 880 21 71\n {{ 'specific-request-dialog.dialog-content-end' | translate }}\n

    \n

    {{ 'specific-request-dialog.dialog-content-conclusion' | translate }}

    \n
    \n
    \n \n {{ 'section-user.disco.firstname' | translate }}\n \n \n {{ 'error-messages.required-blank' | translate }}\n \n \n \n {{ 'section-user.disco.lastname' | translate }}\n \n \n {{ 'error-messages.required-blank' | translate }}\n \n \n \n {{ 'section-user.disco.phone' | translate }}\n \n \n {{ 'error-messages.required-blank' | translate }}\n \n \n \n {{ 'section-user.disco.email' | translate }}\n \n \n {{ 'error-messages.required-blank' | translate }}\n \n \n \n \n \n \n
    \n
    \n \n \n
    \n
    \n
    \n \n \n \n
    {{ 'specific-request-dialog.success-title' | translate }}
    \n

    \n {{ 'specific-request-dialog.success-content' | translate }}\n

    \n \n
    \n","import { Component, OnInit, Inject } from '@angular/core';\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms';\nimport { SendEmailService } from 'src/app/core/services/send-email.service';\nimport { LoggerService } from 'src/app/core/services/logger.service';\nimport { MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';\n\n@Component({\n selector: 'app-specific-request-dialog',\n templateUrl: './specific-request-dialog.component.html',\n styleUrls: ['./specific-request-dialog.component.scss']\n})\nexport class SpecificRequestDialogComponent implements OnInit {\n devisFormGroup: FormGroup;\n sent: boolean;\n\n constructor(\n private _formBuilder: FormBuilder,\n private sendEmailService: SendEmailService,\n private logger: LoggerService,\n @Inject(MAT_DIALOG_DATA)\n public data: { dialog: MatDialog; estateId: number }\n ) {}\n\n ngOnInit() {\n this.sent = false;\n\n this.devisFormGroup = this._formBuilder.group({\n firstName: [\n {\n value: '',\n disabled: false\n },\n Validators.required\n ],\n lastName: [\n {\n value: '',\n disabled: false\n },\n Validators.required\n ],\n phone: [\n {\n value: '',\n disabled: false\n },\n Validators.required\n ],\n email: [\n {\n value: '',\n disabled: false\n },\n Validators.required\n ],\n userStreet: [''],\n userNum: [''],\n userZip: [''],\n userCity: [''],\n remarks: ['']\n });\n }\n\n close() {\n this.data.dialog.closeAll();\n }\n\n onSubmit() {\n if (this.devisFormGroup.invalid) {\n this.logger.log('invalid form');\n return;\n }\n this.logger.log(this.devisFormGroup.value);\n this.sendEmailService\n .sendDevis(this.devisFormGroup.value, this.data.estateId === 0 ? 'bien +500m²' : 'non résidentiel +250m²')\n .subscribe(\n val => {\n this.logger.log(`🚀`);\n this.logger.log('Devis envoyé avec succès', val);\n this.sent = true;\n },\n response => {\n this.logger.log('😰 POST Devis error', response);\n this.sent = false;\n }\n );\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'htva'\n})\nexport class HtvaPipe implements PipeTransform {\n transform(value: number, args?: any): number {\n const valueHTVA = value / 1.21;\n\n let rounded = parseFloat(valueHTVA.toFixed(2));\n\n const y = Math.round(((valueHTVA * 100) % 10) * 100) / 100;\n\n if (y <= 5) {\n rounded = parseFloat(rounded.toFixed(1));\n } else {\n rounded += 0.05;\n }\n rounded = Math.floor(rounded * 10) / 10;\n\n return rounded;\n }\n}\n","
    \n
    \n \"\"{{ 'summary-confirm-dialog.title' | translate }}\n
    \n
    \n
    \n
    \n
    \n
    {{ 'section-situation.title' | translate }}
    \n
    \n \n \"\"\n \n {{ 'section-situation.region.' + data.regionId | translate }}\n
    \n
    \n
    \n
    {{ 'section-type.title' | translate }}
    \n
    \n \n \"\"\n \n {{ 'estateTpes.' + data.estateTypeId | translate }}\n
    \n
    \n
    \n
    {{ 'summary-confirm-dialog.services' | translate }}
    \n
    \n
    \n \n \"\"\n \n {{ 'section-money.reductions.' + productId | translate }}\n
    \n
    \n
    \n
    \n
    \n
    {{ 'section-money.total' | translate }}
    \n
    \n \n {{ 'section-money.htva' | translate }}\n {{ data.price - data.reduction | htva }} €\n \n \n {{ 'section-money.tvac' | translate }}\n {{ data.price - data.reduction }} €\n \n
    \n
    \n
    \n
    \n \n \n
    \n","import { Component, OnInit, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';\nimport { MatStepper } from '@angular/material/stepper';\nimport { services, immoServices } from 'src/app/core/data';\nimport { LoggerService } from 'src/app/core/services/logger.service';\n\n@Component({\n selector: 'app-summary-confirm-dialog',\n templateUrl: './summary-confirm-dialog.component.html',\n styleUrls: ['./summary-confirm-dialog.component.scss']\n})\nexport class SummaryConfirmDialogComponent implements OnInit {\n assetsFolder = 'assets/images/';\n editOrder = false;\n\n constructor(\n @Inject(MAT_DIALOG_DATA)\n public data: {\n regionId: number;\n estateTypeId: number;\n dialog: MatDialog;\n products: number[];\n stepper: MatStepper;\n price: number;\n reduction: number;\n },\n private logger: LoggerService\n ) {}\n\n ngOnInit() {}\n\n serviceImgUrl(id: number) {\n let url = this.assetsFolder;\n\n url += this.getFileName(id);\n url += '-selected.svg';\n return url;\n }\n\n getFileName(id: number): string {\n id = id === 8 ? 4 : id === 16 ? 15 : id;\n let s: any = services.find(sv => sv.id === id);\n if (s === undefined) {\n s = immoServices.find(serv => serv.id === id);\n }\n return s === undefined ? null : s.fileName;\n }\n\n getRegionImg(id: number) {\n const url = '../../../assets/images/be-';\n const file = id === 2 ? 'vl' : id === 1 ? 'bxl' : 'wal';\n this.logger.log(file);\n return url + file + '-selected.svg';\n }\n\n getEstateImg(id: number) {\n const url = '../../../assets/images/type-';\n const file =\n id === 2 ? 'immeuble' : id === 4 || id === 11 || id === 1 || id === 12 || id === 13 ? 'appart' : 'maison';\n return url + file + '-selected.svg';\n }\n\n backToEditOrder() {\n this.editOrder = true;\n this.data.stepper.previous();\n }\n\n next() {\n this.data.dialog.closeAll();\n }\n}\n","export const immoOrCtrlOptions = [\n {\n id: -1,\n txt: 'Votre demande concerne ?',\n fileName: 'user-type'\n },\n {\n id: 0,\n txt: 'Des contrôles légaux',\n fileName: 'certinergie-logo_squared'\n },\n {\n id: 2,\n txt: 'Des panneaux',\n fileName: 'reason-controle'\n },\n {\n id: 1,\n txt: 'Des services immo',\n fileName: 'reason-immo'\n }\n];\n\nexport const mdnOptions = [\n {\n id: -1,\n txt: 'Votre demande concerne ?',\n fileName: 'user-type'\n },\n {\n id: 1,\n txt: 'Des contrôles légaux',\n fileName: 'reason-controle'\n },\n {\n id: 2,\n txt: 'Des panneaux',\n fileName: 'service-panneau-colle'\n },\n {\n id: 3,\n txt: 'Services MDN',\n fileName: 'service-descriptif'\n }\n];\n\nexport const nvnOptions = [\n {\n id: -1,\n txt: 'Votre demande concerne ?',\n fileName: 'user-type'\n },\n {\n id: 1,\n txt: 'Des contrôles légaux',\n fileName: 'reason-controle'\n },\n {\n id: 2,\n txt: 'Des panneaux',\n fileName: 'reason-controle'\n }\n];\n","export const ventes = [\n {\n id: -1,\n txt: 'Sélectionnez le type de vente',\n fileName: 'reason-type'\n },\n {\n id: 0,\n txt: 'Vente publique',\n fileName: 'reason-vente'\n },\n {\n id: 1,\n txt: 'Gré à gré',\n fileName: 'reason-gregre'\n },\n {\n id: 2,\n txt: 'Vente Biddit',\n fileName: 'reason-biddit'\n }\n];\n","export const reasons = [\n {\n id: -1,\n txt: 'Sélectionnez la raison de votre venue',\n fileName: 'reason-type'\n },\n {\n id: 3,\n txt: 'Ctrl',\n fileName: 'reason-controle'\n },\n {\n id: 0,\n txt: 'Vente',\n fileName: 'reason-vente'\n },\n {\n id: 1,\n txt: 'Location',\n fileName: 'reason-location'\n },\n {\n id: 2,\n txt: 'Reno',\n fileName: 'reason-renovation'\n }\n];\n","'use strict';\n\nexport const assetsFolder = 'assets/';\nexport const imgagesFolder = 'assets/images/';\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Pipe({\n name: 'safeHtml'\n})\nexport class SafeHtmlPipe implements PipeTransform {\n constructor(private sanitizer: DomSanitizer) {}\n\n transform(value: any, args?: any): any {\n return this.sanitizer.bypassSecurityTrustUrl(value);\n }\n}\n","\n
    \n
    \n \n {{\n (data.type === 'lavenir' ? 'print-request-dialog.carte.title' : 'print-request-dialog.carte.title-nvn')\n | translate\n }}\n
    \n
    \n
    \n

    {{ 'print-request-dialog.carte.intro-avenir' | translate }}

    \n

    {{ 'print-request-dialog.carte.intro' | translate }}

    \n \n
    0\">\n
      \n
    • \n
      \n {{ paru.name }}\n -\n {{ paru.date | date: 'dd/MM/yyyy' }}\n \n -\n {{\n paru.needPhoto\n ? ('print-request-dialog.carte.with-picture' | translate)\n : ('print-request-dialog.carte.without-picture' | translate)\n }}\n \n \n -\n {{ paru.format }}\n \n -\n {{ 'section-money.htva' | translate }}: {{ paru.price | htva }}€\n
      \n \n \n \n \n \n \n
    • \n
    \n \n
    \n
    \n
    \n

    \n {{ 'print-request-dialog.carte.pub-text' | translate }}\n

    \n
    \n \n \n \n
    \n
    \n
    \n

    {{ 'print-request-dialog.carte.add-file-title' | translate }}

    \n
    \n \n \n \n \n
    \n
    0\">\n
      \n
    • \n
      \n {{ 'File ' + fileIndex(i) }}\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 \n {{ 'print-request-dialog.add-parution.title' | translate }}\n
    \n
    \n
    \n
    \n
    \n \n \n \n \n {{ paru.name }}\n \n \n \n
    \n
    \n \n \n \n \n {{ 'print-request-dialog.carte.with-picture' | translate }}\n \n \n {{ 'print-request-dialog.carte.without-picture' | translate }}\n \n \n \n
    \n
    \n \n \n \n \n \n \n
    \n
    \n \n \n \n \n {{ 'print-request-dialog.add-parution.weeks' | translate }}\n
    \n
    \n
      \n
    • \n {{ 'print-request-dialog.add-parution.size' | translate }}\n {{ currentParu.format }}\n
    • \n
    • \n {{ 'print-request-dialog.add-parution.price' | translate }}\n {{ 'section-money.htva' | translate }}: {{ finalPrice | htva }}€\n
    • \n
    \n
    \n {{ 'print-request-dialog.add-parution.legal' | translate }}\n
    \n
    \n
    \n \n \n \n
    \n
    \n","import { SetParutionComment } from './../../core/store/order/order.actions';\nimport { Component, OnInit, Inject } from '@angular/core';\nimport { MatDialog, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { Print } from 'src/app/core/models/print';\nimport { AppState } from 'src/app/interfaces';\nimport { Store } from '@ngrx/store';\nimport { SetParutions, SetParutionFileLinks } from 'src/app/core/store/order';\nimport { getParutions, getUserID } from 'src/app/core/store/order/order.selectors';\nimport * as PRODUCTS from '../../core/data/products';\nimport { DataService } from 'src/app/core/services/data.service';\nimport { projectID } from 'src/app/core/data/theme-config';\nimport { ProductDB } from 'src/app/core/models/productDB';\nimport { FileUploader } from 'ng2-file-upload';\nimport { VENTES } from 'src/app/core/enums/vente.enum';\nimport { FormBuilder, Validators, FormGroup, FormControl } from '@angular/forms';\nimport { environment } from 'src/environments/environment';\nimport { joinPaths } from 'src/app/core/utils/paths/join';\n\nconst URL = joinPaths(environment.CertiServices.order, 'UploadPhotoNotary');\n\n@Component({\n selector: 'app-print-request-dialog',\n templateUrl: './print-request-dialog.component.html',\n styleUrls: ['./print-request-dialog.component.scss']\n})\nexport class PrintRequestDialogComponent implements OnInit {\n tomorrow = new Date();\n infoFormGroup: FormGroup;\n\n selectedChoice = 0;\n repeatNumber = 1;\n\n currentParu: Print = {\n id: -1,\n name: '',\n needPhoto: true,\n date: null,\n day: 0,\n price: 0,\n format: ''\n };\n\n public uploader: FileUploader = new FileUploader({\n url: URL,\n removeAfterUpload: false,\n autoUpload: true\n });\n fileUrl = joinPaths(environment.certinergieBlobStorageBaseUrl, 'certinergieclientfiles/');\n\n showAddParu = false;\n editing = false;\n\n options = [];\n\n optionsNamur = [];\n\n uploadLinks = [];\n\n paruList: Print[] = [];\n\n defaultParu: Print;\n\n venteType = -1;\n\n userID: string;\n\n projectID = projectID;\n\n constructor(\n @Inject(MAT_DIALOG_DATA)\n public data: { dialog: MatDialog; reason: number; type: string },\n private store: Store,\n private _formBuilder: FormBuilder,\n private dataService: DataService\n ) {\n this.options =\n this.data?.type === 'lavenir'\n ? [\n {\n id: PRODUCTS.ProximagNamurBW,\n name: 'L’Avenir Namur + lavenir.net',\n format: '',\n day: 6,\n ...this.getPubPrice(PRODUCTS.ProximagNamurBW)\n },\n {\n id: PRODUCTS.ProximagLuxembourg,\n name: 'L’Avenir Luxembourg + lavenir.net',\n format: '',\n day: 6,\n ...this.getPubPrice(PRODUCTS.ProximagLuxembourg)\n },\n {\n id: PRODUCTS.ProximagLiege,\n name: 'L’Avenir Liege + lavenir.net',\n format: '',\n day: 6,\n ...this.getPubPrice(PRODUCTS.ProximagLiege)\n },\n {\n id: PRODUCTS.ProximagHainautOcc,\n name: 'L’Avenir Hainaut Occidental + lavenir.net',\n format: '',\n day: 6,\n ...this.getPubPrice(PRODUCTS.ProximagHainautOcc)\n },\n {\n id: PRODUCTS.ProximagHainautOutOfOcc,\n name: 'L’Avenir Hainaut hors Occidental + lavenir.net',\n format: '',\n day: 6,\n ...this.getPubPrice(PRODUCTS.ProximagHainautOutOfOcc)\n }\n ]\n : projectID === 'namur' || projectID === 'liege'\n ? [\n {\n id: PRODUCTS.PublicationAvenir,\n name: 'L’Avenir',\n format: '',\n day: 6,\n ...this.getPubPrice(PRODUCTS.PublicationAvenir)\n },\n {\n id: PRODUCTS.PublicationProximagAndenne,\n name: 'Proximag Andenne',\n format: '',\n day: 3,\n ...this.getPubPrice(PRODUCTS.PublicationProximagAndenne)\n },\n {\n id: PRODUCTS.PublicationProximagCiney_Condroz,\n name: 'Proximag Ciney/Condroz',\n format: '',\n day: 3,\n ...this.getPubPrice(PRODUCTS.PublicationProximagCiney_Condroz)\n },\n {\n id: PRODUCTS.PublicationProximagDinant_Bauraing,\n name: 'Proximag Dinant/Beauraing',\n format: '',\n day: 3,\n ...this.getPubPrice(PRODUCTS.PublicationProximagDinant_Bauraing)\n },\n {\n id: PRODUCTS.PublicationProximagGembloux,\n name: 'Proximag Gembloux',\n format: '',\n day: 3,\n ...this.getPubPrice(PRODUCTS.PublicationProximagGembloux)\n },\n {\n id: PRODUCTS.PublicationProximagNamur,\n name: 'Proximag Namur',\n format: '',\n day: 3,\n ...this.getPubPrice(PRODUCTS.PublicationProximagNamur)\n },\n {\n id: PRODUCTS.PublicationProximagPhilippeville,\n name: 'Proximag Philippeville',\n format: '',\n day: 3,\n ...this.getPubPrice(PRODUCTS.PublicationProximagPhilippeville)\n },\n {\n id: PRODUCTS.PublicationProximagCouvinChimay,\n name: 'Proximag Couvin/Chimay',\n format: '',\n day: 3,\n ...this.getPubPrice(PRODUCTS.PublicationProximagCouvinChimay)\n },\n {\n id: PRODUCTS.PublicationProximagCiney_Dinant_Beauraing,\n name: 'Proximag Ciney/Dinant/Beauraing',\n format: '',\n day: 3,\n ...this.getPubPrice(PRODUCTS.PublicationProximagCiney_Dinant_Beauraing)\n },\n {\n id: PRODUCTS.PublicationProximagCharleroi,\n name: 'Proximag Charleroi',\n format: '',\n day: 3,\n ...this.getPubPrice(PRODUCTS.PublicationProximagCharleroi)\n },\n {\n id: PRODUCTS.PublicationProximagBrabantWallonEst,\n name: 'Proximag Brabant Wallon Est',\n format: '',\n day: 3,\n ...this.getPubPrice(PRODUCTS.PublicationProximagBrabantWallonEst)\n },\n {\n id: PRODUCTS.PublicationProximagHuy,\n name: 'Proximag Huy',\n format: '',\n day: 3,\n ...this.getPubPrice(PRODUCTS.PublicationProximagHuy)\n },\n {\n id: PRODUCTS.PublicationProximagHesbaye,\n name: 'Proximag Hesbaye',\n format: '',\n day: 3,\n ...this.getPubPrice(PRODUCTS.PublicationProximagHesbaye)\n },\n {\n id: PRODUCTS.PublicationProximagFamenne,\n name: 'Proximag Famenne',\n format: '',\n day: 3,\n ...this.getPubPrice(PRODUCTS.PublicationProximagFamenne)\n },\n {\n id: PRODUCTS.PublicationProximagArdennes,\n name: 'Proximag Ardennes',\n format: '',\n day: 3,\n ...this.getPubPrice(PRODUCTS.PublicationProximagArdennes)\n }\n ]\n : [\n {\n id: PRODUCTS.PublicationVlan,\n name: 'Vlan (lundi)',\n format: '60 à 80 mm',\n day: 1,\n ...this.getPubPrice(PRODUCTS.PublicationVlan)\n },\n {\n id: PRODUCTS.VlanEditionLocal,\n name: 'Vlan Edition Locale (lundi)',\n format: '60 à 80 mm',\n day: 3,\n ...this.getPubPrice(PRODUCTS.VlanEditionLocal)\n },\n {\n id: PRODUCTS.PublicationLeSoir,\n name: 'Le Soir (jeudi)',\n format: '81 à 100 mm',\n day: 4,\n ...this.getPubPrice(PRODUCTS.PublicationLeSoir)\n },\n {\n id: PRODUCTS.PublicationNiewsblad,\n name: 'Niewsblad/standaard (samedi)',\n format: '130 mm',\n day: 6,\n ...this.getPubPrice(PRODUCTS.PublicationNiewsblad)\n },\n {\n id: PRODUCTS.PublicationHetLaatsteNieuws,\n name: 'Het Laatste Nieuws (samedi)',\n format: '85 à 120 mm',\n day: 6,\n ...this.getPubPrice(PRODUCTS.PublicationHetLaatsteNieuws)\n },\n {\n id: PRODUCTS.publicationLaLibre,\n name: 'La Libre Immo + La dernière Heure (jeudi)',\n format: '100 mm 2 colonnes',\n day: 4,\n ...this.getPubPrice(PRODUCTS.publicationLaLibre)\n },\n {\n id: PRODUCTS.PublicationBruzz,\n name: 'Bruzz (jeudi)',\n format: '',\n day: 4,\n ...this.getPubPrice(PRODUCTS.PublicationBruzz)\n },\n {\n id: PRODUCTS.PublicationDeZondag,\n name: 'De Zondag (dimanche)',\n format: '',\n day: 0,\n ...this.getPubPrice(PRODUCTS.PublicationDeZondag)\n }\n ];\n\n this.defaultParu = {\n id: this.options[0]?.id,\n name: this.options[0]?.name,\n needPhoto: true,\n date: this.nextDay(this.options[0]?.day),\n day: this.options[0]?.day,\n price: this.options[0]?.price,\n format: this.options[0]?.format\n };\n this.currentParu = { ...this.defaultParu };\n }\n\n ngOnInit() {\n this.store.select(getParutions).subscribe(p => {\n this.paruList = p;\n });\n\n this.store.select(getUserID).subscribe(us => (this.userID = us));\n\n this.infoFormGroup = this._formBuilder?.group({\n instructions: [\n {\n value: '',\n disabled: false\n },\n Validators.required\n ]\n });\n\n this.uploader.onBuildItemForm = (item, form) => {\n item.withCredentials = false;\n form.append('userID', this.userID);\n };\n\n this.uploader.onSuccessItem = (item, response, status, headers) => {\n this.uploadLinks = [...this.uploadLinks, JSON.parse(response)];\n this.store.dispatch(new SetParutionFileLinks([...this.uploadLinks]));\n };\n }\n\n setSupportType(index) {\n this.currentParu.name = this.options[index]?.name;\n this.currentParu.day = this.options[index]?.day;\n this.currentParu.price = this.options[index]?.price;\n this.currentParu.format = this.options[index]?.format;\n this.currentParu.id = this.options[index]?.id;\n this.currentParu.commission = this.options[index]?.commission;\n this.currentParu.date = this.nextDay(this.options[index]?.day);\n }\n\n filterWeekend(d: Date) {\n const day = d.getDay();\n return day === 1 || day === 2 || day === 3 || day === 4 || day === 5;\n }\n\n filterOneDay(d: Date) {\n const day = d.getDay();\n return this.currentParu.day !== -1 ? day === this.currentParu.day : true;\n }\n\n addSupport() {\n if (this.currentParu.date) {\n let parutions = [];\n for (let index = 0; index < this.repeatNumber; index++) {\n const paruTmp = { ...this.currentParu };\n paruTmp.date = this.addDays(this.currentParu.date, 7 * index);\n parutions = [...parutions, paruTmp];\n }\n this.paruList = [...this.paruList, ...parutions];\n this.showAddParu = false;\n }\n }\n\n displayAddParu() {\n this.showAddParu = true;\n this.currentParu = { ...this.defaultParu };\n }\n\n deleteParu(index) {\n this.paruList = [...this.paruList];\n this.paruList.splice(index, 1);\n }\n\n editParu(index) {\n this.editing = true;\n this.showAddParu = true;\n this.currentParu = this.paruList[index];\n this.selectedChoice = this.options.indexOf(this.options?.find(p => p.name === this.currentParu.name));\n }\n\n saveEditSupport() {\n this.editing = false;\n this.showAddParu = false;\n }\n\n close() {\n this.data?.dialog.closeAll();\n }\n\n cancel() {\n const list = [...this.paruList].filter(pr => pr.id === PRODUCTS.FullPress);\n this.store.dispatch(new SetParutions(list));\n this.data?.dialog.closeAll();\n }\n\n saveParu() {\n this.store.dispatch(new SetParutionComment(this.infoFormGroup.value.instructions));\n this.store.dispatch(new SetParutions(this.paruList));\n this.close();\n }\n\n backToList() {\n this.showAddParu = false;\n }\n\n getPubDB(id: number): ProductDB {\n if (projectID === 'default') {\n return this.dataService?.products?.find(pr => pr.ProductType === id);\n }\n this.venteType = this.data?.reason === VENTES.VENTE_PUB ? 3 : this.data?.reason;\n const product =\n this.dataService?.products?.find(\n pr => pr.ProductType === id && pr.SaleType === this.venteType && pr.WithPhoto === this.currentParu.needPhoto\n ) ||\n this.dataService?.products?.find(pr => pr.ProductType === id && pr.SaleType === this.venteType) ||\n this.dataService?.products?.find(pr => pr.ProductType === id);\n return product;\n }\n\n getPubPrice(id: number) {\n return { price: this.getPubDB(id)?.Price, commission: this.getPubDB(id)?.Commission };\n }\n\n get showPhotoSelect() {\n return this.data?.reason === 1 || projectID === 'nvn' ? true : false;\n }\n\n onPhotoValueChanges() {\n setTimeout(() => {\n this.currentParu = { ...this.currentParu, ...this.getPubPrice(this.currentParu.id) };\n }, 100);\n }\n\n fileIndex(i: number) {\n return i + 1;\n }\n\n deletePhotoLink(index: number) {\n this.uploadLinks = [...this.uploadLinks];\n this.uploadLinks.splice(index, 1);\n }\n\n nextDay(x: number) {\n x = x === 0 ? 7 : x;\n const now = new Date();\n now.setDate(now.getDate() + ((x + (7 - now.getDay())) % 7) + 14);\n return now;\n }\n\n addDays(date, days) {\n const result = new Date(date);\n result.setDate(result.getDate() + days);\n return result;\n }\n\n get finalPrice() {\n return this.repeatNumber !== 0 ? this.currentParu?.price * this.repeatNumber : this.currentParu?.price;\n }\n}\n","\n
    \n
    \n \n {{ 'visit-request-dialog.choice.valoris.title' | translate }}\n
    \n
    \n \n
    \n

    {{ 'visit-request-dialog.choice.valoris.intro-1' | translate }}

    \n
    \n
    \n
    \n \n
    \n

    {{ 'visit-request-dialog.choice.valoris.intro-2' | translate }}

    \n
    \n
    \n
    \n
    \n
    \n \n
    \n

    \n {{ 'visit-request-dialog.choice.valoris.option.ouverture.title' | translate }}\n

    \n

    {{ 'visit-request-dialog.choice.valoris.option.ouverture.info' | translate }}

    \n
    \n
    \n \n
    \n

    \n {{ 'visit-request-dialog.choice.valoris.option.valeur.title' | translate }}\n

    \n

    {{ 'visit-request-dialog.choice.valoris.option.valeur.info' | translate }}

    \n
    \n
    \n
    \n
    \n

    \n Des instructions complémentaires à nous transmettre ?\n

    \n
    \n \n \n \n
    \n
    \n
    \n {{ 'visit-request-dialog.choice.valoris.price' | translate }}\n
    \n
    \n
    \n \n \n
    \n
    \n\n
    \n
    \n \n {{ 'visit-request-dialog.choice.gil-1.title' | translate }}\n
    \n
    \n \n
    \n

    {{ 'visit-request-dialog.choice.gil-1.intro' | translate }}

    \n
    \n
    \n
    \n
    \n {{ 'visit-request-dialog.choice.gil-1.price' | translate }}\n
    \n
    \n
    \n \n
    \n

    {{ 'visit-request-dialog.choice.gil-2.intro' | translate }}

    \n \n {{ 'visit-request-dialog.choice.gil-2.forfait.4Sem.title' | translate }}\n \n \n {{ 'visit-request-dialog.choice.gil-2.forfait.6Sem.title' | translate }}\n \n

    Options :

    \n \n {{ 'visit-request-dialog.choice.gil-2.option.2Vis.title' | translate }}\n \n \n {{ 'visit-request-dialog.choice.gil-2.option.illim.title' | translate }}\n \n
    \n {{ 'visit-request-dialog.choice.gil-2.price' | translate: { totalPrice: totalPrice } }}\n
    \n
    \n
    \n
    \n \n \n
    \n
    \n","import { LoggerService } from 'src/app/core/services/logger.service';\nimport { Component, OnInit, Inject } from '@angular/core';\nimport { FormGroup, FormBuilder } from '@angular/forms';\nimport { Visit } from 'src/app/core/models/visit';\nimport { MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';\nimport { AppState } from 'src/app/interfaces';\nimport { Store } from '@ngrx/store';\nimport { SetVisits, SetVisitContact, SetVisitAdValoris } from 'src/app/core/store/order';\nimport { getVisits, getVisitContact } from 'src/app/core/store/order/order.selectors';\nimport { debounceTime } from 'rxjs/operators';\nimport { VisitAdValoris } from 'src/app/core/models/visitAdValoris';\nimport * as PRODUCTS from 'src/app/core/data/products';\nimport { projectID } from 'src/app/core/data/theme-config';\nimport { VENTES } from 'src/app/core/enums/vente.enum';\n\n@Component({\n selector: 'app-visit-request-dialog',\n templateUrl: './visit-request-dialog.component.html',\n styleUrls: ['./visit-request-dialog.component.scss']\n})\nexport class VisitRequestDialogComponent implements OnInit {\n visitEtudeExtended = false;\n visitFix = false;\n visitFree = false;\n visitAdValoris = true;\n showAddVisit = false;\n editing = false;\n\n currentVisit;\n selectedChoice = 0;\n reason = -1;\n\n projectID = projectID;\n infoFormGroup: FormGroup;\n\n gilVPnBid: VisitAdValoris = {\n forfaits: [\n {\n id: PRODUCTS.VisitGil4S,\n description: 'Visites 4 semaines avant la séance de vente',\n active: false,\n devis: false,\n price: 550 * 1.21\n },\n {\n id: PRODUCTS.VisitGil6S,\n description: 'Visites 6 semaines avant la séance de vente',\n active: false,\n devis: false,\n price: 800 * 1.21\n }\n ],\n options: [\n {\n id: PRODUCTS.VisitGil2Times_Bid,\n description: '2 Visites période enchère ',\n active: false,\n devis: false,\n price: 200 * 1.21\n },\n {\n id: PRODUCTS.VisitGilBoundless_Bid,\n description: 'Visites illimitées pendant période d’enchère',\n active: false,\n devis: false,\n price: 400 * 1.21\n }\n ]\n };\n\n gilGG: VisitAdValoris = {\n forfaits: [\n {\n id: PRODUCTS.VisitGilBoundless_3M,\n description: 'Forfait illimité de visites pendant 3 mois',\n active: false,\n devis: false,\n price: 550 * 1.21\n }\n ],\n options: []\n };\n\n adValoris: VisitAdValoris = {\n forfaits: [\n {\n id: PRODUCTS.VISITADVALORIS,\n description: 'Ad Valoris',\n active: false,\n devis: false,\n price: 500 * 1.21\n }\n ],\n options: [\n {\n id: PRODUCTS.LOCKSMITH,\n description: 'Ouverture forcée',\n active: false,\n devis: false,\n price: 199 * 1.21\n },\n {\n id: 2,\n description: 'Mise en valeur',\n active: false,\n devis: true,\n price: 0\n }\n ]\n };\n\n visitList: Visit[] = [];\n\n options = [\n { hour: 0 },\n { hour: 9 },\n { hour: 10 },\n { hour: 11 },\n { hour: 12 },\n { hour: 13 },\n { hour: 14 },\n { hour: 15 },\n { hour: 16 },\n { hour: 17 }\n ];\n\n defaultVisit = {\n hour: this.options[0].hour,\n allDay: false,\n date: null\n };\n\n visitFreeFG: FormGroup;\n tomorrow = new Date();\n\n visitFreeInfo = {\n lastName: '',\n firstName: '',\n email: '',\n tel: ''\n };\n\n constructor(\n private _formBuilder: FormBuilder,\n @Inject(MAT_DIALOG_DATA)\n public data: { dialog: MatDialog; reason: number },\n private store: Store,\n private logger: LoggerService\n ) {}\n\n ngOnInit() {\n this.currentVisit = { ...this.defaultVisit };\n this.store.select(getVisits).subscribe(v => (this.visitList = v));\n this.store.select(getVisitContact).subscribe(v => (this.visitFreeInfo = v));\n\n this.visitFreeFG = this._formBuilder?.group({\n lastName: [{ value: this.visitFreeInfo?.lastName, disabled: false }],\n firstName: [{ value: this.visitFreeInfo?.firstName, disabled: false }],\n email: [{ value: this.visitFreeInfo?.email, disabled: false }],\n tel: [{ value: this.visitFreeInfo?.tel, disabled: false }]\n });\n\n this.visitFreeFG?.valueChanges?.pipe(debounceTime(1000)).subscribe(values => {\n this.visitFreeInfo.lastName = values.lastName;\n this.visitFreeInfo.firstName = values.firstName;\n this.visitFreeInfo.email = values.email;\n this.visitFreeInfo.tel = values.tel;\n });\n\n this.infoFormGroup = this._formBuilder?.group({\n instructions: [\n {\n value: '',\n disabled: false\n }\n ]\n });\n\n this.reason = this.data?.reason;\n }\n\n setHour(index) {\n this.currentVisit.hour = this.options[index]?.hour;\n }\n\n displayAddVisit() {\n this.showAddVisit = true;\n this.currentVisit = { ...this.defaultVisit };\n }\n\n /* addVisit() {\n if (this.currentVisit.date) {\n this.visitList = [...this.visitList];\n this.visitList.push(this.currentVisit);\n this.showAddVisit = false;\n }\n } */\n\n editVisit(index) {\n this.editing = true;\n this.showAddVisit = true;\n this.currentVisit = this.visitList[index];\n this.selectedChoice = this.options?.indexOf(this.options?.find(p => p.hour === this.currentVisit?.hour));\n }\n\n saveEditVisit() {\n this.editing = false;\n this.showAddVisit = false;\n }\n\n deleteVisit(index) {\n this.visitList = [...this.visitList];\n this.visitList.splice(index, 1);\n }\n\n saveVisits() {\n this.store.dispatch(new SetVisits(this.visitList));\n this.close();\n }\n\n saveVisitFree() {\n if (\n this.visitFreeInfo?.email !== '' &&\n this.visitFreeInfo?.firstName !== '' &&\n this.visitFreeInfo?.lastName !== '' &&\n this.visitFreeInfo?.tel !== ''\n ) {\n this.visitFree = false;\n this.store.dispatch(new SetVisitContact(this.visitFreeInfo));\n this.close();\n }\n }\n\n AddVisit() {\n const adV = { ...this.adValoris };\n adV.forfaits[0].active = true;\n adV.instructions = this.infoFormGroup?.value?.instructions;\n this.logger.log(adV);\n this.store.dispatch(new SetVisitAdValoris(adV));\n this.close();\n }\n\n AddVisitGil() {\n const adV = this.reason === VENTES.GRE_A_GRE ? { ...this.gilGG } : { ...this.gilVPnBid };\n if (this.reason === 1) {\n adV.forfaits[0].active = true;\n }\n adV.instructions = this.infoFormGroup?.value?.instructions;\n this.logger.log(adV);\n this.store.dispatch(new SetVisitAdValoris(adV));\n this.close();\n }\n\n close() {\n this.data.dialog.closeAll();\n }\n\n cancel() {\n const adV = { ...this.adValoris };\n adV.forfaits.map(f => (f.active = false));\n adV.options.map(f => (f.active = false));\n this.store.dispatch(new SetVisitAdValoris(adV));\n this.close();\n }\n\n cancelGil() {\n const adV = this.reason === 1 ? { ...this.gilGG } : { ...this.gilVPnBid };\n adV.forfaits.map(f => (f.active = false));\n adV.options.map(f => (f.active = false));\n this.store.dispatch(new SetVisitAdValoris(adV));\n this.close();\n }\n\n forfait1Click() {\n this.gilVPnBid.forfaits[1].active = false;\n }\n\n forfait2Click() {\n this.gilVPnBid.forfaits[0].active = false;\n }\n\n option1Click() {\n this.gilVPnBid.options[1].active = false;\n }\n\n option2Click() {\n this.gilVPnBid.options[0].active = false;\n }\n\n get totalPrice() {\n let pr = 0;\n if (this.reason === 1) {\n this.gilGG?.forfaits?.forEach(f => {\n if (f.active) {\n pr += f.price;\n }\n });\n this.gilGG?.options?.forEach(f => {\n if (f.active) {\n pr += f.price;\n }\n });\n } else {\n this.gilVPnBid?.forfaits?.forEach(f => {\n if (f.active) {\n pr += f.price;\n }\n });\n this.gilVPnBid?.options?.forEach(f => {\n if (f.active) {\n pr += f.price;\n }\n });\n }\n\n return pr > 0 ? pr / 1.21 : 0;\n }\n}\n","export class Paper {\n totalPrice: number = this.quantity * this.unitPrice;\n constructor(public format: string, public color: string, public quantity: number, public unitPrice: number) {}\n}\n\nexport class Panel {\n totalPrice: number = this.quantity * this.unitPrice;\n id: number = this.format === 'XL' ? 103 : 102;\n constructor(\n public format: string,\n public saleType: string,\n public quantity: number,\n public unitPrice: number,\n public language: string\n ) {}\n}\n","
    \n \n
    \n
    \n \n {{ 'poster-request-dialog.title' | translate }}\n
    \n
    \n
    \n

    \n {{ 'poster-request-dialog.intro' | translate }}\n

    \n
    \n
    \n \n \n \n \n \n 0\">\n
      \n
    • \n
      \n Papier | {{ paper.format }} | {{ paper.color }} | {{ paper.quantity }} ex\n = {{ paper.totalPrice | htva }}€\n
      \n \n \n \n \n \n \n
    • \n
    • \n
      \n {{ 'poster-request-dialog.forfait' | translate }}\n = {{ forfaitPrice | htva }}€\n
      \n
    • \n
    \n \n
    \n
    \n
    \n \n \n
    \n
    \n \n
    \n
    \n \n {{ 'poster-request-dialog.creation.title' | translate }}\n
    \n
    \n
    \n
    \n \n \n \n \n {{ option.format }}\n \n \n \n
    \n
    \n \n \n \n \n {{ color }}\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
    {{ 'specific-request-dialog.success-title' | translate }}
    \n

    \n {{ 'specific-request-dialog.success-content' | translate }}\n

    \n \n
    \n
    \n","import { Component, OnInit, Inject } from '@angular/core';\nimport { Paper } from 'src/app/core/models/paper';\nimport { MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';\nimport { User } from 'src/app/core/models/user';\nimport { Store } from '@ngrx/store';\nimport { SendEmailService } from 'src/app/core/services/send-email.service';\nimport { LoggerService } from 'src/app/core/services/logger.service';\nimport { AppState } from 'src/app/interfaces';\nimport { getUserInfo } from 'src/app/core/store/order/order.selectors';\nimport { projectID } from '../../core/data/theme-config';\n\n@Component({\n selector: 'app-poster-request-dialog',\n templateUrl: './poster-request-dialog.component.html',\n styleUrls: ['./poster-request-dialog.component.scss']\n})\nexport class PosterRequestDialogComponent implements OnInit {\n get isNamur() {\n return projectID === 'namur';\n }\n displayAdd = false;\n editing = false;\n\n sent = false;\n\n selectedIndex = 0;\n\n selectedPaper = {\n selectedFormat: 0,\n selectedColor: 0,\n quantity: 100\n };\n\n paperList: Paper[] = [];\n description = '';\n\n connectedUser: User;\n\n options = [\n { format: 'A2', colors: ['Blanc', 'Orange fluo', 'Vert fluo', 'Rose fluo', 'Jaune fluo'], price: 3.5 * 1.21 },\n {\n format: 'A3',\n colors: ['Blanc', 'Jaune', 'Orange', 'Rose', 'Vert', 'Jaune fluo', 'Orange fluo', 'Rose fluo', 'Vert fluo'],\n price: 1.75 * 1.21\n },\n {\n format: 'A4',\n colors: ['Blanc', 'Jaune', 'Orange', 'Rose', 'Vert', 'Jaune fluo', 'Orange fluo', 'Rose fluo', 'Vert fluo'],\n price: 0.75 * 1.21\n },\n { format: 'A5', colors: ['Ivoire'], price: 0.75 * 1.21 }\n ];\n\n forfaitPrice = 20 * 1.21;\n\n constructor(\n @Inject(MAT_DIALOG_DATA)\n public data: { dialog: MatDialog },\n private store: Store,\n private sendEmailService: SendEmailService,\n private logger: LoggerService\n ) {}\n\n ngOnInit() {\n this.store.select(getUserInfo).subscribe(u => (this.connectedUser = u));\n }\n\n displayAddPaper() {\n this.displayAdd = true;\n }\n\n backToList() {\n this.displayAdd = false;\n this.editing = false;\n }\n\n addPaper() {\n const selectedFormat = this.options[this.selectedPaper.selectedFormat].format;\n const selectedColor = this.options[this.selectedPaper.selectedFormat].colors[this.selectedPaper.selectedColor];\n const selectedUnitPrice = this.options[this.selectedPaper.selectedFormat].price;\n const selectedQuantity = this.selectedPaper.quantity;\n const newPaper = new Paper(selectedFormat, selectedColor, selectedQuantity, selectedUnitPrice);\n this.paperList = [...this.paperList];\n this.paperList.push(newPaper);\n this.displayAdd = false;\n }\n\n setFormat() {\n this.selectedPaper.selectedColor = 0;\n }\n\n deletePaper(index) {\n this.paperList = [...this.paperList];\n this.paperList.splice(index, 1);\n }\n\n editPaper(index) {\n this.selectedIndex = index;\n this.editing = true;\n this.displayAdd = true;\n this.selectedPaper.quantity = this.paperList[index].quantity;\n this.selectedPaper.selectedFormat = this.options.findIndex(o => o.format === this.paperList[index].format);\n this.selectedPaper.selectedColor = this.options[this.selectedPaper.selectedFormat].colors.findIndex(\n o => o === this.paperList[index].color\n );\n }\n\n saveEditPaper() {\n this.editing = false;\n this.displayAdd = false;\n const editedPaper = this.paperList[this.selectedIndex];\n\n const selectedFormat = this.options[this.selectedPaper.selectedFormat].format;\n const selectedColor = this.options[this.selectedPaper.selectedFormat].colors[this.selectedPaper.selectedColor];\n const selectedUnitPrice = this.options[this.selectedPaper.selectedFormat].price;\n const selectedQuantity = this.selectedPaper.quantity;\n\n editedPaper.color = selectedColor;\n editedPaper.format = selectedFormat;\n editedPaper.unitPrice = selectedUnitPrice;\n editedPaper.quantity = selectedQuantity;\n editedPaper.totalPrice = selectedUnitPrice * selectedQuantity;\n }\n\n cancel() {\n this.paperList = [];\n this.data.dialog.closeAll();\n }\n\n confirmPapers() {\n this.sendEmail();\n }\n\n sendEmail() {\n let totalPrice = 0;\n let formattedMsg = `\n \n \n \n \n \n \n \n \n `;\n\n this.paperList.forEach(print => {\n totalPrice += print.totalPrice;\n formattedMsg += `\n \n \n \n \n \n \n \n `;\n });\n\n totalPrice += totalPrice !== 0 ? this.forfaitPrice : 0;\n\n formattedMsg += `\n
    FormatCouleurQuantitéPrix unitairePrix
    ${print.format}${print.color}${print.quantity}${print.unitPrice.toFixed(2)} €${print.totalPrice.toFixed(2)} €
    \n
    \n Forfait de composition: ${this.forfaitPrice}€\n
    \n Prix total: ${totalPrice}\n
    \n

    Information sur le bien

    \n ${this.description}\n `;\n\n const result = Object.assign(\n {\n subject: 'Commande Affiche: ',\n message: formattedMsg\n },\n {\n email: this.connectedUser.email,\n firstName: this.connectedUser.firstname,\n lastName: this.connectedUser.lastname,\n phone: this.connectedUser.phone,\n address: this.connectedUser.address\n }\n );\n\n this.sendEmailService.sendNotaryRequest(result).subscribe(\n val => {\n this.logger.log(`🚀`);\n this.logger.log('Audit envoyé avec succès', val);\n this.sent = true;\n },\n response => {\n this.logger.log('😰 POST Audit error', response);\n this.sent = false;\n }\n );\n }\n}\n","
    \n
    \n
    \n \n {{ 'signs-request-dialog.title' | translate }}\n
    \n
    \n
    \n

    {{ 'signs-request-dialog.content' | translate }}

    \n
    \n
    \n
    \n \n \n \n \n {{ item.txt }}\n \n \n \n
    \n \n
    \n {{ txtVenteBiddit }}\n
    \n
    \n {{ txtVenteGG }}\n
    \n
    \n \n \n \n \n
    \n
      \n
    • \n \n {{ 'signs-request-dialog.info.price-label' | translate }}\n \n {{ computedPrice }} € HTVA\n
    • \n
    \n
    \n \n {{ txtVentePub }}\n \n
    \n \n {{ 'signs-request-dialog.info.total-label' | translate }}\n \n {{ totalPrice?.toFixed(2) }} € HTVA\n
    \n
    \n
    \n \n \n
    \n
    \n\n\n
    \n \n \n \n
    {{ 'specific-request-dialog.success-title' | translate }}
    \n

    \n {{ 'specific-request-dialog.success-content' | translate }}\n

    \n \n
    \n
    \n","import { Component, OnInit, Inject } from '@angular/core';\nimport { ventes } from 'src/app/core/data/ventes';\nimport { MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';\nimport { SendEmailService } from 'src/app/core/services/send-email.service';\nimport { User } from 'src/app/core/models/user';\nimport { Store } from '@ngrx/store';\nimport { AppState } from 'src/app/interfaces';\nimport { getUserInfo } from 'src/app/core/store/order/order.selectors';\n\n@Component({\n selector: 'app-signs-request-dialog',\n templateUrl: './signs-request-dialog.component.html',\n styleUrls: ['./signs-request-dialog.component.scss']\n})\nexport class SignsRequestDialogComponent implements OnInit {\n ventes = [...ventes];\n\n priceVP = 160;\n priceGG = 8;\n prixBiddit1 = 30;\n prixBiddit2 = 25;\n\n txtVentePub = `Pack comprenant 5 affiches A4, 5 Affiches A3 et 1 affiche A3 autocollante`;\n txtVenteBiddit = `Panneaux BIDDIT : ${this.prixBiddit1} € HTVA/Panneau et ${this.prixBiddit2} € HTVA/Panneau (min 10 exemplaires)`;\n txtVenteGG = `Panneaux triangulaires bleu et blanc (70cm x 100 cm) : 7.50 €/Panneau (commande de min 50 panneaux par étude)`;\n\n selectedPanel = {\n venteType: 0,\n quantity: 10\n };\n\n connectedUser: User;\n sent = false;\n\n get computedPrice() {\n return this.selectedPanel.venteType === 0\n ? this.priceVP\n : this.selectedPanel.venteType === 2\n ? this.selectedPanel.quantity >= 10\n ? this.prixBiddit2\n : this.prixBiddit1\n : this.priceGG;\n }\n\n get totalPrice() {\n return this.selectedPanel.venteType === 0 ? this.computedPrice : this.computedPrice * this.selectedPanel.quantity;\n }\n\n get venteType(): string {\n return this.selectedPanel.venteType === 0\n ? 'Vente publique'\n : this.selectedPanel.venteType === 1\n ? 'Vente gré à gré'\n : 'Vente Biddit';\n }\n\n get minQuantity() {\n return this.selectedPanel.venteType === 1 ? 50 : 0;\n }\n\n constructor(\n @Inject(MAT_DIALOG_DATA)\n public data: { dialog: MatDialog },\n private store: Store,\n private sendEmailService: SendEmailService\n ) {}\n\n ngOnInit() {\n this.store.select(getUserInfo).subscribe(u => (this.connectedUser = u));\n }\n\n close() {\n this.data.dialog.closeAll();\n }\n\n SetDefaultQuantity() {\n this.selectedPanel.quantity = this.selectedPanel.venteType === 2 ? 10 : 50;\n }\n\n sendEmail() {\n const formattedMsg =\n this.selectedPanel.venteType === 0\n ? `\n Type de vente: ${this.venteType}\n
    \n ${this.txtVentePub}\n
    \n Prix total: ${this.totalPrice}€ HTVA\n `\n : `\n Type de vente: ${this.venteType}\n
    \n ${this.selectedPanel.venteType === 1 ? this.txtVenteGG : this.txtVenteBiddit}\n
    \n Nombre d'exemplaires: ${this.selectedPanel.quantity}\n
    \n Tarif unitaire: ${this.computedPrice}€ HTVA\n
    \n Prix total: ${this.totalPrice}€ HTVA\n `;\n\n const result = Object.assign(\n {\n subject: 'Commande Panneaux: ',\n message: formattedMsg\n },\n {\n email: this.connectedUser.email,\n firstName: this.connectedUser.firstname,\n lastName: this.connectedUser.lastname,\n phone: this.connectedUser.phone,\n address: this.connectedUser.address\n }\n );\n\n this.sendEmailService.sendNotaryRequest(result).subscribe(\n val => {\n this.sent = true;\n },\n response => {\n this.sent = false;\n }\n );\n }\n}\n","
    \n
    \n \n {{ 'paper-request-dialog.title' | translate }}\n
    \n
    \n
    \n

    \n {{ 'paper-request-dialog.content' | translate }}\n

    \n
    \n
    \n
    \n
    \n \n \n \n \n
    \n
    \n \n \n \n \n
    \n
    \n \n \n \n \n {{ officeChoices[office.id].name }}\n \n \n \n
    \n
    \n \n \n \n \n \n \n
    \n
    \n
    \n {{ 'signs-request-dialog.info.total-label' | translate }}\n {{ totalPrice }}€\n
    \n
    \n
    \n \n \n
    \n","import { Component, OnInit, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';\nimport { Store } from '@ngrx/store';\nimport { AppState } from 'src/app/interfaces';\nimport { SendEmailService } from 'src/app/core/services/send-email.service';\nimport { getUserInfo } from 'src/app/core/store/order/order.selectors';\nimport { User } from 'src/app/core/models/user';\n\n@Component({\n selector: 'app-paper-request-dialog',\n templateUrl: './paper-request-dialog.component.html',\n styleUrls: ['./paper-request-dialog.component.scss']\n})\nexport class PaperRequestDialogComponent implements OnInit {\n tomorrow = new Date();\n\n choice = {\n A3: 1,\n A4: 1,\n officeId: 0,\n date: new Date()\n };\n\n A3 = {\n price: 50,\n size: 500\n };\n\n A4 = {\n price: 50,\n size: 1000\n };\n\n officeChoices = [\n { id: 0, name: 'MDN Mons - Rue de la halle 38' },\n { id: 1, name: 'MDN Charleroi - Quai Arthur Rimbaud 14' },\n { id: 2, name: 'MDN Tournai - Place de Lille 3' }\n ];\n\n connectedUser: User;\n sent = false;\n\n get totalPrice() {\n return this.choice.A3 * this.A3.price + this.choice.A4 * this.A4.price;\n }\n\n get dateSelected() {\n return this.choice.date.toLocaleDateString('fr-BE');\n }\n\n constructor(\n @Inject(MAT_DIALOG_DATA)\n public data: { dialog: MatDialog },\n private store: Store,\n private sendEmailService: SendEmailService\n ) {}\n\n ngOnInit() {\n this.store.select(getUserInfo).subscribe(u => (this.connectedUser = u));\n }\n\n close() {\n this.data.dialog.closeAll();\n }\n\n sendEmail() {\n const formattedMsg = `\n Quantité Rame A3: ${this.choice.A3}\n
    \n Quantité Rame A3: ${this.choice.A4}\n
    \n Je désire retirer ma commande au bureau suivant: ${this.officeChoices[this.choice.officeId].name}\n
    \n En date du: ${this.dateSelected}\n
    \n Prix total: ${this.totalPrice}€\n `;\n\n const result = Object.assign(\n {\n subject: 'Commande papier: ',\n message: formattedMsg\n },\n {\n email: this.connectedUser.email,\n firstName: this.connectedUser.firstname,\n lastName: this.connectedUser.lastname,\n phone: this.connectedUser.phone,\n address: this.connectedUser.address\n }\n );\n\n this.sendEmailService.sendNotaryRequest(result).subscribe(\n val => {\n this.sent = true;\n },\n response => {\n this.sent = false;\n }\n );\n }\n}\n","import { Component, OnInit, Inject, EventEmitter } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';\nimport { Observable } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { AppState } from 'src/app/interfaces';\nimport { getIsLoggedIn } from 'src/app/core/store/order/order.selectors';\n\n@Component({\n selector: 'app-services-choice-dialog',\n templateUrl: './services-choice-dialog.component.html',\n styleUrls: ['./services-choice-dialog.component.scss']\n})\nexport class ServicesChoiceDialogComponent implements OnInit {\n login = new EventEmitter();\n toNotaryServices = new EventEmitter();\n $isLoggedIn: Observable;\n isLoggedIn: boolean;\n\n constructor(@Inject(MAT_DIALOG_DATA) public data: { dialog: MatDialog }, private store: Store) {}\n\n ngOnInit() {\n this.$isLoggedIn = this.store.select(getIsLoggedIn);\n this.$isLoggedIn.subscribe(i => (this.isLoggedIn = i));\n }\n\n close() {\n this.data.dialog.closeAll();\n }\n\n continue() {\n if (this.isLoggedIn) {\n this.toNotaryServices.emit();\n } else {\n this.login.emit();\n }\n }\n}\n","
    \n
    \n \"\"\n

    {{ 'services-choice-dialog.choice-immo.title' | translate }}

    \n
    \n

    {{ 'services-choice-dialog.choice-immo.content' | translate }}

    \n

    {{ 'services-choice-dialog.choice-immo.exemple' | translate }}

    \n \n
    \n
    \n
    \n \"\"\n

    {{ 'services-choice-dialog.choice-notaire.title' | translate }}

    \n
    \n

    {{ 'services-choice-dialog.choice-notaire.content' | translate }}

    \n

    {{ 'services-choice-dialog.choice-notaire.exemple' | translate }}

    \n \n
    \n","
    \n
    \n \n {{ 'print-request-dialog.forfait.title' | translate }} - {{ 'section-money.htva' | translate }}:\n {{ fullPressPrint.price | htva }}€\n
    \n
    \n
    \n

    {{ 'print-request-dialog.forfait.intro' | translate }}

    \n
    \n
    \n
      \n
    • \n \n Le soir\n
    • \n
    • \n \n La libre / La DH\n
    • \n
    • \n \n De standaard / Het Niewsblad\n
    • \n
    • \n \n Le Vlan\n
    • \n
    \n
    \n \n \n \n \n \n \n
    \n
    \n \n \n \n \n {{ nb }}\n \n \n \n
    \n
    1\">\n
    \n {{ 'section-money.total' | translate }} {{ 'section-money.htva' | translate }}:\n {{ fullPressPrint.nbOfWeeks * fullPressPrint.price | htva }} €\n
    \n
    \n
    \n
    \n \n \n
    \n","import { Component, OnInit, Inject } from '@angular/core';\nimport { Print } from 'src/app/core/models/print';\nimport { Store } from '@ngrx/store';\nimport { AppState } from 'src/app/interfaces';\nimport { SetParutions } from 'src/app/core/store/order';\nimport { MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';\nimport { getParutions } from 'src/app/core/store/order/order.selectors';\nimport * as PRODUCTS from '../../core/data/products';\nimport { ProductDB } from 'src/app/core/models/productDB';\nimport { DataService } from 'src/app/core/services/data.service';\n\n@Component({\n selector: 'app-print-fullpress-request-dialog',\n templateUrl: './print-fullpress-request-dialog.component.html',\n styleUrls: ['./print-fullpress-request-dialog.component.scss']\n})\nexport class PrintFullpressRequestDialogComponent implements OnInit {\n currentParu: Print;\n tomorrow = new Date();\n\n nbOptions = [1, 2, 3, 4, 5, 6, 7, 8];\n\n fullPressPrint: Print = {\n id: PRODUCTS.FullPress,\n name: 'Forfait Full presse',\n needPhoto: false,\n date: null,\n day: 1,\n price: this.getPubPrice(PRODUCTS.FullPress)?.price,\n format: '',\n commission: this.getPubPrice(PRODUCTS.FullPress)?.commission,\n nbOfWeeks: 1\n };\n\n paruList: Print[] = [];\n\n constructor(\n @Inject(MAT_DIALOG_DATA)\n public data: { dialog: MatDialog },\n private store: Store,\n private dataService: DataService\n ) {}\n\n ngOnInit() {\n this.store.select(getParutions).subscribe(p => {\n this.paruList = p;\n });\n }\n\n filterOneDay(d: Date) {\n const day = d.getDay();\n return day === 1;\n }\n\n cancel() {\n const fullPress = this.paruList.find(p => p.id === PRODUCTS.FullPress);\n if (fullPress) {\n const list = [...this.paruList].filter(p => p.id !== PRODUCTS.FullPress);\n this.store.dispatch(new SetParutions(list));\n }\n this.data?.dialog.closeAll();\n }\n\n saveFullPress() {\n if (!!this.fullPressPrint.date) {\n this.paruList = [...this.paruList.filter(p => p.id !== PRODUCTS.FullPress), this.fullPressPrint];\n this.store.dispatch(new SetParutions(this.paruList));\n this.data?.dialog.closeAll();\n }\n }\n\n getPubDB(id: number): ProductDB {\n const product = this.dataService?.products?.find(pr => pr.ProductType === id);\n return product;\n }\n\n getPubPrice(id: number) {\n return { price: this.getPubDB(id)?.Price, commission: this.getPubDB(id)?.Commission };\n }\n}\n","
    \n
    \n
    \n \n {{ 'panel-xl-request-dialog.title' | translate }}\n
    \n
    \n
    \n

    \n {{ 'panel-xl-request-dialog.intro' | translate }}\n

    \n
    \n
    \n
    \n \n \n \n
    \n
    \n
    \n \n \n
    \n
    \n
    \n \n \n \n
    {{ 'specific-request-dialog.success-title' | translate }}
    \n

    \n {{ 'specific-request-dialog.success-content' | translate }}\n

    \n \n
    \n","import { Component, OnInit, Inject } from '@angular/core';\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms';\nimport { SendEmailService } from 'src/app/core/services/send-email.service';\nimport { LoggerService } from 'src/app/core/services/logger.service';\nimport { MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';\n\n@Component({\n selector: 'app-panel-xl-request-dialog',\n templateUrl: './panel-xl-request-dialog.component.html',\n styleUrls: ['./panel-xl-request-dialog.component.scss']\n})\nexport class PanelXlRequestDialogComponent implements OnInit {\n devisFormGroup: FormGroup;\n sent: boolean;\n\n constructor(\n private _formBuilder: FormBuilder,\n private sendEmailService: SendEmailService,\n private logger: LoggerService,\n @Inject(MAT_DIALOG_DATA)\n public data: { dialog: MatDialog }\n ) {}\n\n ngOnInit() {\n this.sent = false;\n\n this.devisFormGroup = this._formBuilder.group({\n instructions: [''],\n description: ['']\n });\n }\n\n close() {\n this.data.dialog.closeAll();\n }\n\n onSubmit() {\n if (this.devisFormGroup.invalid) {\n this.logger.log('invalid form');\n return;\n }\n this.logger.log(this.devisFormGroup.value);\n this.sendEmailService.sendDevis(this.devisFormGroup.value, 'Panneau XL').subscribe(\n val => {\n this.logger.log(`🚀`);\n this.logger.log('Devis envoyé avec succès', val);\n this.sent = true;\n },\n response => {\n this.logger.log('😰 POST Devis error', response);\n this.sent = false;\n }\n );\n }\n}\n","
    \n
    \n
    \n \n {{ 'specific-print-request-dialog.title' | translate }}\n
    \n
    \n
    \n

    \n {{ 'specific-print-request-dialog.content' | translate }}\n

    \n
    \n
    \n \n \n \n \n \n \n
    \n
    \n \n \n
    \n
    \n
    \n \n \n \n
    {{ 'specific-request-dialog.success-title' | translate }}
    \n

    \n {{ 'specific-request-dialog.success-content' | translate }}\n

    \n \n
    \n","import { Component, OnInit, Inject } from '@angular/core';\nimport { FormGroup, FormBuilder } from '@angular/forms';\nimport { SendEmailService } from 'src/app/core/services/send-email.service';\nimport { LoggerService } from 'src/app/core/services/logger.service';\nimport { MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';\n\n@Component({\n selector: 'app-specific-print-request-dialog',\n templateUrl: './specific-print-request-dialog.component.html',\n styleUrls: ['./specific-print-request-dialog.component.scss']\n})\nexport class SpecificPrintRequestDialogComponent implements OnInit {\n devisFormGroup: FormGroup;\n sent: boolean;\n\n constructor(\n private _formBuilder: FormBuilder,\n private sendEmailService: SendEmailService,\n private logger: LoggerService,\n @Inject(MAT_DIALOG_DATA)\n public data: { dialog: MatDialog }\n ) {}\n\n ngOnInit() {\n this.sent = false;\n\n this.devisFormGroup = this._formBuilder.group({\n instructions: [''],\n description: ['']\n });\n }\n\n close() {\n this.data.dialog.closeAll();\n }\n\n onSubmit() {\n if (this.devisFormGroup.invalid) {\n this.logger.log('invalid form');\n return;\n }\n this.logger.log(this.devisFormGroup.value);\n this.sendEmailService.sendDevis(this.devisFormGroup.value, 'Publication papier').subscribe(\n val => {\n this.logger.log(`🚀`);\n this.logger.log('Devis envoyé avec succès', val);\n this.sent = true;\n },\n response => {\n this.logger.log('😰 POST Devis error', response);\n this.sent = false;\n }\n );\n }\n}\n","
    \n
    \n
    \n \n {{ 'specific-request-dialog.dialog-title' | translate }} - {{ this.data.title }}\n
    \n
    \n
    \n \n

    \n {{ 'specific-request-dialog.peb.content-1' | translate }}\n

    \n

    \n {{ 'specific-request-dialog.peb.content-2' | translate }}\n

    \n
    \n \n \n

    \n {{ 'specific-request-dialog.elec-nv3.content-1' | translate }}\n

    \n

    \n {{ 'specific-request-dialog.elec-nv3.content-2' | translate }}\n

    \n
    \n
    \n \n \n {{ 'specific-request-dialog.elec-nv4.content-1' | translate }}\n \n \n \n

    \n {{ titleTxt$ | async }} 02 880 21 71\n {{ 'specific-request-dialog.dialog-content-end' | translate }}\n

    \n

    {{ 'specific-request-dialog.dialog-content-conclusion' | translate }}

    \n
    \n
    \n
    \n
    \n {{ 'section-user.disco.your-info' | translate }}\n
    \n \n {{ 'section-user.disco.firstname' | translate }}\n \n \n {{ 'error-messages.required-blank' | translate }}\n \n \n \n {{ 'section-user.disco.lastname' | translate }}\n \n \n {{ 'error-messages.required-blank' | translate }}\n \n \n \n {{ 'section-user.disco.phone' | translate }}\n \n \n {{ 'error-messages.required-blank' | translate }}\n \n \n \n {{ 'section-user.disco.email' | translate }}\n \n \n {{ 'error-messages.required-blank' | translate }}\n \n \n \n
    \n {{\n isHainautOrNamurorNVN\n ? ('MDN-hainaut-namur-nvn.section-propriete.title' | translate)\n : ('section-propriete.title' | translate)\n }}\n
    \n \n {{ 'section-user.disco.street' | translate }}\n \n \n {{ 'error-messages.required-blank' | translate }}\n \n \n \n {{ 'section-user.disco.num' | translate }}\n \n \n {{ 'error-messages.required-blank' | translate }}\n \n \n \n {{ 'section-user.disco.zip' | translate }}\n \n \n {{ 'error-messages.required-blank' | translate }}\n \n \n \n {{ 'section-user.disco.city' | translate }}\n \n \n {{ 'error-messages.required-blank' | translate }}\n \n \n
    \n \n
    \n

    {{ 'specific-request-dialog.elec-nv3.more-info' | translate }}

    \n
      \n
    • {{ 'specific-request-dialog.elec-nv3.more-info-item-1' | translate }}
    • \n
    • {{ 'specific-request-dialog.elec-nv3.more-info-item-2' | translate }}
    • \n
    • {{ 'specific-request-dialog.elec-nv3.more-info-item-3' | translate }}
    • \n
    • {{ 'specific-request-dialog.elec-nv3.more-info-item-4' | translate }}
    • \n
    • {{ 'specific-request-dialog.elec-nv3.more-info-item-5' | translate }}
    • \n
    \n
    \n
    \n \n
    \n

    {{ 'specific-request-dialog.elec-nv4.more-info' | translate }}

    \n
      \n
    • {{ 'specific-request-dialog.elec-nv4.more-info-item-1' | translate }}
    • \n
    • {{ 'specific-request-dialog.elec-nv4.more-info-item-2' | translate }}
    • \n
    • {{ 'specific-request-dialog.elec-nv4.more-info-item-3' | translate }}
    • \n
    • {{ 'specific-request-dialog.elec-nv4.more-info-item-4' | translate }}
    • \n
    • {{ 'specific-request-dialog.elec-nv4.more-info-item-5' | translate }}
    • \n
    • {{ 'specific-request-dialog.elec-nv4.more-info-item-6' | translate }}
    • \n
    \n
    \n
    \n\n \n \n \n
    \n
    \n

    {{ fileUploadTitle$ | async }}

    \n
    \n \n \n \n \n
    \n
    0\">\n
      \n
    • \n
      \n {{ 'File ' + fileIndex(i) }}\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 \n
    {{ 'specific-request-dialog.success-title' | translate }}
    \n

    \n {{ 'specific-request-dialog.success-content' | translate }}\n

    \n \n
    \n","import { Component, OnInit, Inject } from '@angular/core';\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms';\nimport { SendEmailService } from 'src/app/core/services/send-email.service';\nimport { MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';\nimport { LoggerService } from 'src/app/core/services/logger.service';\nimport { FileUploader } from 'ng2-file-upload';\nimport { Store } from '@ngrx/store';\nimport { AppState } from 'src/app/interfaces';\nimport { getUserID } from 'src/app/core/store/order/order.selectors';\nimport { TranslateService } from '@ngx-translate/core';\nimport { projectID } from '../../core/data/theme-config';\n\nimport * as PRODUCTS from '../../core/data/products';\nimport { Observable, of } from 'rxjs';\nimport { environment } from 'src/environments/environment';\n// const URL = '/api/';\nconst URL = `${environment?.CertiServices?.order}/UploadPhotoNotary`;\n\n@Component({\n selector: 'app-custom-request-dialog',\n templateUrl: './custom-request-dialog.component.html',\n styleUrls: ['./custom-request-dialog.component.scss']\n})\nexport class CustomRequestDialogComponent implements OnInit {\n get isHainautOrNamurorNVN() {\n return projectID === 'namur' || projectID === 'hainaut' || projectID === 'nvn' || projectID === 'liege';\n }\n\n devisFormGroup: FormGroup;\n sent: boolean;\n uploadLinks = [];\n userID: string;\n PRODUCTS = PRODUCTS;\n\n public uploader: FileUploader = new FileUploader({\n url: URL,\n removeAfterUpload: false,\n autoUpload: true\n });\n fileUrl = `${environment?.certinergieBlobStorageBaseUrl}/certinergieclientfiles/`;\n\n constructor(\n private _formBuilder: FormBuilder,\n private sendEmailService: SendEmailService,\n private store: Store,\n private logger: LoggerService,\n private translate: TranslateService,\n @Inject(MAT_DIALOG_DATA)\n public data: { dialog: MatDialog; title: string; serviceId: number; needAddress: boolean }\n ) {}\n\n ngOnInit() {\n this.sent = false;\n this.store.select(getUserID)?.subscribe(us => (this.userID = us));\n this.devisFormGroup = this._formBuilder?.group({\n firstName: [\n {\n value: '',\n disabled: false\n },\n Validators.required\n ],\n lastName: [\n {\n value: '',\n disabled: false\n },\n Validators.required\n ],\n phone: [\n {\n value: '',\n disabled: false\n },\n Validators.required\n ],\n email: [\n {\n value: '',\n disabled: false\n },\n Validators.required\n ],\n userStreet: [{ value: '', disabled: false }, this.data?.needAddress ? Validators.required : null],\n userNum: [{ value: '', disabled: false }, this.data?.needAddress ? Validators.required : null],\n userZip: [{ value: '', disabled: false }, this.data?.needAddress ? Validators.required : null],\n userCity: [{ value: '', disabled: false }, this.data?.needAddress ? Validators.required : null],\n remarks: ['']\n });\n\n this.uploader.onBuildItemForm = (item, form) => {\n item.withCredentials = false;\n const id = this.userID && this.userID !== '' ? this.userID : 'bc132cfc-aeb1-4fb0-b8ba-0193f96b8230';\n form.append('userID', id);\n };\n\n this.uploader.onSuccessItem = (item, response, status, headers) => {\n this.uploadLinks = [...this.uploadLinks, JSON.parse(response)];\n };\n }\n\n close() {\n this.data.dialog.closeAll();\n }\n\n fileIndex(i: number) {\n return i + 1;\n }\n\n deletePhotoLink(index: number) {\n this.uploadLinks = [...this.uploadLinks];\n this.uploadLinks.splice(index, 1);\n }\n\n get titleTxt$(): Observable {\n switch (this.data?.serviceId) {\n case PRODUCTS.RESP_PEB:\n return this.translate?.get('specific-request-dialog.dialog-content-service');\n default:\n return this.translate?.get('specific-request-dialog.dialog-content-service');\n }\n }\n\n get remarkPlaceholder$(): Observable {\n switch (this.data?.serviceId) {\n case PRODUCTS.RESP_PEB:\n return this.translate?.get('specific-request-dialog.rpeb-comment');\n case PRODUCTS.NETTJARDIN:\n return this.translate?.get('specific-request-dialog.nett-jardin-comment');\n case PRODUCTS.NETTMAISON:\n return this.translate?.get('specific-request-dialog.nett-maison-comment');\n case PRODUCTS.ELEC_NONDOM_MAX125A:\n return of('');\n case PRODUCTS.ELEC_NONDOM_OVER125A:\n return of('');\n default:\n return this.translate?.get('step4.section-comment.placeholder');\n }\n }\n\n get fileUploadTitle$(): Observable {\n switch (this.data?.serviceId) {\n case PRODUCTS.RESP_PEB:\n return this.translate?.get('specific-request-dialog.rpeb-fileupload-title');\n case PRODUCTS.NETTJARDIN:\n return this.translate?.get('specific-request-dialog.nett-jardin-fileupload-title');\n case PRODUCTS.NETTMAISON:\n return this.translate?.get('specific-request-dialog.nett-maison-fileupload-title');\n default:\n return this.translate?.get('specific-request-dialog.fileupload-title');\n }\n }\n\n get isElecNv3() {\n return this.data.serviceId === PRODUCTS.ELEC_NONDOM_MAX125A;\n }\n\n get isElecNv4() {\n return this.data.serviceId === PRODUCTS.ELEC_NONDOM_OVER125A;\n }\n\n get isEtudePEB() {\n return this.data.serviceId === PRODUCTS.RESP_PEB;\n }\n\n onSubmit() {\n if (this.devisFormGroup?.invalid) {\n this.logger.log('invalid form');\n return;\n }\n\n this.logger.log(this.devisFormGroup?.value);\n this.sendEmailService\n ?.sendDevis(this.devisFormGroup?.value, this.data?.title, this.uploadLinks, this.data?.serviceId, true)\n ?.subscribe(\n val => {\n this.logger.log(`🚀`);\n this.logger.log('Devis envoyé avec succès', val);\n this.sent = true;\n },\n response => {\n this.logger.log('😰 POST Devis error', response);\n this.sent = false;\n }\n );\n }\n}\n","
    \n \n \n
    \n
    \n {{ 'services-details-dialog.plan2d' | translate }}\n {{ 'services-details-dialog.plan2d-end' | translate }}\n
    \n
    \n
    \n \n \n
    \n
    \n
    \n {{ 'services-details-dialog.plan3d' | translate }}\n {{ 'services-details-dialog.plan3d-end' | translate }}\n
    \n
    \n
    \n \"\"\n \n \n
    \n
    \n \n
    \n
    \n {{ 'services-details-dialog.plan3d' | translate }}\n {{ 'services-details-dialog.plan3d-end' | translate }}\n
    \n
    \n
    \n \n \n \n \n \n
    \n
    \n
    \n {{ 'services-details-dialog.drone' | translate }}\n {{ 'services-details-dialog.plan3d-end' | translate }}\n
    \n
    \n
    \n \"\"\n \n \n
    \n
    \n \n
    \n
    \n {{ 'services-details-dialog.360' | translate }}\n {{ 'services-details-dialog.360-end' | translate }}\n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n {{ 'services-details-dialog.video' | translate }}\n {{ 'services-details-dialog.video-end' | translate }}\n
    \n
    \n
    \n \n
    \n
    \n
    \n {{ 'services-details-dialog.video-drone' | translate }}\n {{ 'services-details-dialog.video-drone-end' | translate }}\n
    \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n {{ 'services-details-dialog.booklet' | translate }}\n {{ 'services-details-dialog.booklet-end' | translate }}\n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n {{ 'services-details-dialog.poster' | translate }}\n {{ 'services-details-dialog.poster-end' | translate }}\n
    \n
    \n
    \n \"\"\n
    \n
    \n \n
    \n
    \n {{ 'services-details-dialog.webvitrine' | translate }}\n {{ 'services-details-dialog.poster-end' | translate }}\n
    \n
    \n
    \n \n \"\"\n \n
    \n
    \n \n
    \n
    \n {{ 'services-details-dialog.biddit-pannels' | translate }}\n {{ 'services-details-dialog.biddit-pannels-end' | translate }}\n
    \n
    \n
    \n \"\"\n
    \n
    \n \n \n
    \n
    \n {{ 'services-details-dialog.pack-pannels' | translate }}\n {{ 'services-details-dialog.pack-pannels-end' | translate }}\n
    \n
    \n
    \n \"\"\n
    \n
    \n
    \n \n
    \n
    \n {{ 'services-details-dialog.placement-pannels' | translate }}\n {{ 'services-details-dialog.placement-pannels-end' | translate }}\n
    \n
    \n
    \n \"\"\n
    \n
    \n \n
    \n
    \n {{ 'services-details-dialog.xxl-pannels' | translate }}\n {{ 'services-details-dialog.xxl-pannels-end' | translate }}\n
    \n
    \n
    \n \"\"\n
    \n
    \n \n
    \n
    \n {{ 'services-details-dialog.summary' | translate }}\n {{ 'services-details-dialog.summary-end' | translate }}\n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n {{ 'services-details-dialog.sms-code' | translate }}\n {{ 'services-details-dialog.sms-code' | translate }}\n
    \n
    \n
    \n \"\"\n
    \n
    \n
    \n \n
    \n
    \n","import { Component, OnInit, Inject } from '@angular/core';\nimport { MatDialog, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { BehaviorSubject } from 'rxjs';\nimport * as PRODUCTS from '../../core/data/products';\n\n@Component({\n selector: 'app-services-details-dialog',\n templateUrl: './services-details-dialog.component.html',\n styleUrls: ['./services-details-dialog.component.scss']\n})\nexport class ServicesDetailsDialogComponent implements OnInit {\n onAddService = new BehaviorSubject(0);\n\n PRODUCTS = PRODUCTS;\n\n constructor(\n @Inject(MAT_DIALOG_DATA)\n public data: { dialog: MatDialog; serviceId: number; venteType: number }\n ) {}\n\n closeDialog() {\n this.data.dialog.closeAll();\n }\n\n ngOnInit() {}\n\n addServiceNoClose(id: number) {\n this.onAddService.next(id);\n }\n\n addService(id: number) {\n this.onAddService.next(id);\n this.closeDialog();\n }\n\n get displayAddService() {\n return !(\n this.data.serviceId === PRODUCTS.LIVRET ||\n this.data.serviceId === PRODUCTS.AFFICHETTE ||\n this.data.serviceId === PRODUCTS.PLAQUETTE\n );\n }\n}\n","import { Component, OnInit, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';\n\n@Component({\n selector: 'app-global-message',\n templateUrl: './global-message.component.html',\n styleUrls: ['./global-message.component.scss']\n})\nexport class GlobalMessageComponent implements OnInit {\n constructor(@Inject(MAT_DIALOG_DATA) public data: { dialog: MatDialog }) {}\n\n ngOnInit() {}\n\n close() {\n this.data.dialog.closeAll();\n }\n}\n","
    \n
    \n {{ 'global-message.title' | translate }}\n
    \n
    \n

    {{ 'global-message.content.1' | translate }}

    \n\n

    {{ 'global-message.content.2' | translate }}

    \n\n

    {{ 'global-message.content.3' | translate }}

    \n\n

    \n {{ 'global-message.content.4' | translate }}\n

    \n\n

    \n

    \n

    \n

    \n

    {{ 'global-message.content.7' | translate }}

    \n

    {{ 'global-message.content.8' | translate }}

    \n

    {{ 'global-message.content.9' | translate }}

    \n
    \n \n
    \n","
    \n \n
    \n
    \n \n {{ 'signs-request-dialog.title' | translate }}\n
    \n
    \n
    \n

    \n {{ 'poster-request-dialog.intro-certi' | translate }}\n

    \n
    \n
    \n \n 0\">\n
      \n
    • \n
      \n \n {{ panel.format }} | {{ 'section-vente-type.vente-type.' + panel.saleType | translate }} |\n {{ panel.language }} | {{ panel.quantity }} {{ 'poster-request-dialog.units' | translate }}\n \n = {{ panel.totalPrice | htva }}€ {{ 'section-money.htva' | translate }}\n
      \n \n \n \n \n
    • \n
    • \n
      \n \n {{ 'signs-request-dialog.fees' | translate }}\n \n = {{ fraisMDN }} {{ 'section-money.htva' | translate }}\n
      \n
    • \n
    \n \n
    \n \n \n \n \n
    \n
    \n \n \n
    \n
    \n\n \n
    \n
    \n \n {{ 'signs-request-dialog.add-paper' | translate }}\n
    \n
    \n
    \n \n
    \n \n \n \n \n {{ option }}\n \n \n \n
    \n
    \n \n \n \n \n {{ 'section-vente-type.vente-type.' + saleType | translate }}\n \n \n \n
    \n
    \n \n \n \n \n {{ language }}\n \n \n \n
    \n
    \n \n \n \n \n {{ quantity.amount }} ({{ quantity.price.toFixed(2) }}€ / {{ 'poster-request-dialog.units' | translate }})\n \n \n \n
    \n
    \n
    \n \n \n \n
    \n
    \n
    \n\n\n
    \n \n \n \n
    {{ 'specific-request-dialog.success-title' | translate }}
    \n

    \n {{ 'specific-request-dialog.success-content' | translate }}\n

    \n \n
    \n
    \n","import { Component, OnInit, Inject } from '@angular/core';\nimport { Panel } from 'src/app/core/models/paper';\nimport { MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';\nimport { User } from 'src/app/core/models/user';\nimport { Store } from '@ngrx/store';\nimport { AppState } from 'src/app/interfaces';\nimport { getUserInfo, getPanels, getPanelsInfo } from 'src/app/core/store/order/order.selectors';\nimport { SetPanels, SetPanelsInfo } from 'src/app/core/store/order';\nimport { AuthService } from 'src/app/core/services/auth.service';\nimport { projectID } from '../../core/data/theme-config';\nimport { SendEmailService } from 'src/app/core/services/send-email.service';\nimport { LoggerService } from 'src/app/core/services/logger.service';\nimport { PanelXlRequestDialogComponent } from '../panel-xl-request-dialog/panel-xl-request-dialog.component';\n\n@Component({\n selector: 'app-panel-request-dialog',\n templateUrl: './panel-request-dialog.component.html',\n styleUrls: ['./panel-request-dialog.component.scss']\n})\nexport class PanelRequestDialogComponent implements OnInit {\n displayAdd = true;\n editing = false;\n\n sent = false;\n\n isCertinergie = projectID === 'default';\n\n selectedIndex = 0;\n\n selectedPanel = {\n selectedFormat: 0,\n selectedSaleType: 0,\n selectedLanguage: 0,\n quantity: 0\n };\n\n panelList: Panel[] = [];\n description = '';\n\n connectedUser: User;\n\n quantityOptions = [10, 25, 50, 100];\n quantityOptionsExt =\n this.selectedPanel.selectedFormat === 0\n ? [{ price: 28, amount: 10 }, { price: 24, amount: 25 }, { price: 18, amount: 50 }, { price: 12, amount: 100 }]\n : [{ price: 46, amount: 10 }, { price: 28, amount: 25 }, { price: 22, amount: 50 }, { price: 16, amount: 100 }];\n saleTypeOptions = ['VP', 'VGG', 'VB'];\n languageOptions = ['FR', 'NL', 'FR & NL'];\n\n formatOptions = ['Standard (70 x 100cm en \"V\")', 'XL (100 x 140cm en \"V\")', 'Sur mesure'];\n\n public get fraisMDN(): number {\n return projectID === 'default' ? 0 : projectID === 'nvn' ? 100 : 25;\n }\n\n constructor(\n @Inject(MAT_DIALOG_DATA)\n public data: { dialog: MatDialog },\n private store: Store,\n private sendEmailService: SendEmailService,\n private logger: LoggerService,\n public dialog: MatDialog,\n private authService: AuthService\n ) {}\n\n ngOnInit() {\n this.store.select(getUserInfo).subscribe(u => (this.connectedUser = u));\n this.authService.isAgency.subscribe(\n ag => (this.saleTypeOptions = ag ? ['Vente', 'Location'] : ['VP', 'VGG', 'VB'])\n );\n this.store.select(getPanels).subscribe(u => (this.panelList = JSON.parse(JSON.stringify(u))));\n this.store.select(getPanelsInfo).subscribe(d => (this.description = d));\n }\n\n displayAddPanel() {\n this.displayAdd = true;\n }\n\n backToList() {\n this.displayAdd = false;\n this.editing = false;\n }\n\n addPanel() {\n const selectedFormat = this.formatOptions[this.selectedPanel.selectedFormat];\n const selectedSaleType = this.saleTypeOptions[this.selectedPanel.selectedSaleType];\n const selectedQuantity = this.quantityOptions[this.selectedPanel.quantity];\n const selectedUnitPrice =\n Math.round(\n (this.quantityOptionsExt.find(q => q.amount === selectedQuantity).price * 1.21 + Number.EPSILON) * 100\n ) / 100;\n const selectedLanguage = this.languageOptions[this.selectedPanel.selectedLanguage];\n const newPanel = new Panel(selectedFormat, selectedSaleType, selectedQuantity, selectedUnitPrice, selectedLanguage);\n this.panelList = [...this.panelList];\n this.panelList.push(newPanel);\n this.selectedPanel = {\n selectedFormat: 0,\n selectedSaleType: 0,\n selectedLanguage: 0,\n quantity: 0\n };\n this.displayAdd = false;\n }\n\n setFormat() {\n this.selectedPanel.selectedSaleType = 0;\n }\n\n deletePanel(index) {\n this.panelList = [...this.panelList];\n this.panelList.splice(index, 1);\n }\n\n editPanel(panel: Panel, index: number) {\n this.selectedIndex = index;\n this.selectedPanel.quantity = this.quantityOptions.findIndex(o => o === panel.quantity);\n this.selectedPanel.selectedFormat = this.formatOptions.findIndex(o => o === panel.format);\n this.selectedPanel.selectedSaleType = this.saleTypeOptions.findIndex(o => o === panel.saleType);\n this.editing = true;\n this.displayAdd = true;\n }\n\n saveEditPanel() {\n this.editing = false;\n this.displayAdd = false;\n const editedPaper = this.panelList[this.selectedIndex];\n const selectedFormat = this.formatOptions[this.selectedPanel.selectedFormat];\n const selectedSaleType = this.saleTypeOptions[this.selectedPanel.selectedSaleType];\n const selectedUnitPrice = this.quantityOptionsExt[this.selectedPanel.selectedFormat].price;\n const selectedQuantity = this.quantityOptions[this.selectedPanel.quantity];\n const selectedLanguage = this.languageOptions[this.selectedPanel.selectedLanguage];\n\n editedPaper.saleType = selectedSaleType;\n editedPaper.format = selectedFormat;\n editedPaper.unitPrice = selectedUnitPrice;\n editedPaper.quantity = selectedQuantity;\n editedPaper.language = selectedLanguage;\n editedPaper.totalPrice = selectedUnitPrice * selectedQuantity;\n }\n\n cancel() {\n this.panelList = [];\n this.data.dialog.closeAll();\n }\n\n confirmPanels() {\n /* this.store.dispatch(new SetPanels(this.panelList));\n this.store.dispatch(new SetPanelsInfo(this.description));\n this.data.dialog.closeAll(); */\n\n const fees =\n projectID === 'default'\n ? ''\n : `
    \n Frais de livraison: ${this.fraisMDN * 1.21} €`;\n\n let totalPrice = this.fraisMDN * 1.21;\n let formattedMsg = `\n \n \n \n \n \n \n \n \n \n `;\n\n this.panelList.forEach(panel => {\n totalPrice += panel.totalPrice;\n formattedMsg += `\n \n \n \n \n \n \n \n \n `;\n });\n\n formattedMsg += `\n
    FormatType de venteLangueQuantitéTVACPrix
    ${panel.format}${panel.saleType}${panel.language}${panel.quantity}${panel.unitPrice.toFixed(2)} €${panel.totalPrice.toFixed(2)} €
    \n ${fees}\n
    \n Prix total: ${totalPrice} €\n
    \n

    Information:

    \n ${this.description}\n `;\n\n const result = {\n email: this.connectedUser.email,\n userId: this.connectedUser.userid,\n firstName: this.connectedUser.firstname,\n lastName: this.connectedUser.lastname,\n subject: 'Commande panneaux',\n message: formattedMsg\n };\n\n this.sendEmailService.sendRequest(result).subscribe(\n val => {\n this.logger.log(`🚀`);\n this.logger.log('Commande panneaux envoyé avec succès', val);\n this.sent = true;\n },\n response => {\n this.logger.log('😰 POST Commande panneaux error', response);\n this.sent = false;\n }\n );\n }\n panelSelect() {\n if (this.selectedPanel.selectedFormat === 2) {\n this.dialog.open(PanelXlRequestDialogComponent, {\n panelClass: ['specific-request-dialog'],\n data: {\n dialog: this.data.dialog\n }\n });\n return;\n }\n this.quantityOptionsExt =\n this.selectedPanel.selectedFormat === 0\n ? [{ price: 28, amount: 10 }, { price: 24, amount: 25 }, { price: 18, amount: 50 }, { price: 12, amount: 100 }]\n : [\n { price: 33 * 1.4, amount: 10 },\n { price: 20.4 * 1.4, amount: 25 },\n { price: 15.9 * 1.4, amount: 50 },\n { price: 11.55 * 1.4, amount: 100 }\n ];\n }\n}\n","import { Component, OnInit, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';\n\n@Component({\n selector: 'app-message-dialog',\n templateUrl: './message-dialog.component.html',\n styleUrls: ['./message-dialog.component.scss']\n})\nexport class MessageDialogComponent implements OnInit {\n constructor(\n @Inject(MAT_DIALOG_DATA)\n public data: {\n dialog: MatDialog;\n title: string;\n content: string;\n }\n ) {}\n\n ngOnInit() {}\n\n cancel() {\n this.data.dialog.closeAll();\n }\n}\n","
    \n
    \n
    \n {{ data.title }}\n
    \n
    \n
    \n\n
    \n \n
    \n
    \n","
    \n
    \n
    \n \n {{ 'visit-zyva-request-dialog.title' | translate }}\n
    \n
    \n
    \n

    {{'visit-zyva-request-dialog.intro' | translate}}

    \n
    \n
    \n
    \n
    \n
    \n \n \n {{'visit-zyva-request-dialog.yes' | translate}}\n {{'visit-zyva-request-dialog.no' | translate}}\n \n
    \n \n {{ 'visit-zyva-request-dialog.ownerName' | translate }}\n \n \n {{ 'error-messages.required-blank' | translate }}\n \n \n \n {{ 'visit-zyva-request-dialog.address' | translate }}\n \n \n {{ 'error-messages.required-blank' | translate }}\n \n \n \n \n \n
    \n

    {{ 'visit-zyva-request-dialog.upload' | translate}}

    \n
    \n \n \n \n \n
    \n
    0\">\n
      \n
    • \n
      \n {{\n 'File ' + fileIndex(i) }}\n \n
      \n \n \n \n \n
    • \n
    \n
    \n \n \n \n \n
    \n
    \n
    \n
    \n \n
    \n \n \n
    \n
    ","import { Component, OnInit, Inject } from '@angular/core';\nimport { FormGroup, FormBuilder } from '@angular/forms';\nimport { MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';\nimport { FileUploader } from 'ng2-file-upload';\nimport { Store } from '@ngrx/store';\nimport { AppState } from 'src/app/interfaces';\nimport { getOrder, getUserID } from 'src/app/core/store/order/order.selectors';\nimport * as PRODUCTS from 'src/app/core/data/products';\nimport { VisitZyva } from 'src/app/core/models/visitZyva';\nimport { finalize, take } from 'rxjs/operators';\nimport { IOrder } from 'src/app/core/store/order';\nimport { SendEmailService } from 'src/app/core/services/send-email.service';\nimport { environment } from 'src/environments/environment';\nimport { joinPaths } from 'src/app/core/utils/paths/join';\n\n\nconst URL = joinPaths(environment.CertiServices.order, 'UploadPhotoNotary');\n\n@Component({\n selector: 'app-visit-zyva-request-dialog',\n templateUrl: './visit-zyva-request-dialog.component.html',\n styleUrls: ['./visit-zyva-request-dialog.component.scss']\n})\nexport class VisitZyvaRequestDialogComponent implements OnInit {\n zyvaFormGroup: FormGroup;\n sent: boolean;\n uploadLinks = [];\n userID: string;\n order: IOrder;\n\n visitZyva: VisitZyva = {\n forfait: {\n id: PRODUCTS.ZYVA,\n description: 'Visite ZYVA',\n active: false,\n devis: false,\n price: 495 * 1.21\n },\n option: {\n id: 0,\n description: 'disponibilité clé',\n active: false,\n devis: false,\n price: 0\n },\n instructions: '',\n uploadLinks: []\n };\n\n public uploader: FileUploader = new FileUploader({\n url: URL,\n removeAfterUpload: false,\n autoUpload: true\n });\n\n constructor(\n private _formBuilder: FormBuilder,\n private store: Store,\n @Inject(MAT_DIALOG_DATA)\n public data: { dialog: MatDialog },\n private mailService: SendEmailService\n ) { }\n\n ngOnInit() {\n this.zyvaFormGroup = this._formBuilder.group({\n ownerName: [''],\n address: [''],\n instructions: [''],\n hasKey: ['true']\n });\n this.sent = false;\n this.store.select(getUserID).subscribe(us => (this.userID = us));\n this.store.select(getOrder).subscribe(o => (this.order = o));\n\n\n this.uploader.onBuildItemForm = (item, form) => {\n item.withCredentials = false;\n const id = this.userID && this.userID !== '' ? this.userID : 'bc132cfc-aeb1-4fb0-b8ba-0193f96b8230';\n form.append('userID', id);\n };\n\n this.uploader.onSuccessItem = (item, response, status, headers) => {\n this.uploadLinks = [...this.uploadLinks, JSON.parse(response)];\n };\n }\n\n private initForm(vz: VisitZyva): void {\n this.uploadLinks = vz.uploadLinks ?? [];\n this.zyvaFormGroup?.get('instructions').setValue(vz?.instructions);\n this.zyvaFormGroup?.get('hasKey').setValue(vz?.option?.active ? 'true' : 'false');\n }\n\n close() {\n this.data.dialog.closeAll();\n }\n\n fileIndex(i: number) {\n return i + 1;\n }\n\n deletePhotoLink(index: number) {\n this.uploadLinks = [...this.uploadLinks];\n this.uploadLinks.splice(index, 1);\n }\n\n AddVisit() {\n const visit = { ...this.visitZyva };\n visit.forfait.active = true;\n visit.instructions = this.zyvaFormGroup.value.instructions;\n visit.option.active = this.zyvaFormGroup.value.hasKey === 'true';\n visit.uploadLinks = this.uploadLinks;\n this.sendZyvaMailFromModal(visit);\n \n }\n\n private sendZyvaMailFromModal(visit: VisitZyva): void {\n const userName = `${this.order?.user?.firstname ? this.order?.user?.firstname + ' ' : ''}${this.order?.user?.lastname ?? ''}`\n const ownerName = this.zyvaFormGroup?.get('ownerName')?.value;\n const address = this.zyvaFormGroup?.get('address')?.value;\n this.mailService.sendRequestZyva(visit, userName, this.order?.user?.email, this.order?.user?.userid, ownerName, address).pipe(take(1), finalize(() => this.close())).subscribe()\n }\n\n cancelVisit() {\n this.close();\n }\n}\n","\n \n \n
    \n \n \n \n

    {{ translationString + selectedItem.id | translate }}

    \n
    \n
    \n \n \n \n \n \n

    {{ translationString + item.id | translate }}

    \n
    \n \n \n\n\n
    \n \n \n \n \n

    \n
    \n\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { BreakpointObserver } from '@angular/cdk/layout';\nimport { imgagesFolder } from 'src/app/core/services/globals';\n\n@Component({\n selector: 'app-big-select',\n templateUrl: './big-select.component.html',\n styleUrls: ['./big-select.component.scss']\n})\nexport class BigSelectComponent implements OnInit {\n @Input() selected: number;\n @Input() placeholder: string;\n @Input() items: BigSelectInput[];\n @Input() isMobile: boolean;\n @Output() valueChange = new EventEmitter();\n @Input() translationString: string;\n @Input() elementClass: string;\n @Input() disabled: boolean;\n\n noPlaceHolderItems: BigSelectInput[];\n\n constructor(public breakpointObserver: BreakpointObserver) { }\n\n ngOnInit() {\n // test items is not empty\n if (this.items !== undefined && this.items.length !== 0) {\n this.noPlaceHolderItems = this.items.slice(1);\n }\n }\n\n selectedClass(selectedId) {\n const cls = this.selected === selectedId ? 'selected' : '';\n return cls;\n }\n\n imgUrl(fileName, selectedId) {\n let url = imgagesFolder;\n url += fileName;\n url += this.selected === selectedId ? '-selected.svg' : '.svg';\n return url;\n }\n\n valueChanged(id, disabled) {\n if (this.disabled || disabled) return;\n this.valueChange.emit(id);\n }\n\n get selectedItem() {\n return this.items.find(p => p.id === this.selected);\n }\n}\n\nexport interface BigSelectInput {\n id: number;\n name: string;\n fileName?: string;\n disabled?: boolean;\n}\n","
    \n 0; else noSplitInvoice\">\n
    \n
    {{ 'section-money.total-invoiced-to-client' | translate }}
    \n
    \n \n {{ 'section-money.htva' | translate }}\n {{ (priceWithoutReduction - priceForProNoRed - reduction + immoReduction | htva)?.toFixed(2) }} €\n \n \n {{ 'section-money.tvac' | translate }}\n {{ (priceWithoutReduction - priceForProNoRed - reduction + immoReduction)?.toFixed(2) }} €\n \n
    \n
    \n
    \n
    \n {{\n ($isAgency | async)\n ? ('section-money.total-invoiced-to-agency' | translate)\n : ('section-money.total-invoiced-to-notary' | translate)\n }}\n
    \n
    \n \n {{ 'section-money.htva' | translate }}\n {{ (priceForProNoRed - immoReduction | htva)?.toFixed(2) }} €\n \n \n {{ 'section-money.tvac' | translate }}\n {{ (priceForProNoRed - immoReduction)?.toFixed(2) }} €\n \n
    \n
    \n
    \n \n
    \n
    {{ 'section-money.total' | translate }}
    \n
    \n \n {{ 'section-money.htva' | translate }}\n {{ (priceWithoutReduction - reduction | htva)?.toFixed(2) }} €\n \n \n {{ 'section-money.tvac' | translate }}\n {{ (priceWithoutReduction - reduction)?.toFixed(2) }} €\n \n
    \n
    \n \n {{ 'section-money.htva' | translate }}\n {{ (priceWithoutReduction | htva)?.toFixed(2) }} €\n \n \n {{ 'section-money.tvac' | translate }}\n {{ priceWithoutReduction?.toFixed(2) }} €\n \n
    \n
    \n
    \n
    \n","import { Component, OnInit } from '@angular/core';\nimport { IOrder } from 'src/app/core/store/order/order.reducer';\nimport { AppState } from 'src/app/interfaces';\nimport { Store } from '@ngrx/store';\nimport * as orderSelector from '../../core/store/order/order.selectors';\nimport { Observable } from 'rxjs';\nimport { AuthService } from 'src/app/core/services/auth.service';\n\n@Component({\n selector: 'app-step-money-result',\n templateUrl: './step-money-result.component.html',\n styleUrls: ['./step-money-result.component.scss']\n})\nexport class StepMoneyResultComponent implements OnInit {\n order: IOrder;\n priceWithoutReduction: number;\n reduction: number;\n $urgence: Observable;\n $isAgency: Observable;\n\n constructor(private store: Store, private authService: AuthService) {}\n\n ngOnInit() {\n this.store.select(orderSelector.getOrder).subscribe(o => (this.order = o));\n this.store.select(orderSelector.getReduction).subscribe(reduc => (this.reduction = reduc));\n this.$urgence = this.store.select(orderSelector.getUrgence);\n this.$isAgency = this.authService.isAgency;\n this.store.select(orderSelector.getPriceWithoutReduction).subscribe(price => {\n this.priceWithoutReduction = price;\n });\n }\n\n get immoReduction() {\n return this.order.reductions\n .filter(\n r =>\n r.id < 1000 &&\n r.id !== 1 &&\n r.id !== 11 &&\n r.id !== 4 &&\n r.id !== 8 &&\n r.id !== 6 &&\n r.id !== 9 &&\n r.id !== 15 &&\n r.id !== 16 &&\n r.id !== 51 &&\n r.id !== 55 &&\n r.id !== 56 &&\n r.id !== 57 &&\n r.id !== 17\n )\n .reduce((a, b) => a + +b.price, 0);\n }\n\n get priceForProNoRed() {\n if (this.order?.productsForAgency.length === 0) {\n return null;\n }\n return this.order?.productsForAgency.reduce((a, b) => a + +b.price, 0);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'sortby'\n})\nexport class SortbyPipe implements PipeTransform {\n transform(array: any, field: string): any[] {\n if (!Array.isArray(array)) {\n return;\n }\n const arr = [...array].sort((aa: any, bb: any) => {\n const a = +aa[field];\n const b = +bb[field];\n\n if (a < b) {\n return -1;\n } else if (a > b) {\n return 1;\n } else {\n return 0;\n }\n });\n return arr;\n }\n}\n","
    \n {{ 'step1.header-calculate-here' | translate }}\n \n {{\n ($hasImmoAccess | async) ? ('step1.header-immo' | translate) : ('step1.header-no-immo' + projectID | translate)\n }}\n \n
    \n\n
    \n {{ 'step1.header-summary' + projectID | translate }} {{ 'section-situation.region.' + currentRegionId | translate }}\n
    \n\n
    \n {{ 'step1.header-mdn' | translate }}\n
    \n\n
    0 ? 'step-money-visible' : '')\">\n \n \n\n
    \n
    {{ 'section-situation.title' | translate }}
    \n
    \n \n \n \n \n {{ 'error-messages.required-blank' | translate }}\n \n \n
    \n \n

    {{ 'section-situation.region.' + ($selectedRegion | async) | translate }}

    \n
    \n
    \n\n \n
    \n
    {{ 'section-situation.not-available' | translate }}
    \n
    \n
    \n \n
    \n
    {{ 'section-immo-or-ctrl.title' | translate }}
    \n \n \n
    \n
    \n
    \n {{ 'section-type.title' | translate }}\n \n
    \n \n
      \n
    • \n \n \n \n --\n \n {{ 'estateTpes.' + houseOption.typeId | translate }}\n \n \n {{ 'inputs.select-required' | translate }}\n \n \n
    • \n
    • \n \n \n \n --\n \n {{ 'estateTpes.' + appartOption.typeId | translate }}\n \n \n {{ 'inputs.select-required' | translate }}\n \n \n
    • \n \n \n \n \n \n --\n \n {{ immeubleOption.text }}\n \n \n {{\n 'inputs.select-required' | translate\n }}\n \n \n \n
    • \n \n \n \n --\n \n {{ 'estateTpes.' + nonResOption.typeId | translate }}\n \n \n {{ 'inputs.select-required' | translate }}\n \n \n
    • \n
    \n
    \n \n
    {{ 'section-vente-type.title' | translate }}
    \n \n \n \n
    {{ 'section-services.title' | translate }}
    \n \n
    \n \n
    \n {{ immoPack.name }}\n {{ (immoPack.totalWithReduc?.toFixed(2) | htva)?.toFixed(2) }}€ HTVA\n \n {{ 'section-services.split-invoice' | translate }}\n
    \n
    \n 0\" class=\"pack-details-title\">{{\n 'section-services.service-certinergie' | translate\n }}\n
      \n
    • \n \n {{ 'section-money.reductions.' + serviceID | translate }}\n \n
    \n \n \n \n
  • \n \n {{ 'section-money.reductions.-2' | translate }}²\n \n
  • \n \n \n \n
  • \n \n {{ 'section-money.reductions.-8' | translate }}\n \n
  • \n \n \n \n \n \n
    0\" class=\"pack-details open\">\n Services maison du notariat\n
      \n
    • \n \n {{ 'section-money.reductions.' + serviceID | translate }}\n
    • \n
    \n
    \n \n \n \n \n \n
    \n \n \n 0 &&\n ($immoOrCtrlSelected | async) > 0\n \"\n class=\"services-carte-panel\"\n [expanded]=\"true\"\n >\n \n \n

    \n {{ 'section-services.alacarte.pub' | translate }}\n

    \n
    \n
    \n
    \n \n \n \n \n

    {{ 'section-services.services.' + service.id | translate }}

    \n \n
    \n \n
    \n \n
    \n
    \n \n \n \n 0\"\n class=\"services-carte-panel\"\n [expanded]=\"true\"\n >\n \n \n

    \n {{ 'section-services.alacarte.control' | translate }}\n ({{ howManyControlSelected }}/{{ ($filteredServices | async)?.length }})\n

    \n
    \n
    \n
    \n \n \n \n \n

    \n {{ 'section-services.services.' + service.id | translate }}\n

    \n \n \n
    \n \n \n \n \n
  • \n \n \n \n \n {{ 'section-services.peb-partiel.no' | translate }}\n \n \n {{ 'section-services.peb-partiel.yes' | translate }}\n \n \n \n
    \n
    \n \n \n \n \n
    \n
    \n {{ 'section-services.peb-partiel.option' | translate }}\n \n
    \n
    \n
  • \n
  • \n \n \n \n \n {{ elecOption }}\n \n \n \n
  • \n
  • \n \n \n \n \n {{ gazOption }}\n \n \n \n
  • \n
  • \n \n \n \n \n {{ 'section-services.peb-partiel.no' | translate }}\n \n \n {{ gazOption }}\n \n \n \n
  • \n
  • \n \n \n \n \n {{ 'section-services.citerne.under' | translate }}\n \n \n {{ 'section-services.citerne.aerial' | translate }}\n \n \n \n
  • \n \n \n \n {{\n showMoreServices\n ? ('homepage.section-services.show-less' | translate)\n : isHainautOrNamurorNVN\n ? ('MDN-hainaut-namur-nvn.homepage.section-services.show-more' | translate)\n : ('homepage.section-services.show-more' | translate)\n }}\n \n\n \n 0) ||\n (($selectedEstateStyle | async) === 3 && ($filteredImmoServices | async)?.length > 0)) &&\n ($immoOrCtrlSelected | async) > 0\n \"\n class=\"services-carte-panel\"\n [expanded]=\"true\"\n >\n \n \n

    \n {{ 'section-services.alacarte.immo' | translate }}\n ({{ howManyImmoSelected }}/{{ ($filteredImmoServices | async)?.length }})\n

    \n
    \n
    \n
    \n \n \n \n \n

    {{ 'section-services.services.' + service.id | translate }}

    \n \n
    \n \n
    \n \n
    \n \n \n \n \n 0 &&\n (((($userType | async) === UserTypes.Notaire || hasImmoAccess || hasImmoAccessProject) &&\n ($selectedEstateStyle | async) !== 2) ||\n ($selectedEstateStyle | async) === 3) &&\n ($immoOrCtrlSelected | async) > 0\n \"\n class=\"services-carte-panel\"\n [expanded]=\"true\"\n >\n \n \n

    \n {{ 'section-services.alacarte.panel' | translate }}\n

    \n
    \n
    \n
    \n \n \n \n \n

    {{ 'section-services.panels.' + service.id | translate }}

    \n \n
    \n \n
    \n \n
    \n \n \n \n \n \n \n \n \n \n \n\n\n
    0\">\n
    \n
      \n
    • \n
      \n {{ 'section-money.reductions.' + product.id | translate }}\n ({{ 'section-money.invoiced-by-lavenir' | translate }}) \n \n
      \n
      {{ product.price }} €
      \n \n
      {{ 'section-money.free' | translate }}
      \n
      \n
    • \n
    \n \n
    \n
    \n {{ 'section-money.reduction' | translate }}\n \n \n
    \n
    - {{ reduction }} €
    \n
    \n
      \n
    • \n
      \n {{ 'section-money.reductions.' + reduction.id | translate }}\n
      \n
      \n {{ 'section-money.reductions.' + reduction.id | translate }} \"{{ promoCode }}\"\n
      \n
      - {{ reduction.price }} €
      \n
    • \n
    \n
    \n
    \n
    \n
    {{ 'section-money.commission' | translate }}
    \n
    \n 0\n \n {{ $reductionWithoutComm | async }}\n
    \n
    \n
    {{ $commission | async }} €
    \n
    \n
    \n
    \n \n {{ 'section-money.online-payment' | translate }}\n \n
    \n
    \n \n {{ 'section-money.urgence.label' | translate }}\n \n \n
    \n \n \n \n {{ 'section-money.promo-code.label' | translate }}\n \n \n {{ promoCode }}\n \n \n
    \n \n \n \n \n {{\n 'section-money.promo-code.invalid' | translate\n }}\n
    \n
    \n
    \n \n
    \n
    \n \n \n\n\n
    0\">\n \n
    \n \n \n
    \n\n\n \n
    \n
    {{ 'section-situation.title' | translate }}
    \n
    \n \n \n \n \n {{ 'error-messages.required-blank' | translate }}\n \n \n
    \n \n

    {{ 'section-situation.region.' + ($selectedRegion | async) | translate }}

    \n
    \n
    \n\n \n
    \n
    {{ 'section-situation.not-available' | translate }}
    \n
    \n
    \n
    \n
    \n
    {{ 'section-immo-or-ctrl.title' | translate }}
    \n \n
    \n
    \n
    \n
    \n {{ 'section-type.title' | translate }}\n \n
    \n \n
      \n
    • \n \n \n \n --\n \n {{ 'estateTpes.' + houseOption.typeId | translate }}\n \n \n {{ 'inputs.select-required' | translate }}\n \n \n
    • \n
    • \n \n \n \n --\n \n {{ 'estateTpes.' + appartOption.typeId | translate }}\n \n \n {{ 'inputs.select-required' | translate }}\n \n \n
    • \n \n \n \n \n \n --\n \n {{ immeubleOption.text }}\n \n \n {{\n 'inputs.select-required' | translate\n }}\n \n \n \n
    • \n \n \n \n --\n \n {{ 'estateTpes.' + nonResOption.typeId | translate }}\n \n \n {{ 'inputs.select-required' | translate }}\n \n \n
    • \n
    \n
    \n 0)\n \"\n >\n
    {{ 'section-services.title' | translate }}
    \n \n
    \n \n
    \n {{ immoPack.name }}\n {{ (immoPack.totalWithReduc?.toFixed(2) | htva)?.toFixed(2) }}€ HTVA\n \n {{ 'section-services.split-invoice' | translate }}\n
    \n
    \n 0\" class=\"pack-details-title\">{{\n 'section-services.service-certinergie' | translate\n }}\n
      \n
    • \n \n {{ 'section-money.reductions.' + serviceID | translate }}\n \n
    \n \n \n \n
  • \n \n {{ 'section-money.reductions.-2' | translate }}\n \n
  • \n \n \n
  • \n \n {{ 'section-money.reductions.-8' | translate }}\n \n \n \n
  • \n
    \n \n \n
    0\" class=\"pack-details open\">\n Services maison du notariat\n
      \n
    • \n \n {{ 'section-money.reductions.' + serviceID | translate }}\n
    • \n
    \n
    \n \n \n \n \n \n
    \n \n \n 0\n \"\n class=\"services-carte-panel\"\n [expanded]=\"true\"\n >\n \n \n

    \n {{ 'section-services.alacarte.pub' | translate }}\n

    \n
    \n
    \n
    \n \n \n \n \n

    {{ 'section-services.services.' + service.id | translate }}

    \n \n
    \n
    \n \n \n 0\"\n class=\"services-carte-panel\"\n [expanded]=\"true\"\n >\n \n \n

    \n {{ 'section-services.alacarte.control' | translate }}\n ({{ howManyControlSelected }}/{{ ($filteredServices | async)?.length }})\n

    \n
    \n
    \n
    \n \n \n \n \n

    \n {{ 'section-services.services.' + service.id | translate }}\n

    \n \n \n
    \n \n \n \n \n
  • \n \n \n \n \n {{ 'section-services.peb-partiel.no' | translate }}\n \n \n {{ 'section-services.peb-partiel.yes' | translate }}\n \n \n \n
    \n
    \n \n \n \n \n
    \n
    \n {{ 'section-services.peb-partiel.option' | translate }}\n \n
    \n
    \n
  • \n
  • \n \n \n \n \n {{ elecOption }}\n \n \n \n
  • \n
  • \n \n \n \n \n {{ gazOption }}\n \n \n \n
  • \n
  • \n \n \n \n \n {{ 'section-services.peb-partiel.no' | translate }}\n \n \n {{ gazOption }}\n \n \n \n
  • \n
  • \n \n \n \n \n {{ 'section-services.citerne.under' | translate }}\n \n \n {{ 'section-services.citerne.aerial' | translate }}\n \n \n \n
  • \n \n \n \n {{\n showMoreServices\n ? ('homepage.section-services.show-less' | translate)\n : isHainautOrNamurorNVN\n ? ('MDN-hainaut-namur-nvn.homepage.section-services.show-more' | translate)\n : ('homepage.section-services.show-more' | translate)\n }}\n \n\n \n 0) ||\n (($selectedEstateStyle | async) === 3 && ($filteredImmoServices | async)?.length > 0))\n \"\n class=\"services-carte-panel\"\n [expanded]=\"true\"\n >\n \n \n

    \n {{ 'section-services.alacarte.immo' | translate }}\n ({{ howManyImmoSelected }}/{{ ($filteredImmoServices | async)?.length }})\n

    \n
    \n
    \n
    \n \n \n \n \n

    {{ 'section-services.services.' + service.id | translate }}

    \n \n
    \n \n
    \n \n
    \n \n \n \n\n \n \n \n \n \n \n
    \n\n\n\n \n
    \n
    {{ 'section-situation.title' | translate }}
    \n
    \n \n \n \n \n {{ 'error-messages.required-blank' | translate }}\n \n \n
    \n \n

    {{ 'section-situation.region.' + ($selectedRegion | async) | translate }}

    \n
    \n
    \n\n \n
    \n
    {{ 'section-situation.not-available' | translate }}
    \n
    \n
    \n\n
    \n
    \n
    \n {{ 'section-type.title' | translate }}\n \n
    \n \n
      \n
    • \n \n \n \n --\n \n {{ 'estateTpes.' + houseOption.typeId | translate }}\n \n \n {{ 'inputs.select-required' | translate }}\n \n \n
    • \n
    • \n \n \n \n --\n \n {{ 'estateTpes.' + appartOption.typeId | translate }}\n \n \n {{ 'inputs.select-required' | translate }}\n \n \n
    • \n \n \n \n \n \n --\n \n {{ immeubleOption.text }}\n \n \n {{\n 'inputs.select-required' | translate\n }}\n \n \n \n
    • \n \n \n \n --\n \n {{ 'estateTpes.' + nonResOption.typeId | translate }}\n \n \n {{ 'inputs.select-required' | translate }}\n \n \n
    • \n
    \n
    \n 0)\n \"\n >\n
    \n
    {{ 'section-services.title' | translate }}
    \n \n \n {{ 'section-services.btn-toggle.alacarte' | translate }}\n \n \n
    \n {{ 'section-services.btn-toggle.packs' | translate }}\n PROMO\n
    \n
    \n
    \n
    \n \n
    \n \n
    \n {{ 'section-services.packs.' + immoPack.description | translate }}\n
    \n
    \n - {{ immoPack.servicesPrice - immoPack.totalWithReduc }}€\n {{ immoPack.totalWithReduc }}\n \n {{ 'section-services.insteadof' | translate }}\n {{ immoPack.servicesPrice }} €\n \n
    \n \n
    \n - {{ immoPack.servicesPrice - immoPack.totalWithReduc }}€\n {{ immoPack.totalWithReduc }}\n \n {{ 'section-services.insteadof' | translate }}\n {{ immoPack.servicesPrice }} €\n \n
    \n
    \n
    \n
      \n
    • \n \n {{ 'section-services.services.' + serv.id | translate }}\n
    • \n
    \n \n \n
    \n \n \n {{ 'section-services.pack-selected' | translate }}\n \n
    \n \n \n
    \n \n \n 0\"\n class=\"services-carte-panel\"\n [expanded]=\"true\"\n >\n \n \n

    \n {{ 'section-services.alacarte.control' | translate }}\n ({{ howManyControlSelected }}/{{ ($filteredServices | async)?.length }})\n

    \n
    \n
    \n
    \n \n \n \n \n

    \n {{ 'section-services.services.' + service.id | translate }}\n

    \n \n
    \n
    \n \n
  • \n \n \n \n \n {{ 'section-services.peb-partiel.no' | translate }}\n \n \n {{ 'section-services.peb-partiel.yes' | translate }}\n \n \n \n
    \n
    \n {{ 'section-services.peb-partiel.subtitle' | translate }}\n \n \n \n \n \n
    \n
    \n {{ 'section-services.peb-partiel.option' | translate }}\n \n
    \n
    \n
  • \n
  • \n \n \n \n \n {{ elecOption }}\n \n \n \n
  • \n
  • \n \n \n \n \n {{ gazOption }}\n \n \n \n
  • \n
  • \n \n \n \n \n {{ 'section-services.peb-partiel.no' | translate }}\n \n \n {{ gazOption }}\n \n \n \n
  • \n
  • \n \n \n \n \n {{ 'section-services.citerne.under' | translate }}\n \n \n {{ 'section-services.citerne.aerial' | translate }}\n \n \n \n
  • \n \n \n \n 0\"\n class=\"services-carte-panel\"\n [expanded]=\"true\"\n >\n \n \n

    \n {{ 'section-services.alacarte.immo' | translate }}\n ({{ howManyImmoSelected }}/{{ ($filteredImmoServices | async)?.length }})\n

    \n
    \n
    \n
    \n \n \n \n \n

    {{ 'section-services.services.' + service.id | translate }}

    \n \n
    \n \n \n \n \n \n
    \n
    \n\n\n\n
    \n
    {{ 'section-client.particulier-title' | translate }}
    \n \n
    \n
    \n
    {{ 'section-reason.title' | translate }}
    \n \n
    \n
    \n
    {{ 'section-situation.particulier-title' | translate }}
    \n
    \n \n \n \n \n {{ 'error-messages.required-blank' | translate }}\n \n \n
    \n \n

    {{ 'section-situation.region.' + ($selectedRegion | async) | translate }}

    \n
    \n
    \n
    \n \n
    \n \n
    {{ 'section-situation.not-available' | translate }}
    \n
    \n \n
    \n {{ 'section-type.particulier-title' | translate }}\n \n
    \n \n
      \n
    • \n \n \n \n --\n \n {{ 'estateTpes.' + houseOption.typeId | translate }}\n \n \n {{ 'inputs.select-required' | translate }}\n \n \n
    • \n
    • \n \n \n \n --\n \n {{ 'estateTpes.' + appartOption.typeId | translate }}\n \n \n {{ 'inputs.select-required' | translate }}\n \n \n
    • \n \n \n \n \n \n --\n \n {{ immeubleOption.text }}\n \n \n {{\n 'inputs.select-required' | translate\n }}\n \n \n \n
    • \n \n \n \n --\n \n {{ 'estateTpes.' + nonResOption.typeId | translate }}\n \n \n {{ 'inputs.select-required' | translate }}\n \n \n
    • \n
    \n
    \n \n -1) ||\n (($hasDefinedRegionAndZipcode | async) &&\n ($selectedEstateType | async) > -1 &&\n ($selectedEstateStyle | async) !== -1 &&\n ($nbOfAppartments | async) > 0)\n \"\n >\n
    \n
    \n {{ (($showMoreServices | async) ? 'section-services.title' : 'section-services.title-part') | translate }}\n
    \n 0\"\n #group=\"matButtonToggleGroup\"\n >\n \n {{ 'section-services.btn-toggle.alacarte' | translate }}\n \n \n
    \n {{ 'section-services.btn-toggle.packs' | translate }}\n PROMO\n
    \n
    \n \n
    \n \n
    \n \n
    {{ 'section-services.packs.' + immoPack.description | translate }}
    \n
    \n - {{ immoPack.servicesPrice - immoPack.totalWithReduc }}€\n {{ immoPack.totalWithReduc }}\n \n {{ 'section-services.insteadof' | translate }}\n {{ immoPack.servicesPrice }} €\n \n
    \n \n
    \n - {{ immoPack.servicesPrice - immoPack.totalWithReduc }}€\n {{ immoPack.totalWithReduc }}\n \n {{ 'section-services.insteadof' | translate }}\n {{ immoPack.servicesPrice }} €\n \n
    \n
    \n
    \n
      \n
    • \n \n {{ 'section-services.services.' + serv.id | translate }}\n
    • \n
    \n \n \n
    \n \n \n {{ 'section-services.pack-selected' | translate }}\n \n
    \n \n \n
    \n \n \n 0\"\n class=\"services-carte-panel\"\n [expanded]=\"true\"\n >\n \n \n

    \n {{\n (($showMoreServices | async)\n ? 'section-services.alacarte.control'\n : 'section-services.alacarte.control-mandatory') | translate\n }}\n ({{ howManyControlSelected }}/{{ ($filteredServices | async)?.length }})\n

    \n
    \n
    \n
    \n \n \n \n \n

    \n {{ 'section-services.services.' + service.id | translate }}\n

    \n \n
    \n
    \n \n
  • \n \n \n \n \n {{ 'section-services.peb-partiel.no' | translate }}\n \n \n {{ 'section-services.peb-partiel.yes' | translate }}\n \n \n \n
    \n
    \n {{ 'section-services.peb-partiel.subtitle' | translate }}\n \n \n \n \n \n
    \n
    \n {{ 'section-services.peb-partiel.option' | translate }}\n \n
    \n
    \n
  • \n
  • \n \n \n \n \n {{ elecOption }}\n \n \n \n
  • \n
  • \n \n \n \n \n {{ gazOption }}\n \n \n \n
  • \n
  • \n \n \n \n \n {{ 'section-services.peb-partiel.no' | translate }}\n \n \n {{ gazOption }}\n \n \n \n
  • \n
  • \n \n \n \n \n {{ 'section-services.citerne.under' | translate }}\n \n \n {{ 'section-services.citerne.aerial' | translate }}\n \n \n \n
  • \n \n \n {{\n showMoreServices\n ? ('homepage.section-services.show-less' | translate)\n : isHainautOrNamurorNVN\n ? ('MDN-hainaut-namur-nvn.homepage.section-services.show-more' | translate)\n : ('homepage.section-services.show-more' | translate)\n }}\n \n \n \n 0\"\n class=\"services-carte-panel\"\n [expanded]=\"true\"\n >\n \n \n

    \n {{ 'section-services.alacarte.immo' | translate }}\n ({{ howManyImmoSelected }}/{{ ($filteredImmoServices | async)?.length }})\n

    \n
    \n
    \n
    \n \n \n \n \n

    {{ 'section-services.services.' + service.id | translate }}

    \n \n
    \n \n \n \n \n \n
    \n","import { Component, OnInit, ChangeDetectorRef, AfterViewChecked, Input, AfterContentInit, Inject } from '@angular/core';\nimport { Store } from '@ngrx/store';\n\nimport { DataService } from '../core/services/data.service';\nimport { BreakpointObserver } from '@angular/cdk/layout';\n\nimport { AppState } from '../interfaces';\nimport * as orderSelector from '../core/store/order/order.selectors';\nimport * as uiSelector from '../core/store/ui/ui.selectors';\n\nimport {\n filterNewUserTypes,\n defaultRegion,\n forceConnection,\n hasImmoAccessProject,\n hasAccessAllPack,\n themeColor\n} from '../core/data/theme-config';\n\nimport {\n SetEstateType,\n SetRegion,\n SetNumberOfAppartments,\n SetServices,\n ToggleOnlinePayment,\n SetPromoCode,\n ToggleUrgence,\n SetCommission,\n SetEstateStyle,\n SetGazChoice,\n SetPebNb,\n ResetOrderState,\n SetZipCode,\n SetReason,\n SetClientType,\n ResetPack,\n SetImmoPack,\n SetImmoPackIds,\n SetVenteType,\n SetImmoOrCtrl,\n IOrder,\n SetSplitInvoice\n} from '../core/store/order';\nimport { Observable, combineLatest, Subscription, firstValueFrom } from 'rxjs';\n\nimport * as estates from '../core/data/estates';\nimport { Product } from '../core/models/product';\n\nimport * as PRODUCTS from '../core/data/products';\nimport { Reduction } from '../core/models/reduction';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatStepper } from '@angular/material/stepper';\nimport { LoginDialogComponent } from '../dialogs/login-dialog/login-dialog.component';\nimport { SpecificRequestDialogComponent } from '../dialogs/specific-request-dialog/specific-request-dialog.component';\nimport { SummaryConfirmDialogComponent } from '../dialogs/summary-confirm-dialog/summary-confirm-dialog.component';\nimport { FormGroup, Validators, FormBuilder, FormControl, AbstractControl } from '@angular/forms';\nimport { Role, UserType, ReasonType } from '../core/models/user';\nimport {\n SetShowPacks,\n SetStep1Valid,\n SetPacksWithPrices,\n ShowMoreServices,\n SetPacksWithPricesNoFilt\n} from '../core/store/ui';\nimport { PackDB } from '../core/models/PackDB';\nimport { descriptifPacks, services, immoServices, servicesSupp, panneauxServices, mdnServices } from '../core/data';\nimport { DESCRIPTIF } from '../core/data/products';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Region } from '../core/models/region';\nimport { map, debounceTime, take } from 'rxjs/operators';\nimport {\n displayRegionSelection,\n step1TitleImmo,\n step1SubTitle,\n headerShowPhone,\n showFinalOptions,\n projectID\n} from '../core/data/theme-config';\nimport { userTypePartAndPro, userTypePartAndNotary } from '../core/data/newUserTypes';\nimport { immoOrCtrlOptions } from '../core/data/immoOrCtrlOptions';\nimport { mdnOptions } from '../core/data/immoOrCtrlOptions';\nimport { nvnOptions } from '../core/data/immoOrCtrlOptions';\nimport { ventes } from '../core/data/ventes';\nimport { reasons } from '../core/data/reasons';\nimport { imgagesFolder } from '../core/services/globals';\nimport { LoggerService } from '../core/services/logger.service';\nimport { PrintRequestDialogComponent } from '../dialogs/print-request-dialog/print-request-dialog.component';\nimport { VisitRequestDialogComponent } from '../dialogs/visit-request-dialog/visit-request-dialog.component';\nimport { VisitContact } from '../core/models/visitContact';\nimport { VenteInfo } from '../core/models/venteInfo';\nimport { PosterRequestDialogComponent } from '../dialogs/poster-request-dialog/poster-request-dialog.component';\nimport { SignsRequestDialogComponent } from '../dialogs/signs-request-dialog/signs-request-dialog.component';\nimport { PaperRequestDialogComponent } from '../dialogs/paper-request-dialog/paper-request-dialog.component';\nimport { ServicesChoiceDialogComponent } from '../dialogs/services-choice-dialog/services-choice-dialog.component';\nimport { PrintFullpressRequestDialogComponent } from '../dialogs/print-fullpress-request-dialog/print-fullpress-request-dialog.component';\nimport { PanelXlRequestDialogComponent } from '../dialogs/panel-xl-request-dialog/panel-xl-request-dialog.component';\nimport { SpecificPrintRequestDialogComponent } from '../dialogs/specific-print-request-dialog/specific-print-request-dialog.component';\nimport { AuthService } from '../core/services/auth.service';\nimport { DOCUMENT } from '@angular/common';\nimport { CustomRequestDialogComponent } from '../dialogs/custom-request-dialog/custom-request-dialog.component';\nimport { TranslateService } from '@ngx-translate/core';\nimport { ventePubChoices, venteBidditChoices } from '../core/models/venteChoices';\nimport { ServicesDetailsDialogComponent } from '../dialogs/services-details-dialog/services-details-dialog.component';\nimport { GlobalMessageComponent } from '../dialogs/global-message/global-message.component';\nimport { PanelRequestDialogComponent } from '../dialogs/panel-request-dialog/panel-request-dialog.component';\nimport { MessageDialogComponent } from '../dialogs/message-dialog/message-dialog.component';\nimport { VisitZyvaRequestDialogComponent } from '../dialogs/visit-zyva-request-dialog/visit-zyva-request-dialog.component';\nimport { GtmService } from '../core/services/google-tag-manager.service';\nimport { MatSnackBar } from '@angular/material/snack-bar';\n\n@Component({\n selector: 'app-step1',\n templateUrl: './step1.component.html',\n styleUrls: ['./step1.component.scss']\n})\nexport class Step1Component implements OnInit, AfterViewChecked, AfterContentInit {\n assetsFolder = 'assets/images/';\n descriptifPacks: number[];\n\n @Input() packs: PackDB[];\n @Input() stepper: MatStepper;\n regions;\n estateTypes;\n estateStyles;\n noPlaceHolderEstateStyles;\n immoPacks;\n houseOptions: HouseOption[];\n nonResOptions: HouseOption[];\n appartOptions;\n immeubleOptions;\n elecOptions;\n gazOptions;\n promoCode: string;\n pebNb = '';\n priceWithoutReduction: number;\n reduction: number;\n howManyControlSelected: number;\n howManyImmoSelected: number;\n reductionPromoCode: string;\n estateType: number;\n pebPartiel = false;\n wantsIso = true;\n hasImmoAccess: boolean;\n hasPanel = false;\n hasPanelSupport = false;\n hasBidditPanel = false;\n hasBidditPanelSupport = false;\n showFinalOptions = showFinalOptions;\n showMoreServices: boolean;\n visitLength;\n reason: number;\n venteType: number;\n PRODUCTS = PRODUCTS;\n isAvailableZipFlanders = true;\n reducMoreDetails = false;\n\n $venteInfo: Observable;\n\n mdnService =\n projectID === 'namur' || projectID === 'hainaut' || projectID === 'nvn' || projectID === 'liege' ? mdnServices : [];\n\n get isHainautOrNamurorNVN() {\n return projectID === 'namur' || projectID === 'hainaut' || projectID === 'nvn' || projectID === 'liege';\n }\n\n venteInfo: VenteInfo;\n\n displayRegionSelection = displayRegionSelection;\n step1TitleImmo = step1TitleImmo;\n projectID = projectID !== 'default' ? '-' + projectID : '';\n\n hasImmoAccessProject = hasImmoAccessProject;\n hasAccessAllPack = hasAccessAllPack;\n\n succintStep1 = false;\n step1SubTitle = step1SubTitle;\n headerShowPhone = headerShowPhone;\n\n houseControl = new FormControl();\n appartControl = new FormControl();\n buildingControl = new FormControl();\n situationControl = new FormControl();\n nonResControl = new FormControl();\n\n reasons = reasons;\n venteTypes = ventes;\n UserTypes = UserType;\n filterNewUserTypes = filterNewUserTypes;\n clientTypes: { id: number | string; txt: string; fileName: string }[];\n immoOrCtrlOptions: { id: number | string; txt: string; fileName: string }[];\n mdnOptions: { id: number | string; txt: string; fileName: string }[];\n nvnOptions: { id: number | string; txt: string; fileName: string }[];\n clientTypeIndex: number;\n reasonIndex: number;\n clientType: number;\n\n step1FormGroup: FormGroup;\n\n ventePubChoices = ventePubChoices;\n venteBidditChoices = venteBidditChoices;\n\n products: number[];\n productsDB: Product[];\n order: IOrder;\n\n $selectedRegion: Observable;\n $selectedEstateType: Observable;\n $selectedEstateStyle: Observable;\n $selectedImmoPack: Observable;\n $selectedUserType: Observable;\n $nbOfAppartments: Observable;\n $filteredServices: Observable;\n $filteredImmoServices: Observable;\n $filteredPanneauxServices: Observable;\n $filteredPublicationsServices: Observable;\n $products: Observable;\n $services: Observable;\n $reductions: Observable;\n $onlinePayment: Observable;\n $urgence: Observable;\n $userID: Observable;\n $isLoggedIn: Observable;\n $hasImmoAccess: Observable;\n $reduction: Observable;\n $reductionWithoutComm: Observable;\n $commission: Observable;\n $nbElec: Observable;\n $nbGaz: Observable;\n $gazChoice: Observable;\n $hasCommission: Observable;\n $userRoles: Observable;\n $showPacks: Observable;\n $isMobile: Observable;\n $immoPacksWithPrices: any;\n $userType: Observable;\n $promocodeID: Observable;\n $immoPacks: Observable;\n $region: Observable;\n $hasElec: Observable;\n $hasPeb: Observable;\n $hasAudit: Observable;\n $nbOfIso: Observable;\n $reason: Observable;\n $venteType: Observable;\n $clientType: Observable;\n $immoOrCtrlSelected: Observable;\n $showMoreServices: Observable;\n $venteStatus: Observable<{ id: number; name: string }>;\n $hasPack: Observable;\n $packID: Observable;\n $immoPackIds: Observable;\n $pricingProducts: Observable;\n $packProducts: Observable;\n $packPrice: Observable;\n $packName: Observable;\n $zipCode: Observable;\n $hasGazCerga: Observable;\n\n $ventePubSub: Subscription;\n $venteGreSub: Subscription;\n $venteBidditSub: Subscription;\n\n userID: string;\n packID: number;\n currentRegionId: number;\n currentEstateStyle: number;\n\n isFromNVN: boolean;\n isFromHainaut: boolean;\n isFromNamur: boolean;\n\n maison5: HouseOption;\n maison6: HouseOption;\n\n hasPeb: boolean;\n hasPebPartiel: boolean;\n hasElec: boolean;\n hasCiterne: boolean;\n hasPlan: boolean;\n hasGaz: boolean;\n\n nbOfApp: number;\n\n isMobile: boolean;\n isLoggedIn: boolean;\n immopacksWithPrices: any;\n\n estates = ['m', 'a', 'i'];\n showMorePack = false;\n\n filteredServices: any;\n filteredImmoServices: any;\n controlLength: number;\n immoLength: number;\n\n visitContact: VisitContact;\n $isAgency: Observable;\n $isNotary: Observable;\n $isInstallateur: Observable;\n userType: number;\n svgPrimaryColor = {\n fill: themeColor\n };\n hasCompletedStep1: boolean = false;\n $hasDefinedRegionAndZipcode: Observable;\n\n constructor(\n private store: Store,\n public dataService: DataService,\n public dialog: MatDialog,\n private _formBuilder: FormBuilder,\n public breakpointObserver: BreakpointObserver,\n private cdRef: ChangeDetectorRef,\n private route: ActivatedRoute,\n private logger: LoggerService,\n private router: Router,\n private authService: AuthService,\n private translate: TranslateService,\n private gtmService: GtmService,\n private snackBar: MatSnackBar,\n @Inject(DOCUMENT) private document: Document\n ) {\n this.store.select(orderSelector.getServices).subscribe(data => {\n this.products = data;\n this.hasPanelSupport = data.some(p => p === PRODUCTS.PANEL_SUPPORT);\n this.hasPanel = data.some(p => p === PRODUCTS.PANEL || p === PRODUCTS.PANEL_SUPPORT);\n this.hasBidditPanelSupport = data.some(p => p === PRODUCTS.PANELBIDDIT_SUPPORT);\n this.hasBidditPanel = data.some(p => p === PRODUCTS.PANELBIDDIT || p === PRODUCTS.PANELBIDDIT_SUPPORT);\n this.step1FormGroup = this._formBuilder.group({\n validStep: [this.products.length, Validators.min(1)]\n });\n\n this.store.dispatch(new SetStep1Valid(this.step1FormGroup.get('validStep').valid));\n });\n\n this.$venteInfo = this.store.select(orderSelector.getVenteInfo);\n this.$venteInfo.subscribe(v => {\n this.venteInfo = v;\n });\n\n this.descriptifPacks = descriptifPacks;\n this.checkQueryParams();\n\n if (projectID === 'namur' || projectID === 'hainaut' || projectID === 'nvn' || projectID === 'liege') {\n this.setRegion(defaultRegion);\n }\n }\n\n ngOnInit(): void {\n this.$immoPacks = this.dataService?.getPacksFromAPI();\n this.store?.select(orderSelector.getUserType).subscribe(u => (this.userType = u));\n this.store.select(orderSelector.getOrder).subscribe(o => (this.order = o));\n this.$selectedRegion = this.store.select(orderSelector.getRegion);\n this.$selectedEstateType = this.store.select(orderSelector.getEstateID);\n this.$selectedEstateStyle = this.store.select(orderSelector.getEstateStyle);\n this.$nbOfAppartments = this.store.select(orderSelector.getNbOfAppartments);\n this.$selectedImmoPack = this.store.select(orderSelector.getImmoPack);\n this.$packName = this.store.select(orderSelector.getPackName);\n this.$immoPackIds = this.store.select(orderSelector.getImmoPackIds);\n this.$filteredServices = this.store.select(orderSelector.getFilteredServices);\n this.$filteredImmoServices = this.store.select(orderSelector.getFilteredImmoServices);\n this.$reductions = this.store.select(orderSelector.getReductions);\n this.$filteredPanneauxServices = this.store.select(orderSelector.getFilteredPanneauxServices);\n this.$filteredPublicationsServices = this.store.select(orderSelector.getFilteredPublicationsServices);\n this.$products = this.store.select(orderSelector.getProducts);\n this.$pricingProducts = combineLatest([this.$products, this.$immoPackIds]).pipe(\n map(values => {\n const prods = values[0];\n const packIds = values[1];\n return prods.filter(pr => !packIds.find(id => id === pr.id));\n })\n );\n this.$packProducts = combineLatest([this.$products, this.$immoPackIds, this.$reductions]).pipe(\n map(values => {\n const prods = values[0];\n const packIds = values[1];\n const packReducPrice = values[2].reduce((acc, cur) => +cur.price + acc, 0);\n const reduc =\n (projectID === 'namur' || projectID === 'hainaut' || projectID === 'nvn' || projectID === 'liege') &&\n packReducPrice\n ? new Product(-99, +packReducPrice * -1, 0)\n : null;\n const filteredProds = prods.filter(pr => !!packIds.find(id => id === pr.id));\n\n return filteredProds.length > 0 && reduc ? [...filteredProds, reduc] : filteredProds;\n })\n );\n this.$packPrice = this.$packProducts\n .pipe(map(prs => prs.map(pr => +pr.price)))\n .pipe(map(p => p.reduce((acc, val) => acc + val, 0)));\n this.$onlinePayment = this.store.select(orderSelector.getOnlinePayment);\n this.$urgence = this.store.select(orderSelector.getUrgence);\n this.$userID = this.store.select(orderSelector.getUserID);\n this.$commission = this.store.select(orderSelector.getCommission);\n this.$reductionWithoutComm = this.store.select(orderSelector.getReductionWithoutComm);\n this.$reduction = this.store.select(orderSelector.getReduction);\n this.$nbElec = this.store.select(orderSelector.nbOfElec);\n this.$nbOfIso = this.store.select(orderSelector.getNbOfIso);\n this.$nbGaz = this.store.select(orderSelector.nbOfGaz);\n this.$hasElec = this.store.select(orderSelector.hasElec);\n this.$hasPeb = this.store.select(orderSelector.hasPeb);\n this.$hasAudit = this.store.select(orderSelector.hasAudit);\n this.$gazChoice = this.store.select(orderSelector.gazChoice);\n this.$hasImmoAccess = this.store.select(orderSelector.getHasImmoAccess);\n this.$hasCommission = this.store.select(orderSelector.getHasCommission);\n this.$userRoles = this.store.select(orderSelector.getUserRoles);\n this.$showPacks = this.store.select(uiSelector.getShowPacks);\n this.$isMobile = this.store.select(uiSelector.getIsMobile);\n this.$immoPacksWithPrices = this.store.select(uiSelector.getPacksWithPrices);\n this.$services = this.store.select(orderSelector.getServices);\n this.$userType = this.store.select(orderSelector.getUserType);\n this.$reason = this.store.select(orderSelector.getReason);\n this.$venteType = this.store.select(orderSelector.getVenteType);\n this.$clientType = this.store.select(orderSelector.getClientType);\n this.$immoOrCtrlSelected = this.store.select(orderSelector.getImmoOrCtrl);\n this.$zipCode = this.store.select(orderSelector.getAddress).pipe(map(ad => ad.zip));\n\n this.authService.isFromNVN.subscribe(b => (this.isFromNVN = b));\n this.authService.isFromNamur.subscribe(b => (this.isFromNamur = b));\n this.authService.isFromHainaut.subscribe(b => (this.isFromHainaut = b));\n\n this.$reduction.subscribe(reduc => (this.reduction = reduc));\n this.$promocodeID = this.store.select(orderSelector.getPromoCodeID);\n this.$region = this.store.select(orderSelector.getRegionInfo);\n this.$packID = this.store.select(orderSelector.getPackID);\n this.$hasPack = this.$packID.pipe(map(p => p && p !== -1));\n this.$packID.subscribe(p => {\n this.packID = p;\n this.dataService.getProductsForPack(p + '').subscribe(se => {\n const serv = [...se];\n const descriptifPack = this.descriptifPacks.some(packId => packId === p);\n if (descriptifPack) {\n serv.push(DESCRIPTIF);\n if (projectID === 'nvn') {\n serv.push(PRODUCTS.DESCRIPTIF_URBA);\n }\n serv.push(PRODUCTS.PLAQUETTE);\n serv.push(PRODUCTS.LIVRET);\n serv.push(PRODUCTS.AFFICHETTE);\n }\n this.store.dispatch(new SetImmoPackIds(serv));\n });\n });\n this.$userID.subscribe(uid => (this.userID = uid));\n this.$hasImmoAccess.subscribe(i => (this.hasImmoAccess = i));\n this.$showMoreServices = this.store.select(uiSelector.getShowMoreServices);\n this.store.select(orderSelector.pebNb).subscribe(nb => {\n this.pebNb = nb;\n });\n this.store.select(orderSelector.getVisitContact).subscribe(v => (this.visitContact = v));\n this.$reason.subscribe(r => (this.reason = r));\n this.$venteType.subscribe(v => (this.venteType = v));\n\n this.$showMoreServices.subscribe(bool => (this.showMoreServices = bool));\n\n this.clientTypes = projectID === 'default' ? userTypePartAndPro : userTypePartAndNotary;\n this.immoOrCtrlOptions = immoOrCtrlOptions;\n this.mdnOptions = mdnOptions;\n this.nvnOptions = nvnOptions;\n this.$isAgency = this.authService.isAgency;\n this.$isNotary = this.authService.isNotary;\n this.$isInstallateur = this.authService.isInstallateur;\n\n this.situationControl.setValidators(this.inputZipCode.bind(this));\n this.onZipChanges();\n this.$zipCode.subscribe(zip => {\n if (+this.situationControl.value !== +zip) {\n this.situationControl.patchValue(zip);\n }\n });\n\n this.$nbOfAppartments.subscribe(nb => (this.nbOfApp = nb));\n\n combineLatest(this.$nbOfAppartments, this.$hasPeb, this.$selectedEstateStyle)\n .pipe(map(results => ({ nbOfApp: results[0], hasPeb: results[1] })))\n .subscribe(v => {\n if (v.nbOfApp > 0 && this.estateType === 2) {\n if (v.hasPeb) {\n this.setPebSupp(v.nbOfApp);\n }\n }\n });\n\n combineLatest(this.$nbOfAppartments, this.$hasAudit, this.$selectedEstateStyle)\n .pipe(map(results => ({ nbOfApp: results[0], hasAudit: results[1] })))\n .subscribe(v => {\n if (v.nbOfApp > 0 && this.estateType === 2) {\n if (v.hasAudit) {\n this.setAuditSupp(v.nbOfApp);\n }\n }\n });\n\n combineLatest(this.$nbOfAppartments, this.$hasElec, this.$selectedEstateStyle)\n .pipe(map(results => ({ nbOfApp: results[0], hasElec: results[1] })))\n .subscribe(v => {\n if (v.nbOfApp > 0 && this.estateType === 2) {\n if (v.hasElec) {\n this.setElecSupp(v.nbOfApp);\n }\n }\n });\n\n this.store.select(orderSelector.hasPeb).subscribe(bool => (this.hasPeb = bool));\n this.store.select(orderSelector.hasPebPartiel).subscribe(bool => {\n this.hasPebPartiel = bool;\n if (bool) {\n this.pebPartiel = true;\n }\n });\n this.store.select(orderSelector.hasElec).subscribe(bool => (this.hasElec = bool));\n this.store.select(orderSelector.hasCiterne).subscribe(bool => (this.hasCiterne = bool));\n this.store.select(orderSelector.hasPlan).subscribe(bool => (this.hasPlan = bool));\n this.store.select(orderSelector.hasGaz).subscribe(bool => (this.hasGaz = bool));\n this.store.select(orderSelector.getPriceWithoutReduction).subscribe(price => (this.priceWithoutReduction = price));\n this.store.select(orderSelector.getPromoCode).subscribe(data => (this.promoCode = data));\n this.store.select(orderSelector.getEstateStyle).subscribe(data => (this.currentEstateStyle = data));\n this.store.select(orderSelector.getVisitsLength).subscribe(data => (this.visitLength = data));\n this.$hasGazCerga = this.store\n .select(orderSelector.hasGaz)\n .pipe(map(hasGaz => hasGaz && this.products.includes(PRODUCTS.GAZ_CONTROLE)));\n\n this.$filteredServices.subscribe(fs => (this.filteredServices = fs));\n this.$filteredImmoServices.subscribe(fi => (this.filteredImmoServices = fi));\n\n this.$isLoggedIn = this.store.select(orderSelector.getIsLoggedIn);\n\n this.regions = this.dataService.getRegionTypes();\n this.estateTypes = this.dataService.getEstateTypes();\n this.estateStyles = this.dataService.getEstateStyles();\n\n this.$products.subscribe(p => (this.productsDB = p));\n\n this.$selectedRegion.subscribe(id => {\n if (this.currentRegionId !== id) {\n this.stepper.selectedIndex = 0;\n }\n this.currentRegionId = id;\n });\n this.$isLoggedIn.subscribe(i => {\n this.isLoggedIn = i;\n if (i && (projectID === 'namur' || projectID === 'hainaut' || projectID === 'liege')) {\n /* setTimeout(() => {\n if (this.dialog.openDialogs.length === 0) {\n this.openServicesChoiceDialog();\n }\n }, 1000); */\n } else if (!i && projectID === 'nvn') {\n setTimeout(() => {\n this.openLoginDialog();\n }, 1000);\n }\n });\n\n this.$reductions.subscribe(red => {\n let r = '';\n const promodRed = red.find(rr => rr.id === 1002);\n if (promodRed) {\n r = promodRed.price;\n }\n this.reductionPromoCode = r;\n });\n\n\n this.maison5 = this.houseOptions?.filter(h => h.typeId === estates.MAISON_5)[0];\n this.maison6 = this.houseOptions?.filter(h => h.typeId === estates.VILLA)[0];\n\n\n this.elecOptions = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20];\n this.gazOptions = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20];\n\n if (this.estateTypes !== undefined) {\n this.houseOptions = this.estateTypes['m'];\n this.nonResOptions = this.estateTypes['non'];\n this.appartOptions = this.estateTypes['a'];\n this.immeubleOptions = this.estateTypes['i'];\n }\n if (this.estateStyles !== undefined && Array.isArray(this.estateStyles)) {\n this.noPlaceHolderEstateStyles = this.estateStyles?.slice(1);\n }\n\n combineLatest(\n this.$userRoles,\n this.$selectedEstateType,\n this.$userType,\n this.$selectedRegion,\n this.$reason,\n this.$venteType,\n this.$immoOrCtrlSelected,\n this.$showMoreServices,\n (\n userRoles,\n estateType,\n userType,\n selectedRegion,\n selectedReason,\n selectedVenteType,\n immoOrCtrl,\n showMoreServices\n ) => ({\n userRoles,\n estateType,\n userType,\n selectedRegion,\n selectedReason,\n selectedVenteType,\n immoOrCtrl,\n showMoreServices\n })\n ).subscribe(\n ({\n userRoles,\n estateType,\n userType,\n selectedRegion,\n selectedReason,\n selectedVenteType,\n immoOrCtrl,\n showMoreServices\n }) => {\n this.dataService?.getImmoPacks()?.subscribe(pa => {\n let immoPacksWithPrices = (pa && [...pa]) || [];\n this.estateType = estateType;\n this.logger.log('🐛 ImmoPacks0', immoPacksWithPrices);\n\n if (selectedRegion !== -1 && estateType !== -1) {\n if (projectID === 'default') {\n immoPacksWithPrices = immoPacksWithPrices.filter(p => p.userRoles.length === 0 && +p.description < 1000);\n // Filtering out notaryApp services like Immovlan (>1000) because we didn't manage packs per apps in backend\n //const packLand = immoPacksWithPrices.find(i => +i.description === 9997);\n //if (packLand) {\n //packLand.services = packLand.services.filter(s => s < 100);\n //}\n }\n this.logger.log('🐛 ImmoPacks1', immoPacksWithPrices);\n if (!this.hasImmoAccess && !this.hasImmoAccessProject && projectID !== 'greenfish') {\n immoPacksWithPrices = immoPacksWithPrices.filter(\n p => p.userTypes.length === 0 || p.userTypes.some(ut => ut === userType) || this.hasAccessAllPack\n );\n }\n if (estateType > 13) {\n immoPacksWithPrices = immoPacksWithPrices.filter(\n p => +p.description > 63 || +p.description === 52 || +p.description === 53\n );\n }\n if (selectedReason > -1) {\n immoPacksWithPrices = immoPacksWithPrices.filter(p =>\n p.services.every(s =>\n this.filteredServices.some(pr =>\n s === PRODUCTS.CITERNE_AERIENNE ? pr.id === s || pr.id === PRODUCTS.CITERNE_ENTERREE : pr.id === s\n )\n )\n );\n }\n immoPacksWithPrices = this.getPackPrice(immoPacksWithPrices as any) as any;\n this.logger.log('🐛 ImmoPacks2', immoPacksWithPrices, immoOrCtrl);\n }\n\n immoPacksWithPrices =\n immoOrCtrl === 0 || userType == 1689\n ? immoPacksWithPrices &&\n immoPacksWithPrices.sort((a, b) => +a.name - +b.name && +a.description - +b.description)\n : immoPacksWithPrices && immoPacksWithPrices.sort((a, b) => b.totalWithReduc - a.totalWithReduc);\n immoPacksWithPrices = [...immoPacksWithPrices].map(ip => ({\n ...ip,\n services: [...ip.services].sort((a, b) => a - b)\n }));\n\n if (userType === UserType.Notaire) immoPacksWithPrices = immoPacksWithPrices.filter(({ id }) => id !== 'e0c9e965-8bb5-4bda-a262-28ed9e8d9163') // Remove 'Combi PEB + ELEC' pack for notaries\n\n this.store.dispatch(new SetPacksWithPricesNoFilt(immoPacksWithPrices));\n\n if (immoOrCtrl === 0) {\n immoPacksWithPrices = immoPacksWithPrices.filter(i => +i.description === 51);\n this.logger.log('🐛 noImmoPacks', immoPacksWithPrices);\n } else if (immoOrCtrl === 1 && projectID === 'default') {\n immoPacksWithPrices = immoPacksWithPrices.filter(\n i =>\n !(\n +i.description !== 52 &&\n +i.description !== 53 &&\n +i.description !== 54 &&\n +i.description !== 64 &&\n +i.description !== 65 &&\n +i.description !== 66 &&\n +i.description !== 67\n )\n );\n this.logger.log('🐛 noImmoPacks', immoPacksWithPrices);\n }\n immoPacksWithPrices = [...immoPacksWithPrices].sort((a, b) => a.sortId - b.sortId);\n this.immopacksWithPrices = immoPacksWithPrices;\n\n this.store.dispatch(new SetPacksWithPrices(immoPacksWithPrices));\n });\n }\n );\n\n this.$services.subscribe(serv => {\n this.controlLength = this.filteredServices.length;\n this.immoLength = this.filteredImmoServices.length;\n // improve by comparing with getServiceTypes\n this.howManyControlSelected = serv.filter(\n s => s === 1 || s === 4 || s === 6 || s === 9 || s === 15 || s === 28\n ).length;\n this.howManyImmoSelected = serv.length - this.howManyControlSelected;\n });\n\n combineLatest(this.$selectedEstateType, this.$selectedEstateStyle, this.$nbOfAppartments)\n .pipe(map(results => ({ estateType: results[0], estateStyle: results[1], nbOfApp: results[2] })))\n .subscribe(v => {\n if (v.estateStyle === 0) {\n this.houseControl.setValidators(this.selectNotEmpty);\n this.houseControl.setValue(v.estateType);\n } else if (v.estateStyle === 1) {\n this.appartControl.setValidators(this.selectNotEmpty);\n this.appartControl.setValue(v.estateType);\n } else if (v.estateStyle === 2) {\n this.buildingControl.setValidators(this.selectNotEmpty);\n this.buildingControl.setValue(v.nbOfApp);\n } else if (v.estateStyle === 4) {\n this.nonResControl.setValidators(this.selectNotEmpty);\n this.nonResControl.setValue(v.estateType);\n }\n });\n\n this.store.select(orderSelector.getAddressZipcode).subscribe(zipcode => {\n // Remove any selected service if it is not available for the current zipcode\n const filteredProducts = this.products.filter(selectedServiceId =>\n this.filteredServices.some(availableService => availableService.id === selectedServiceId)\n );\n const hasRemovedAnyServices = filteredProducts.length !== this.products.length;\n\n this.store.dispatch(new SetServices(filteredProducts));\n if (hasRemovedAnyServices)\n this.snackBar.open(this.translate.instant('step1.removed-zipcode-restricted-services'));\n });\n\n // Open specific request dialog for notaries ordering a PEB for a villa\n combineLatest(\n this.store.select(orderSelector.getUserType),\n this.$selectedEstateType,\n this.$products\n ).subscribe(([userType, estateType, selectedProductIds]) => {\n const hasSelectedPeb = Boolean(selectedProductIds.find(({id}) => id === PRODUCTS.PEB));\n if(userType === UserType.Notaire && estateType === estates.VILLA && hasSelectedPeb) {\n if (this.dialog.getDialogById('SpecificRequestDialogComponent')) return; \n this.dialog.open(SpecificRequestDialogComponent, {\n panelClass: ['specific-request-dialog'],\n data: {\n dialog: this.dialog,\n estateId: estateType\n },\n id: 'SpecificRequestDialogComponent'\n });\n }\n })\n\n this.$hasDefinedRegionAndZipcode = combineLatest(\n this.$selectedRegion,\n this.$zipCode\n ).pipe(\n map(([selectedRegion, zipCode]) => selectedRegion != -1 && Boolean(zipCode))\n );\n }\n\n checkQueryParams() {\n // /?r=0&e=11&p=1-4&c=ouioui\n this.route?.queryParamMap?.subscribe(params => {\n const orderid = params.get('o') ? params.get('o') : null;\n const diag = params.get('diag') ? params.get('diag') : null;\n const code = params.get('c') ? params.get('c') : null;\n const region = params.get('r') ? +params.get('r') : null;\n let estate = params.get('e') ? +params.get('e') : null;\n const pr = params.get('p') && params.get('p').split('-');\n this.succintStep1 = false;\n\n if (!!code || !!region || !!estate) {\n this.store.dispatch(new ResetOrderState(null));\n }\n\n if (diag && diag === 'login') {\n this.openLoginDialog();\n } else if (diag && diag === 'register') {\n this.openRegisterDialog();\n } else if (diag && diag === 'forgot') {\n this.openLoginDialog(false, true);\n }\n\n if (code) {\n this.setPromoCode(code);\n }\n\n if (orderid) {\n this.dataService.preloadOrder(orderid);\n }\n\n const hasElecInUrl = pr && pr.some(p => +p === PRODUCTS.ELEC);\n const hasPebInUrl = pr && pr.some(p => +p === PRODUCTS.PEB);\n if (hasElecInUrl || hasPebInUrl) {\n this.setReasonType(ReasonType.Vente);\n }\n\n if (!isNaN(region) && [0, 1, 2].some(r => r === region)) {\n this.logger.log('🎨 set region');\n this.setRegion(region);\n\n if (!isNaN(estate) && [1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18].some(e => e === estate)) {\n this.logger.log('🎨 set esateType');\n if (pr && pr.length && pr.length === 1 && +pr[0] === PRODUCTS.ELEC) {\n estate = estates.OTHER;\n }\n this.setEstateType(estate);\n if (pr && pr.length > 0 && pr[0]) {\n const hasGazInUrl = pr.some(p => +p === PRODUCTS.GAZ_CONTROLE || +p === PRODUCTS.GAZ_CONTROLE_PERIO);\n if (hasGazInUrl) {\n this.logger.log('hasGazInUrl', hasGazInUrl);\n this.setGazChoice(1);\n }\n this.succintStep1 = true;\n if (!this.dataService.isGreenfish()) {\n this.onlinePayment();\n }\n this.store.dispatch(new SetServices([]));\n pr.forEach(element => {\n const prod = +element;\n if (\n !isNaN(prod) &&\n [\n PRODUCTS.PEB,\n PRODUCTS.ELEC,\n PRODUCTS.CITERNE_AERIENNE,\n PRODUCTS.CITERNE_ENTERREE,\n PRODUCTS.PLAN,\n PRODUCTS.GAZ_CONTROLE,\n PRODUCTS.GAZ_CONTROLE_PERIO,\n PRODUCTS.AUDIT,\n PRODUCTS.ELEC_PHOTOVOLTA,\n PRODUCTS.RESP_PEB,\n PRODUCTS.ELEC_NONDOM_MAX125A,\n PRODUCTS.PHOTODRONE,\n PRODUCTS.VIDEO_DRONE,\n PRODUCTS.PLAN3D,\n PRODUCTS.PEBCHAUFFAGE\n ].some(e => e === prod)\n ) {\n this.logger.log('🎨 set products');\n this.setService(prod, true);\n }\n });\n }\n }\n }\n });\n }\n\n ngAfterContentInit(): void {}\n\n ngAfterViewChecked(): void {\n this.cdRef.detectChanges();\n }\n\n setRegion(id: number) {\n if (id === -1) {\n this.setEstateStyle(-1);\n }\n this.store.dispatch(new SetRegion(id));\n }\n\n setEstateStyle(style: number) {\n this.store.dispatch(new SetEstateStyle(style));\n }\n\n private getDefaultEstateType(estateStyle): number {\n switch (estateStyle) {\n case estates.HOUSE:\n return estates.MAISON_2;\n case estates.FLAT:\n return estates.STUDIO;\n case estates.BUILDING:\n return estates.IMMEUBLE_APPART;\n default:\n break;\n }\n }\n\n setEstateType(id: number, element = null) {\n if (id === estates.DEVIS || id === estates.NON_RESI_OVER_250) {\n this.dialog.open(SpecificRequestDialogComponent, {\n panelClass: ['specific-request-dialog'],\n data: {\n dialog: this.dialog,\n estateId: id\n },\n id: 'SpecificRequestDialogComponent'\n });\n return;\n } else if (id === -1) {\n this.store.dispatch(new SetServices([]));\n }\n // if (element) {\n // this.scrollToElement(element);\n // }\n this.store.dispatch(new SetEstateType(id));\n }\n\n setNbOfAppartments(id: number, element = null) {\n if (this.hasElec) {\n this.dataService.setElecSupp(id);\n }\n if (this.hasGaz) {\n this.dataService.setGazSupp(id);\n }\n // if (element) {\n // this.scrollToElement(element);\n // }\n this.store.dispatch(new SetNumberOfAppartments(id));\n }\n\n addService(id: number) {\n return this.products.some(p => p === id) ? null : this.setService(id);\n }\n\n // add this to a service with logic when adding/removing products\n async setService(id, init = false) {\n if (id === PRODUCTS.PLAQUETTE || id === PRODUCTS.DESCRIPTIF || id === PRODUCTS.SMS) {\n return;\n }\n this.store.dispatch(new SetSplitInvoice(false));\n\n if (this.succintStep1 && this.estateType === estates.OTHER && !init) {\n this.setEstateType(estates.NONE);\n this.succintStep1 = false;\n return this.store.dispatch(new SetServices([]));\n }\n\n if (\n id === PRODUCTS.ELEC_NONDOM_OVER125A ||\n id === PRODUCTS.AMIANTE ||\n id === PRODUCTS.NETTJARDIN ||\n id === PRODUCTS.NETTMAISON ||\n id === PRODUCTS.RESP_PEB\n ) {\n this.translate.get('section-services.services.' + id).subscribe((res: string) => {\n this.dialog.open(CustomRequestDialogComponent, {\n panelClass: ['specific-request-dialog'],\n data: {\n dialog: this.dialog,\n title: res,\n serviceId: id,\n needAddress: id === PRODUCTS.RESP_PEB\n }\n });\n });\n return;\n }\n if (id === PRODUCTS.PANEL || id === PRODUCTS.PANEL_SUPPORT) {\n const content = await firstValueFrom(this.translate.get('message-dialog.panel-content'));\n const title = await firstValueFrom(this.translate.get('message-dialog.panel-title'));\n this.dialog.open(MessageDialogComponent, {\n panelClass: ['specific-request-dialog'],\n data: {\n dialog: this.dialog,\n content: content,\n title: title\n }\n });\n }\n if (id === PRODUCTS.PANEL_STANDARD) {\n this.dialog.open(PanelRequestDialogComponent, {\n panelClass: ['specific-request-dialog'],\n data: {\n dialog: this.dialog,\n reason: this.venteType\n }\n });\n return;\n }\n if (id === PRODUCTS.PANEL_XL) {\n this.dialog.open(PanelXlRequestDialogComponent, {\n panelClass: ['specific-request-dialog'],\n data: {\n dialog: this.dialog,\n reason: this.venteType\n }\n });\n return;\n }\n if (id === PRODUCTS.ZYVA) {\n this.dialog.open(VisitZyvaRequestDialogComponent, {\n panelClass: ['specific-request-dialog'],\n data: {\n dialog: this.dialog\n },\n disableClose: true\n });\n return;\n }\n if (id === -101) {\n this.dialog.open(PosterRequestDialogComponent, {\n panelClass: ['poster-request-dialog', 'full-screen-dialog'],\n data: {\n dialog: this.dialog\n },\n disableClose: true\n });\n return;\n }\n if (id === -102) {\n this.dialog.open(SignsRequestDialogComponent, {\n panelClass: ['signs-request-dialog', 'full-screen-dialog'],\n data: {\n dialog: this.dialog\n },\n disableClose: true\n });\n return;\n }\n if (id === -103) {\n this.dialog.open(PaperRequestDialogComponent, {\n panelClass: ['paper-request-dialog', 'full-screen-dialog'],\n data: {\n dialog: this.dialog\n },\n disableClose: true\n });\n return;\n }\n if (id === PRODUCTS.PRINT) {\n this.dialog.open(PrintFullpressRequestDialogComponent, {\n panelClass: ['print-full-press-request-dialog', 'full-screen-dialog'],\n data: {\n dialog: this.dialog\n },\n disableClose: true\n });\n return;\n }\n if (id === PRODUCTS.PRINT_A_LA_CARTE_BIS && projectID === 'hainaut') {\n this.dialog.open(SpecificPrintRequestDialogComponent, {\n panelClass: ['print-request-dialog', 'full-screen-dialog'],\n data: {\n dialog: this.dialog,\n reason: this.venteType\n },\n disableClose: false\n });\n return;\n }\n if (id === PRODUCTS.PRINT_A_LA_CARTE) {\n this.dialog.open(PrintRequestDialogComponent, {\n panelClass: ['print-request-dialog', 'full-screen-dialog'],\n data: {\n dialog: this.dialog,\n reason: this.venteType,\n type: 'lavenir'\n },\n disableClose: true\n });\n return;\n }\n if (id === PRODUCTS.PRINT_A_LA_CARTE_BIS) {\n this.dialog.open(PrintRequestDialogComponent, {\n panelClass: ['print-request-dialog', 'full-screen-dialog'],\n data: {\n dialog: this.dialog,\n reason: this.venteType\n },\n disableClose: true\n });\n return;\n }\n if (id === PRODUCTS.VISIT) {\n this.dialog.open(VisitRequestDialogComponent, {\n panelClass: ['visit-request-dialog', 'full-screen-dialog'],\n data: {\n dialog: this.dialog,\n reason: this.venteType\n },\n disableClose: true\n });\n return;\n }\n\n this.dataService.setService(id);\n }\n\n setServiceNoRemove(id) {\n if (\n id === PRODUCTS.PANEL ||\n id === PRODUCTS.PANEL_SUPPORT ||\n id === PRODUCTS.PANELBIDDIT ||\n id === PRODUCTS.PANELBIDDIT_SUPPORT\n ) {\n this.products = this.products?.filter(\n pr =>\n pr !== PRODUCTS.SMS &&\n pr !== PRODUCTS.PANEL &&\n pr !== PRODUCTS.PANEL_SUPPORT &&\n pr !== PRODUCTS.PANELBIDDIT &&\n pr !== PRODUCTS.PANELBIDDIT_SUPPORT\n );\n }\n\n this.products.push(id);\n this.store.dispatch(new SetServices(this.products));\n }\n\n setPebSupp(nb) {\n this.dataService.setPebSupp(nb);\n }\n\n setAuditSupp(nb) {\n this.dataService.setAuditSupp(nb);\n }\n\n setElecSupp(nb) {\n this.dataService.setElecSupp(nb);\n }\n\n setGazSupp(nb) {\n this.dataService.setGazSupp(nb);\n }\n\n setGazChoice(choice: number) {\n this.store.dispatch(new SetGazChoice(choice));\n }\n\n isCiterneSelected(id: number) {\n const index = this.products.indexOf(id);\n\n if (id === PRODUCTS.CITERNE_AERIENNE) {\n return index > -1 ? 'accent' : 'primary';\n } else if (id === PRODUCTS.CITERNE_ENTERREE) {\n return index > -1 ? 'accent' : 'primary';\n }\n }\n\n get citerneType(): number {\n const under = this.products.indexOf(9) > -1;\n const aerial = this.products.indexOf(6) > -1;\n\n return under ? 9 : aerial ? 6 : 6;\n }\n\n regionClass(selectedId) {\n const cls = this.currentRegionId === selectedId ? 'region selected' : 'region';\n return cls;\n }\n\n regionImgUrl(selectedId, fileName) {\n let url = this.assetsFolder;\n url += fileName + '.svg';\n return url;\n }\n\n estateClass(selectedEstate) {\n const cls = this.currentEstateStyle === selectedEstate ? 'estate selected' : 'estate';\n return cls;\n }\n\n estateImgUrl(fileName) {\n let url = this.assetsFolder;\n url += fileName;\n return url;\n }\n\n serviceClass(id: number) {\n if (id === 9) {\n return this.isSelected(6) || this.isSelected(9) ? 'service selected' : 'service';\n }\n if (id === PRODUCTS.PRINT) {\n return this.products.find(s => s === PRODUCTS.FullPress) ? 'service selected' : 'service';\n }\n if (id === PRODUCTS.PRINT_A_LA_CARTE) {\n return this.products.find(s => s >= PRODUCTS.ProximagNamurBW && s <= PRODUCTS.ProximagHainautOutOfOcc)\n ? 'service selected'\n : 'service';\n }\n if (id === PRODUCTS.PRINT_A_LA_CARTE_BIS) {\n return this.products.find(\n s =>\n (s >= PRODUCTS.PublicationVlan && s <= PRODUCTS.PublicationProximagArdennes) ||\n s === PRODUCTS.VlanEditionLocal\n )\n ? 'service selected'\n : 'service';\n }\n if (id === PRODUCTS.VISIT) {\n return this.visitLength > 0 ||\n (this.visitContact.email && this.visitContact.email !== '') ||\n this.products.some(\n idd =>\n idd === PRODUCTS.VISITADVALORIS ||\n idd === PRODUCTS.VisitGil4S ||\n idd === PRODUCTS.VisitGil6S ||\n idd === PRODUCTS.VisitGilBoundless_3M\n )\n ? 'service selected'\n : 'service';\n }\n /* if (id === PRODUCTS.PANEL) {\n return this.isSelected(PRODUCTS.PANEL_SUPPORT) || this.isSelected(PRODUCTS.PANEL)\n ? 'service selected'\n : 'service';\n } else if (id === PRODUCTS.PANELBIDDIT) {\n return this.isSelected(PRODUCTS.PANELBIDDIT) || this.isSelected(PRODUCTS.PANELBIDDIT_SUPPORT)\n ? 'service selected'\n : 'service';\n } */\n return this.isSelected(id) ? 'service selected' : 'service';\n }\n\n isSelected(id: number): boolean {\n const bool = this.products.indexOf(id) > -1;\n return bool;\n }\n\n serviceImgUrl(fileName, id) {\n let url = this.assetsFolder;\n if (fileName === null || fileName === '') {\n const serv = services.concat(immoServices as any, servicesSupp, panneauxServices);\n if (serv.find(s => s.id === id)) {\n fileName = serv.find(s => s.id === id).fileName;\n return (url += fileName + '.svg');\n }\n } else if (fileName === null || fileName === '') {\n fileName = 'service-3d';\n return (url += fileName + '.svg');\n }\n\n url += fileName;\n\n if (id === PRODUCTS.PANEL) {\n url += this.isSelected(PRODUCTS.PANEL_SUPPORT) || this.isSelected(PRODUCTS.PANEL) ? '-selected.svg' : '.svg';\n } else if (id === PRODUCTS.PANELBIDDIT) {\n url +=\n this.isSelected(PRODUCTS.PANELBIDDIT) || this.isSelected(PRODUCTS.PANELBIDDIT_SUPPORT)\n ? '-selected.svg'\n : '.svg';\n } else if (id === PRODUCTS.VISIT) {\n url +=\n this.visitLength > 0 || (this.visitContact.email && this.visitContact.email !== '') ? '-selected.svg' : '.svg';\n } else {\n url += this.isSelected(id) ? '-selected.svg' : '.svg';\n }\n\n return url;\n }\n\n setImmoPack(id: string) {\n let serv = [];\n if (+id === 54) {\n setTimeout(() => {\n this.store.dispatch(new SetSplitInvoice(true));\n }, 1000);\n } else {\n setTimeout(() => {\n this.store.dispatch(new SetSplitInvoice(false));\n }, 1000);\n }\n if (this.packID === parseInt(id, 10)) {\n this.store.dispatch(new ResetPack(null));\n this.store.dispatch(new SetServices(serv));\n } else {\n // this.toggleShowMoreServices(true);\n this.store.dispatch(new SetImmoPack(parseInt(id, 10)));\n this.dataService.getProductsForPack(id + '').subscribe(se => {\n serv = [...se];\n this.store.dispatch(new SetServices(serv.slice().sort((a, b) => a - b)));\n this.setShowPacks(false);\n });\n }\n }\n\n setPebPartiel(bool: boolean) {\n if (!bool && this.hasPebPartiel) {\n this.setService(PRODUCTS.PEB_Partiel);\n }\n this.pebPartiel = bool;\n }\n\n addPebPartiel() {\n this.setService(PRODUCTS.PEB_Partiel);\n }\n\n addPebNb(pebNb: string) {\n this.store.dispatch(new SetPebNb(pebNb));\n }\n\n setWantsIso(bool: boolean) {\n this.wantsIso = bool;\n }\n nextStep() {\n // this.gtmService.emitClick({ event_target: 'bouton', event_label: 'étape 1 continuer' });\n this.houseControl.markAsTouched();\n\n if (this.succintStep1) {\n const ref = this.dialog.open(SummaryConfirmDialogComponent, {\n panelClass: 'summary-confirm-dialog',\n data: {\n regionId: this.currentRegionId,\n estateTypeId: this.estateType,\n dialog: this.dialog,\n products: this.products,\n stepper: this.stepper,\n price: this.priceWithoutReduction,\n reduction: this.reduction\n }\n });\n\n ref.afterClosed().subscribe(result => {\n this.succintStep1 = result;\n });\n }\n\n if (!this.hasCompletedStep1) {\n this.hasCompletedStep1 = true;\n this.gtmService.emit('order_funnel_step_1_completed');\n }\n }\n\n onlinePayment() {\n this.store.dispatch(new ToggleOnlinePayment(true));\n }\n\n urgence() {\n this.store.dispatch(new ToggleUrgence(true));\n }\n\n setPromoCode(code: string) {\n if (code !== '') {\n this.store.dispatch(new SetPromoCode(code.toLowerCase()));\n }\n }\n\n setCommission(value: number) {\n this.store.dispatch(new SetCommission(value));\n }\n\n setShowPacks(value: boolean) {\n if (this.estateType === estates.OTHER) {\n this.setEstateType(estates.NONE);\n this.succintStep1 = false;\n return this.store.dispatch(new SetServices([]));\n }\n\n this.store.dispatch(new SetShowPacks(value));\n }\n\n openLoginDialog(toRegister = false, toForgotten = false): void {\n this.dialog.open(LoginDialogComponent, {\n panelClass: ['no-padding-dialog', 'full-screen-dialog'],\n data: { register: toRegister, forgotten: toForgotten, selectedUserType: this.clientType, dialog: this.dialog },\n disableClose: forceConnection\n });\n }\n\n openGlobalDialog(): void {\n this.dialog.open(GlobalMessageComponent, {\n panelClass: ['full-screen-dialog'],\n data: { dialog: this.dialog }\n });\n }\n\n openRegisterDialog(): void {\n this.dialog.open(LoginDialogComponent, {\n panelClass: ['no-padding-dialog', 'full-screen-dialog'],\n data: { register: true, dialog: this.dialog },\n disableClose: forceConnection\n });\n }\n\n openDetailsDialog(id: number, event): void {\n if (event) {\n event.stopPropagation();\n }\n if (id === PRODUCTS.PLAN) {\n const dialogRef = this.dialog.open(ServicesDetailsDialogComponent, {\n panelClass: ['full-screen-dialog'],\n data: { dialog: this.dialog, serviceId: id }\n });\n dialogRef.componentInstance.onAddService.subscribe(data => {\n if (!!data) {\n this.addService(data);\n }\n });\n }\n if (id === PRODUCTS.PHOTO) {\n const dialogRef = this.dialog.open(ServicesDetailsDialogComponent, {\n panelClass: ['full-screen-dialog'],\n data: { dialog: this.dialog, serviceId: id }\n });\n dialogRef.componentInstance.onAddService.subscribe(data => {\n if (!!data) {\n this.addService(data);\n }\n });\n }\n if (id === PRODUCTS.VISITE360) {\n const dialogRef = this.dialog.open(ServicesDetailsDialogComponent, {\n panelClass: ['full-screen-dialog'],\n data: { dialog: this.dialog, serviceId: id }\n });\n dialogRef.componentInstance.onAddService.subscribe(data => {\n if (!!data) {\n this.addService(data);\n }\n });\n }\n if (id === PRODUCTS.VIDEO) {\n const dialogRef = this.dialog.open(ServicesDetailsDialogComponent, {\n panelClass: ['full-screen-dialog'],\n data: { dialog: this.dialog, serviceId: id }\n });\n dialogRef.componentInstance.onAddService.subscribe(data => {\n if (!!data) {\n this.addService(data);\n }\n });\n }\n if (id === PRODUCTS.LIVRET) {\n const dialogRef = this.dialog.open(ServicesDetailsDialogComponent, {\n panelClass: ['full-screen-dialog'],\n data: { dialog: this.dialog, serviceId: id }\n });\n dialogRef.componentInstance.onAddService.subscribe(data => {\n if (!!data) {\n this.addService(data);\n }\n });\n }\n if (id === PRODUCTS.AFFICHETTE) {\n const dialogRef = this.dialog.open(ServicesDetailsDialogComponent, {\n panelClass: ['full-screen-dialog'],\n data: { dialog: this.dialog, serviceId: id }\n });\n dialogRef.componentInstance.onAddService.subscribe(data => {\n if (!!data) {\n this.addService(data);\n }\n });\n }\n if (id === PRODUCTS.PLAQUETTE) {\n const dialogRef = this.dialog.open(ServicesDetailsDialogComponent, {\n panelClass: ['full-screen-dialog'],\n data: { dialog: this.dialog, serviceId: id }\n });\n dialogRef.componentInstance.onAddService.subscribe(data => {\n if (!!data) {\n this.addService(data);\n }\n });\n }\n if (id === PRODUCTS.PANELBIDDIT) {\n const dialogRef = this.dialog.open(ServicesDetailsDialogComponent, {\n panelClass: ['full-screen-dialog'],\n data: { dialog: this.dialog, serviceId: id, venteType: this.venteType }\n });\n dialogRef.componentInstance.onAddService.subscribe(data => {\n if (!!data) {\n this.addService(data);\n }\n });\n }\n if (id === PRODUCTS.PANEL) {\n const dialogRef = this.dialog.open(ServicesDetailsDialogComponent, {\n panelClass: ['full-screen-dialog'],\n data: { dialog: this.dialog, serviceId: id }\n });\n dialogRef.componentInstance.onAddService.subscribe(data => {\n if (!!data) {\n this.addService(data);\n }\n });\n }\n if (id === PRODUCTS.PANEL_XL) {\n const dialogRef = this.dialog.open(ServicesDetailsDialogComponent, {\n panelClass: ['full-screen-dialog'],\n data: { dialog: this.dialog, serviceId: id }\n });\n dialogRef.componentInstance.onAddService.subscribe(data => {\n if (!!data) {\n this.addService(data);\n }\n });\n }\n if (id === PRODUCTS.DESCRIPTIF) {\n const dialogRef = this.dialog.open(ServicesDetailsDialogComponent, {\n panelClass: ['full-screen-dialog'],\n data: { dialog: this.dialog, serviceId: this.currentRegionId === 1 ? PRODUCTS.DESCRIPTIF_URBA : id }\n });\n dialogRef.componentInstance.onAddService.subscribe(data => {\n if (!!data) {\n this.addService(data);\n }\n });\n }\n if (id === PRODUCTS.DESCRIPTIF_URBA) {\n const dialogRef = this.dialog.open(ServicesDetailsDialogComponent, {\n panelClass: ['full-screen-dialog'],\n data: { dialog: this.dialog, serviceId: id }\n });\n dialogRef.componentInstance.onAddService.subscribe(data => {\n if (!!data) {\n this.addService(data);\n }\n });\n }\n if (id === PRODUCTS.SMS) {\n const dialogRef = this.dialog.open(ServicesDetailsDialogComponent, {\n panelClass: ['full-screen-dialog'],\n data: { dialog: this.dialog, serviceId: id }\n });\n dialogRef.componentInstance.onAddService.subscribe(data => {\n if (!!data) {\n this.addService(data);\n }\n });\n }\n }\n\n displayDetailsBtn(id: number) {\n return (\n id === PRODUCTS.VISITE360 ||\n id === PRODUCTS.PHOTO ||\n id === PRODUCTS.PLAN ||\n id === PRODUCTS.VIDEO ||\n id === PRODUCTS.LIVRET ||\n id === PRODUCTS.AFFICHETTE ||\n id === PRODUCTS.PLAQUETTE ||\n id === PRODUCTS.PANEL ||\n id === PRODUCTS.PANELBIDDIT ||\n (id === PRODUCTS.DESCRIPTIF && this.currentRegionId === 1) ||\n id === PRODUCTS.SMS\n );\n }\n\n openServicesChoiceDialog(): void {\n const servicesChoiceDialogRef = this.dialog.open(ServicesChoiceDialogComponent, {\n panelClass: ['full-screen-dialog'],\n data: { dialog: this.dialog },\n disableClose: true\n });\n\n const sub = servicesChoiceDialogRef.componentInstance.login.subscribe(() => {\n this.dialog.closeAll();\n this.openLoginDialog();\n });\n\n const sub2 = servicesChoiceDialogRef.componentInstance.toNotaryServices.subscribe(() => {\n this.dialog.closeAll();\n this.router.navigate(['/notary-services']);\n });\n }\n\n getPackPrice(\n immoPack: {\n id: number;\n reduc: string;\n services: number[];\n servicesPrice: number;\n servicesRed: number;\n totalWithReduc: number;\n servicesInfo: { id: number; name: string }[];\n }[]\n ) {\n const tmp = JSON.parse(JSON.stringify(immoPack));\n tmp.forEach(pack => {\n pack.servicesInfo = [];\n pack.servicesPrice = pack.servicesRed = pack.totalWithReduc = 0;\n\n // Add descriptif for details\n /* if (this.descriptifPacks.some(id => id === +pack.description)) {\n pack.services = [...pack.services, ...[PRODUCTS.DESCRIPTIF, PRODUCTS.DESCRIPTIF_URBA, PRODUCTS.PLAQUETTE]];\n } */\n\n const serv = pack.services;\n\n serv.forEach(id => {\n const servPrice = this.dataService.getProductPrice(id);\n let ser = this.dataService.getServiceTypes().find(s => s.id === id);\n if (!ser) {\n ser = this.dataService.getImmoServiceTypes().find(s => s.id === id);\n }\n\n servPrice.reduc = this.dataService.getStatutReduc(\n parseInt(id, 10),\n servPrice.reduc,\n this.dataService.getProduct(+id),\n this.userType\n );\n const thisPack = tmp.filter(p => p.id === pack.id)[0];\n /* thisPack.servicesPrice = parseInt(servPrice.price, 10);\n thisPack.servicesRed = parseInt(servPrice.reduc, 10); */\n pack.servicesInfo.push(ser);\n if (isNaN(thisPack.servicesPrice)) {\n thisPack.servicesPrice = 0;\n }\n if (isNaN(thisPack.servicesRed)) {\n thisPack.servicesRed = 0;\n }\n thisPack.servicesPrice =\n thisPack.servicesPrice || thisPack.servicesPrice === 0\n ? isNaN(servPrice.price)\n ? thisPack.servicesPrice\n : thisPack.servicesPrice + servPrice.price\n : servPrice.price;\n thisPack.servicesRed =\n thisPack.servicesRed || thisPack.servicesRed === 0\n ? isNaN(servPrice.reduc)\n ? thisPack.servicesRed\n : thisPack.servicesRed + servPrice.reduc\n : servPrice.reduc;\n });\n pack.reduc = this.dataService.getStatutReduc(\n parseInt(pack.description, 10),\n pack.reduc,\n this.dataService.getProduct(+pack.description),\n this.userType\n );\n pack.totalWithReduc =\n projectID === 'namur' || projectID === 'hainaut' || projectID === 'nvn' || projectID === 'liege'\n ? Math.round((pack.servicesPrice - pack.servicesRed - pack.reduc) * 10) / 10\n : pack.servicesPrice - pack.servicesRed - parseInt(pack.reduc, 10);\n\n if (projectID === 'namur' || projectID === 'hainaut' || projectID === 'nvn' || projectID === 'liege') {\n const se = pack.services;\n pack.services = se.sort((a, b) => a - b).filter(s => s < 10000);\n pack.servicesNotary = se.sort((a, b) => a - b).filter(s => s >= 10000);\n }\n pack.sortId = 99;\n if (+pack.description === 54) {\n pack.sortId = 1;\n pack.proPackDisplay = true;\n pack.servicesInfo = [...pack.servicesInfo].map(ps => ({\n ...ps,\n ...this.dataService.getProductPrice(+ps.id)\n }));\n\n const prodAgency = [...pack.servicesInfo].filter(pr => +pr.id > 17 || +pr.id === PRODUCTS.PLAN);\n const priceForProNoRed = this.priceForProNoRed(prodAgency);\n\n const immoRed = this.immoReduction(prodAgency);\n pack.totalWithReduc = priceForProNoRed - immoRed - pack.reduc;\n }\n });\n return tmp;\n }\n\n selectNotEmpty(control: AbstractControl): { [key: string]: any } | null {\n const valid = control.value !== -1;\n return valid ? null : { isEmpty: { valid: false, value: control.value } };\n }\n\n setClientType(id: number) {\n this.clientType = id;\n if (+id === UserType.Agence || +id === UserType.Notaire || +id === UserType.Installateur) {\n this.openLoginDialog(+id === UserType.Agence);\n return;\n }\n this.store.dispatch(new SetClientType(id));\n }\n\n setImmoOrCtrl(id: number, element = null) {\n // Redirection to notary orders if necessary\n this.$isNotary.pipe(take(1)).subscribe(isNotary => {\n if (projectID === 'default' && id === 1 && isNotary) {\n if (this.isFromNVN) {\n return (this.document.location.href = `https://order.nvn.certinergie.be?u=${this.userID}`);\n } else if (this.isFromHainaut) {\n // return (this.document.location.href = `https://order.notaires-hainaut.certinergie.be?u=${this.userID}`);\n } else if (this.isFromNamur) {\n // return (this.document.location.href = `https://order.notaires-namur.certinergie.be?u=${this.userID}`);\n }\n } else if (id === 2) {\n if (projectID === 'hainaut') {\n this.dialog.open(SignsRequestDialogComponent, {\n panelClass: ['signs-request-dialog', 'full-screen-dialog'],\n data: {\n dialog: this.dialog\n },\n disableClose: true\n });\n return;\n }\n this.dialog.open(PanelRequestDialogComponent, {\n panelClass: ['specific-request-dialog'],\n data: {\n dialog: this.dialog,\n reason: this.venteType\n }\n });\n return;\n } else if (id === 3) {\n this.router.navigate(['/notary-services']);\n return;\n }\n // if (element) {\n // this.scrollToElement(element);\n // }\n this.store.dispatch(new SetImmoOrCtrl(id));\n });\n }\n\n setVenteType(id: string) {\n this.store.dispatch(new SetVenteType(id));\n }\n\n setReasonType(id: number) {\n this.store.dispatch(new SetReason(id));\n }\n\n inputZipCode(control: AbstractControl): { [key: string]: any } | null {\n const pattern = new RegExp(/^(?:(?:[1-9])(?:\\d{3}))$/);\n const code = control.value + '';\n const valid = code ? code.match(pattern) : false;\n return valid ? null : { isZipCode: { valid: false, value: code } };\n }\n\n imgUrlRegion(id: number) {\n if (this.regions === null || this.regions === undefined || this.regions.length === 0) {\n return '';\n }\n // test find is a function\n if (typeof this.regions.find !== 'function') {\n return '';\n }\n const fileName = this.regions.find(r => r.id === id).fileName;\n let url = imgagesFolder;\n url += fileName;\n url += '-selected.svg';\n return url;\n }\n\n onZipChanges(): void {\n this.situationControl.valueChanges.pipe(debounceTime(100)).subscribe(val => {\n const code = val;\n const valid = this.situationControl.valid;\n this.isAvailableZipFlanders = true;\n let region = -1;\n if (valid) {\n if (code >= 1000 && code <= 1299) {\n region = 1;\n } else if ((code >= 1500 && code <= 3999) || (code >= 8000 && code <= 9999)) {\n this.checkIfZipAvailableFlanders(code);\n region = 2;\n } else if ((code >= 1300 && code <= 1499) || (code >= 4000 && code <= 7999)) {\n region = 0;\n }\n this.setRegion(region);\n this.store.dispatch(new SetZipCode(val));\n }\n });\n }\n\n checkIfZipAvailableFlanders(code) {\n this.isAvailableZipFlanders = false;\n if (\n (code >= 1500 && code < 2000) ||\n //(code >= 2050 && code <= 2160) ||\n //(code >= 2200 && code <= 2240) ||\n //code == 2260 ||\n //code == 2270 ||\n //code == 2288 ||\n //code == 2290 ||\n //(code >= 2500 && code <= 2890) ||\n (code >= 3000 && code <= 3499)\n //(code >= 9000 && code < 10000)\n ) {\n this.isAvailableZipFlanders = true;\n }\n }\n\n toggleShowMoreServices(bool: boolean) {\n this.store.dispatch(new ShowMoreServices(bool));\n this.logger.log('showMore: ', bool);\n }\n\n get canUrgence() {\n return (this.products.length === 1 && this.hasPeb) || (this.products.length === 1 && this.hasElec);\n }\n\n get hasDescriptif() {\n return this.products.find(id => id === PRODUCTS.DESCRIPTIF);\n }\n\n packHasDescriptif(ids: number[]) {\n return ids.some(id => id === PRODUCTS.DESCRIPTIF);\n }\n\n toggleImmoPackDetails(id: number) {\n this.immopacksWithPrices = JSON.parse(JSON.stringify(this.immopacksWithPrices));\n this.immopacksWithPrices.find(im => im.id === id).details = !this.immopacksWithPrices.find(im => im.id === id)\n .details;\n this.store.dispatch(new SetPacksWithPrices(this.immopacksWithPrices));\n }\n\n isLavenir(id: number) {\n return id >= 10050 && id <= 10054;\n }\n\n toOrdering() {\n this.authService.resetOrderForm();\n }\n\n get estateStylesParticulier() {\n // test filter is a function\n if (typeof this.estateStyles?.filter !== 'function') {\n return [];\n }\n return this.estateStyles.filter(e => e.id !== 3);\n }\n\n immoReduction(reductions: any[]) {\n return reductions\n .filter(\n r =>\n r.id < 1000 &&\n r.id !== 1 &&\n r.id !== 11 &&\n r.id !== 4 &&\n r.id !== 8 &&\n r.id !== 6 &&\n r.id !== 9 &&\n r.id !== 15 &&\n r.id !== 16 &&\n r.id !== 51 &&\n r.id !== 55 &&\n r.id !== 56 &&\n r.id !== 57 &&\n r.id !== 17\n )\n .reduce((a, b) => a + +b.reduc, 0);\n }\n\n priceForProNoRed(productsForAgency: Product[]) {\n return productsForAgency.reduce((a, b) => a + +b.price, 0);\n }\n\n scrollToElement($element): void {\n setTimeout(() => {\n if (typeof $element.scrollIntoView === 'function') {\n $element.scrollIntoView({ behavior: 'smooth', block: 'start', inline: 'nearest' });\n }\n }, 100);\n }\n}\n\ninterface HouseOption {\n buildingType: string;\n id: number;\n text: string;\n typeId: number;\n subOptions?: HouseOption[];\n}\n","
    \n
    \n \n \n
    \n
    \n
    {{ 'congrats-dialog.title' | translate }}
    \n

    {{ 'congrats-dialog.subtitle' | translate }}

    \n
    \n
    \n \n \n
    \n \n
    \n \n
    \n
    \n
    \n

    \n {{ 'congrats-dialog.content' | translate }}\n

    \n

    \n {{ 'congrats-dialog.emphasis' | translate }}\n

    \n
    \n
    \n","import { Component, OnInit, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';\nimport { Router } from '@angular/router';\nimport { Store } from '@ngrx/store';\nimport { AuthService } from 'src/app/core/services/auth.service';\nimport { getUserID } from 'src/app/core/store/order/order.selectors';\n\n@Component({\n selector: 'app-congrats-dialog',\n templateUrl: './congrats-dialog.component.html',\n styleUrls: ['./congrats-dialog.component.scss']\n})\nexport class CongratsDialogComponent implements OnInit {\n onlinePayment: boolean;\n orderid: string;\n dialog: MatDialog;\n agenda = false;\n isLoggedIn: boolean;\n createOrderResponseUserId: string;\n\n constructor(\n @Inject(MAT_DIALOG_DATA)\n public data: {\n onlinePayment: boolean;\n orderid: string;\n dialog: MatDialog;\n displayAgenda: boolean;\n createOrderResponseUserId: string;\n },\n private router: Router,\n private store: Store,\n private authService: AuthService\n ) {}\n\n ngOnInit() {\n this.onlinePayment = this.data.onlinePayment;\n this.dialog = this.data.dialog;\n this.orderid = this.data.orderid;\n this.agenda = this.data.displayAgenda;\n this.createOrderResponseUserId = this.data.createOrderResponseUserId;\n this.store.select(getUserID).subscribe(uid => (this.isLoggedIn = !!uid));\n }\n\n async toAgenda() {\n if (!this.isLoggedIn) await this.authService.loginWithUserIDAsync(this.createOrderResponseUserId);\n this.dialog.closeAll();\n this.router.navigate(['/checkout/agenda', this.orderid]);\n }\n\n async toCheckout() {\n if (!this.isLoggedIn) await this.authService.loginWithUserIDAsync(this.createOrderResponseUserId);\n this.dialog.closeAll();\n this.router.navigate(['/checkout', this.orderid]);\n }\n\n async toClientArea() {\n if (!this.isLoggedIn) await this.authService.loginWithUserIDAsync(this.createOrderResponseUserId);\n this.dialog.closeAll();\n this.router.navigate(['/customer']);\n }\n\n closeModal() {\n this.dialog.closeAll();\n this.router.navigate(['']);\n }\n}\n","
    \n \"\"\n
    \n Félicitations !\n
    \n

    \n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna\n aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo\n consequat.\n

    \n \n
    \n\n
    \n \"\"\n
    \n {{ 'default-dialog.dialog-title' | translate }}\n
    \n

    \n {{ 'default-dialog.dialog-content' | translate }}\n

    \n

    \n {{ 'default-dialog.dialog-content-end' | translate }}\n

    \n \n
    \n\n
    \n \"\"\n
    \n Le saviez-vous ?\n
    \n

    \n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna\n aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo\n consequat.\n

    \n \n
    \n\n
    \n \"\"\n
    \n Attention\n
    \n

    \n Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna\n aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo\n consequat.\n

    \n \n
    \n","import { Component, OnInit, Inject } from '@angular/core';\nimport { MatDialog, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { Router } from '@angular/router';\nimport { AuthService } from 'src/app/core/services/auth.service';\n\n@Component({\n selector: 'app-default-dialog',\n templateUrl: './default-dialog.component.html',\n styleUrls: ['./default-dialog.component.scss']\n})\nexport class DefaultDialogComponent implements OnInit {\n dialog: MatDialog;\n style: string;\n\n constructor(\n @Inject(MAT_DIALOG_DATA)\n public data: { dialog: MatDialog; style: string },\n private router: Router,\n private authService: AuthService\n ) {}\n\n ngOnInit() {\n this.style = this.data.style;\n this.dialog = this.data.dialog;\n }\n\n toOrder() {\n this.dialog.closeAll();\n this.authService.logout();\n // tslint:disable-next-line: deprecation\n location.reload();\n }\n\n closeModal() {\n this.dialog.closeAll();\n this.router.navigate(['']);\n }\n}\n","
    \n
    \n
    \n
    {{ 'step3.to-owner' | translate }}
    \n
    \n
    \n

    \n {{ 'step3.fullname' | translate }}: \n {{ owner.companyname }} {{ owner.firstname }} {{ owner.lastname }}\n

    \n

    \n {{ 'step3.address' | translate }}: \n {{ address.street }} {{ address.number }} {{ address.boxNumber }} {{ address.apartmentNumber }},\n {{ address.zip }} {{ address.city }}\n

    \n
    \n
    \n \n
    \n
    {{ 'step3.to-owner-co-notary' | translate }}
    \n
    \n
    \n

    \n {{ 'step3.fullname' | translate }}: \n {{ owner.firstname }} {{ owner.lastname }} C/o {{ user.commercialname }}\n

    \n

    \n {{ 'step3.address' | translate }}: \n {{ user.address.street }} {{ user.address.number }} {{ user.address.boxNumber }}\n {{ user.address.apartmentNumber }},\n {{ user.address.zip }}\n {{ user.address.city }}\n

    \n
    \n
    \n \n
    \n
    \n {{ (userType === UserTypeEnum.Installateur ? 'step3.to-insta' : 'step3.to-notary') | translate }}\n
    \n
    \n
    \n

    \n {{ 'step3.fullname' | translate }}: {{ user.lastname }} {{ user.firstname }}\n {{ user.commercialname }}\n

    \n

    \n {{ 'step3.address' | translate }}: \n {{ user.address.street }} {{ user.address.number }} {{ user.address.boxNumber }}\n {{ user.address.apartmentNumber }},\n {{ user.address.zip }}\n {{ user.address.city }}\n

    \n
    \n \n \n
    \n
    {{ 'step3.to-owner-co-agency' | translate }}
    \n
    \n
    \n

    \n {{ 'step3.fullname' | translate }}: \n {{ owner.firstname }} {{ owner.lastname }} C/o {{ user.commercialname }}\n

    \n

    \n {{ 'step3.address' | translate }}: \n {{ user.address.street }} {{ user.address.number }} {{ user.address.boxNumber }}\n {{ user.address.apartmentNumber }},\n {{ user.address.zip }}\n {{ user.address.city }}\n

    \n
    \n \n
    \n
    \n
    {{ 'step3.to-agency' | translate }}
    \n
    \n
    \n

    \n {{ 'step3.fullname' | translate }}: {{ user.commercialname }}\n

    \n

    \n {{ 'step3.address' | translate }}: \n {{ user.address.street }} {{ user.address.number }} {{ user.address.boxNumber }}\n {{ user.address.apartmentNumber }},\n {{ user.address.zip }}\n {{ user.address.city }}\n

    \n
    \n
    \n
    \n
    \n
    {{ 'step3.to-owner' | translate }}
    \n
    \n
    \n

    \n {{ 'step3.fullname' | translate }}: \n {{ userForm.companyname }} {{ userForm.firstname }} {{ userForm.lastname }}\n

    \n

    \n {{ 'step3.address' | translate }}: \n {{ address.street }} {{ address.number }} {{ address.boxNumber }} {{ address.apartmentNumber }},\n {{ address.zip }} {{ address.city }}\n

    \n
    \n
    \n\n","import { Component, ChangeDetectorRef } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { Observable } from 'rxjs';\n\nimport { FormBuilder } from '@angular/forms';\nimport * as orderSelector from '../../core/store/order/order.selectors';\nimport { forceInvoiceToPro } from '../../core/data/theme-config';\n\nimport { Owner, User, UserForm, UserType } from 'src/app/core/models/user';\nimport { Address } from 'src/app/core/models/address';\nimport { AppState } from 'src/app/interfaces';\nimport { Document } from 'src/app/core/models/document';\n\n@Component({\n selector: 'app-billing-info',\n templateUrl: './billing-info.component.html',\n styleUrls: ['./billing-info.component.scss']\n})\nexport class BillingInfo {\n invoiceTo: string;\n $invoiceTo: Observable;\n $isLoggedIn: Observable;\n\n UserTypeEnum = UserType;\n\n user: User;\n userForm: UserForm;\n address: Address;\n owner: Owner;\n userType: number;\n document: Document;\n forceToPro = forceInvoiceToPro;\n\n constructor(private store: Store, private _formBuilder: FormBuilder, private cdRef: ChangeDetectorRef) {\n this.store.select(orderSelector.getDocument).subscribe(d => (this.document = d));\n this.$isLoggedIn = this.store.select(orderSelector.getIsLoggedIn);\n }\n\n ngOnInit() {\n this.$invoiceTo = this.store.select(orderSelector.getInvoiceTo);\n this.$invoiceTo.subscribe(i => (this.invoiceTo = i));\n\n this.store.select(orderSelector.getUserInfo).subscribe(u => (this.user = u));\n this.store.select(orderSelector.getUserForm).subscribe(u => (this.userForm = u));\n this.store.select(orderSelector.getOwner).subscribe(o => (this.owner = o));\n this.store.select(orderSelector.getAddress).subscribe(a => (this.address = a));\n this.store.select(orderSelector.getUserType).subscribe(t => (this.userType = t));\n }\n}\n","
    \n
    \n
    {{ 'step4.section-step1.title' | translate }}
    \n
    \n

    \n {{ 'step4.section-step1.region-choice' | translate }} :\n {{ 'section-situation.region.' + ($selectedRegion | async)?.id | translate }}\n

    \n

    \n {{ 'step4.section-step1.description' | translate }} :\n {{ 'estateTpes.' + ($estateType | async) | translate }}\n

    \n
    \n

    \n {{ 'step4.section-step1.your-services' | translate }} :\n

    \n
      \n
    • \n {{ 'section-money.reductions.' + product.id | translate }}\n
    • \n
    \n
    \n
    \n
    \n
    \n
    {{ 'step4.section-step2.title' | translate }}
    \n
    \n

    \n {{\n isHainautOrNamurorNVN\n ? ('MDN-hainaut-namur-nvn.section-propriete.title' | translate)\n : ('section-propriete.title' | translate)\n }}\n :\n {{ visitAddress?.street }} {{ visitAddress?.number }} {{ visitAddress?.boxNumber }}\n {{ visitAddress?.apartmentNumber }}, {{ visitAddress?.zip }} {{ visitAddress?.city }}\n

    \n

    \n {{ 'section-accueil.title' | translate }} :\n \n \n {{ 'section-accueil.key' | translate }} {{ 'section-accueil.at-notary' | translate }} -\n {{ user?.address?.street }} {{ user?.address?.number }} {{ user?.address?.boxNumber }}\n {{ user?.address?.apartmentNumber }}, {{ user?.address?.zip }} {{ user?.address?.city }}\n \n \n {{ 'section-accueil.key' | translate }} {{ 'section-accueil.at-agency' | translate }} -\n {{ user?.address?.street }} {{ user?.address?.number }} {{ user?.address?.boxNumber }}\n {{ user?.address?.apartmentNumber }}, {{ user?.address?.zip }} {{ user?.address?.city }}\n \n \n \n \n {{ contact?.firstname }} {{ contact?.lastname }} - {{ 'section-user.disco.gsm' | translate }}:\n {{ contact?.gsm }}\n \n

    \n

    \n {{ 'section-accueil.date-butoir.title' | translate }} :\n {{ dateButoir | date: 'd/M/yy' }}\n

    \n
    \n
    \n
    \n
    {{ 'step4.section-step3.title' | translate }}
    \n
    \n \n
    \n
    \n
    \n
    {{ 'step4.section-facture.title' | translate }}
    \n
    \n
    \n

    \n {{ 'step4.section-facture.checked-info' | translate }}\n

    \n
    \n\n \n {{ 'step4.section-facture.send-by-mail' | translate }} :\n \n {{ ($document | async)?.firstName }} {{ ($document | async)?.lastName }} -\n {{ ($document | async)?.address?.street }} {{ ($document | async)?.address?.number }}\n {{ ($document | async)?.address?.boxNumber }} {{ ($document | async)?.address?.apartmentNumber }},\n {{ ($document | async)?.address?.zip }} {{ ($document | async)?.address?.city }}\n {{\n ($document | async)?.address?.country !== undefined ? '- ' + ($document | async)?.address?.country : null\n }}\n \n \n \n
    \n
    \n \n
    \n
    {{ 'step4.section-paiement.title' | translate }}
    \n \n
    \n \n {{ 'step4.section-paiement.classic' | translate }}\n \n
    \n
    \n \n {{ 'step4.section-paiement.online' | translate }} {{ !($isUrgent | async) ? ': - 10 €' : '' }}\n \n
    \n \n
    \n

    {{ 'step4.section-paiement.online-info' | translate }}.

    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    {{ 'step4.section-extra-title' | translate }}
    \n \n {{ 'step4.section-extra-offer' | translate }}\n \n
    \n
    \n
    {{ 'step4.section-comment.title' | translate }}
    \n \n \n \n
    \n
    \n \n {{ 'section-conditions.iagree-1' | translate }}\n {{ 'section-conditions.conditions' | translate }}\n {{ 'section-conditions.iagree-2' | translate }}\n \n {{ 'section-conditions.conf' | translate }}.\n ({{ 'section-conditions.required' | translate }})\n \n

    {{ 'error-messages.conditions-agreement' | translate }}

    \n
    \n
    \n\n
    \n \n \n {{ 'navigation.validate' | translate }}\n \n
    \n","import { Component, OnInit } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { Observable, combineLatest, of } from 'rxjs';\nimport { Address } from '../core/models/address';\n\nimport * as PRODUCTS from '../core/data/products';\nimport { Document } from '../core/models/document';\nimport { Product } from '../core/models/product';\nimport { Region } from '../core/models/region';\nimport { Contact, Owner, User, UserDB, UserType } from '../core/models/user';\nimport { AuthService } from '../core/services/auth.service';\nimport { DataService } from '../core/services/data.service';\nimport {\n IOrder,\n SetActeType,\n SetAskForExpertise,\n SetAskForOffer,\n SetNN,\n SetPaymentType,\n SetRemarks,\n SetSendByMail,\n ToggleOnlinePayment,\n ToggleSendByMail\n} from '../core/store/order';\nimport * as orderSelector from '../core/store/order/order.selectors';\nimport { IUI, SetIAgree, SetStep4Valid } from '../core/store/ui';\nimport * as uiSelector from '../core/store/ui/ui.selectors';\nimport { AppState } from '../interfaces';\n\nimport { HttpClient } from '@angular/common/http';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { map, take } from 'rxjs/operators';\nimport { orderMeansType } from '../core/data';\nimport {\n displayAskForExpertise,\n getPricesID,\n projectID,\n showFinalOptions,\n} from '../core/data/theme-config';\nimport { VENTES } from '../core/enums/vente.enum';\nimport {\n GtmService,\n PurchaseEventItemParams,\n PurchaseEventParams\n} from '../core/services/google-tag-manager.service';\nimport { LoggerService } from '../core/services/logger.service';\nimport { SendEmailService } from '../core/services/send-email.service';\nimport { CongratsDialogComponent } from '../dialogs/congrats-dialog/congrats-dialog.component';\nimport { DefaultDialogComponent } from '../dialogs/default-dialog/default-dialog.component';\nimport { TranslateService } from '@ngx-translate/core';\nimport { certiSystemsBaseUrl } from 'src/environments/environment';\n\n@Component({\n selector: 'app-step4',\n templateUrl: './step4.component.html',\n styleUrls: ['./step4.component.scss']\n})\nexport class Step4Component implements OnInit {\n get isHainautOrNamurorNVN() {\n return projectID === 'namur' || projectID === 'hainaut' || projectID === 'nvn' || projectID === 'liege';\n }\n\n API_CREATE_ORDER = `${certiSystemsBaseUrl}/api/NewOrdering/create`\n // paymentType: string;\n acteType: string;\n onlinePayment: boolean;\n remarks: string;\n paymentType: string;\n userZip: string;\n user: User;\n submitNotValid = false;\n visitAddress: Address;\n userType: UserType;\n gsmo: string;\n gsmu: string;\n phoneo: string;\n phoneu: string;\n step1IsValid: boolean;\n step2IsValid: boolean;\n step3IsValid: boolean;\n step4IsValid: boolean;\n\n products: Product[];\n hasPeb: boolean;\n hasElec: boolean;\n isUrgent: boolean;\n isInstallateur: boolean;\n invoiceTo: string;\n\n displayAskForExpertise = displayAskForExpertise;\n order: IOrder;\n ui: IUI;\n\n userTypes = UserType;\n\n $paymentType: Observable;\n $acteType: Observable;\n $sendByMail: Observable;\n $remarks: Observable;\n $products: Observable;\n $IAgree: Observable;\n $askForExpertise: Observable;\n $askForOffer: Observable;\n $selectedRegion: Observable;\n $estateName: Observable;\n $estateType: Observable;\n $visitAddress: Observable
    ;\n $dateButoir: Observable;\n $goGetKeys: Observable;\n $userType: Observable;\n $contact: Observable;\n $owner: Observable;\n $user: Observable;\n $document: Observable;\n $nn: Observable;\n $language: Observable;\n $onlinePayment: Observable;\n $hasPeb: Observable;\n $hasElec: Observable;\n $isUrgent: Observable;\n $userZip: Observable;\n $isInstallateur: Observable;\n $invoiceTo: Observable;\n\n showFinalOptions = showFinalOptions;\n step4ShowByMail: boolean;\n\n isValid$: Observable;\n isSendingOrder: boolean = false;\n\n constructor(\n private store: Store,\n private dataService: DataService,\n private http: HttpClient,\n private snackBar: MatSnackBar,\n private authService: AuthService,\n private dialog: MatDialog,\n private gtmService: GtmService,\n private logger: LoggerService,\n private mailService: SendEmailService,\n private translateService: TranslateService\n ) {\n }\n\n ngOnInit() {\n this.$paymentType = this.store.select(orderSelector.getPaymentType);\n this.$acteType = this.store.select(orderSelector.getActeType);\n this.$sendByMail = this.store.select(orderSelector.getSendByMail);\n this.$remarks = this.store.select(orderSelector.getRemarks);\n this.$products = this.store.select(orderSelector.getProducts);\n this.$IAgree = this.store.select(uiSelector.getIAgree);\n this.$askForExpertise = this.store.select(orderSelector.getAskForExpertise);\n this.$askForOffer = this.store.select(orderSelector.getAskForOffer);\n this.$selectedRegion = this.store.select(orderSelector.getRegionInfo);\n this.$estateName = this.store.select(orderSelector.getEstateName);\n this.$visitAddress = this.store.select(orderSelector.getAddress);\n this.$dateButoir = this.store.select(orderSelector.getDateButoir);\n this.$goGetKeys = this.store.select(orderSelector.getGoGeyKeys);\n this.$contact = this.store.select(orderSelector.getContact);\n this.$userType = this.store.select(orderSelector.getUserType);\n this.$owner = this.store.select(orderSelector.getOwner);\n this.$user = this.store.select(orderSelector.getUser);\n this.$document = this.store.select(orderSelector.getDocument);\n this.$nn = this.store.select(orderSelector.getNN);\n this.$language = this.store.select(uiSelector.getLanguage);\n this.$estateType = this.store.select(orderSelector.getEstateID);\n this.$onlinePayment = this.store.select(orderSelector.getOnlinePayment);\n this.$hasPeb = this.store.select(orderSelector.hasPeb);\n this.$hasElec = this.store.select(orderSelector.hasElec);\n this.$isUrgent = this.store.select(orderSelector.getUrgence);\n this.$userZip = this.store.select(orderSelector.getUserZip);\n this.$invoiceTo = this.store.select(orderSelector.getInvoiceTo);\n\n this.$products.subscribe(p => (this.products = p));\n this.$hasPeb.subscribe(h => (this.hasPeb = h));\n this.$hasElec.subscribe(h => (this.hasElec = h));\n this.$isUrgent.subscribe(u => (this.isUrgent = u));\n this.$user.subscribe(u => this.user = u);\n this.$userZip.subscribe(uz => (this.userZip = uz));\n this.$invoiceTo.subscribe(it => (this.invoiceTo = it));\n this.$userType.subscribe(ut => (this.userType = ut));\n this.$visitAddress.subscribe(ad => (this.visitAddress = ad));\n this.authService.isInstallateur.subscribe(inst => (this.isInstallateur = inst));\n\n this.$paymentType.subscribe(pt => (this.paymentType = pt));\n this.store.select(orderSelector.getOrder).subscribe(o => (this.order = o));\n this.store.select(uiSelector.getUI).subscribe(u => (this.ui = u));\n this.store.select(uiSelector.getStep1IsValid).subscribe(s => (this.step1IsValid = s));\n this.store.select(uiSelector.getStep2IsValid).subscribe(s => (this.step2IsValid = s));\n this.store.select(uiSelector.getStep3IsValid).subscribe(s => (this.step3IsValid = s));\n this.store.select(uiSelector.getStep4IsValid).subscribe(s => (this.step4IsValid = s));\n\n this.store.select(orderSelector.getRemarks).subscribe(string => (this.remarks = string));\n \n this.isValid$ = combineLatest([\n this.store.select(uiSelector.getStep1IsValid),\n this.store.select(uiSelector.getStep3IsValid),\n this.store.select(uiSelector.getStep4IsValid)\n ]).pipe(map(([step1, step3, step4]) => step1 && step3 && step4));\n\n this.$isInstallateur = this.authService?.isInstallateur;\n\n this.$onlinePayment.subscribe(online => {\n this.onlinePayment = online;\n if (online) {\n this.store.dispatch(new SetPaymentType('online'));\n }\n });\n\n this.$IAgree.subscribe(ia => {\n this.store.dispatch(new SetStep4Valid(ia));\n });\n\n combineLatest([\n this.store.select(orderSelector.getOwner),\n this.store.select(orderSelector.getInvoiceTo)\n ]).subscribe(([owner, invoiceTo]) => {\n const isInvoiceToOwnerWithoutEmail = invoiceTo === 'toProprio' && !(owner.email?.trim());\n if (isInvoiceToOwnerWithoutEmail) {\n this.step4ShowByMail = true;\n this.store.dispatch(new SetSendByMail(true));\n return;\n }\n this.step4ShowByMail = false;\n this.store.dispatch(new SetSendByMail(false));\n })\n }\n\n selectPayment(type: string) {\n if (type === 'online') {\n this.store.dispatch(new ToggleOnlinePayment(true));\n } else {\n this.store.dispatch(new ToggleOnlinePayment(false));\n this.store.dispatch(new SetPaymentType(type));\n }\n }\n\n selectActe(type: string) {\n this.store.dispatch(new SetActeType(type));\n }\n\n toggleSendByMail() {\n if (!this.step4ShowByMail) return;\n\n this.store.dispatch(new ToggleSendByMail(true));\n }\n\n toggleAskForExpertise(bool: boolean) {\n this.store.dispatch(new SetAskForExpertise(bool));\n }\n\n toggleAskForOffer(bool: boolean) {\n this.store.dispatch(new SetAskForOffer(bool));\n }\n\n SetRemarks(rem: string) {\n this.store.dispatch(new SetRemarks(rem));\n }\n\n toggleIAgree() {\n this.store.dispatch(new SetIAgree(true));\n }\n\n setNN(nn: string) {\n this.store.dispatch(new SetNN(nn));\n }\n\n checkIfProducts(order): boolean {\n const hasProdducts = order?.OrderProducts?.length > 0;\n const hasPrice = order?.Invoice?.TotalPrice > 0;\n if (hasProdducts && hasPrice) {\n return true;\n }\n return false;\n }\n\n sendOrder() {\n // Trivial verification cause if !isValid button is disabled\n this.isValid$?.pipe(take(1)).subscribe(orderIsValid => {\n // <-- NABIL reformat/map and clean order object before posting to Certinergie/NewOrder/api\n if (orderIsValid) {\n this.submitNotValid = false;\n this.isSendingOrder = true;\n const order = this.mapdOrderForDb();\n const hasProducts = this.checkIfProducts(order);\n\n if (!hasProducts) {\n this.dialog.open(DefaultDialogComponent, {\n panelClass: ['default-dialog'],\n data: {\n dialog: this.dialog,\n style: 'error'\n },\n disableClose: true,\n autoFocus: false\n });\n }\n try {\n this.logger.log(JSON.stringify(order));\n } catch (e) {\n this.logger.log('Error while parsing order to string');\n } finally {\n this.http.post<{ Data: UserDB }>(this.API_CREATE_ORDER, order).subscribe({\n next: createOrderResponse => {\n this.logger.log(`🚀`);\n this.isSendingOrder = false;\n const userDB = createOrderResponse.Data;\n const orderID = userDB.OrderID;\n // Emit eCommerce GA\n const purchaseItems: Partial[] = order.OrderProducts.map(op => ({\n item_id: op.ProductTypeId.toString(),\n item_name: op.ProductName,\n price: parseFloat(op.TotalTVAC),\n discount: parseFloat(op.Reduction),\n }));\n const purchaseParams: PurchaseEventParams = {\n transaction_id: orderID,\n currency: 'EUR',\n affiliation: projectID,\n value: order.Invoice.TotalPrice,\n items: purchaseItems,\n };\n this.gtmService.emitPurchase(\n purchaseParams,\n {\n is_new_customer: (this.user.ordersCount ?? 0) <= 0\n }\n );\n\n const hasAgendaAccess = this.hasAgendaAccess(order);\n const dialogRef = this.dialog.open(CongratsDialogComponent, {\n panelClass: ['congrats-dialog', 'no-padding-dialog'],\n data: {\n onlinePayment: this.onlinePayment,\n orderid: orderID,\n dialog: this.dialog,\n displayAgenda: hasAgendaAccess,\n createOrderResponseUserId: userDB.UserID\n },\n disableClose: true,\n autoFocus: false\n });\n\n dialogRef.afterClosed().subscribe(() => {\n this.authService.resetOrderForm();\n });\n },\n error: error => {\n this.isSendingOrder = false;\n this.logger.log('POST call in error', error);\n this.snackBar.open('Une erreur a eu lieu lors de la création de votre commande 😰');\n }\n })\n }\n } else {\n this.submitNotValid = true;\n this.logger.log('😰 order not valid');\n this.snackBar.open(this.translateService.instant('error-message.order-error'));\n }\n });\n }\n\n mapdOrderForDb() {\n try {\n const o: IOrder = JSON.parse(JSON.stringify(this.order));\n const u: IUI = JSON.parse(JSON.stringify(this.ui));\n const notaryProject =\n projectID === 'hainaut' || projectID === 'namur' || projectID === 'nvn' || projectID === 'liege';\n\n const packComm = this.dataService?.packsDB?.find(pa => pa.id === o.packID)?.commission;\n let commOrder = packComm || 0;\n let commTotal = packComm || 0;\n\n const hasDescUrba = o?.products?.find(p => p.id === PRODUCTS.DESCRIPTIF_URBA);\n\n let docName = '';\n\n if (o?.document.firstName && o?.document.lastName) {\n docName = o?.document.firstName + ' ' + o?.document.lastName;\n } else if (o?.document.firstName) {\n docName = o?.document.firstName;\n } else if (o?.document.lastName) {\n docName = o?.document.lastName;\n }\n\n if (this.userType === 1688) {\n if (o?.user.userid === '') {\n this.gsmu = o?.user.gsm != null ? o?.user.indicator + o?.user.gsm.substring(1) : '';\n this.phoneu = o?.user.phone != null ? o?.user.indicatorphone + o?.user.phone.substring(1) : '';\n } else {\n this.gsmu = o?.user.gsm;\n this.phoneu = o?.user.phone;\n }\n this.gsmo = this.gsmu;\n this.phoneo = this.phoneu;\n } else {\n this.gsmo = o?.owner.gsm != null ? o?.owner.indicator + o?.owner.gsm.substring(1) : '';\n this.phoneo = o?.owner.phone != null ? o?.owner.indicatorphone + o?.owner.phone.substring(1) : '';\n }\n\n var invoiceVat = o?.document.tva && o?.document.tva !== '' ? o?.document.tva : '';\n var invoiceCompany = o?.document.companyName && o?.document.companyName !== '' ? o?.document.companyName : '';\n if (o?.invoiceTo === 'toProprio' && o?.user.tva && o?.user.tva != '') {\n if (this.userType === 1688) {\n invoiceVat = o?.user.tva;\n invoiceCompany = o?.user.companyname;\n } else {\n invoiceVat = o?.owner.tva;\n invoiceCompany = o?.owner.companyname;\n }\n } else if (o?.invoiceTo === 'toProprioAndPro') {\n invoiceVat = '';\n docName = 'C/o ' + o?.user.commercialname;\n invoiceCompany = o?.owner.firstname + ' ' + o?.owner.lastname;\n } else if (o?.invoiceTo === 'toPro') {\n invoiceCompany = o?.user.commercialname;\n invoiceVat = o?.user.tva;\n }\n if (o?.contactChoice === 'sameAsOwner') {\n o.contact.firstname = o?.owner.firstname;\n o.contact.lastname = o?.owner.lastname;\n o.contact.phone = this.phoneo;\n o.contact.gsm = this.gsmo;\n }\n let orderProducts = [...o?.products]\n ?.filter(op => op.id !== 1001)\n ?.filter(op => op.id !== -2)\n ?.map(op => {\n if (op.id < 10000) {\n commOrder += op.commission;\n }\n commTotal += op.commission;\n const dbId = op.id === 11111 ? 1 : op.id === PRODUCTS.URGENT_PRO ? PRODUCTS.EXTRA : op.id;\n return {\n ProductTypeId: dbId,\n ProductName: op.id === PRODUCTS.DESCRIPTIF && hasDescUrba ? op.name + ' + Desc. Sommaire' : op.name,\n Description: o.estateType,\n TotalTVAC: op.price,\n Reduction: op.reduction,\n ContactName: o.goGetKeys ? '/' : o.contact.firstname,\n ContactSurname: o.goGetKeys ? '/' : o.contact.lastname,\n ContactType: o.contactChoice === 'other' ? 0 : o.contactChoice === 'keyAtAgency' ? 7 : 1,\n // tslint:disable-next-line:quotemark\n ContactPhone: o.goGetKeys ? \"Clé à l'agence\" : o.contact.phone,\n SmsNumber: o.goGetKeys ? '' : o.contact.gsm\n };\n });\n\n orderProducts =\n o?.productsForAgency && o?.productsForAgency.length > 0\n ? [...orderProducts].filter(pr => !o.productsForAgency.find(ap => ap.id === pr.ProductTypeId))\n : [...orderProducts];\n\n const orderProductsPro = [...o?.productsForAgency]\n ?.filter(op => op.id !== 1001)\n ?.filter(op => op.id !== -2)\n ?.map(op => {\n if (op.id < 10000) {\n commOrder += op.commission;\n }\n commTotal += op.commission;\n return {\n ProductTypeId: op.id === 11111 ? 1 : op.id,\n ProductName: op.name,\n Description: o.estateType,\n TotalTVAC: op.price,\n Reduction: op.reduction,\n ContactName: o.goGetKeys ? '' : o.contact.firstname,\n ContactSurname: o.goGetKeys ? '' : o.contact.lastname,\n ContactType: o.contactChoice === 'other' ? 0 : o.contactChoice === 'keyAtAgency' ? 7 : 1,\n // tslint:disable-next-line:quotemark\n ContactPhone: o.goGetKeys ? '' : o.contact.phone,\n SmsNumber: o.goGetKeys ? '' : o.contact.gsm\n };\n });\n\n // no reductions if urgence\n let orderReductions = o?.urgence\n ? null\n : o.reductions\n .filter(r => r.id !== 1001)\n .map(op => {\n return {\n TypeId: op.id,\n Description: op.type,\n Reduction: op.price\n };\n });\n\n let reducWithoutOR = 0;\n o?.reductions.filter(r => r.id !== 1001).forEach(r => (reducWithoutOR = reducWithoutOR + +r.price));\n\n let immoRed = 0;\n o?.reductions\n .filter(\n r =>\n r.id < 1000 &&\n r.id !== 1 &&\n r.id !== 11 &&\n r.id !== 4 &&\n r.id !== 8 &&\n r.id !== 6 &&\n r.id !== 9 &&\n r.id !== 15 &&\n r.id !== 16 &&\n r.id !== 51 &&\n r.id !== 55 &&\n r.id !== 56 &&\n r.id !== 57 &&\n r.id !== 17\n )\n .forEach(r => (immoRed = immoRed + +r.price));\n\n o.reduction = o?.urgence ? 0 : reducWithoutOR;\n\n o.reduction = o?.reduction - o?.commission;\n\n // defaults non needed values\n if (o?.paymentType !== 'acte') {\n o.nn = null;\n o.acteType = 'ILLPAY';\n }\n if (o?.urgence) {\n orderReductions = null;\n o.promoCode = null;\n }\n\n let remarque = o?.dateButoir\n ? 'Date Butoir : ' +\n (function(d) {\n const date = new Date(d);\n return date.getDate() + '/' + (date.getMonth() + 1) + '/' + date.getFullYear();\n })(o.dateButoir)\n : '';\n\n /* \n if (data.partielNumber !== '') {\n remarque =\n remarque + \"\\n\" + \"Numéro du partiel existant : \" + data.partielNumber;\n } \n */\n\n if (o?.pebNb && o?.pebNb !== '') {\n remarque = remarque + '\\n' + 'Numéro du PEB partiel existant : ' + o.pebNb;\n }\n\n if (o?.nn != null) {\n // tslint:disable-next-line:quotemark\n remarque = remarque + '\\n' + \"Numéro national en cas d'acte : \" + o.nn;\n }\n\n if (o?.promoCode && o?.promoCode !== '') {\n remarque = remarque + '\\n' + 'codepromo:' + o.promoCode;\n }\n\n if (o?.contacts && o?.contacts.length) {\n let formattedContacts = '';\n o?.contacts.forEach(\n co =>\n (formattedContacts =\n formattedContacts + `${co.description} | ${co.firstname} ${co.lastname} - ${co.phone} - ${co.gsm} \\n`)\n );\n remarque = remarque + '\\n' + 'Contacts:' + '\\n' + formattedContacts;\n }\n\n if (remarque !== '') {\n remarque = remarque + '\\n' + '-----------------';\n }\n\n remarque = remarque + '\\n' + o.remarks;\n\n const lan = u?.language === 'nl' ? 1 : u?.language === 'en' ? 2 : u?.language === 'de' ? 3 : 0;\n\n const dbOrder = {\n Order: {\n EstateType: o?.estateType,\n RegionLocation: o?.regionType,\n OrderCommission: notaryProject ? commOrder : o?.commission,\n NeedBDC: o?.acteType === 'BDC' || o?.user.userType === this.userTypes.Agence,\n SentByMail: !o?.sendByMail,\n Language: lan,\n ImmoDiscount: immoRed,\n PromoCode: o?.promoCode,\n GoGetKeys: o?.goGetKeys,\n AddressKeyID: o?.addressKeyID,\n PromoCodeID: o?.promoCodeID,\n PackID: o?.packID,\n OrderMeansType: orderMeansType\n },\n Invoice: {\n IsDeedPayment: o?.paymentType === 'acte',\n TotalPrice: o?.price - o?.reduction,\n NotaryActeChoice: o?.acteType === 'BDC' ? 1 : o?.acteType === 'NN' ? 2 : 0\n },\n InvoiceConsumerType: o?.invoiceTo === 'toPro' ? 0 : 1,\n AddressBien: {\n Name: null,\n Company: o?.owner.companyname,\n VatNumber: o?.owner.tva,\n Street: o?.address.street,\n Number: o?.address.number,\n BoxNumber: o?.address.boxNumber,\n ApartmentNumber: o?.address.apartmentNumber,\n PostalCode: isNaN(parseInt(o?.address.zip, 10)) ? null : parseInt(o?.address.zip, 10),\n City: o?.address.city,\n Country: o?.address.country ? o?.address.country : 'Belgique'\n },\n AddressEnvois: {\n Name: docName,\n Company: invoiceCompany,\n Street: o?.document.address.street ? o?.document.address.street : '',\n Number: o?.document.address.number ? o?.document.address.number : '',\n BoxNumber: o?.document.address.boxNumber,\n ApartmentNumber: o?.document.address.apartmentNumber,\n Latitude: o?.document.address.lat,\n Longitude: o?.document.address.lng,\n VatNumber: invoiceVat,\n PostalCode: isNaN(parseInt(o?.document.address.zip, 10)) ? null : parseInt(o?.document.address.zip, 10),\n City: o?.document.address.city,\n Country: o?.document.address.country\n },\n OrderProducts: orderProducts.filter(op => op.ProductTypeId >= 0 && op.ProductTypeId < 10000),\n OrderReductions: orderReductions,\n OrderConsumer: {\n ConsumerType: o?.user.userType,\n CommercialName: o?.user.companyname,\n UserID: o?.user.userid,\n User: {\n Title: o?.user.title,\n Email: o?.user.email,\n FirstName: o?.user.firstname,\n Name: o?.user.lastname,\n Language: u.language === 'nl' ? 'nl-BE' : u.language === 'de' ? 'DE' : u.language === 'en' ? 'EN' : 'fr-BE',\n PhoneNumber: this.phoneu,\n TelNumber: this.gsmu,\n Status: o?.user.status,\n Commission: '0'\n },\n AddressID: o?.user.address.addressid,\n Address: {\n Name: null,\n Company: o?.user.companyname,\n Street: o?.user.address.street,\n Number: o?.user.address.number,\n BoxNumber: o?.user.address.boxNumber,\n ApartmentNumber: o?.user.address.apartmentNumber,\n VatNumber: o?.user.tva,\n Latitude: o?.user.address.lat,\n Longitude: o?.user.address.lng,\n PostalCode: isNaN(parseInt(o?.user.address.zip, 10)) ? null : parseInt(o?.user.address.zip, 10),\n City: o?.user.address.city,\n Country: o?.user.address.country ? o?.user.address.country : 'Belgique'\n }\n },\n Owner: {\n Email: o?.owner.email,\n FirstName: o?.owner.firstname,\n LastName: o?.owner.lastname,\n PhoneNumber: this.phoneo,\n Title: o?.owner.title,\n TelNumber: this.gsmo,\n NationalNumber: null\n },\n Comment: { Type: 1, Commentaire: remarque },\n AvailableDates: [],\n OrderProductsForAgency: orderProductsPro,\n Urgent: o?.urgence || o.urgencePro,\n SentByMailAgency: false,\n OrderProductsNotary: orderProducts\n ?.filter(\n op =>\n (op.ProductTypeId >= PRODUCTS.PublicationNotaireBE && op.ProductTypeId <= PRODUCTS.BidditFees) ||\n (op.ProductTypeId >= PRODUCTS.VISITADVALORIS && op.ProductTypeId <= PRODUCTS.LOCKSMITH) ||\n (op.ProductTypeId >= PRODUCTS.VisitGil4S && op.ProductTypeId <= PRODUCTS.VlanEditionLocal)\n )\n ?.map(op => ({\n ...op,\n Status:\n (op.ProductTypeId >= PRODUCTS.PublicationVlan && op.ProductTypeId <= PRODUCTS.PublicationDeMorgen) ||\n (op.ProductTypeId >= PRODUCTS.PublicationAvenir &&\n op.ProductTypeId <= PRODUCTS.PublicationProximagArdennes)\n ? 1001\n : 1000,\n description: o.venteType === VENTES.VENTE_PUB ? 3 : o.venteType\n })),\n Publications: o?.parutions.map(pub => ({\n ...pub,\n saletype: o.venteType === VENTES.VENTE_PUB ? 3 : o.venteType\n })),\n PublicationLinks: o?.parutionFileLinks,\n PublicationComment: o?.parutionsComment,\n Visits: o?.visits,\n VenteInfo: o?.venteInfo,\n VenteType: o?.venteType === VENTES.VENTE_PUB ? 3 : o?.venteType,\n ProjectID: getPricesID,\n TotalCommission: commTotal,\n AskForExpertise: o?.askForExpertise,\n NbrOfApartments: o?.nbOfAppartments\n };\n return dbOrder;\n } catch (e) {\n this.snackBar.open(this.translateService.instant('error-message.order-error'));\n }\n }\n\n get isEligibleUserForExpertise() {\n // bxl & wal\n //return false;\n return (\n this.userType === this.userTypes?.Particulier &&\n ((Number(this.userZip) >= 1000 && Number(this.userZip) < 1500) ||\n (Number(this.visitAddress?.zip) >= 1000 && Number(this.visitAddress?.zip) < 1500) ||\n (Number(this.userZip) >= 4000 && Number(this.userZip) < 8000) ||\n (Number(this.visitAddress?.zip) >= 4000 && Number(this.visitAddress?.zip) < 8000))\n );\n }\n\n hasAgendaAccess (order): boolean {\n if(order?.Urgent) return false;\n\n const MULTIPLE_ELEC_PRODUCTS = [4,8];\n if (order?.OrderProducts?.every(({ProductTypeId}) => MULTIPLE_ELEC_PRODUCTS.includes(ProductTypeId))) return true; // Agenda is available for single or multiple elec products\n\n const SINGLE_PRODUCTS_WHERE_AGENDA_AVAILABLE = [1, 6, 9, 15, 100]\n if (order?.OrderProducts?.length === 1 && SINGLE_PRODUCTS_WHERE_AGENDA_AVAILABLE.includes(order?.OrderProducts[0]?.ProductTypeId)) return true;\n\n return false;\n }\n}\n","
    \n
    \n
    \n {{ 'notaire-landing-dialog.header' | translate }}\n
    \n
      \n
    • \n \"\"\n

      {{ service.translationKey | translate }}

      \n
    • \n
    \n
    \n
    \n

    {{ 'notaire-landing-dialog.content.cta' | translate }}

    \n \n\n
    \n\n {{ 'notaire-landing-dialog.content.banner' | translate }}\n
    \n\n
    \n \n
    \n
    \n","import { Component, OnInit } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { CompleteNotaireLandingDialog } from 'src/app/core/store/order';\nimport { AppState } from 'src/app/interfaces';\n\n@Component({\n selector: 'app-notaire-landing',\n templateUrl: './notaire-landing.component.html',\n styleUrls: ['./notaire-landing.component.scss']\n})\nexport class NotaireLandingComponent implements OnInit {\n displayedServices: { url: string; translationKey: string }[] = [\n { url: '../../../assets/images/service-peb.svg', translationKey: 'homepage.section-services.peb' },\n { url: '../../../assets/images/service-elec.svg', translationKey: 'homepage.section-services.elec' },\n { url: '../../../assets/images/service-citerne.svg', translationKey: 'homepage.section-services.citerne-short' },\n { url: '../../../assets/images/service-gaz.svg', translationKey: 'homepage.section-services.gaz' }\n ];\n\n redirectionLinks: { url: string; translationKey; comingSoon?: boolean }[] = [\n {\n url: 'https://maisondunotariatdenamur.be/services',\n translationKey: 'notaire-landing-dialog.content.links.namur'\n },\n {\n url: 'https://mnbw.be/services',\n translationKey: 'notaire-landing-dialog.content.links.brabant-wallon'\n },\n {\n url: 'https://maisondunotariatduhainaut.be/services',\n translationKey: 'notaire-landing-dialog.content.links.hainaut'\n },\n {\n url: 'https://notalux.com/services',\n translationKey: 'notaire-landing-dialog.content.links.luxembourg'\n },\n {\n url: 'https://cnal.be/services',\n translationKey: 'notaire-landing-dialog.content.links.liege'\n },\n {\n url: 'https://nvn.be/other-services?o=66k99t4435d4f',\n translationKey: 'notaire-landing-dialog.content.links.bruxelles'\n }\n ];\n\n constructor(private store: Store) {}\n\n ngOnInit() {}\n\n continueToCertinergieOrder() {\n this.store.dispatch(new CompleteNotaireLandingDialog(true));\n }\n}\n","
    \n \n \n \n \n \n \n {{ 'steps.title-1' | translate }}\n \n
    {{ 'steps.title-1' | translate }}
    \n \n \n \n
    \n \n \n \n \n \n {{ 'section-user.disco.your-info' | translate }}\n \n
    {{ 'section-user.disco.your-info' | translate }}
    \n \n
    \n \n \n \n \n \n {{ 'steps.title-3' | translate }}\n \n
    {{ 'steps.title-3' | translate }}
    \n \n
    \n \n \n \n \n \n {{ 'steps.title-4' | translate }}\n \n
    {{ 'steps.title-4' | translate }}
    \n \n
    \n
    \n
    \n\n\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { AppState } from '../interfaces';\nimport { Observable, combineLatest, of } from 'rxjs';\nimport { Product } from '../core/models/product';\n\nimport * as orderSelector from '../core/store/order/order.selectors';\nimport * as uiSelector from '../core/store/ui/ui.selectors';\nimport { Step2Component } from '../step2/step2.component';\nimport { Step3Component } from '../step3/step3.component';\nimport { Step1Component } from '../step1/step1.component';\nimport { SetResetStepper } from '../core/store/ui';\nimport { TranslateService } from '@ngx-translate/core';\nimport { MatStepper } from '@angular/material/stepper';\nimport { DataService } from '../core/services/data.service';\nimport { PackDB } from '../core/models/PackDB';\nimport { delay, first, switchMap, take } from 'rxjs/operators';\nimport { Address } from '../core/models/address';\nimport { LoginDialogComponent } from '../dialogs/login-dialog/login-dialog.component';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { UserType } from '../core/models/user';\n\n@Component({\n selector: 'app-order-steppers',\n templateUrl: './order-steppers.component.html',\n styleUrls: ['./order-steppers.component.scss']\n})\nexport class OrderSteppersComponent implements OnInit {\n $products: Observable;\n $hasImmoAccess: Observable;\n @ViewChild('stepper', { static: false }) stepper: MatStepper;\n @ViewChild(Step1Component, { static: true }) Step1Component: Step1Component;\n @ViewChild(Step2Component, { static: true }) Step2Component: Step2Component;\n @ViewChild(Step3Component, { static: true }) Step3Component: Step3Component;\n\n invoiceTo: string;\n products: Product[];\n packs: PackDB[];\n address: Address;\n shouldHideOrderStepperAndShowNotaryRedirectView$: Observable\n\n constructor(\n private store: Store,\n translate: TranslateService,\n private dataService: DataService,\n public dialog: MatDialog,\n private route: ActivatedRoute,\n private router: Router,\n ) {\n translate.setDefaultLang('fr');\n this.store.select(uiSelector.getLanguage).subscribe(ln => translate.use(ln));\n }\n\n ngOnInit() {\n this.store.select(orderSelector.getUserType).subscribe((consumerType) => this.dataService.getPriceFromAPI({ consumerType }))\n this.dataService.getPacksFromAPI().subscribe(packs => {\n this.packs = packs;\n });\n this.$products = this.store.select(orderSelector.getProducts);\n this.store.select(orderSelector.getInvoiceTo).subscribe(i => (this.invoiceTo = i));\n this.store.select(orderSelector.getAddress).subscribe(a => (this.address = a));\n\n this.$hasImmoAccess = this.store.select(orderSelector.getHasImmoAccess);\n\n this.store\n .select(uiSelector.getResetStepper)\n .pipe(delay(500))\n .subscribe(bool => {\n if (bool && this.stepper && this.stepper !== undefined) {\n this.stepper.reset();\n this.store.dispatch(new SetResetStepper(false));\n }\n });\n\n // Conditionnally open login dialog\n this.route?.queryParamMap?.subscribe(params => {\n const shouldInitiallyOpenLoginDialog = (params?.get('login') ?? null) === 'true';\n const shouldInitiallyOpenLoginDialogWithPasswordRecoveryForNewUser = (params?.get('recover-password-for-new-user')) === 'true';\n if (\n shouldInitiallyOpenLoginDialog ||\n shouldInitiallyOpenLoginDialogWithPasswordRecoveryForNewUser\n ) this.openLoginDialog({ shouldRedirectToPasswordRecoveryForNewUser: shouldInitiallyOpenLoginDialogWithPasswordRecoveryForNewUser });\n });\n\n // Display notary redirection view\n this.shouldHideOrderStepperAndShowNotaryRedirectView$ = combineLatest(\n this.store.select(orderSelector?.getUser),\n this.store.select(orderSelector.getHasCompletedNotaireLandingDialog)\n ).pipe(\n switchMap(([user, hasCompletedNotaireLandingDialog]) => {\n const isLoggedInNotary = user.userType === UserType.Notaire;\n return of(isLoggedInNotary && !hasCompletedNotaireLandingDialog);\n }))\n }\n\n get frmStep1() {\n const st = this.Step1Component ? this.Step1Component.step1FormGroup : null;\n return st;\n }\n\n get frmStep2() {\n return this.Step2Component ? this.Step2Component.step2FormGroup : null;\n }\n\n get isStep2Valid() {\n const ownerAddIsValid = !!this.address?.street && !!this.address?.number && !!this.address?.city && !!this.address?.zip;\n\n return this.frmStep2 && this.frmStep2.valid && ownerAddIsValid;\n }\n\n get isStep3Valid() {\n const formGP = this.Step3Component ? this.Step3Component.otherDocFormGroup : null;\n const otherValid = this.invoiceTo === 'toOther' && formGP && formGP.valid;\n const valid = this.invoiceTo && this.invoiceTo !== '' && this.invoiceTo !== 'toOther';\n\n return this.isStep2Valid && (valid || otherValid);\n }\n\n openLoginDialog({ shouldRedirectToPasswordRecoveryForNewUser }: { shouldRedirectToPasswordRecoveryForNewUser: boolean }) {\n const dialogRef = this.dialog.open(LoginDialogComponent, {\n panelClass: ['no-padding-dialog', 'full-screen-dialog'],\n data: {\n dialog: this.dialog,\n forgotten: shouldRedirectToPasswordRecoveryForNewUser,\n recoverPasswordWindowType: shouldRedirectToPasswordRecoveryForNewUser ? 'newUser' : 'passwordLost'\n },\n });\n dialogRef.afterClosed().pipe(take(1)).subscribe(() => {\n // Delete query param\n this.router.navigate([], { relativeTo: this.route, queryParams: { login: null, 'recover-password-for-new-user': null }, queryParamsHandling: 'merge', replaceUrl: true });\n });\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 { Subject } from '../Subject';\nimport { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { fromSubscribable } from '../observable/fromSubscribable';\nconst DEFAULT_CONFIG = {\n connector: () => new Subject(),\n};\nexport function connect(selector, config = DEFAULT_CONFIG) {\n const { connector } = config;\n return operate((source, subscriber) => {\n const subject = connector();\n innerFrom(selector(fromSubscribable(subject))).subscribe(subscriber);\n subscriber.add(source.subscribe(subject));\n });\n}\n","import { Observable } from '../Observable';\nexport function fromSubscribable(subscribable) {\n return new Observable((subscriber) => subscribable.subscribe(subscriber));\n}\n","/**\n * @license Angular v13.4.0\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport { isPlatformBrowser } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Injectable, InjectionToken, NgZone, ApplicationRef, PLATFORM_ID, APP_INITIALIZER, Injector, NgModule } from '@angular/core';\nimport { defer, throwError, fromEvent, of, concat, Subject, NEVER, merge } from 'rxjs';\nimport { map, filter, switchMap, publish, take, tap, delay } 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 */\nconst ERR_SW_NOT_SUPPORTED = 'Service workers are disabled or not supported by this browser';\nfunction errorObservable(message) {\n return defer(() => throwError(new Error(message)));\n}\n/**\n * @publicApi\n */\nclass NgswCommChannel {\n constructor(serviceWorker) {\n this.serviceWorker = serviceWorker;\n if (!serviceWorker) {\n this.worker = this.events = this.registration = errorObservable(ERR_SW_NOT_SUPPORTED);\n }\n else {\n const controllerChangeEvents = fromEvent(serviceWorker, 'controllerchange');\n const controllerChanges = controllerChangeEvents.pipe(map(() => serviceWorker.controller));\n const currentController = defer(() => of(serviceWorker.controller));\n const controllerWithChanges = concat(currentController, controllerChanges);\n this.worker = controllerWithChanges.pipe(filter((c) => !!c));\n this.registration = (this.worker.pipe(switchMap(() => serviceWorker.getRegistration())));\n const rawEvents = fromEvent(serviceWorker, 'message');\n const rawEventPayload = rawEvents.pipe(map(event => event.data));\n const eventsUnconnected = rawEventPayload.pipe(filter(event => event && event.type));\n const events = eventsUnconnected.pipe(publish());\n events.connect();\n this.events = events;\n }\n }\n postMessage(action, payload) {\n return this.worker\n .pipe(take(1), tap((sw) => {\n sw.postMessage(Object.assign({ action }, payload));\n }))\n .toPromise()\n .then(() => undefined);\n }\n postMessageWithOperation(type, payload, operationNonce) {\n const waitForOperationCompleted = this.waitForOperationCompleted(operationNonce);\n const postMessage = this.postMessage(type, payload);\n return Promise.all([postMessage, waitForOperationCompleted]).then(([, result]) => result);\n }\n generateNonce() {\n return Math.round(Math.random() * 10000000);\n }\n eventsOfType(type) {\n let filterFn;\n if (typeof type === 'string') {\n filterFn = (event) => event.type === type;\n }\n else {\n filterFn = (event) => type.includes(event.type);\n }\n return this.events.pipe(filter(filterFn));\n }\n nextEventOfType(type) {\n return this.eventsOfType(type).pipe(take(1));\n }\n waitForOperationCompleted(nonce) {\n return this.eventsOfType('OPERATION_COMPLETED')\n .pipe(filter(event => event.nonce === nonce), take(1), map(event => {\n if (event.result !== undefined) {\n return event.result;\n }\n throw new Error(event.error);\n }))\n .toPromise();\n }\n get isEnabled() {\n return !!this.serviceWorker;\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 * Subscribe and listen to\n * [Web Push\n * Notifications](https://developer.mozilla.org/en-US/docs/Web/API/Push_API/Best_Practices) through\n * Angular Service Worker.\n *\n * @usageNotes\n *\n * You can inject a `SwPush` instance into any component or service\n * as a dependency.\n *\n * \n *\n * To subscribe, call `SwPush.requestSubscription()`, which asks the user for permission.\n * The call returns a `Promise` with a new\n * [`PushSubscription`](https://developer.mozilla.org/en-US/docs/Web/API/PushSubscription)\n * instance.\n *\n * \n *\n * A request is rejected if the user denies permission, or if the browser\n * blocks or does not support the Push API or ServiceWorkers.\n * Check `SwPush.isEnabled` to confirm status.\n *\n * Invoke Push Notifications by pushing a message with the following payload.\n *\n * ```ts\n * {\n * \"notification\": {\n * \"actions\": NotificationAction[],\n * \"badge\": USVString,\n * \"body\": DOMString,\n * \"data\": any,\n * \"dir\": \"auto\"|\"ltr\"|\"rtl\",\n * \"icon\": USVString,\n * \"image\": USVString,\n * \"lang\": DOMString,\n * \"renotify\": boolean,\n * \"requireInteraction\": boolean,\n * \"silent\": boolean,\n * \"tag\": DOMString,\n * \"timestamp\": DOMTimeStamp,\n * \"title\": DOMString,\n * \"vibrate\": number[]\n * }\n * }\n * ```\n *\n * Only `title` is required. See `Notification`\n * [instance\n * properties](https://developer.mozilla.org/en-US/docs/Web/API/Notification#Instance_properties).\n *\n * While the subscription is active, Service Worker listens for\n * [PushEvent](https://developer.mozilla.org/en-US/docs/Web/API/PushEvent)\n * occurrences and creates\n * [Notification](https://developer.mozilla.org/en-US/docs/Web/API/Notification)\n * instances in response.\n *\n * Unsubscribe using `SwPush.unsubscribe()`.\n *\n * An application can subscribe to `SwPush.notificationClicks` observable to be notified when a user\n * clicks on a notification. For example:\n *\n * \n *\n * You can read more on handling notification clicks in the [Service worker notifications\n * guide](guide/service-worker-notifications).\n *\n * @see [Push Notifications](https://developers.google.com/web/fundamentals/codelabs/push-notifications/)\n * @see [Angular Push Notifications](https://blog.angular-university.io/angular-push-notifications/)\n * @see [MDN: Push API](https://developer.mozilla.org/en-US/docs/Web/API/Push_API)\n * @see [MDN: Notifications API](https://developer.mozilla.org/en-US/docs/Web/API/Notifications_API)\n * @see [MDN: Web Push API Notifications best practices](https://developer.mozilla.org/en-US/docs/Web/API/Push_API/Best_Practices)\n *\n * @publicApi\n */\nclass SwPush {\n constructor(sw) {\n this.sw = sw;\n this.subscriptionChanges = new Subject();\n if (!sw.isEnabled) {\n this.messages = NEVER;\n this.notificationClicks = NEVER;\n this.subscription = NEVER;\n return;\n }\n this.messages = this.sw.eventsOfType('PUSH').pipe(map(message => message.data));\n this.notificationClicks =\n this.sw.eventsOfType('NOTIFICATION_CLICK').pipe(map((message) => message.data));\n this.pushManager = this.sw.registration.pipe(map(registration => registration.pushManager));\n const workerDrivenSubscriptions = this.pushManager.pipe(switchMap(pm => pm.getSubscription()));\n this.subscription = merge(workerDrivenSubscriptions, this.subscriptionChanges);\n }\n /**\n * True if the Service Worker is enabled (supported by the browser and enabled via\n * `ServiceWorkerModule`).\n */\n get isEnabled() {\n return this.sw.isEnabled;\n }\n /**\n * Subscribes to Web Push Notifications,\n * after requesting and receiving user permission.\n *\n * @param options An object containing the `serverPublicKey` string.\n * @returns A Promise that resolves to the new subscription object.\n */\n requestSubscription(options) {\n if (!this.sw.isEnabled) {\n return Promise.reject(new Error(ERR_SW_NOT_SUPPORTED));\n }\n const pushOptions = { userVisibleOnly: true };\n let key = this.decodeBase64(options.serverPublicKey.replace(/_/g, '/').replace(/-/g, '+'));\n let applicationServerKey = new Uint8Array(new ArrayBuffer(key.length));\n for (let i = 0; i < key.length; i++) {\n applicationServerKey[i] = key.charCodeAt(i);\n }\n pushOptions.applicationServerKey = applicationServerKey;\n return this.pushManager.pipe(switchMap(pm => pm.subscribe(pushOptions)), take(1))\n .toPromise()\n .then(sub => {\n this.subscriptionChanges.next(sub);\n return sub;\n });\n }\n /**\n * Unsubscribes from Service Worker push notifications.\n *\n * @returns A Promise that is resolved when the operation succeeds, or is rejected if there is no\n * active subscription or the unsubscribe operation fails.\n */\n unsubscribe() {\n if (!this.sw.isEnabled) {\n return Promise.reject(new Error(ERR_SW_NOT_SUPPORTED));\n }\n const doUnsubscribe = (sub) => {\n if (sub === null) {\n throw new Error('Not subscribed to push notifications.');\n }\n return sub.unsubscribe().then(success => {\n if (!success) {\n throw new Error('Unsubscribe failed!');\n }\n this.subscriptionChanges.next(null);\n });\n };\n return this.subscription.pipe(take(1), switchMap(doUnsubscribe)).toPromise();\n }\n decodeBase64(input) {\n return atob(input);\n }\n}\nSwPush.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: SwPush, deps: [{ token: NgswCommChannel }], target: i0.ɵɵFactoryTarget.Injectable });\nSwPush.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: SwPush });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: SwPush, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: NgswCommChannel }]; } });\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 * Subscribe to update notifications from the Service Worker, trigger update\n * checks, and forcibly activate updates.\n *\n * @see {@link guide/service-worker-communications Service worker communication guide}\n *\n * @publicApi\n */\nclass SwUpdate {\n constructor(sw) {\n this.sw = sw;\n if (!sw.isEnabled) {\n this.versionUpdates = NEVER;\n this.available = NEVER;\n this.activated = NEVER;\n this.unrecoverable = NEVER;\n return;\n }\n this.versionUpdates = this.sw.eventsOfType(['VERSION_DETECTED', 'VERSION_INSTALLATION_FAILED', 'VERSION_READY']);\n this.available = this.versionUpdates.pipe(filter((evt) => evt.type === 'VERSION_READY'), map(evt => ({\n type: 'UPDATE_AVAILABLE',\n current: evt.currentVersion,\n available: evt.latestVersion,\n })));\n this.activated = this.sw.eventsOfType('UPDATE_ACTIVATED');\n this.unrecoverable = this.sw.eventsOfType('UNRECOVERABLE_STATE');\n }\n /**\n * True if the Service Worker is enabled (supported by the browser and enabled via\n * `ServiceWorkerModule`).\n */\n get isEnabled() {\n return this.sw.isEnabled;\n }\n /**\n * Checks for an update and waits until the new version is downloaded from the server and ready\n * for activation.\n *\n * @returns a promise that\n * - resolves to `true` if a new version was found and is ready to be activated.\n * - resolves to `false` if no new version was found\n * - rejects if any error occurs\n */\n checkForUpdate() {\n if (!this.sw.isEnabled) {\n return Promise.reject(new Error(ERR_SW_NOT_SUPPORTED));\n }\n const nonce = this.sw.generateNonce();\n return this.sw.postMessageWithOperation('CHECK_FOR_UPDATES', { nonce }, nonce);\n }\n /**\n * Updates the current client (i.e. browser tab) to the latest version that is ready for\n * activation.\n *\n * @returns a promise that\n * - resolves to `true` if an update was activated successfully\n * - resolves to `false` if no update was available (for example, the client was already on the\n * latest version).\n * - rejects if any error occurs\n */\n activateUpdate() {\n if (!this.sw.isEnabled) {\n return Promise.reject(new Error(ERR_SW_NOT_SUPPORTED));\n }\n const nonce = this.sw.generateNonce();\n return this.sw.postMessageWithOperation('ACTIVATE_UPDATE', { nonce }, nonce);\n }\n}\nSwUpdate.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: SwUpdate, deps: [{ token: NgswCommChannel }], target: i0.ɵɵFactoryTarget.Injectable });\nSwUpdate.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: SwUpdate });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: SwUpdate, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: NgswCommChannel }]; } });\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 * Token that can be used to provide options for `ServiceWorkerModule` outside of\n * `ServiceWorkerModule.register()`.\n *\n * You can use this token to define a provider that generates the registration options at runtime,\n * for example via a function call:\n *\n * {@example service-worker/registration-options/module.ts region=\"registration-options\"\n * header=\"app.module.ts\"}\n *\n * @publicApi\n */\nclass SwRegistrationOptions {\n}\nconst SCRIPT = new InjectionToken('NGSW_REGISTER_SCRIPT');\nfunction ngswAppInitializer(injector, script, options, platformId) {\n const initializer = () => {\n if (!(isPlatformBrowser(platformId) && ('serviceWorker' in navigator) &&\n options.enabled !== false)) {\n return;\n }\n // Wait for service worker controller changes, and fire an INITIALIZE action when a new SW\n // becomes active. This allows the SW to initialize itself even if there is no application\n // traffic.\n navigator.serviceWorker.addEventListener('controllerchange', () => {\n if (navigator.serviceWorker.controller !== null) {\n navigator.serviceWorker.controller.postMessage({ action: 'INITIALIZE' });\n }\n });\n let readyToRegister$;\n if (typeof options.registrationStrategy === 'function') {\n readyToRegister$ = options.registrationStrategy();\n }\n else {\n const [strategy, ...args] = (options.registrationStrategy || 'registerWhenStable:30000').split(':');\n switch (strategy) {\n case 'registerImmediately':\n readyToRegister$ = of(null);\n break;\n case 'registerWithDelay':\n readyToRegister$ = delayWithTimeout(+args[0] || 0);\n break;\n case 'registerWhenStable':\n readyToRegister$ = !args[0] ? whenStable(injector) :\n merge(whenStable(injector), delayWithTimeout(+args[0]));\n break;\n default:\n // Unknown strategy.\n throw new Error(`Unknown ServiceWorker registration strategy: ${options.registrationStrategy}`);\n }\n }\n // Don't return anything to avoid blocking the application until the SW is registered.\n // Also, run outside the Angular zone to avoid preventing the app from stabilizing (especially\n // given that some registration strategies wait for the app to stabilize).\n // Catch and log the error if SW registration fails to avoid uncaught rejection warning.\n const ngZone = injector.get(NgZone);\n ngZone.runOutsideAngular(() => readyToRegister$.pipe(take(1)).subscribe(() => navigator.serviceWorker.register(script, { scope: options.scope })\n .catch(err => console.error('Service worker registration failed with:', err))));\n };\n return initializer;\n}\nfunction delayWithTimeout(timeout) {\n return of(null).pipe(delay(timeout));\n}\nfunction whenStable(injector) {\n const appRef = injector.get(ApplicationRef);\n return appRef.isStable.pipe(filter(stable => stable));\n}\nfunction ngswCommChannelFactory(opts, platformId) {\n return new NgswCommChannel(isPlatformBrowser(platformId) && opts.enabled !== false ? navigator.serviceWorker :\n undefined);\n}\n/**\n * @publicApi\n */\nclass ServiceWorkerModule {\n /**\n * Register the given Angular Service Worker script.\n *\n * If `enabled` is set to `false` in the given options, the module will behave as if service\n * workers are not supported by the browser, and the service worker will not be registered.\n */\n static register(script, opts = {}) {\n return {\n ngModule: ServiceWorkerModule,\n providers: [\n { provide: SCRIPT, useValue: script },\n { provide: SwRegistrationOptions, useValue: opts },\n {\n provide: NgswCommChannel,\n useFactory: ngswCommChannelFactory,\n deps: [SwRegistrationOptions, PLATFORM_ID]\n },\n {\n provide: APP_INITIALIZER,\n useFactory: ngswAppInitializer,\n deps: [Injector, SCRIPT, SwRegistrationOptions, PLATFORM_ID],\n multi: true,\n },\n ],\n };\n }\n}\nServiceWorkerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: ServiceWorkerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nServiceWorkerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: ServiceWorkerModule });\nServiceWorkerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: ServiceWorkerModule, providers: [SwPush, SwUpdate] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: ServiceWorkerModule, decorators: [{\n type: NgModule,\n args: [{\n providers: [SwPush, SwUpdate],\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/**\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 { ServiceWorkerModule, SwPush, SwRegistrationOptions, SwUpdate };\n","import { Subject } from '../Subject';\nimport { multicast } from './multicast';\nimport { connect } from './connect';\nexport function publish(selector) {\n return selector ? (source) => connect(selector)(source) : (source) => multicast(new Subject())(source);\n}\n","import { ConnectableObservable } from '../observable/ConnectableObservable';\nimport { isFunction } from '../util/isFunction';\nimport { connect } from './connect';\nexport function multicast(subjectOrSubjectFactory, selector) {\n const subjectFactory = isFunction(subjectOrSubjectFactory) ? subjectOrSubjectFactory : () => subjectOrSubjectFactory;\n if (isFunction(selector)) {\n return connect(selector, {\n connector: subjectFactory,\n });\n }\n return (source) => new ConnectableObservable(source, subjectFactory);\n}\n","import { Injectable } from '@angular/core';\nimport { SwUpdate } from '@angular/service-worker';\nimport { interval } from 'rxjs';\nimport { LoggerService } from './logger.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UpdateSwService {\n constructor(public updates: SwUpdate, private logger: LoggerService) {\n if (updates.isEnabled) {\n interval(1000 * 60).subscribe(() =>\n updates.checkForUpdate().then(() => console.log('✅✅✅ checking for updates'))\n );\n }\n }\n\n public checkForUpdates(): void {\n this.updates.available.subscribe(event => this.promptUser());\n }\n\n private promptUser(): void {\n localStorage.clear();\n this.updates.activateUpdate().then(() => window.location.reload());\n }\n}\n","import { asyncScheduler } from '../scheduler/async';\nimport { timer } from './timer';\nexport function interval(period = 0, scheduler = asyncScheduler) {\n if (period < 0) {\n period = 0;\n }\n return timer(period, period, scheduler);\n}\n","
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n

    Loading…

    \n
    \n
    \n","import { Component, Input, OnInit, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { LoaderState } from '../models/loaderState';\nimport { SpinnerOverlayService } from './spinner-overlay.service';\n\n@Component({\n selector: 'app-loader',\n templateUrl: './spinner-overlay.component.html',\n styleUrls: ['./spinner-overlay.component.scss']\n})\nexport class SpinnerOverlayComponent implements OnInit, OnDestroy {\n show = false;\n private subscription: Subscription;\n constructor(private loaderService: SpinnerOverlayService) {}\n ngOnInit() {\n this.subscription = this.loaderService?.loaderState?.subscribe((state: LoaderState) => {\n this.show = state.show;\n });\n }\n ngOnDestroy(): void {\n if (this.subscription) {\n this.subscription?.unsubscribe();\n }\n }\n}\n","
    \n
    \n
    \n \n \n \n \n\n
    \n
    \n \n \n \n \n \n \n {{ $userEmail | async }}\n \n \n \n \n \n\n \n \n \n \n \n \n \n \n {{ 'header.anonymous' | translate }}\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 \n
  • \n \n\n
    \n\n
      \n
    • \n \n
    • \n
    \n \n\n \n
    \n\n
    \n \n \n \n \n \n \n {{ $userEmail | async }}\n \n\n \n \n \n \n \n \n \n \n {{ 'header.anonymous' | translate }}\n \n \n
    \n\n \n
    \n
    \n \n\n\n
    \n
    \n
    \n
    \n \n \n \n \n \n \n {{ $userEmail | async }}\n \n \n \n \n \n\n \n \n \n \n \n \n \n \n {{ 'header.anonymous' | translate }}\n \n \n \n \n \n
    \n\n \n

    {{ 'customer-space' | translate }}

    \n\n \n \n {{ 'header.espace-client' | translate }}\n \n \n \n {{ 'header.commission' | translate }}\n \n \n \n \n {{ 'header.profile' | translate }}\n \n \n \n \n \n {{ 'header.stats' | translate }}\n \n \n \n {{ 'Rates.rate' | translate }}\n \n
    \n\n \n \n
    \n\n
    \n\n \n \n {{ 'header.btn-login' | translate }}\n \n\n \n \n {{ 'header.deconnection' | translate }}\n \n\n \n \n \n \n {{ currentLang | uppercase }} \n \n \n \n
      \n
    • \n \n
    • \n
    \n
    \n
    \n
    \n\n
    \n\n","import { Component, OnInit, Input } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatStepper } from '@angular/material/stepper';\nimport { LoginDialogComponent } from '../dialogs/login-dialog/login-dialog.component';\nimport { AuthService } from '../core/services/auth.service';\nimport { Store } from '@ngrx/store';\nimport { AppState } from '../interfaces';\nimport { Observable, combineLatest } from 'rxjs';\nimport * as userSelector from '../core/store/order/order.selectors';\nimport * as uiSelector from '../core/store/ui/ui.selectors';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SetLanguage } from '../core/store/ui';\nimport { contactLinks } from '../core/data/header-menu';\nimport { Router, NavigationStart, RoutesRecognized } from '@angular/router';\nimport { LoggerService } from '../core/services/logger.service';\nimport { filter, map, pairwise } from 'rxjs/operators';\nimport { getHasCommission } from '../core/store/order/order.selectors';\nimport { UserType } from '../core/models/user';\nimport { getLanguage } from 'src/app/core/store/ui/ui.selectors';\nimport { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\n\ntype NavLinkId = 'order' | 'customer-space' | 'profile' | 'stats' | 'commission' | 'rates' | 'notifications';\n\n@Component({\n selector: 'app-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss']\n})\nexport class HeaderComponent implements OnInit {\n @Input() stepper: MatStepper;\n $isLoggedIn: Observable;\n $userEmail: Observable;\n $userID: Observable;\n $tablette: Observable;\n $hasCommission: Observable;\n $userNotifications: Observable;\n userType: UserType;\n $userType: Observable;\n open = false;\n currentLang: string;\n languageTypes: 'fr' | 'nl' | 'de' | 'en';\n userID: string;\n isTablette = false;\n isBpLarge = true;\n phoneNumber = '02 88 02 171';\n phoneNumberFormatted = '028802171';\n\n lang: string;\n languages: {\n id: string;\n name: string;\n flagImgUrl: string;\n }[] = [\n {\n id: 'fr',\n name: 'Français',\n flagImgUrl: 'https://upload.wikimedia.org/wikipedia/commons/c/c3/Flag_of_France.svg'\n },\n {\n id: 'nl',\n name: 'Nederlands',\n flagImgUrl: 'https://upload.wikimedia.org/wikipedia/commons/2/20/Flag_of_the_Netherlands.svg'\n },\n {\n id: 'en',\n name: 'English',\n flagImgUrl: 'https://upload.wikimedia.org/wikipedia/commons/2/2c/Flag_of_the_United_Kingdom_%282-3%29.svg'\n },\n {\n id: 'de',\n name: 'Deutsch',\n flagImgUrl: 'https://upload.wikimedia.org/wikipedia/commons/2/21/Flag_of_Germany_%283-2%29.svg'\n }\n ];\n\n activeNavLinkId?: NavLinkId;\n\n constructor(\n public dialog: MatDialog,\n private authService: AuthService,\n private store: Store,\n private translate: TranslateService,\n private router: Router,\n private logger: LoggerService,\n public breakpointObserver: BreakpointObserver\n ) {}\n\n ngOnInit() {\n this.$isLoggedIn = this.store.select(userSelector.getIsLoggedIn);\n this.$userEmail = this.store.select(userSelector.getUserEmail);\n this.$userNotifications = this.store.select(userSelector.getUserNotifications);\n this.$userID = this.store.select(userSelector.getUserID);\n this.$tablette = this.store.select(uiSelector.getIsTablette);\n this.$hasCommission = this.store.select(getHasCommission);\n this.$userType = this.store.select(userSelector.getUserType);\n this.$userType.subscribe(ut => (this.userType = ut));\n if (this.router.url) {\n this.router.events.subscribe(event => {\n if (event instanceof NavigationStart) {\n this.phoneNumber = event.url === '/' ? '02 880 21 71' : '02 880 21 71';\n this.phoneNumberFormatted = event.url === '/' ? '028802171' : '028802171';\n }\n });\n }\n\n this.$userID.subscribe(u => (this.userID = u));\n\n const $combined = combineLatest([this.$tablette, this.translate.onLangChange]);\n\n const $result = $combined.pipe(map(results => ({ isTablette: results[0], data: results[1] })));\n $result.subscribe(({ isTablette, data }) => {\n this.isTablette = isTablette;\n this.currentLang = (data).lang;\n });\n\n this.breakpointObserver.observe(['(min-width: 992px)']).subscribe((state: BreakpointState) => {\n this.isBpLarge = state.matches;\n });\n\n // Detect active navigation link\n this.activeNavLinkId = this.mapUrlToNavLinkId(location.pathname);\n this.router.events\n .pipe(\n filter((evt: any) => evt instanceof RoutesRecognized),\n pairwise()\n )\n .subscribe((events: RoutesRecognized[]) => {\n this.activeNavLinkId = this.mapUrlToNavLinkId(events[1].urlAfterRedirects);\n });\n }\n\n openLoginDialog() {\n const dialogRef = this.dialog.open(LoginDialogComponent, {\n panelClass: ['no-padding-dialog', 'full-screen-dialog'],\n data: { dialog: this.dialog }\n });\n\n dialogRef.afterClosed().subscribe(result => {\n this.logger.log('The dialog was closed');\n });\n }\n\n logOut() {\n this.authService.logout();\n }\n\n switchLanguage(language: 'fr' | 'nl' | 'de' | 'en') {\n this.store.dispatch(new SetLanguage(language));\n if (this.router.url == '/stats') {\n location.reload();\n }\n if (this.router.url == '/customer/rates') {\n location.reload();\n }\n }\n\n toContact() {\n window.location.href = contactLinks[this.currentLang];\n }\n toProfile() {\n this.router.navigate(['/profile']);\n }\n toStats() {\n this.router.navigate(['/stats']);\n }\n toCommission() {\n this.router.navigate(['/comissions']);\n }\n\n toOrdering() {\n this.authService.resetOrderForm();\n this.router.navigate(['/']);\n window.scrollTo({ top: 0, left: 0, behavior: 'auto' });\n }\n\n toHomePage() {\n this.store.select(getLanguage).subscribe(ln => (this.lang = ln));\n window.location.href = 'https://www.certinergie.be/' + this.lang + '/';\n }\n toRates() {\n this.router.navigate(['/customer/rates']);\n }\n toLink(link: string) {\n !link.startsWith('http') ? this.router.navigate([link]) : (window.location.href = link);\n }\n\n toNotifications() {\n this.router.navigate(['/customer/notifications']);\n }\n\n mapUrlToNavLinkId(url: string): NavLinkId | undefined {\n if (url === '/' || url.startsWith('/?') || url.startsWith('/#')) return 'order';\n\n if (url.startsWith('/customer/rates')) return 'rates';\n if (url.startsWith('/customer/notifications')) return 'notifications';\n\n if (url.startsWith('/customer') || url.startsWith('/checkout')) return 'customer-space';\n if (url.startsWith('/profile')) return 'profile';\n if (url.startsWith('/stats')) return 'stats';\n\n if (url.startsWith('/comissions')) return 'commission';\n\n return undefined;\n }\n}\n","\n\n
    \n
    \n
    \n {{ 'footer.section-help.title' | translate }}\n
    \n \n
    \n
    \n
    \n

    \n Certinergie ASBL - SPRL rue Haute Voie 5 4537 Verlaine / Chaussée de Bruxelles 11 1300 Wavre RPM ASBL 0536.501.654.\n RPM SPRL 0831.937.722. © {{ currentFullYear }}\n Certinergie Luxembourg SARL\n

    \n

    \n Greenfish - Avenue Louise 367 1050 Bruxelles. © {{ currentFullYear }} Greenfish - Energy\n

    \n

    © {{ currentFullYear }} NVN. All Rights Reserved.

    \n

    © {{ currentFullYear }} Maison du Notariat. All Rights Reserved.

    \n
    \n","import { Component, OnInit } from '@angular/core';\nimport { displayHelpSection, projectID, showBigFooter } from '../core/data/theme-config';\n\n@Component({\n selector: 'app-footer',\n templateUrl: './footer.component.html',\n styleUrls: ['./footer.component.scss']\n})\nexport class FooterComponent implements OnInit {\n displayHelpSection = displayHelpSection;\n projectID = projectID;\n showBigFooter = showBigFooter;\n currentFullYear = new Date().getFullYear();\n\n constructor() {}\n\n ngOnInit() {}\n}\n","\n \n\n \n\n\n\n
    \n \n \n \n\n \n
    \n\n \n
    \n","import { Component, OnInit, ViewChild, AfterViewInit } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { AppState } from './interfaces';\nimport { combineLatest, Subject } from 'rxjs';\n\nimport * as orderSelector from './core/store/order/order.selectors';\nimport * as uiSelector from './core/store/ui/ui.selectors';\nimport { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\nimport { TranslateService } from '@ngx-translate/core';\nimport { StartOnlineOfflineCheck, SetLanguage, SetIsMobile, SetIsTablette } from './core/store/ui';\nimport { OrderSteppersComponent } from './order-steppers/order-steppers.component';\n\nimport { MatIconRegistry } from '@angular/material/icon';\n\nimport { UpdateSwService } from './core/services/update-sw.service';\nimport { AuthService } from './core/services/auth.service';\nimport { ActivatedRoute, Router, NavigationEnd } from '@angular/router';\nimport { Title, DomSanitizer } from '@angular/platform-browser';\nimport { filter, map, takeUntil } from 'rxjs/operators';\nimport { projectID } from './core/data/theme-config';\nimport { PreviousRouteService } from './core/services/previous-route.service';\nimport { FormBuilder } from '@angular/forms';\nimport { MatDialog } from '@angular/material/dialog';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss']\n})\nexport class AppComponent implements OnInit, AfterViewInit {\n @ViewChild(OrderSteppersComponent, { static: false }) OrderSteppersComponent: OrderSteppersComponent;\n \n isEmbedded: boolean = false;\n currentUserId: string | undefined = undefined;\n\n constructor(\n private fb: FormBuilder,\n private store: Store,\n public breakpointObserver: BreakpointObserver,\n translate: TranslateService,\n private sw: UpdateSwService,\n private authService: AuthService,\n private route: ActivatedRoute,\n private titleService: Title,\n private router: Router,\n private iconRegistry: MatIconRegistry,\n private sanitizer: DomSanitizer,\n private previousRouteService: PreviousRouteService,\n private dialog: MatDialog\n ) {\n translate?.setDefaultLang('fr');\n this.store.select(uiSelector.getLanguage)?.subscribe(ln => translate.use(ln));\n this.iconRegistry?.addSvgIcon(\n 'notifications',\n this.sanitizer?.bypassSecurityTrustResourceUrl('assets/icons/notifications.svg')\n );\n }\n\n private destroy$ = new Subject();\n\n ngOnInit() {\n\n this.store.dispatch(new StartOnlineOfflineCheck());\n // check the service worker for updates\n this.sw?.checkForUpdates();\n\n // set the title of the page\n this.router.events\n ?.pipe(\n filter(event => event instanceof NavigationEnd),\n map(() => this.router),\n takeUntil(this.destroy$)\n )\n ?.subscribe(() => {\n const title = this.getTitle(this.router?.routerState, this.router?.routerState?.root)?.join(' | ');\n this.titleService?.setTitle(this.getWebsiteTitle() + (title === '' ? '' : ' | ' + title));\n });\n\n // check if the user is on a mobile device\n this.breakpointObserver?.observe(['(min-width: 576px)'])?.subscribe((state: BreakpointState) => {\n if (state?.matches) {\n this.store.dispatch(new SetIsMobile(false));\n } else {\n this.store.dispatch(new SetIsMobile(true));\n }\n });\n\n // check if the user is on a tablet device\n this.breakpointObserver?.observe(['(min-width: 768px)'])?.subscribe((state: BreakpointState) => {\n if (state?.matches) {\n this.store.dispatch(new SetIsTablette(false));\n } else {\n this.store.dispatch(new SetIsTablette(true));\n }\n });\n\n // NEEDS REFACTORING\n\n // check if the user is logged in\n this.route?.queryParamMap?.subscribe(params => {\n const userid = params?.get('u') ?? null;\n const redirectUrl = params?.get('redirect') ?? null;\n const lan = params?.get('ln') ?? null;\n this.isEmbedded = params?.get('embedded') === 'true';\n\n if (['fr', 'nl', 'de', 'en'].includes(lan)) {\n this.store.dispatch(new SetLanguage(lan as 'fr' | 'nl' | 'de' | 'en'));\n }\n\n // if the user is automatically logged in\n if (userid) {\n this.authService?.loginWithUserIDAsync(userid, true, 0)\n .then(() => { \n this.currentUserId = userid;\n this.router.navigate([redirectUrl ?? this.router?.url?.split('?')[0]], {\n queryParams: {\n u: null,\n redirect: null\n },\n queryParamsHandling: 'merge'\n });\n })\n .catch(() => {\n this.router?.navigate(['/']);\n });\n }\n else \n {\n //check if the user is logged in before with the user id or email\n combineLatest(\n this.store.select(orderSelector?.getUserID),\n this.store.select(orderSelector?.getUserEmail),\n (uid, email) => ({\n uid,\n email\n })\n )?.subscribe(({ uid, email }) => {\n if (uid && uid !== '' && this.currentUserId !== uid && email === '') {\n this.currentUserId = uid;\n this.authService?.loginWithUserIDAsync(uid)\n }\n });\n }\n\n // if the user is not logged in and there is a redirect url\n if (!userid && redirectUrl) {\n this.authService?.navigateToSubUrl(redirectUrl);\n }\n\n // Refresh token on app init\n if (this.authService?.userId) this.authService?.refreshToken(this.authService.userId);\n });\n\n // check if the user is logged in then refresh the user info\n this.store.select(orderSelector?.getIsLoggedIn)?.subscribe(logged => {\n if (logged) {\n this.authService?.refreshUserInfo();\n }\n });\n\n // Initialize state of previous route service\n this.previousRouteService?.setPreviousUrl(location?.pathname);\n }\n\n ngOnDestroy() {\n this.destroy$?.next();\n this.destroy$?.complete();\n }\n\n ngAfterViewInit(): void {\n const ieIE = this.navigatorIsIE();\n\n if (ieIE) {\n alert(\n 'Our website is not compatible with Internet Explorer, please use any other modern browser (Chrome, Firefox, EDGE, Safari,...)'\n );\n }\n }\n\n getTitle(state, parent) {\n const data = [];\n if (parent?.snapshot?.data?.title) {\n data.push(parent?.snapshot?.data?.title);\n }\n \n if (state && parent) {\n const child = state?.firstChild(parent);\n if (child) {\n data?.push(...this.getTitle(state, child));\n }\n }\n return data;\n }\n\n getWebsiteTitle(): string {\n return projectID === 'greenfish'\n ? 'Greenfish'\n : projectID === 'hainaut'\n ? 'MDNH'\n : projectID === 'namur'\n ? 'MDNN'\n : projectID === 'liege'\n ? 'MDNL'\n : projectID === 'nvn'\n ? 'NVN'\n : 'Certinergie';\n }\n\n navigatorIsIE(): boolean {\n const ua = window?.navigator?.userAgent;\n const msie = ua?.indexOf('MSIE ');\n\n return msie > 0 || !!navigator?.userAgent?.match(/Trident.*rv\\:11\\./);\n }\n}\n","import { EMPTY } from './observable/empty';\nimport { of } from './observable/of';\nimport { throwError } from './observable/throwError';\nimport { isFunction } from './util/isFunction';\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 return observeNotification(this, observer);\n }\n do(nextHandler, errorHandler, completeHandler) {\n const { kind, value, error } = this;\n return kind === 'N' ? nextHandler === null || nextHandler === void 0 ? void 0 : nextHandler(value) : kind === 'E' ? errorHandler === null || errorHandler === void 0 ? void 0 : errorHandler(error) : completeHandler === null || completeHandler === void 0 ? void 0 : completeHandler();\n }\n accept(nextOrObserver, error, complete) {\n var _a;\n return isFunction((_a = nextOrObserver) === null || _a === void 0 ? void 0 : _a.next)\n ? this.observe(nextOrObserver)\n : this.do(nextOrObserver, error, complete);\n }\n toObservable() {\n const { kind, value, error } = this;\n const result = kind === 'N'\n ?\n of(value)\n :\n kind === 'E'\n ?\n throwError(() => error)\n :\n kind === 'C'\n ?\n EMPTY\n :\n 0;\n if (!result) {\n throw new TypeError(`Unexpected notification kind ${kind}`);\n }\n return result;\n }\n static createNext(value) {\n return new Notification('N', value);\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');\nexport function observeNotification(notification, observer) {\n var _a, _b, _c;\n const { kind, value, error } = notification;\n if (typeof kind !== 'string') {\n throw new TypeError('Invalid notification, missing \"kind\"');\n }\n kind === 'N' ? (_a = observer.next) === null || _a === void 0 ? void 0 : _a.call(observer, value) : kind === 'E' ? (_b = observer.error) === null || _b === void 0 ? void 0 : _b.call(observer, error) : (_c = observer.complete) === null || _c === void 0 ? void 0 : _c.call(observer);\n}\n","import { Observable } from '../Observable';\nimport { innerFrom } from '../observable/innerFrom';\nimport { Subject } from '../Subject';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber, OperatorSubscriber } from './OperatorSubscriber';\nexport function groupBy(keySelector, elementOrOptions, duration, connector) {\n return operate((source, subscriber) => {\n let element;\n if (!elementOrOptions || typeof elementOrOptions === 'function') {\n element = elementOrOptions;\n }\n else {\n ({ duration, element, connector } = elementOrOptions);\n }\n const groups = new Map();\n const notify = (cb) => {\n groups.forEach(cb);\n cb(subscriber);\n };\n const handleError = (err) => notify((consumer) => consumer.error(err));\n let activeGroups = 0;\n let teardownAttempted = false;\n const groupBySourceSubscriber = new OperatorSubscriber(subscriber, (value) => {\n try {\n const key = keySelector(value);\n let group = groups.get(key);\n if (!group) {\n groups.set(key, (group = connector ? connector() : new Subject()));\n const grouped = createGroupedObservable(key, group);\n subscriber.next(grouped);\n if (duration) {\n const durationSubscriber = createOperatorSubscriber(group, () => {\n group.complete();\n durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();\n }, undefined, undefined, () => groups.delete(key));\n groupBySourceSubscriber.add(innerFrom(duration(grouped)).subscribe(durationSubscriber));\n }\n }\n group.next(element ? element(value) : value);\n }\n catch (err) {\n handleError(err);\n }\n }, () => notify((consumer) => consumer.complete()), handleError, () => groups.clear(), () => {\n teardownAttempted = true;\n return activeGroups === 0;\n });\n source.subscribe(groupBySourceSubscriber);\n function createGroupedObservable(key, groupSubject) {\n const result = new Observable((groupSubscriber) => {\n activeGroups++;\n const innerSub = groupSubject.subscribe(groupSubscriber);\n return () => {\n innerSub.unsubscribe();\n --activeGroups === 0 && teardownAttempted && groupBySourceSubscriber.unsubscribe();\n };\n });\n result.key = key;\n return result;\n }\n });\n}\n","import { map } from './map';\nimport { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function exhaustMap(project, resultSelector) {\n if (resultSelector) {\n return (source) => source.pipe(exhaustMap((a, i) => innerFrom(project(a, i)).pipe(map((b, ii) => resultSelector(a, b, i, ii)))));\n }\n return operate((source, subscriber) => {\n let index = 0;\n let innerSub = null;\n let isComplete = false;\n source.subscribe(createOperatorSubscriber(subscriber, (outerValue) => {\n if (!innerSub) {\n innerSub = createOperatorSubscriber(subscriber, undefined, () => {\n innerSub = null;\n isComplete && subscriber.complete();\n });\n innerFrom(project(outerValue, index++)).subscribe(innerSub);\n }\n }, () => {\n isComplete = true;\n !innerSub && subscriber.complete();\n }));\n });\n}\n","import * as i3 from '@ngrx/store';\nimport { compose, ScannedActionsSubject, createAction } from '@ngrx/store';\nimport * as i1 from 'rxjs';\nimport { merge, Observable, Subject, defer, Notification, pipe, of } from 'rxjs';\nimport { ignoreElements, materialize, map, catchError, filter, groupBy, mergeMap, exhaustMap, dematerialize, take, concatMap, finalize, withLatestFrom } from 'rxjs/operators';\nimport * as i0 from '@angular/core';\nimport { Injectable, Inject, InjectionToken, NgModule, Optional, Injector, SkipSelf, Self } from '@angular/core';\n\nconst DEFAULT_EFFECT_CONFIG = {\n dispatch: true,\n useEffectsErrorHandler: true,\n};\nconst CREATE_EFFECT_METADATA_KEY = '__@ngrx/effects_create__';\n\n/**\n * @description\n * Creates an effect from an `Observable` and an `EffectConfig`.\n *\n * @param source A function which returns an `Observable`.\n * @param config A `Partial` to configure the effect. By default, `dispatch` is true and `useEffectsErrorHandler` is true.\n * @returns If `EffectConfig`#`dispatch` is true, returns `Observable`. Else, returns `Observable`.\n *\n * @usageNotes\n *\n * ** Mapping to a different action **\n * ```ts\n * effectName$ = createEffect(\n * () => this.actions$.pipe(\n * ofType(FeatureActions.actionOne),\n * map(() => FeatureActions.actionTwo())\n * )\n * );\n * ```\n *\n * ** Non-dispatching effects **\n * ```ts\n * effectName$ = createEffect(\n * () => this.actions$.pipe(\n * ofType(FeatureActions.actionOne),\n * tap(() => console.log('Action One Dispatched'))\n * ),\n * { dispatch: false }\n * // FeatureActions.actionOne is not dispatched\n * );\n * ```\n */\nfunction createEffect(source, config) {\n const effect = source();\n const value = Object.assign(Object.assign({}, DEFAULT_EFFECT_CONFIG), config);\n Object.defineProperty(effect, CREATE_EFFECT_METADATA_KEY, {\n value,\n });\n return effect;\n}\nfunction getCreateEffectMetadata(instance) {\n const propertyNames = Object.getOwnPropertyNames(instance);\n const metadata = propertyNames\n .filter((propertyName) => {\n if (instance[propertyName] &&\n instance[propertyName].hasOwnProperty(CREATE_EFFECT_METADATA_KEY)) {\n // If the property type has overridden `hasOwnProperty` we need to ensure\n // that the metadata is valid (containing a `dispatch`property)\n // https://github.com/ngrx/platform/issues/2975\n const property = instance[propertyName];\n return property[CREATE_EFFECT_METADATA_KEY].hasOwnProperty('dispatch');\n }\n return false;\n })\n .map((propertyName) => {\n const metaData = instance[propertyName][CREATE_EFFECT_METADATA_KEY];\n return Object.assign({ propertyName }, metaData);\n });\n return metadata;\n}\n\nfunction getSourceForInstance(instance) {\n return Object.getPrototypeOf(instance);\n}\n\nconst METADATA_KEY = '__@ngrx/effects__';\n/**\n * @deprecated The Effect decorator (`@Effect`) is deprecated in favor for the `createEffect` method.\n * See the docs for more info {@link https://ngrx.io/guide/migration/v11#the-effect-decorator}\n */\nfunction Effect(config = {}) {\n return function (target, propertyName) {\n const metadata = Object.assign(Object.assign(Object.assign({}, DEFAULT_EFFECT_CONFIG), config), { propertyName });\n addEffectMetadataEntry(target, metadata);\n };\n}\nfunction getEffectDecoratorMetadata(instance) {\n const effectsDecorators = compose(getEffectMetadataEntries, getSourceForInstance)(instance);\n return effectsDecorators;\n}\n/**\n * Type guard to detemine whether METADATA_KEY is already present on the Class\n * constructor\n */\nfunction hasMetadataEntries(sourceProto) {\n return sourceProto.constructor.hasOwnProperty(METADATA_KEY);\n}\n/** Add Effect Metadata to the Effect Class constructor under specific key */\nfunction addEffectMetadataEntry(sourceProto, metadata) {\n if (hasMetadataEntries(sourceProto)) {\n sourceProto.constructor[METADATA_KEY].push(metadata);\n }\n else {\n Object.defineProperty(sourceProto.constructor, METADATA_KEY, {\n value: [metadata],\n });\n }\n}\nfunction getEffectMetadataEntries(sourceProto) {\n return hasMetadataEntries(sourceProto)\n ? sourceProto.constructor[METADATA_KEY]\n : [];\n}\n\nfunction getEffectsMetadata(instance) {\n return getSourceMetadata(instance).reduce((acc, { propertyName, dispatch, useEffectsErrorHandler }) => {\n acc[propertyName] = { dispatch, useEffectsErrorHandler };\n return acc;\n }, {});\n}\nfunction getSourceMetadata(instance) {\n const effects = [\n getEffectDecoratorMetadata,\n getCreateEffectMetadata,\n ];\n return effects.reduce((sources, source) => sources.concat(source(instance)), []);\n}\n\nfunction mergeEffects(sourceInstance, globalErrorHandler, effectsErrorHandler) {\n const sourceName = getSourceForInstance(sourceInstance).constructor.name;\n const observables$ = getSourceMetadata(sourceInstance).map(({ propertyName, dispatch, useEffectsErrorHandler, }) => {\n const observable$ = typeof sourceInstance[propertyName] === 'function'\n ? sourceInstance[propertyName]()\n : sourceInstance[propertyName];\n const effectAction$ = useEffectsErrorHandler\n ? effectsErrorHandler(observable$, globalErrorHandler)\n : observable$;\n if (dispatch === false) {\n return effectAction$.pipe(ignoreElements());\n }\n const materialized$ = effectAction$.pipe(materialize());\n return materialized$.pipe(map((notification) => ({\n effect: sourceInstance[propertyName],\n notification,\n propertyName,\n sourceName,\n sourceInstance,\n })));\n });\n return merge(...observables$);\n}\n\nconst MAX_NUMBER_OF_RETRY_ATTEMPTS = 10;\nfunction defaultEffectsErrorHandler(observable$, errorHandler, retryAttemptLeft = MAX_NUMBER_OF_RETRY_ATTEMPTS) {\n return observable$.pipe(catchError((error) => {\n if (errorHandler)\n errorHandler.handleError(error);\n if (retryAttemptLeft <= 1) {\n return observable$; // last attempt\n }\n // Return observable that produces this particular effect\n return defaultEffectsErrorHandler(observable$, errorHandler, retryAttemptLeft - 1);\n }));\n}\n\nclass Actions extends Observable {\n constructor(source) {\n super();\n if (source) {\n this.source = source;\n }\n }\n lift(operator) {\n const observable = new Actions();\n observable.source = this;\n observable.operator = operator;\n return observable;\n }\n}\n/** @nocollapse */ /** @nocollapse */ Actions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: Actions, deps: [{ token: ScannedActionsSubject }], target: i0.ɵɵFactoryTarget.Injectable });\n/** @nocollapse */ /** @nocollapse */ Actions.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: Actions });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: Actions, decorators: [{\n type: Injectable\n }], ctorParameters: function () {\n return [{ type: i1.Observable, decorators: [{\n type: Inject,\n args: [ScannedActionsSubject]\n }] }];\n } });\n/**\n * `ofType` filters an Observable of `Actions` into an Observable of the actions\n * whose type strings are passed to it.\n *\n * For example, if `actions` has type `Actions`, and\n * the type of the `Addition` action is `add`, then\n * `actions.pipe(ofType('add'))` returns an `Observable`.\n *\n * Properly typing this function is hard and requires some advanced TS tricks\n * below.\n *\n * Type narrowing automatically works, as long as your `actions` object\n * starts with a `Actions` instead of generic `Actions`.\n *\n * For backwards compatibility, when one passes a single type argument\n * `ofType('something')` the result is an `Observable`. Note, that `T`\n * completely overrides any possible inference from 'something'.\n *\n * Unfortunately, for unknown 'actions: Actions' these types will produce\n * 'Observable'. In such cases one has to manually set the generic type\n * like `actions.ofType('add')`.\n *\n * @usageNotes\n *\n * Filter the Actions stream on the \"customers page loaded\" action\n *\n * ```ts\n * import { ofType } from '@ngrx/effects';\n * import * fromCustomers from '../customers';\n *\n * this.actions$.pipe(\n * ofType(fromCustomers.pageLoaded)\n * )\n * ```\n */\nfunction ofType(...allowedTypes) {\n return filter((action) => allowedTypes.some((typeOrActionCreator) => {\n if (typeof typeOrActionCreator === 'string') {\n // Comparing the string to type\n return typeOrActionCreator === action.type;\n }\n // We are filtering by ActionCreator\n return typeOrActionCreator.type === action.type;\n }));\n}\n\nfunction reportInvalidActions(output, reporter) {\n if (output.notification.kind === 'N') {\n const action = output.notification.value;\n const isInvalidAction = !isAction(action);\n if (isInvalidAction) {\n reporter.handleError(new Error(`Effect ${getEffectName(output)} dispatched an invalid action: ${stringify(action)}`));\n }\n }\n}\nfunction isAction(action) {\n return (typeof action !== 'function' &&\n action &&\n action.type &&\n typeof action.type === 'string');\n}\nfunction getEffectName({ propertyName, sourceInstance, sourceName, }) {\n const isMethod = typeof sourceInstance[propertyName] === 'function';\n return `\"${sourceName}.${String(propertyName)}${isMethod ? '()' : ''}\"`;\n}\nfunction stringify(action) {\n try {\n return JSON.stringify(action);\n }\n catch (_a) {\n return action;\n }\n}\n\nconst onIdentifyEffectsKey = 'ngrxOnIdentifyEffects';\nfunction isOnIdentifyEffects(instance) {\n return isFunction(instance, onIdentifyEffectsKey);\n}\nconst onRunEffectsKey = 'ngrxOnRunEffects';\nfunction isOnRunEffects(instance) {\n return isFunction(instance, onRunEffectsKey);\n}\nconst onInitEffects = 'ngrxOnInitEffects';\nfunction isOnInitEffects(instance) {\n return isFunction(instance, onInitEffects);\n}\nfunction isFunction(instance, functionName) {\n return (instance &&\n functionName in instance &&\n typeof instance[functionName] === 'function');\n}\n\nconst _ROOT_EFFECTS_GUARD = new InjectionToken('@ngrx/effects Internal Root Guard');\nconst USER_PROVIDED_EFFECTS = new InjectionToken('@ngrx/effects User Provided Effects');\nconst _ROOT_EFFECTS = new InjectionToken('@ngrx/effects Internal Root Effects');\nconst ROOT_EFFECTS = new InjectionToken('@ngrx/effects Root Effects');\nconst _FEATURE_EFFECTS = new InjectionToken('@ngrx/effects Internal Feature Effects');\nconst FEATURE_EFFECTS = new InjectionToken('@ngrx/effects Feature Effects');\nconst EFFECTS_ERROR_HANDLER = new InjectionToken('@ngrx/effects Effects Error Handler');\n\nclass EffectSources extends Subject {\n constructor(errorHandler, effectsErrorHandler) {\n super();\n this.errorHandler = errorHandler;\n this.effectsErrorHandler = effectsErrorHandler;\n }\n addEffects(effectSourceInstance) {\n this.next(effectSourceInstance);\n }\n /**\n * @internal\n */\n toActions() {\n return this.pipe(groupBy(getSourceForInstance), mergeMap((source$) => {\n return source$.pipe(groupBy(effectsInstance));\n }), mergeMap((source$) => {\n const effect$ = source$.pipe(exhaustMap((sourceInstance) => {\n return resolveEffectSource(this.errorHandler, this.effectsErrorHandler)(sourceInstance);\n }), map((output) => {\n reportInvalidActions(output, this.errorHandler);\n return output.notification;\n }), filter((notification) => notification.kind === 'N' && notification.value != null), dematerialize());\n // start the stream with an INIT action\n // do this only for the first Effect instance\n const init$ = source$.pipe(take(1), filter(isOnInitEffects), map((instance) => instance.ngrxOnInitEffects()));\n return merge(effect$, init$);\n }));\n }\n}\n/** @nocollapse */ /** @nocollapse */ EffectSources.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: EffectSources, deps: [{ token: i0.ErrorHandler }, { token: EFFECTS_ERROR_HANDLER }], target: i0.ɵɵFactoryTarget.Injectable });\n/** @nocollapse */ /** @nocollapse */ EffectSources.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: EffectSources });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: EffectSources, decorators: [{\n type: Injectable\n }], ctorParameters: function () {\n return [{ type: i0.ErrorHandler }, { type: undefined, decorators: [{\n type: Inject,\n args: [EFFECTS_ERROR_HANDLER]\n }] }];\n } });\nfunction effectsInstance(sourceInstance) {\n if (isOnIdentifyEffects(sourceInstance)) {\n return sourceInstance.ngrxOnIdentifyEffects();\n }\n return '';\n}\nfunction resolveEffectSource(errorHandler, effectsErrorHandler) {\n return (sourceInstance) => {\n const mergedEffects$ = mergeEffects(sourceInstance, errorHandler, effectsErrorHandler);\n if (isOnRunEffects(sourceInstance)) {\n return sourceInstance.ngrxOnRunEffects(mergedEffects$);\n }\n return mergedEffects$;\n };\n}\n\nclass EffectsRunner {\n constructor(effectSources, store) {\n this.effectSources = effectSources;\n this.store = store;\n this.effectsSubscription = null;\n }\n start() {\n if (!this.effectsSubscription) {\n this.effectsSubscription = this.effectSources\n .toActions()\n .subscribe(this.store);\n }\n }\n ngOnDestroy() {\n if (this.effectsSubscription) {\n this.effectsSubscription.unsubscribe();\n this.effectsSubscription = null;\n }\n }\n}\n/** @nocollapse */ /** @nocollapse */ EffectsRunner.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: EffectsRunner, deps: [{ token: EffectSources }, { token: i3.Store }], target: i0.ɵɵFactoryTarget.Injectable });\n/** @nocollapse */ /** @nocollapse */ EffectsRunner.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: EffectsRunner });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: EffectsRunner, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: EffectSources }, { type: i3.Store }]; } });\n\nconst ROOT_EFFECTS_INIT = '@ngrx/effects/init';\nconst rootEffectsInit = createAction(ROOT_EFFECTS_INIT);\nclass EffectsRootModule {\n constructor(sources, runner, store, rootEffects, storeRootModule, storeFeatureModule, guard) {\n this.sources = sources;\n runner.start();\n rootEffects.forEach((effectSourceInstance) => sources.addEffects(effectSourceInstance));\n store.dispatch({ type: ROOT_EFFECTS_INIT });\n }\n addEffects(effectSourceInstance) {\n this.sources.addEffects(effectSourceInstance);\n }\n}\n/** @nocollapse */ /** @nocollapse */ EffectsRootModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: EffectsRootModule, deps: [{ token: EffectSources }, { token: EffectsRunner }, { token: i3.Store }, { token: ROOT_EFFECTS }, { token: i3.StoreRootModule, optional: true }, { token: i3.StoreFeatureModule, optional: true }, { token: _ROOT_EFFECTS_GUARD, optional: true }], target: i0.ɵɵFactoryTarget.NgModule });\n/** @nocollapse */ /** @nocollapse */ EffectsRootModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: EffectsRootModule });\n/** @nocollapse */ /** @nocollapse */ EffectsRootModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: EffectsRootModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: EffectsRootModule, decorators: [{\n type: NgModule,\n args: [{}]\n }], ctorParameters: function () {\n return [{ type: EffectSources }, { type: EffectsRunner }, { type: i3.Store }, { type: undefined, decorators: [{\n type: Inject,\n args: [ROOT_EFFECTS]\n }] }, { type: i3.StoreRootModule, decorators: [{\n type: Optional\n }] }, { type: i3.StoreFeatureModule, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [_ROOT_EFFECTS_GUARD]\n }] }];\n } });\n\nclass EffectsFeatureModule {\n constructor(root, effectSourceGroups, storeRootModule, storeFeatureModule) {\n effectSourceGroups.forEach((group) => group.forEach((effectSourceInstance) => root.addEffects(effectSourceInstance)));\n }\n}\n/** @nocollapse */ /** @nocollapse */ EffectsFeatureModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: EffectsFeatureModule, deps: [{ token: EffectsRootModule }, { token: FEATURE_EFFECTS }, { token: i3.StoreRootModule, optional: true }, { token: i3.StoreFeatureModule, optional: true }], target: i0.ɵɵFactoryTarget.NgModule });\n/** @nocollapse */ /** @nocollapse */ EffectsFeatureModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: EffectsFeatureModule });\n/** @nocollapse */ /** @nocollapse */ EffectsFeatureModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: EffectsFeatureModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: EffectsFeatureModule, decorators: [{\n type: NgModule,\n args: [{}]\n }], ctorParameters: function () {\n return [{ type: EffectsRootModule }, { type: undefined, decorators: [{\n type: Inject,\n args: [FEATURE_EFFECTS]\n }] }, { type: i3.StoreRootModule, decorators: [{\n type: Optional\n }] }, { type: i3.StoreFeatureModule, decorators: [{\n type: Optional\n }] }];\n } });\n\nclass EffectsModule {\n static forFeature(featureEffects = []) {\n return {\n ngModule: EffectsFeatureModule,\n providers: [\n featureEffects,\n {\n provide: _FEATURE_EFFECTS,\n multi: true,\n useValue: featureEffects,\n },\n {\n provide: USER_PROVIDED_EFFECTS,\n multi: true,\n useValue: [],\n },\n {\n provide: FEATURE_EFFECTS,\n multi: true,\n useFactory: createEffects,\n deps: [Injector, _FEATURE_EFFECTS, USER_PROVIDED_EFFECTS],\n },\n ],\n };\n }\n static forRoot(rootEffects = []) {\n return {\n ngModule: EffectsRootModule,\n providers: [\n {\n provide: EFFECTS_ERROR_HANDLER,\n useValue: defaultEffectsErrorHandler,\n },\n EffectsRunner,\n EffectSources,\n Actions,\n rootEffects,\n {\n provide: _ROOT_EFFECTS,\n useValue: [rootEffects],\n },\n {\n provide: _ROOT_EFFECTS_GUARD,\n useFactory: _provideForRootGuard,\n deps: [\n [EffectsRunner, new Optional(), new SkipSelf()],\n [_ROOT_EFFECTS, new Self()],\n ],\n },\n {\n provide: USER_PROVIDED_EFFECTS,\n multi: true,\n useValue: [],\n },\n {\n provide: ROOT_EFFECTS,\n useFactory: createEffects,\n deps: [Injector, _ROOT_EFFECTS, USER_PROVIDED_EFFECTS],\n },\n ],\n };\n }\n}\n/** @nocollapse */ /** @nocollapse */ EffectsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: EffectsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n/** @nocollapse */ /** @nocollapse */ EffectsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: EffectsModule });\n/** @nocollapse */ /** @nocollapse */ EffectsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: EffectsModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: EffectsModule, decorators: [{\n type: NgModule,\n args: [{}]\n }] });\nfunction createEffects(injector, effectGroups, userProvidedEffectGroups) {\n const mergedEffects = [];\n for (const effectGroup of effectGroups) {\n mergedEffects.push(...effectGroup);\n }\n for (const userProvidedEffectGroup of userProvidedEffectGroups) {\n mergedEffects.push(...userProvidedEffectGroup);\n }\n return createEffectInstances(injector, mergedEffects);\n}\nfunction createEffectInstances(injector, effects) {\n return effects.map((effect) => injector.get(effect));\n}\nfunction _provideForRootGuard(runner, rootEffects) {\n // check whether any effects are actually passed\n const hasEffects = !(rootEffects.length === 1 && rootEffects[0].length === 0);\n if (hasEffects && runner) {\n throw new TypeError(`EffectsModule.forRoot() called twice. Feature modules should use EffectsModule.forFeature() instead.`);\n }\n return 'guarded';\n}\n\n/**\n * Wraps project fn with error handling making it safe to use in Effects.\n * Takes either a config with named properties that represent different possible\n * callbacks or project/error callbacks that are required.\n */\nfunction act(\n/** Allow to take either config object or project/error functions */\nconfigOrProject, errorFn) {\n const { project, error, complete, operator, unsubscribe } = typeof configOrProject === 'function'\n ? {\n project: configOrProject,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n error: errorFn,\n operator: concatMap,\n complete: undefined,\n unsubscribe: undefined,\n }\n : Object.assign(Object.assign({}, configOrProject), { operator: configOrProject.operator || concatMap });\n return (source) => defer(() => {\n const subject = new Subject();\n return merge(source.pipe(operator((input, index) => defer(() => {\n let completed = false;\n let errored = false;\n let projectedCount = 0;\n return project(input, index).pipe(materialize(), map((notification) => {\n switch (notification.kind) {\n case 'E':\n errored = true;\n return new Notification('N', error(notification.error, input));\n case 'C':\n completed = true;\n return complete\n ? new Notification('N', complete(projectedCount, input))\n : undefined;\n default:\n ++projectedCount;\n return notification;\n }\n }), filter((n) => n != null), dematerialize(), finalize(() => {\n if (!completed && !errored && unsubscribe) {\n subject.next(unsubscribe(projectedCount, input));\n }\n }));\n }))), subject);\n });\n}\n\n/**\n * `concatLatestFrom` combines the source value\n * and the last available value from a lazily evaluated Observable\n * in a new array\n *\n * @usageNotes\n *\n * Select the active customer from the NgRx Store\n *\n * ```ts\n * import { concatLatestFrom } from '@ngrx/effects';\n * import * as fromCustomers from '../customers';\n *\n * this.actions$.pipe(\n * concatLatestFrom(() => this.store.select(fromCustomers.selectActiveCustomer))\n * )\n * ```\n *\n * Select a customer from the NgRx Store by its id that is available on the action\n *\n * ```ts\n * import { concatLatestFrom } from '@ngrx/effects';\n * import * fromCustomers from '../customers';\n *\n * this.actions$.pipe(\n * concatLatestFrom((action) => this.store.select(fromCustomers.selectCustomer(action.customerId)))\n * )\n * ```\n */\nfunction concatLatestFrom(observablesFactory) {\n return pipe(concatMap((value) => {\n const observables = observablesFactory(value);\n const observablesAsArray = Array.isArray(observables)\n ? observables\n : [observables];\n return of(value).pipe(withLatestFrom(...observablesAsArray));\n }));\n}\n\n/**\n * DO NOT EDIT\n *\n * This file is automatically generated at build\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Actions, EFFECTS_ERROR_HANDLER, Effect, EffectSources, EffectsFeatureModule, EffectsModule, EffectsRootModule, EffectsRunner, ROOT_EFFECTS_INIT, USER_PROVIDED_EFFECTS, act, concatLatestFrom, createEffect, defaultEffectsErrorHandler, getEffectsMetadata, mergeEffects, ofType, rootEffectsInit };\n","import { Notification } from '../Notification';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function materialize() {\n return operate((source, subscriber) => {\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n subscriber.next(Notification.createNext(value));\n }, () => {\n subscriber.next(Notification.createComplete());\n subscriber.complete();\n }, (err) => {\n subscriber.next(Notification.createError(err));\n subscriber.complete();\n }));\n });\n}\n","import { observeNotification } from '../Notification';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function dematerialize() {\n return operate((source, subscriber) => {\n source.subscribe(createOperatorSubscriber(subscriber, (notification) => observeNotification(notification, subscriber)));\n });\n}\n","export class Reduction {\n id: number;\n type: string;\n price: string;\n\n constructor(id, price, type) {\n this.id = id;\n this.price = price;\n this.type = type;\n }\n /*\n private SetNameReduction(id: string, type: string): string {\n const reduc = 'RÉDUCTION ';\n switch (type) {\n case 'online':\n return 'CERTIFICAT PEB';\n case 'promoCode':\n return 'CONTRÔLE ÉLECTRIQUE';\n\n default:\n return reduc + type;\n }\n } */\n}\n","import { Component, OnInit, Inject } from '@angular/core';\nimport { MAT_SNACK_BAR_DATA } from '@angular/material/snack-bar';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Component({\n selector: 'app-pack-selected',\n templateUrl: './pack-selected.component.html',\n styleUrls: ['./pack-selected.component.scss']\n})\nexport class PackSelectedComponent implements OnInit {\n packName: string;\n param;\n\n constructor(\n @Inject(MAT_SNACK_BAR_DATA)\n public data: {\n id: number;\n services: number[];\n fileName: string;\n reduc: string;\n servicesInfo: { id: number; fileName: string }[];\n totalWithReduc: number;\n servicesRed: number;\n servicesPrice: number;\n description: string;\n },\n private translate: TranslateService\n ) {}\n\n ngOnInit() {\n this.translate\n .get('section-money.reductions.' + parseInt(this.data?.description, 10))\n .subscribe(result => (this.packName = result));\n this.param = {\n packName: this.packName,\n reduction: this.data.reduc\n };\n }\n}\n","
    \n \n
    \n

    \n {{ 'snackbar-pack-selected.title' | translate: param }}\n \n

    \n

    \n
    \n
    \n","import { VisitAdValoris } from './../models/visitAdValoris';\nimport { map, switchMap, take } from 'rxjs/operators';\nimport { Injectable } from '@angular/core';\nimport { Effect, Actions, ofType } from '@ngrx/effects';\nimport { Store } from '@ngrx/store';\n\nimport { ActionTypes } from './../store/order/';\nimport * as fromOrder from '../store/order/order.actions';\nimport * as fromUI from '../store/ui/ui.actions';\nimport { AppState } from '../../interfaces';\n\nimport * as estates from './../data/estates';\nimport { Product } from '../models/product';\nimport { DataService } from '../services/data.service';\nimport * as PRODUCTS from '../data/products';\nimport { getServices } from '../store/order/order.selectors';\nimport { Reduction } from '../models/reduction';\nimport { descriptifPacks, ONLINE_REDUC } from '../data';\nimport * as orderSelector from '../store/order/order.selectors';\nimport * as uiSelector from '../store/ui/ui.selectors';\nimport { Document } from '../models/document';\nimport { Owner, UserForm, User, UserType } from '../models/user';\nimport { Address } from '../models/address';\nimport { Region } from '../models/region';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { PackSelectedComponent } from 'src/app/snackbars/pack-selected/pack-selected.component';\nimport { PromoCodeDB } from '../models/PromoCodeDB';\nimport { DESCRIPTIF } from '../data/products';\nimport { LoggerService } from '../services/logger.service';\n\nimport { projectID } from '../data/theme-config';\nimport { VENTES } from '../enums/vente.enum';\nimport { defaultVenteInfo } from '../models/venteInfo';\nimport { Print } from '../models/print';\nimport { Panel } from '../models/paper';\n\n@Injectable()\nexport class OrderEffects {\n descriptifPacks: number[];\n\n services: number[];\n products: Product[];\n getPacksWithPricesNoFilt: any[];\n newUserType;\n owner;\n showpacks: boolean;\n immoPackSelected: number;\n userPricingPlan: number;\n userType: number;\n region: number;\n statut: number;\n esateType: number;\n estateStyle: number;\n reason: number;\n venteType: number;\n\n gazChoice: number;\n\n onlineReduc = ONLINE_REDUC;\n\n constructor(\n private actions$: Actions,\n private dataService: DataService,\n private store: Store,\n private snackBar: MatSnackBar,\n private logger: LoggerService\n ) {\n this.store.select(getServices).subscribe(serv => (this.services = serv));\n this.store.select(orderSelector.getProducts).subscribe(pr => (this.products = pr));\n this.store.select(orderSelector.getUserType).subscribe(ut => (this.newUserType = ut));\n this.store.select(orderSelector.getOwner).subscribe(o => (this.owner = o));\n this.store.select(orderSelector.getImmoPack).subscribe(i => (this.immoPackSelected = i));\n this.store.select(uiSelector.getShowPacks).subscribe(s => (this.showpacks = s));\n this.store.select(orderSelector.getPricingPlan).subscribe(pp => (this.userPricingPlan = pp));\n this.store.select(orderSelector.getUserType).subscribe(u => (this.userType = u));\n this.store.select(orderSelector.getRegion).subscribe(r => (this.region = r));\n this.store.select(orderSelector.getReason).subscribe(r => (this.reason = r));\n this.store.select(orderSelector.getVenteType).subscribe(v => (this.venteType = v));\n this.store.select(orderSelector.getEstateID).subscribe(e => (this.esateType = e));\n this.store.select(orderSelector.getEstateStyle).subscribe(e => (this.estateStyle = e));\n this.store.select(orderSelector.gazChoice).subscribe(g => (this.gazChoice = g));\n this.store.select(uiSelector.getPacksWithPricesNoFilt)\n .subscribe(pack => {\n this.getPacksWithPricesNoFilt = pack;\n // if pack changed reload products and reducs\n this.getProducts(this.products.map(p => p.id));\n });\n\n this.descriptifPacks = descriptifPacks;\n }\n\n @Effect()\n actionReason$ = this.actions$.pipe(\n ofType(ActionTypes.SET_REASON),\n switchMap((action: any) => {\n return [\n new fromOrder.SetEstateType(-1),\n new fromOrder.SetRegion(-1),\n new fromOrder.SetServices([]),\n new fromOrder.SetAddress(new Address()),\n new fromUI.ShowMoreServices(false)\n ];\n })\n );\n\n @Effect()\n actionImmoOrCtrl$ = this.actions$.pipe(\n ofType(ActionTypes.SET_IMMOORCTRL),\n switchMap((action: any) => {\n return [\n new fromOrder.SetEstateType(-1),\n new fromOrder.SetServices([]),\n action.payload === 1 ? new fromUI.ShowMoreServices(true) : new fromUI.ShowMoreServices(false)\n ];\n })\n );\n\n @Effect()\n actionVenteType$ = this.actions$.pipe(\n ofType(ActionTypes.SET_VENTETYPE),\n switchMap((action: any) => {\n return [new fromOrder.SetServices([]), new fromOrder.SetVenteInfo(defaultVenteInfo)];\n })\n );\n\n @Effect()\n actionRegion$ = this.actions$.pipe(\n ofType(ActionTypes.SET_REGION),\n switchMap((action: any) => [\n new fromOrder.SetRegionInfo(this.getRegion(action.payload)),\n new fromOrder.SetProducts(this.getProducts(this.services))\n ])\n );\n\n @Effect()\n actionX$ = this.actions$.pipe(\n ofType(ActionTypes.SET_ESTATETYPE),\n map((action: any) => new fromOrder.SetProducts(this.getProducts(this.services)))\n );\n\n @Effect()\n actionEstateStyles$ = this.actions$.pipe(\n ofType(ActionTypes.SET_ESTATESTYLE),\n map((action: any) => this.checkStyles(this.services, action.payload))\n );\n\n @Effect()\n actionY$ = this.actions$.pipe(\n ofType(ActionTypes.SET_SERVICES),\n map((action: any) => new fromOrder.SetProducts(this.getProducts(action.payload)))\n );\n\n @Effect()\n actionNbOfApp$ = this.actions$.pipe(\n ofType(ActionTypes.SET_NUMBEROFAPPARTMENTS),\n map((action: any) => new fromOrder.SetProducts(this.getProducts(this.services)))\n );\n\n @Effect()\n actionOnlinePayment$ = this.actions$.pipe(\n ofType(ActionTypes.TOGGLE_ONLINEPAYMENT),\n map((action: any) => new fromOrder.SetReductions(this.checkReductionOnline()))\n );\n\n @Effect()\n actionPromoCode$ = this.actions$.pipe(\n ofType(ActionTypes.SET_PROMOCODE),\n map((action: any) => new fromOrder.SetProducts(this.getProducts(this.services)))\n );\n\n @Effect()\n actionGazChoice$ = this.actions$.pipe(\n ofType(ActionTypes.SET_GAZCHOICE),\n map((action: any) => new fromOrder.SetProducts(this.getProducts(this.services)))\n );\n\n @Effect()\n actionInvoiceTo$ = this.actions$.pipe(\n ofType(ActionTypes.SET_INVOICETO),\n map((action: any) => this.fillDocumentInfo(action.payload))\n );\n\n @Effect()\n actionSetUserForm$ = this.actions$.pipe(\n ofType(ActionTypes.SET_USERFORM),\n map((action: any) => new fromOrder.SetOwner(this.getOwner(action.payload)))\n );\n\n @Effect()\n actionSetUserInfo$ = this.actions$.pipe(\n ofType(ActionTypes.SET_USERINFO),\n switchMap((action: any) => [\n new fromOrder.SetProducts(this.getProducts(this.services)),\n new fromOrder.SetOwner(this.getOwner(action.payload))\n ])\n );\n\n @Effect()\n actionUrgent$ = this.actions$.pipe(\n ofType(ActionTypes.TOGGLE_URGENCE),\n map((action: any) => new fromOrder.ToggleOnlinePayment(true))\n );\n\n @Effect()\n actionUrgentPro$ = this.actions$.pipe(\n ofType(ActionTypes.TOGGLE_URGENCE_PRO),\n map((action: any) => this.addUrgentPro(action.payload))\n );\n\n @Effect()\n actionParutions$ = this.actions$.pipe(\n ofType(ActionTypes.SET_PARUTIONS),\n map((action: any) => this.checkParutions(action.payload))\n );\n\n @Effect()\n actionPanels$ = this.actions$.pipe(\n ofType(ActionTypes.SET_PANELS),\n map((action: any) => this.checkPanels(action.payload))\n );\n\n @Effect()\n actionVisitAdValoris$ = this.actions$.pipe(\n ofType(ActionTypes.SET_VISITADVALORIS),\n map((action: any) => this.checkVisitAdValoris(action.payload))\n );\n\n @Effect()\n actionSplitFacturation$ = this.actions$.pipe(\n ofType(ActionTypes.SET_SPLIT_INVOICE),\n map((action: any) => this.checkSplitFacturation(action.payload))\n );\n\n private getRegion(id: number): Region {\n return this.dataService.getRegionTypes().find(r => r.id === id);\n }\n\n private getOwner(user: UserForm) {\n if (this.newUserType === UserType.Particulier) {\n const owner = new Owner();\n owner.title = user.title;\n owner.email = user.email;\n owner.firstname = user.firstname;\n owner.lastname = user.lastname;\n owner.phone = user.phone;\n owner.commercialname = user.commercialname;\n owner.companyname = user.companyname;\n owner.tva = user.tva;\n owner.gsm = user.gsm;\n owner.indicator = user.indicator;\n owner.indicatorphone = user.indicatorphone;\n return owner;\n } else {\n return this.owner;\n }\n }\n\n private checkSplitFacturation(split: boolean) {\n const agencyProducts = split ? [...this.products].filter(pr => pr.id > 17 || pr.id === PRODUCTS.PLAN) : [];\n return new fromOrder.SetAgencyProducts(agencyProducts);\n }\n\n private checkStyles(services, styleID: number) {\n /* if (styleID === -1) {\n return new fromOrder.SetServices([]);\n } else {\n return new fromOrder.SetProducts(this.getProducts(services));\n } */\n /* if (styleID === 3) {\n return new fromOrder.SetEstateType(estates.TERRAIN);\n } */\n return new fromOrder.SetServices([]);\n }\n\n private checkParutions(p) {\n let serv = [...this.services];\n const fullPressList: Print = [...p].find(pr => pr.id === PRODUCTS.FullPress);\n const hasFullPressParu = this.services.find(s => s === PRODUCTS.FullPress);\n if (!hasFullPressParu && fullPressList) {\n const arrayFP = new Array(fullPressList.nbOfWeeks).fill(PRODUCTS.FullPress);\n serv = [...this.services, ...arrayFP];\n } else if (hasFullPressParu && !fullPressList) {\n serv = [...this.services].filter(id => id !== PRODUCTS.FullPress);\n }\n const withoutFullPressList = [...p].filter(pr => pr.id !== PRODUCTS.FullPress);\n if (withoutFullPressList.length > 0) {\n const ids = withoutFullPressList.map(par => par.id);\n serv = [\n ...serv.filter(\n id =>\n (id < PRODUCTS.PublicationVlan ||\n id > PRODUCTS.PublicationProximagArdennes ||\n id === PRODUCTS.VISITADVALORIS ||\n id === PRODUCTS.LOCKSMITH) &&\n (id < PRODUCTS.ProximagNamurBW || id > PRODUCTS.ProximagHainautOutOfOcc) &&\n id !== PRODUCTS.VlanEditionLocal &&\n (id >= PRODUCTS.ProximagNamurBW || id <= PRODUCTS.ProximagHainautOutOfOcc)\n ),\n ...ids\n ];\n } else if (withoutFullPressList.length === 0) {\n serv = [...serv].filter(\n id =>\n (id < PRODUCTS.PublicationVlan ||\n id > PRODUCTS.PublicationProximagArdennes ||\n id === PRODUCTS.VISITADVALORIS ||\n id === PRODUCTS.LOCKSMITH) &&\n (id < PRODUCTS.ProximagNamurBW || id > PRODUCTS.ProximagHainautOutOfOcc) &&\n id !== PRODUCTS.VlanEditionLocal\n );\n }\n return new fromOrder.SetServices(serv);\n }\n\n private checkPanels(p: Panel[]) {\n const ids = p.map(panel => panel.id);\n const serv = [...this.services.filter(s => s !== PRODUCTS.PANEL_STANDARD && s !== PRODUCTS.PANEL_XL_CERTI)];\n return new fromOrder.SetServices([...serv, ...ids]);\n }\n\n private checkVisitAdValoris(av: VisitAdValoris) {\n let serv = [...this.services];\n const hasVisitForfait = this.services.find(\n s =>\n s === PRODUCTS.VISITADVALORIS ||\n s === PRODUCTS.VisitGil4S ||\n s === PRODUCTS.VisitGil6S ||\n s === PRODUCTS.VisitGilBoundless_3M\n );\n const selectedForfait = av.forfaits.find(f => f.active);\n if (!hasVisitForfait && selectedForfait) {\n serv = [...this.services, selectedForfait.id];\n av.options.map(op => op.active && serv.push(op.id));\n } else if (hasVisitForfait && !selectedForfait) {\n serv = [...this.services].filter(\n id =>\n id !== PRODUCTS.VISITADVALORIS &&\n id !== PRODUCTS.VisitGil4S &&\n id !== PRODUCTS.VisitGil6S &&\n id !== PRODUCTS.VisitGilBoundless_3M &&\n id !== PRODUCTS.VisitGil2Times_Bid &&\n id !== PRODUCTS.VisitGilBoundless_Bid\n );\n }\n return new fromOrder.SetServices(serv);\n }\n\n private fillDocumentInfo(type: string) {\n const doc = new Document();\n let owner: Owner;\n let userForm: UserForm;\n let user: User;\n let address: Address;\n this.store.select(orderSelector.getOwner).subscribe(o => (owner = o));\n this.store.select(orderSelector.getUserForm).subscribe(u => (userForm = u));\n this.store.select(orderSelector.getAddress).subscribe(a => (address = a));\n this.store.select(orderSelector.getUserInfo).subscribe(u => (user = u));\n if (type === 'toProprio') {\n doc.firstName = owner.firstname !== null ? owner.firstname : userForm.firstname;\n doc.lastName = owner.lastname !== null ? owner.lastname : userForm.lastname;\n doc.address.street = address.street;\n doc.address.number = address.number;\n doc.address.boxNumber = address.boxNumber;\n doc.address.apartmentNumber = address.apartmentNumber;\n doc.address.zip = address.zip;\n doc.address.city = address.city;\n } else if (type === 'toProprioAndPro') {\n doc.firstName = owner.firstname;\n doc.lastName = owner.lastname + ' C/o ' + user.lastname;\n doc.address.street = user.address.street;\n doc.address.number = user.address.number;\n doc.address.boxNumber = user.address.boxNumber;\n doc.address.apartmentNumber = user.address.apartmentNumber;\n doc.address.zip = user.address.zip;\n doc.address.city = user.address.city;\n } else if (type === 'toPro') {\n doc.firstName = user.firstname;\n doc.lastName = user.lastname;\n doc.address.street = user.address.street;\n doc.address.number = user.address.number;\n doc.address.boxNumber = user.address.boxNumber;\n doc.address.apartmentNumber = user.address.apartmentNumber;\n doc.address.zip = user.address.zip;\n doc.address.city = user.address.city;\n }\n\n return new fromOrder.SetDocument(doc);\n }\n\n private checkReductionOnline() {\n let onlinePayment;\n let reductions;\n this.store.select(orderSelector.getOnlinePayment).subscribe(o => (onlinePayment = o));\n this.store.select(orderSelector.getReductions).subscribe(r => (reductions = [...r]));\n if (onlinePayment) {\n const reduction = new Reduction(1001, this.onlineReduc, 'Réduction paiement en ligne');\n reductions.push(reduction);\n } else {\n reductions = reductions.filter(r => r.id !== 1001);\n }\n\n return reductions;\n }\n\n private checkReductionPromoCode(): Promise {\n let promoCode;\n let products;\n let region;\n let estate;\n\n this.store.select(orderSelector.getPromoCode).subscribe(p => (promoCode = p));\n this.store.select(orderSelector.getServices).subscribe(p => (products = p));\n this.store.select(orderSelector.getRegion).subscribe(r => (region = r));\n this.store.select(orderSelector.getEstateID).subscribe(e => (estate = e));\n const found = this.dataService.isPromoCodeValid(promoCode, products, region, estate);\n\n return found;\n }\n\n private getProducts(ids: number[]): Product[] {\n if (ids.length === 0) {\n this.store.dispatch(new fromOrder.SetImmoPack(-1));\n this.store.dispatch(new fromOrder.SetPackID(''));\n this.store.dispatch(new fromOrder.SetPackName(''));\n return [];\n }\n\n this.store\n .select(orderSelector.getUrgence)\n .pipe(take(1))\n .subscribe(u => {\n if (u) {\n this.store.dispatch(new fromOrder.ToggleUrgence(true));\n }\n });\n\n this.store\n .select(orderSelector.getUrgencePro)\n .pipe(take(1))\n .subscribe(u => {\n if (u && !ids.find(id => id === PRODUCTS.URGENT_PRO)) {\n this.store.dispatch(new fromOrder.ToggleUrgencePro(false));\n }\n });\n\n const reductions: Reduction[] = [];\n // this.logger.log('calculating price');\n\n let panels: Panel[] = [];\n this.store\n .select(orderSelector.getPanels)\n .pipe(take(1))\n .subscribe(pan => (panels = pan));\n\n const products = ids.map(id => {\n const prod = this.dataService.getProductPrice(id);\n if (this.estateStyle === 3 && (id === 29 || id === 32)) {\n id += 1;\n }\n\n if (panels.length && (id === PRODUCTS.PANEL_STANDARD || id === PRODUCTS.PANEL_XL_CERTI)) {\n const panelFound = panels.find(pa => pa.id === id);\n prod.price = panelFound.totalPrice;\n panels = panels.filter(p => p !== panelFound);\n } else if (id === PRODUCTS.DEPLACEMENT) {\n this.store.select(orderSelector.getAddressKeyPrice).subscribe(keyPrice => {\n prod.price = keyPrice;\n prod.reduc = 0;\n prod.commission = 0;\n });\n }\n\n return new Product(id, prod.price, prod.reduc, prod.commission);\n });\n\n products.forEach(prod => {\n let reduction: Reduction;\n let reduc = Number(prod.reduction);\n // Check if prod.id is in pricingPlansDB.services for region and estatetype and add special reduction\n //if (this.userPricingPlan !== 0 && this.esateType !== estates.IMMEUBLE_APPART) {\n //reduc = this.dataService.getStatutReduc(prod.id, reduc, this.dataService.getProduct(prod.id));\n //}\n if (reduc && reduc !== 0) {\n reduction = new Reduction(prod.id, reduc, 'Réduction ' + prod.name);\n reductions.push(reduction);\n }\n });\n\n if (this.gazChoice === 0) {\n const gaz = reductions.filter(r => r.id === 15).length > 0 ? reductions.filter(r => r.id === 15)[0] : null;\n if (gaz) {\n gaz.price = +gaz.price + 0 + '';\n }\n }\n\n const packReducs = this.checkForPacks(products);\n\n // Check if there is a packReducs.id in pricingPlansDB.services for region and estatetype and add special reduction\n\n const redOnline = !this.getReductionOnline() ? [] : this.getReductionOnline();\n\n this.checkReductionPromoCode().then(promoCode => {\n let reducCode = [];\n if (promoCode) {\n let code = '';\n if (typeof promoCode !== 'undefined') {\n reducCode = [new Reduction(1002, promoCode.PromoCode.reduc, `${promoCode.KeyWord}`)];\n code = promoCode.id;\n this.logger.log(reducCode);\n }\n this.store.dispatch(new fromOrder.SetPromoCodeID(code));\n }\n this.store.dispatch(\n new fromOrder.SetReductions(\n reductions\n .concat(packReducs ? packReducs : [])\n .concat(redOnline)\n .concat(reducCode)\n )\n );\n });\n\n return products;\n }\n\n private getReductionOnline() {\n let onlinePayment;\n let reduction;\n this.store.select(orderSelector.getOnlinePayment).subscribe(o => (onlinePayment = o));\n if (onlinePayment) {\n reduction = new Reduction(1001, this.onlineReduc, 'RÉDUCTION PAIEMENT EN LIGNE');\n }\n\n return reduction;\n }\n\n checkForPacks(products: Product[]): Reduction {\n let reduction: Reduction;\n const immoPacks = JSON.parse(JSON.stringify(this.getPacksWithPricesNoFilt));\n if (!immoPacks) {\n window.location.reload();\n } else if (products.length > 0 && immoPacks.length > 0) {\n const productsID: number[] = [];\n let biggestReductionPack = null;\n let biggestLength = 0;\n products.map(p => productsID.push(p.id));\n this.logger.log('productsID', productsID);\n // saving only pack with biggest reduction\n if (\n (projectID === 'namur' || projectID === 'hainaut' || projectID === 'nvn' || projectID === 'liege') &&\n this.immoPackSelected !== -1\n ) {\n this.logger.log('immoPackSelected', this.immoPackSelected);\n const packReduc = immoPacks.find(pa => this.immoPackSelected === +pa.description);\n biggestReductionPack = packReduc;\n } else {\n immoPacks.forEach(pack => {\n if (projectID === 'namur' || projectID === 'hainaut' || projectID === 'nvn' || projectID === 'liege') {\n const found =\n pack.services.length > 0 &&\n pack.services.every(s => productsID.indexOf(s) >= 0) &&\n productsID.length >= pack.services.length;\n this.logger.log(found);\n if (found) {\n const packReduc = immoPacks.filter(p => p.id === pack.id)[0];\n biggestReductionPack = packReduc;\n }\n } else {\n this.logger.log('pack', pack.services);\n const found = pack.services.every(s => productsID.indexOf(s) >= 0);\n this.logger.log(found);\n if (found) {\n const packReduc = immoPacks.filter(p => p.id === pack.id)[0];\n if (!biggestReductionPack) {\n biggestReductionPack = packReduc;\n biggestLength = pack.services.length;\n }\n biggestReductionPack =\n packReduc.reduc > biggestReductionPack.reduc && pack.services.length >= biggestLength\n ? packReduc\n : biggestReductionPack;\n }\n }\n });\n }\n if (biggestReductionPack) {\n this.store.dispatch(new fromOrder.SetPackID(biggestReductionPack.id));\n this.store.dispatch(new fromOrder.SetPackName(biggestReductionPack.name));\n let reduc = Number(biggestReductionPack.reduc);\n const packID = parseInt(biggestReductionPack.description, 10);\n this.logger.log('packID', biggestReductionPack);\n \n reduc = this.dataService.getStatutReduc(packID, reduc, this.dataService.getProduct(packID),this.userType);\n biggestReductionPack.reduc = reduc;\n \n // this.logger.log(reduc);\n if (reduc && reduc !== 0) {\n reduction = new Reduction(packID, reduc, 'Réduction ' + biggestReductionPack.name);\n }\n if (!this.showpacks && this.immoPackSelected !== packID) {\n this.snackBar.openFromComponent(PackSelectedComponent, {\n panelClass: 'snackbar-success',\n data: biggestReductionPack\n });\n this.store.dispatch(new fromOrder.SetImmoPack(packID));\n // this.logger.log(biggestReductionPack);\n }\n\n const found = this.services.indexOf(DESCRIPTIF) > -1;\n const foundPlaquette = this.services.indexOf(PRODUCTS.PLAQUETTE) > -1;\n const descriptifPack = this.descriptifPacks?.some(id => id === packID);\n this.logger.log('found?', found);\n this.logger.log('descriptifPack?', descriptifPack);\n\n const tempProducts = [...this.services];\n if (found && !foundPlaquette) {\n tempProducts.push(PRODUCTS.PLAQUETTE);\n tempProducts.push(PRODUCTS.LIVRET);\n tempProducts.push(PRODUCTS.AFFICHETTE);\n this.store.dispatch(new fromOrder.SetServices(tempProducts));\n }\n } else {\n this.store.dispatch(new fromOrder.SetPackID(''));\n this.store.dispatch(new fromOrder.SetPackName(''));\n const found = this.services.indexOf(DESCRIPTIF) && this.services.indexOf(PRODUCTS.PLAQUETTE) > -1;\n if (found) {\n let tempProducts = [...this.services];\n // tempProducts = tempProducts.filter(pr => pr !== DESCRIPTIF);\n tempProducts = tempProducts.filter(pr => pr !== PRODUCTS.DESCRIPTIF_URBA);\n tempProducts = tempProducts.filter(pr => pr !== PRODUCTS.PLAQUETTE);\n tempProducts = tempProducts.filter(pr => pr !== PRODUCTS.LIVRET);\n tempProducts = tempProducts.filter(pr => pr !== PRODUCTS.AFFICHETTE);\n this.store.dispatch(new fromOrder.SetServices(tempProducts));\n }\n this.store.dispatch(new fromOrder.SetImmoPack(-1));\n }\n }\n\n this.checkNeedAddForfait();\n return reduction;\n }\n\n checkNeedAddForfait() {\n this.store\n .select(orderSelector.getPackID)\n .pipe(take(1))\n .subscribe(id => {\n const tempProducts = [...this.services];\n if (projectID === 'nvn' && id !== -1 && !tempProducts.find(d => d === PRODUCTS.Fees)) {\n tempProducts.push(PRODUCTS.Fees);\n if (id === 9994) {\n tempProducts.push(PRODUCTS.EXTRA);\n }\n this.store.dispatch(new fromOrder.SetServices(tempProducts));\n this.logger.log('⚡️ Add Frais de dossier ⚡️');\n }\n if (\n projectID !== 'default' &&\n id !== -1 &&\n this.venteType === VENTES.BIDDIT &&\n !tempProducts.find(d => d === PRODUCTS.BidditFees)\n ) {\n tempProducts.push(PRODUCTS.BidditFees);\n this.store.dispatch(new fromOrder.SetServices(tempProducts));\n this.logger.log('⚡️ Add Frais Biddit ⚡️');\n }\n });\n }\n\n addUrgentPro(isChecked: boolean) {\n const hasUrgentPro = this.services.find(s => s === PRODUCTS.URGENT_PRO);\n let tempProducts = [...this.services];\n\n if (isChecked && !hasUrgentPro) {\n tempProducts.push(PRODUCTS.URGENT_PRO);\n this.logger.log('⚡️ Add URGENT_PRO ⚡️');\n } else if (!isChecked && hasUrgentPro) {\n tempProducts = [...tempProducts].filter(pr => pr !== PRODUCTS.URGENT_PRO);\n this.logger.log('⚡️ Remove URGENT_PRO ⚡️');\n }\n return new fromOrder.SetServices(tempProducts);\n }\n}\n","import { ActionReducerMap, ActionReducer, MetaReducer, Action } from '@ngrx/store';\nimport { localStorageSync } from 'ngrx-store-localstorage';\n\nimport { AppState as State } from './interfaces';\n\nimport * as fromOrder from './core/store/order/order.reducer';\nimport * as fromUI from './core/store/ui/ui.reducer';\n\nconst STORE_KEYS_TO_PERSIST = ['order', 'ui'];\n\nexport const reducers: ActionReducerMap = {\n order: fromOrder.reducer,\n ui: fromUI.reducer\n};\n\nexport function localStorageSyncReducer(reducer: ActionReducer): ActionReducer {\n return localStorageSync({\n keys: STORE_KEYS_TO_PERSIST,\n rehydrate: true\n })(reducer);\n}\n\nexport const metaReducers: Array> = [localStorageSyncReducer];\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","export default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nexport function childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return this.children;\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\nexport default function(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport array from \"../array.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = new Map,\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function(value, key) {\n if (!arguments.length) return Array.from(this, datum);\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = array(value.call(parent, parent && parent.__data__, j, parents)),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","function contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n var group = select.apply(this, arguments);\n return group == null ? [] : array(group);\n };\n}\n\nexport default function(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n enter = typeof onenter === \"function\" ? onenter(enter) : enter.append(onenter + \"\");\n if (onupdate != null) update = onupdate(update);\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(selection) {\n if (!(selection instanceof Selection)) throw new Error(\"invalid merge\");\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","export default function*() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) yield node;\n }\n }\n}\n","import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","export function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {select} from \"d3-selection\";\nimport noevent from \"./noevent.js\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, true);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, true);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nexport function yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", noevent, true);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy: function(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable: function() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb: function() {\n return this;\n },\n displayable: function() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"rgb(\" : \"rgba(\")\n + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n value = Math.max(0, Math.min(255, Math.round(value) || 0));\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter: function(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker: function(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb: function() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n displayable: function() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl: function() {\n var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n return (a === 1 ? \"hsl(\" : \"hsla(\")\n + (this.h || 0) + \", \"\n + (this.s || 0) * 100 + \"%, \"\n + (this.l || 0) * 100 + \"%\"\n + (a === 1 ? \")\" : \", \" + a + \")\");\n }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n var nb = b ? b.length : 0,\n na = a ? Math.min(nb, a.length) : 0,\n x = new Array(na),\n c = new Array(nb),\n i;\n\n for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n for (; i < nb; ++i) c[i] = b[i];\n\n return function(t) {\n for (i = 0; i < na; ++i) c[i] = x[i](t);\n return c;\n };\n}\n","export default function(a, b) {\n var d = new Date;\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import value from \"./value.js\";\n\nexport default function(a, b) {\n var i = {},\n c = {},\n k;\n\n if (a === null || typeof a !== \"object\") a = {};\n if (b === null || typeof b !== \"object\") b = {};\n\n for (k in b) {\n if (k in a) {\n i[k] = value(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n\n return function(t) {\n for (k in i) c[k] = i[k](t);\n return c;\n };\n}\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","export default function(a, b) {\n if (!b) b = [];\n var n = a ? Math.min(b.length, a.length) : 0,\n c = b.slice(),\n i;\n return function(t) {\n for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\n\nexport function isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant(b)\n : (t === \"number\" ? number\n : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n : b instanceof color ? rgb\n : b instanceof Date ? date\n : isNumberArray(b) ? numberArray\n : Array.isArray(b) ? genericArray\n : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n : number)(a, b);\n}\n","import sourceEvent from \"./sourceEvent.js\";\n\nexport default function(event, node) {\n event = sourceEvent(event);\n if (node === undefined) node = event.currentTarget;\n if (node) {\n var svg = node.ownerSVGElement || node;\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n if (node.getBoundingClientRect) {\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n }\n }\n return [event.pageX, event.pageY];\n}\n","export default function(event) {\n let sourceEvent;\n while (sourceEvent = event.sourceEvent) event = sourceEvent;\n return event;\n}\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error;\n set(this, id).ease = v;\n };\n}\n\nexport default function(value) {\n if (typeof value !== \"function\") throw new Error;\n return this.each(easeVarying(this._id, value));\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n\n // The selection was empty, resolve end immediately\n if (size === 0) resolve();\n });\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","export default x => () => x;\n","export default function BrushEvent(type, {\n sourceEvent,\n target,\n selection,\n mode,\n dispatch\n}) {\n Object.defineProperties(this, {\n type: {value: type, enumerable: true, configurable: true},\n sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n target: {value: target, enumerable: true, configurable: true},\n selection: {value: selection, enumerable: true, configurable: true},\n mode: {value: mode, enumerable: true, configurable: true},\n _: {value: dispatch}\n });\n}\n","export function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {pointer, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n MODE_SPACE = {name: \"space\"},\n MODE_HANDLE = {name: \"handle\"},\n MODE_CENTER = {name: \"center\"};\n\nconst {abs, max, min} = Math;\n\nfunction number1(e) {\n return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n return [number1(e[0]), number1(e[1])];\n}\n\nvar X = {\n name: \"x\",\n handles: [\"w\", \"e\"].map(type),\n input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n name: \"y\",\n handles: [\"n\", \"s\"].map(type),\n input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n name: \"xy\",\n handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n input: function(xy) { return xy == null ? null : number2(xy); },\n output: function(xy) { return xy; }\n};\n\nvar cursors = {\n overlay: \"crosshair\",\n selection: \"move\",\n n: \"ns-resize\",\n e: \"ew-resize\",\n s: \"ns-resize\",\n w: \"ew-resize\",\n nw: \"nwse-resize\",\n ne: \"nesw-resize\",\n se: \"nwse-resize\",\n sw: \"nesw-resize\"\n};\n\nvar flipX = {\n e: \"w\",\n w: \"e\",\n nw: \"ne\",\n ne: \"nw\",\n se: \"sw\",\n sw: \"se\"\n};\n\nvar flipY = {\n n: \"s\",\n s: \"n\",\n nw: \"sw\",\n ne: \"se\",\n se: \"ne\",\n sw: \"nw\"\n};\n\nvar signsX = {\n overlay: +1,\n selection: +1,\n n: null,\n e: +1,\n s: null,\n w: -1,\n nw: -1,\n ne: +1,\n se: +1,\n sw: -1\n};\n\nvar signsY = {\n overlay: +1,\n selection: +1,\n n: -1,\n e: null,\n s: +1,\n w: null,\n nw: -1,\n ne: -1,\n se: +1,\n sw: +1\n};\n\nfunction type(t) {\n return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter(event) {\n return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n var svg = this.ownerSVGElement || this;\n if (svg.hasAttribute(\"viewBox\")) {\n svg = svg.viewBox.baseVal;\n return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n }\n return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n while (!node.__brush) if (!(node = node.parentNode)) return;\n return node.__brush;\n}\n\nfunction empty(extent) {\n return extent[0][0] === extent[1][0]\n || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n var state = node.__brush;\n return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n return brush(X);\n}\n\nexport function brushY() {\n return brush(Y);\n}\n\nexport default function() {\n return brush(XY);\n}\n\nfunction brush(dim) {\n var extent = defaultExtent,\n filter = defaultFilter,\n touchable = defaultTouchable,\n keys = true,\n listeners = dispatch(\"start\", \"brush\", \"end\"),\n handleSize = 6,\n touchending;\n\n function brush(group) {\n var overlay = group\n .property(\"__brush\", initialize)\n .selectAll(\".overlay\")\n .data([type(\"overlay\")]);\n\n overlay.enter().append(\"rect\")\n .attr(\"class\", \"overlay\")\n .attr(\"pointer-events\", \"all\")\n .attr(\"cursor\", cursors.overlay)\n .merge(overlay)\n .each(function() {\n var extent = local(this).extent;\n select(this)\n .attr(\"x\", extent[0][0])\n .attr(\"y\", extent[0][1])\n .attr(\"width\", extent[1][0] - extent[0][0])\n .attr(\"height\", extent[1][1] - extent[0][1]);\n });\n\n group.selectAll(\".selection\")\n .data([type(\"selection\")])\n .enter().append(\"rect\")\n .attr(\"class\", \"selection\")\n .attr(\"cursor\", cursors.selection)\n .attr(\"fill\", \"#777\")\n .attr(\"fill-opacity\", 0.3)\n .attr(\"stroke\", \"#fff\")\n .attr(\"shape-rendering\", \"crispEdges\");\n\n var handle = group.selectAll(\".handle\")\n .data(dim.handles, function(d) { return d.type; });\n\n handle.exit().remove();\n\n handle.enter().append(\"rect\")\n .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n group\n .each(redraw)\n .attr(\"fill\", \"none\")\n .attr(\"pointer-events\", \"all\")\n .on(\"mousedown.brush\", started)\n .filter(touchable)\n .on(\"touchstart.brush\", started)\n .on(\"touchmove.brush\", touchmoved)\n .on(\"touchend.brush touchcancel.brush\", touchended)\n .style(\"touch-action\", \"none\")\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n brush.move = function(group, selection) {\n if (group.tween) {\n group\n .on(\"start.brush\", function(event) { emitter(this, arguments).beforestart().start(event); })\n .on(\"interrupt.brush end.brush\", function(event) { emitter(this, arguments).end(event); })\n .tween(\"brush\", function() {\n var that = this,\n state = that.__brush,\n emit = emitter(that, arguments),\n selection0 = state.selection,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n i = interpolate(selection0, selection1);\n\n function tween(t) {\n state.selection = t === 1 && selection1 === null ? null : i(t);\n redraw.call(that);\n emit.brush();\n }\n\n return selection0 !== null && selection1 !== null ? tween : tween(1);\n });\n } else {\n group\n .each(function() {\n var that = this,\n args = arguments,\n state = that.__brush,\n selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n emit = emitter(that, args).beforestart();\n\n interrupt(that);\n state.selection = selection1 === null ? null : selection1;\n redraw.call(that);\n emit.start().brush().end();\n });\n }\n };\n\n brush.clear = function(group) {\n brush.move(group, null);\n };\n\n function redraw() {\n var group = select(this),\n selection = local(this).selection;\n\n if (selection) {\n group.selectAll(\".selection\")\n .style(\"display\", null)\n .attr(\"x\", selection[0][0])\n .attr(\"y\", selection[0][1])\n .attr(\"width\", selection[1][0] - selection[0][0])\n .attr(\"height\", selection[1][1] - selection[0][1]);\n\n group.selectAll(\".handle\")\n .style(\"display\", null)\n .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n }\n\n else {\n group.selectAll(\".selection,.handle\")\n .style(\"display\", \"none\")\n .attr(\"x\", null)\n .attr(\"y\", null)\n .attr(\"width\", null)\n .attr(\"height\", null);\n }\n }\n\n function emitter(that, args, clean) {\n var emit = that.__brush.emitter;\n return emit && (!clean || !emit.clean) ? emit : new Emitter(that, args, clean);\n }\n\n function Emitter(that, args, clean) {\n this.that = that;\n this.args = args;\n this.state = that.__brush;\n this.active = 0;\n this.clean = clean;\n }\n\n Emitter.prototype = {\n beforestart: function() {\n if (++this.active === 1) this.state.emitter = this, this.starting = true;\n return this;\n },\n start: function(event, mode) {\n if (this.starting) this.starting = false, this.emit(\"start\", event, mode);\n else this.emit(\"brush\", event);\n return this;\n },\n brush: function(event, mode) {\n this.emit(\"brush\", event, mode);\n return this;\n },\n end: function(event, mode) {\n if (--this.active === 0) delete this.state.emitter, this.emit(\"end\", event, mode);\n return this;\n },\n emit: function(type, event, mode) {\n var d = select(this.that).datum();\n listeners.call(\n type,\n this.that,\n new BrushEvent(type, {\n sourceEvent: event,\n target: brush,\n selection: dim.output(this.state.selection),\n mode,\n dispatch: listeners\n }),\n d\n );\n }\n };\n\n function started(event) {\n if (touchending && !event.touches) return;\n if (!filter.apply(this, arguments)) return;\n\n var that = this,\n type = event.target.__data__.type,\n mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n signX = dim === Y ? null : signsX[type],\n signY = dim === X ? null : signsY[type],\n state = local(that),\n extent = state.extent,\n selection = state.selection,\n W = extent[0][0], w0, w1,\n N = extent[0][1], n0, n1,\n E = extent[1][0], e0, e1,\n S = extent[1][1], s0, s1,\n dx = 0,\n dy = 0,\n moving,\n shifting = signX && signY && keys && event.shiftKey,\n lockX,\n lockY,\n points = Array.from(event.touches || [event], t => {\n const i = t.identifier;\n t = pointer(t, that);\n t.point0 = t.slice();\n t.identifier = i;\n return t;\n });\n\n if (type === \"overlay\") {\n if (selection) moving = true;\n const pts = [points[0], points[1] || points[0]];\n state.selection = selection = [[\n w0 = dim === Y ? W : min(pts[0][0], pts[1][0]),\n n0 = dim === X ? N : min(pts[0][1], pts[1][1])\n ], [\n e0 = dim === Y ? E : max(pts[0][0], pts[1][0]),\n s0 = dim === X ? S : max(pts[0][1], pts[1][1])\n ]];\n if (points.length > 1) move();\n } else {\n w0 = selection[0][0];\n n0 = selection[0][1];\n e0 = selection[1][0];\n s0 = selection[1][1];\n }\n\n w1 = w0;\n n1 = n0;\n e1 = e0;\n s1 = s0;\n\n var group = select(that)\n .attr(\"pointer-events\", \"none\");\n\n var overlay = group.selectAll(\".overlay\")\n .attr(\"cursor\", cursors[type]);\n\n interrupt(that);\n var emit = emitter(that, arguments, true).beforestart();\n\n if (event.touches) {\n emit.moved = moved;\n emit.ended = ended;\n } else {\n var view = select(event.view)\n .on(\"mousemove.brush\", moved, true)\n .on(\"mouseup.brush\", ended, true);\n if (keys) view\n .on(\"keydown.brush\", keydowned, true)\n .on(\"keyup.brush\", keyupped, true)\n\n dragDisable(event.view);\n }\n\n redraw.call(that);\n emit.start(event, mode.name);\n\n function moved(event) {\n for (const p of event.changedTouches || [event]) {\n for (const d of points)\n if (d.identifier === p.identifier) d.cur = pointer(p, that);\n }\n if (shifting && !lockX && !lockY && points.length === 1) {\n const point = points[0];\n if (abs(point.cur[0] - point[0]) > abs(point.cur[1] - point[1]))\n lockY = true;\n else\n lockX = true;\n }\n for (const point of points)\n if (point.cur) point[0] = point.cur[0], point[1] = point.cur[1];\n moving = true;\n noevent(event);\n move(event);\n }\n\n function move(event) {\n const point = points[0], point0 = point.point0;\n var t;\n\n dx = point[0] - point0[0];\n dy = point[1] - point0[1];\n\n switch (mode) {\n case MODE_SPACE:\n case MODE_DRAG: {\n if (signX) dx = max(W - w0, min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n if (signY) dy = max(N - n0, min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n break;\n }\n case MODE_HANDLE: {\n if (points[1]) {\n if (signX) w1 = max(W, min(E, points[0][0])), e1 = max(W, min(E, points[1][0])), signX = 1;\n if (signY) n1 = max(N, min(S, points[0][1])), s1 = max(N, min(S, points[1][1])), signY = 1;\n } else {\n if (signX < 0) dx = max(W - w0, min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n else if (signX > 0) dx = max(W - e0, min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n if (signY < 0) dy = max(N - n0, min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n else if (signY > 0) dy = max(N - s0, min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n }\n break;\n }\n case MODE_CENTER: {\n if (signX) w1 = max(W, min(E, w0 - dx * signX)), e1 = max(W, min(E, e0 + dx * signX));\n if (signY) n1 = max(N, min(S, n0 - dy * signY)), s1 = max(N, min(S, s0 + dy * signY));\n break;\n }\n }\n\n if (e1 < w1) {\n signX *= -1;\n t = w0, w0 = e0, e0 = t;\n t = w1, w1 = e1, e1 = t;\n if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n }\n\n if (s1 < n1) {\n signY *= -1;\n t = n0, n0 = s0, s0 = t;\n t = n1, n1 = s1, s1 = t;\n if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n }\n\n if (state.selection) selection = state.selection; // May be set by brush.move!\n if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n if (selection[0][0] !== w1\n || selection[0][1] !== n1\n || selection[1][0] !== e1\n || selection[1][1] !== s1) {\n state.selection = [[w1, n1], [e1, s1]];\n redraw.call(that);\n emit.brush(event, mode.name);\n }\n }\n\n function ended(event) {\n nopropagation(event);\n if (event.touches) {\n if (event.touches.length) return;\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n } else {\n dragEnable(event.view, moving);\n view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n }\n group.attr(\"pointer-events\", \"all\");\n overlay.attr(\"cursor\", cursors.overlay);\n if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n if (empty(selection)) state.selection = null, redraw.call(that);\n emit.end(event, mode.name);\n }\n\n function keydowned(event) {\n switch (event.keyCode) {\n case 16: { // SHIFT\n shifting = signX && signY;\n break;\n }\n case 18: { // ALT\n if (mode === MODE_HANDLE) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n move();\n }\n break;\n }\n case 32: { // SPACE; takes priority over ALT\n if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n mode = MODE_SPACE;\n overlay.attr(\"cursor\", cursors.selection);\n move();\n }\n break;\n }\n default: return;\n }\n noevent(event);\n }\n\n function keyupped(event) {\n switch (event.keyCode) {\n case 16: { // SHIFT\n if (shifting) {\n lockX = lockY = shifting = false;\n move();\n }\n break;\n }\n case 18: { // ALT\n if (mode === MODE_CENTER) {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n move();\n }\n break;\n }\n case 32: { // SPACE\n if (mode === MODE_SPACE) {\n if (event.altKey) {\n if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n mode = MODE_CENTER;\n } else {\n if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n mode = MODE_HANDLE;\n }\n overlay.attr(\"cursor\", cursors[type]);\n move();\n }\n break;\n }\n default: return;\n }\n noevent(event);\n }\n }\n\n function touchmoved(event) {\n emitter(this, arguments).moved(event);\n }\n\n function touchended(event) {\n emitter(this, arguments).ended(event);\n }\n\n function initialize() {\n var state = this.__brush || {selection: null};\n state.extent = number2(extent.apply(this, arguments));\n state.dim = dim;\n return state;\n }\n\n brush.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n };\n\n brush.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n };\n\n brush.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), brush) : touchable;\n };\n\n brush.handleSize = function(_) {\n return arguments.length ? (handleSize = +_, brush) : handleSize;\n };\n\n brush.keyModifiers = function(_) {\n return arguments.length ? (keys = !!_, brush) : keys;\n };\n\n brush.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? brush : value;\n };\n\n return brush;\n}\n","export default function(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","import ascending from \"./ascending.js\";\n\nexport default function(f) {\n let delta = f;\n let compare = f;\n\n if (f.length === 1) {\n delta = (d, x) => f(d) - x;\n compare = ascendingComparator(f);\n }\n\n function left(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n const mid = (lo + hi) >>> 1;\n if (compare(a[mid], x) < 0) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n }\n\n function right(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n while (lo < hi) {\n const mid = (lo + hi) >>> 1;\n if (compare(a[mid], x) > 0) hi = mid;\n else lo = mid + 1;\n }\n return lo;\n }\n\n function center(a, x, lo, hi) {\n if (lo == null) lo = 0;\n if (hi == null) hi = a.length;\n const i = left(a, x, lo, hi - 1);\n return i > lo && delta(a[i - 1], x) > -delta(a[i], x) ? i - 1 : i;\n }\n\n return {left, center, right};\n}\n\nfunction ascendingComparator(f) {\n return (d, x) => ascending(f(d), x);\n}\n","var e10 = Math.sqrt(50),\n e5 = Math.sqrt(10),\n e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n var reverse,\n i = -1,\n n,\n ticks,\n step;\n\n stop = +stop, start = +start, count = +count;\n if (start === stop && count > 0) return [start];\n if (reverse = stop < start) n = start, start = stop, stop = n;\n if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n if (step > 0) {\n let r0 = Math.round(start / step), r1 = Math.round(stop / step);\n if (r0 * step < start) ++r0;\n if (r1 * step > stop) --r1;\n ticks = new Array(n = r1 - r0 + 1);\n while (++i < n) ticks[i] = (r0 + i) * step;\n } else {\n step = -step;\n let r0 = Math.round(start * step), r1 = Math.round(stop * step);\n if (r0 / step < start) ++r0;\n if (r1 / step > stop) --r1;\n ticks = new Array(n = r1 - r0 + 1);\n while (++i < n) ticks[i] = (r0 + i) / step;\n }\n\n if (reverse) ticks.reverse();\n\n return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n var step = (stop - start) / Math.max(0, count),\n power = Math.floor(Math.log(step) / Math.LN10),\n error = step / Math.pow(10, power);\n return power >= 0\n ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n var step0 = Math.abs(stop - start) / Math.max(0, count),\n step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n error = step0 / step1;\n if (error >= e10) step1 *= 10;\n else if (error >= e5) step1 *= 5;\n else if (error >= e2) step1 *= 2;\n return stop < start ? -step1 : step1;\n}\n","export const durationSecond = 1000;\nexport const durationMinute = durationSecond * 60;\nexport const durationHour = durationMinute * 60;\nexport const durationDay = durationHour * 24;\nexport const durationWeek = durationDay * 7;\nexport const durationMonth = durationDay * 30;\nexport const durationYear = durationDay * 365;\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n }\n\n interval.floor = function(date) {\n return floori(date = new Date(+date)), date;\n };\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [], previous;\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n while (previous < start && start < stop);\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) {\n if (step < 0) while (++step <= 0) {\n while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n } else while (--step >= 0) {\n while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n }\n }\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval.js\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","import interval from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nvar second = interval(function(date) {\n date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nvar minute = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nvar hour = interval(function(date) {\n date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(\n date => date.setHours(0, 0, 0, 0),\n (date, step) => date.setDate(date.getDate() + step),\n (start, end) => (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay,\n date => date.getDate() - 1\n);\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval.js\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval.js\";\nimport {durationMinute} from \"./duration.js\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval.js\";\nimport {durationHour} from \"./duration.js\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval.js\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {bisector, tickStep} from \"d3-array\";\nimport {durationDay, durationHour, durationMinute, durationMonth, durationSecond, durationWeek, durationYear} from \"./duration.js\";\nimport millisecond from \"./millisecond.js\";\nimport second from \"./second.js\";\nimport minute from \"./minute.js\";\nimport hour from \"./hour.js\";\nimport day from \"./day.js\";\nimport {sunday as week} from \"./week.js\";\nimport month from \"./month.js\";\nimport year from \"./year.js\";\nimport utcMinute from \"./utcMinute.js\";\nimport utcHour from \"./utcHour.js\";\nimport utcDay from \"./utcDay.js\";\nimport {utcSunday as utcWeek} from \"./utcWeek.js\";\nimport utcMonth from \"./utcMonth.js\";\nimport utcYear from \"./utcYear.js\";\n\nfunction ticker(year, month, week, day, hour, minute) {\n\n const tickIntervals = [\n [second, 1, durationSecond],\n [second, 5, 5 * durationSecond],\n [second, 15, 15 * durationSecond],\n [second, 30, 30 * durationSecond],\n [minute, 1, durationMinute],\n [minute, 5, 5 * durationMinute],\n [minute, 15, 15 * durationMinute],\n [minute, 30, 30 * durationMinute],\n [ hour, 1, durationHour ],\n [ hour, 3, 3 * durationHour ],\n [ hour, 6, 6 * durationHour ],\n [ hour, 12, 12 * durationHour ],\n [ day, 1, durationDay ],\n [ day, 2, 2 * durationDay ],\n [ week, 1, durationWeek ],\n [ month, 1, durationMonth ],\n [ month, 3, 3 * durationMonth ],\n [ year, 1, durationYear ]\n ];\n\n function ticks(start, stop, count) {\n const reverse = stop < start;\n if (reverse) [start, stop] = [stop, start];\n const interval = count && typeof count.range === \"function\" ? count : tickInterval(start, stop, count);\n const ticks = interval ? interval.range(start, +stop + 1) : []; // inclusive stop\n return reverse ? ticks.reverse() : ticks;\n }\n\n function tickInterval(start, stop, count) {\n const target = Math.abs(stop - start) / count;\n const i = bisector(([,, step]) => step).right(tickIntervals, target);\n if (i === tickIntervals.length) return year.every(tickStep(start / durationYear, stop / durationYear, count));\n if (i === 0) return millisecond.every(Math.max(tickStep(start, stop, count), 1));\n const [t, step] = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n return t.every(step);\n }\n\n return [ticks, tickInterval];\n}\n\nconst [utcTicks, utcTickInterval] = ticker(utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute);\nconst [timeTicks, timeTickInterval] = ticker(year, month, week, day, hour, minute);\n\nexport {utcTicks, utcTickInterval, timeTicks, timeTickInterval};\n","import {\n timeDay,\n timeSunday,\n timeMonday,\n timeThursday,\n timeYear,\n utcDay,\n utcSunday,\n utcMonday,\n utcThursday,\n utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"f\": formatMicroseconds,\n \"g\": formatYearISO,\n \"G\": formatFullYearISO,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"q\": formatQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatSeconds,\n \"u\": formatWeekdayNumberMonday,\n \"U\": formatWeekNumberSunday,\n \"V\": formatWeekNumberISO,\n \"w\": formatWeekdayNumberSunday,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"f\": formatUTCMicroseconds,\n \"g\": formatUTCYearISO,\n \"G\": formatUTCFullYearISO,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"q\": formatUTCQuarter,\n \"Q\": formatUnixTimestamp,\n \"s\": formatUnixTimestampSeconds,\n \"S\": formatUTCSeconds,\n \"u\": formatUTCWeekdayNumberMonday,\n \"U\": formatUTCWeekNumberSunday,\n \"V\": formatUTCWeekNumberISO,\n \"w\": formatUTCWeekdayNumberSunday,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"f\": parseMicroseconds,\n \"g\": parseYear,\n \"G\": parseFullYear,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"q\": parseQuarter,\n \"Q\": parseUnixTimestamp,\n \"s\": parseUnixTimestampSeconds,\n \"S\": parseSeconds,\n \"u\": parseWeekdayNumberMonday,\n \"U\": parseWeekNumberSunday,\n \"V\": parseWeekNumberISO,\n \"w\": parseWeekdayNumberSunday,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, Z) {\n return function(string) {\n var d = newDate(1900, undefined, 1),\n i = parseSpecifier(d, specifier, string += \"\", 0),\n week, day;\n if (i != string.length) return null;\n\n // If a UNIX timestamp is specified, return it.\n if (\"Q\" in d) return new Date(d.Q);\n if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n // If this is utcParse, never use the local timezone.\n if (Z && !(\"Z\" in d)) d.Z = 0;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // If the month was not specified, inherit from the quarter.\n if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"V\" in d) {\n if (d.V < 1 || d.V > 53) return null;\n if (!(\"w\" in d)) d.w = 1;\n if (\"Z\" in d) {\n week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n week = utcDay.offset(week, (d.V - 1) * 7);\n d.y = week.getUTCFullYear();\n d.m = week.getUTCMonth();\n d.d = week.getUTCDate() + (d.w + 6) % 7;\n } else {\n week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n week = timeDay.offset(week, (d.V - 1) * 7);\n d.y = week.getFullYear();\n d.m = week.getMonth();\n d.d = week.getDate() + (d.w + 6) % 7;\n }\n } else if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return localDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup.get(n[0].toLowerCase()), i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatQuarter(d) {\n return 1 + ~~(d.getMonth() / 3);\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n function formatUTCQuarter(d) {\n return 1 + ~~(d.getUTCMonth() / 3);\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", false);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier += \"\", true);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n return new Map(names.map((name, i) => [name.toLowerCase(), i]));\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 6));\n return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n var day = d.getDay();\n return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n var day = d.getDay();\n return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n d = dISO(d);\n return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n d = dISO(d);\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n var day = d.getDay();\n d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n var dow = d.getUTCDay();\n return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n var day = d.getUTCDay();\n return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n d = UTCdISO(d);\n return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n d = UTCdISO(d);\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n var day = d.getUTCDay();\n d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n return Math.floor(+d / 1000);\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","export default function(x) {\n return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n","import ascending from \"./ascending.js\";\nimport bisector from \"./bisector.js\";\nimport number from \"./number.js\";\n\nconst ascendingBisect = bisector(ascending);\nexport const bisectRight = ascendingBisect.right;\nexport const bisectLeft = ascendingBisect.left;\nexport const bisectCenter = bisector(number).center;\nexport default bisectRight;\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return Math.round(a * (1 - t) + b * t);\n };\n}\n","export default function number(x) {\n return +x;\n}\n","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport constant from \"./constant.js\";\nimport number from \"./number.js\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n return x;\n}\n\nfunction normalize(a, b) {\n return (b -= (a = +a))\n ? function(x) { return (x - a) / b; }\n : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(a, b) {\n var t;\n if (a > b) t = a, a = b, b = t;\n return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n var j = Math.min(domain.length, range.length) - 1,\n d = new Array(j),\n r = new Array(j),\n i = -1;\n\n // Reverse descending domains.\n if (domain[j] < domain[0]) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n while (++i < j) {\n d[i] = normalize(domain[i], domain[i + 1]);\n r[i] = interpolate(range[i], range[i + 1]);\n }\n\n return function(x) {\n var i = bisect(domain, x, 1, j) - 1;\n return r[i](d[i](x));\n };\n}\n\nexport function copy(source, target) {\n return target\n .domain(source.domain())\n .range(source.range())\n .interpolate(source.interpolate())\n .clamp(source.clamp())\n .unknown(source.unknown());\n}\n\nexport function transformer() {\n var domain = unit,\n range = unit,\n interpolate = interpolateValue,\n transform,\n untransform,\n unknown,\n clamp = identity,\n piecewise,\n output,\n input;\n\n function rescale() {\n var n = Math.min(domain.length, range.length);\n if (clamp !== identity) clamp = clamper(domain[0], domain[n - 1]);\n piecewise = n > 2 ? polymap : bimap;\n output = input = null;\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n }\n\n scale.invert = function(y) {\n return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n };\n\n scale.domain = function(_) {\n return arguments.length ? (domain = Array.from(_, number), rescale()) : domain.slice();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.rangeRound = function(_) {\n return range = Array.from(_), interpolate = interpolateRound, rescale();\n };\n\n scale.clamp = function(_) {\n return arguments.length ? (clamp = _ ? true : identity, rescale()) : clamp !== identity;\n };\n\n scale.interpolate = function(_) {\n return arguments.length ? (interpolate = _, rescale()) : interpolate;\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n return function(t, u) {\n transform = t, untransform = u;\n return rescale();\n };\n}\n\nexport default function continuous() {\n return transformer()(identity, identity);\n}\n","export default function constants(x) {\n return function() {\n return x;\n };\n}\n","export function initRange(domain, range) {\n switch (arguments.length) {\n case 0: break;\n case 1: this.range(domain); break;\n default: this.range(range).domain(domain); break;\n }\n return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n switch (arguments.length) {\n case 0: break;\n case 1: {\n if (typeof domain === \"function\") this.interpolator(domain);\n else this.range(domain);\n break;\n }\n default: {\n this.domain(domain);\n if (typeof interpolator === \"function\") this.interpolator(interpolator);\n else this.range(interpolator);\n break;\n }\n }\n return this;\n}\n","import {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeTicks, timeTickInterval} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport nice from \"./nice.js\";\n\nfunction date(t) {\n return new Date(t);\n}\n\nfunction number(t) {\n return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format) {\n var scale = continuous(),\n invert = scale.invert,\n domain = scale.domain;\n\n var formatMillisecond = format(\".%L\"),\n formatSecond = format(\":%S\"),\n formatMinute = format(\"%I:%M\"),\n formatHour = format(\"%I %p\"),\n formatDay = format(\"%a %d\"),\n formatWeek = format(\"%b %d\"),\n formatMonth = format(\"%B\"),\n formatYear = format(\"%Y\");\n\n function tickFormat(date) {\n return (second(date) < date ? formatMillisecond\n : minute(date) < date ? formatSecond\n : hour(date) < date ? formatMinute\n : day(date) < date ? formatHour\n : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n : year(date) < date ? formatMonth\n : formatYear)(date);\n }\n\n scale.invert = function(y) {\n return new Date(invert(y));\n };\n\n scale.domain = function(_) {\n return arguments.length ? domain(Array.from(_, number)) : domain().map(date);\n };\n\n scale.ticks = function(interval) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], interval == null ? 10 : interval);\n };\n\n scale.tickFormat = function(count, specifier) {\n return specifier == null ? tickFormat : format(specifier);\n };\n\n scale.nice = function(interval) {\n var d = domain();\n if (!interval || typeof interval.range !== \"function\") interval = tickInterval(d[0], d[d.length - 1], interval == null ? 10 : interval);\n return interval ? domain(nice(d, interval)) : scale;\n };\n\n scale.copy = function() {\n return copy(scale, calendar(ticks, tickInterval, year, month, week, day, hour, minute, second, format));\n };\n\n return scale;\n}\n\nexport default function time() {\n return initRange.apply(calendar(timeTicks, timeTickInterval, timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n","export default function nice(domain, interval) {\n domain = domain.slice();\n\n var i0 = 0,\n i1 = domain.length - 1,\n x0 = domain[i0],\n x1 = domain[i1],\n t;\n\n if (x1 < x0) {\n t = i0, i0 = i1, i1 = t;\n t = x0, x0 = x1, x1 = t;\n }\n\n domain[i0] = interval.floor(x0);\n domain[i1] = interval.ceil(x1);\n return domain;\n}\n","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n var match;\n return new FormatSpecifier({\n fill: match[1],\n align: match[2],\n sign: match[3],\n symbol: match[4],\n zero: match[5],\n width: match[6],\n comma: match[7],\n precision: match[8] && match[8].slice(1),\n trim: match[9],\n type: match[10]\n });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n this.zero = !!specifier.zero;\n this.width = specifier.width === undefined ? undefined : +specifier.width;\n this.comma = !!specifier.comma;\n this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n this.trim = !!specifier.trim;\n this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n return this.fill\n + this.align\n + this.sign\n + this.symbol\n + (this.zero ? \"0\" : \"\")\n + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n + (this.comma ? \",\" : \"\")\n + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n + (this.trim ? \"~\" : \"\")\n + this.type;\n};\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1],\n i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n n = coefficient.length;\n return i === n ? coefficient\n : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n","export default function(x) {\n return Math.abs(x = Math.round(x)) >= 1e21\n ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n var i, coefficient = x.slice(0, i);\n\n // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n return [\n coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n +x.slice(i + 1)\n ];\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n var d = formatDecimalParts(x, p);\n if (!d) return x + \"\";\n var coefficient = d[0],\n exponent = d[1];\n return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n \"%\": (x, p) => (x * 100).toFixed(p),\n \"b\": (x) => Math.round(x).toString(2),\n \"c\": (x) => x + \"\",\n \"d\": formatDecimal,\n \"e\": (x, p) => x.toExponential(p),\n \"f\": (x, p) => x.toFixed(p),\n \"g\": (x, p) => x.toPrecision(p),\n \"o\": (x) => Math.round(x).toString(8),\n \"p\": (x, p) => formatRounded(x * 100, p),\n \"r\": formatRounded,\n \"s\": formatPrefixAuto,\n \"X\": (x) => Math.round(x).toString(16).toUpperCase(),\n \"x\": (x) => Math.round(x).toString(16)\n};\n","export default function(x) {\n return x;\n}\n","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n minus = locale.minus === undefined ? \"−\" : locale.minus + \"\",\n nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n function newFormat(specifier) {\n specifier = formatSpecifier(specifier);\n\n var fill = specifier.fill,\n align = specifier.align,\n sign = specifier.sign,\n symbol = specifier.symbol,\n zero = specifier.zero,\n width = specifier.width,\n comma = specifier.comma,\n precision = specifier.precision,\n trim = specifier.trim,\n type = specifier.type;\n\n // The \"n\" type is an alias for \",g\".\n if (type === \"n\") comma = true, type = \"g\";\n\n // The \"\" type, and any invalid type, is an alias for \".12~g\".\n else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n // If zero fill is specified, padding goes after sign and before digits.\n if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n // Compute the prefix and suffix.\n // For SI-prefix, the suffix is lazily computed.\n var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n // What format function should we use?\n // Is this an integer type?\n // Can this type generate exponential notation?\n var formatType = formatTypes[type],\n maybeSuffix = /[defgprs%]/.test(type);\n\n // Set the default precision if not specified,\n // or clamp the specified precision to the supported range.\n // For significant precision, it must be in [1, 21].\n // For fixed precision, it must be in [0, 20].\n precision = precision === undefined ? 6\n : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n : Math.max(0, Math.min(20, precision));\n\n function format(value) {\n var valuePrefix = prefix,\n valueSuffix = suffix,\n i, n, c;\n\n if (type === \"c\") {\n valueSuffix = formatType(value) + valueSuffix;\n value = \"\";\n } else {\n value = +value;\n\n // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n var valueNegative = value < 0 || 1 / value < 0;\n\n // Perform the initial formatting.\n value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n // Trim insignificant zeros.\n if (trim) value = formatTrim(value);\n\n // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n // Compute the prefix and suffix.\n valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n // Break the formatted value into the integer “value” part that can be\n // grouped, and fractional or exponential “suffix” part that is not.\n if (maybeSuffix) {\n i = -1, n = value.length;\n while (++i < n) {\n if (c = value.charCodeAt(i), 48 > c || c > 57) {\n valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n value = value.slice(0, i);\n break;\n }\n }\n }\n }\n\n // If the fill character is not \"0\", grouping is applied before padding.\n if (comma && !zero) value = group(value, Infinity);\n\n // Compute the padding.\n var length = valuePrefix.length + value.length + valueSuffix.length,\n padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n // If the fill character is \"0\", grouping is applied after padding.\n if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n // Reconstruct the final output based on the desired alignment.\n switch (align) {\n case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n default: value = padding + valuePrefix + value + valueSuffix; break;\n }\n\n return numerals(value);\n }\n\n format.toString = function() {\n return specifier + \"\";\n };\n\n return format;\n }\n\n function formatPrefix(specifier, value) {\n var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n k = Math.pow(10, -e),\n prefix = prefixes[8 + e / 3];\n return function(value) {\n return f(k * value) + prefix;\n };\n }\n\n return {\n format: newFormat,\n formatPrefix: formatPrefix\n };\n}\n","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n thousands: \",\",\n grouping: [3],\n currency: [\"$\", \"\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n format = locale.format;\n formatPrefix = locale.formatPrefix;\n return locale;\n}\n","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy} from \"./continuous.js\";\nimport {initRange} from \"./init.js\";\nimport tickFormat from \"./tickFormat.js\";\n\nexport function linearish(scale) {\n var domain = scale.domain;\n\n scale.ticks = function(count) {\n var d = domain();\n return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n };\n\n scale.tickFormat = function(count, specifier) {\n var d = domain();\n return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n };\n\n scale.nice = function(count) {\n if (count == null) count = 10;\n\n var d = domain();\n var i0 = 0;\n var i1 = d.length - 1;\n var start = d[i0];\n var stop = d[i1];\n var prestep;\n var step;\n var maxIter = 10;\n\n if (stop < start) {\n step = start, start = stop, stop = step;\n step = i0, i0 = i1, i1 = step;\n }\n \n while (maxIter-- > 0) {\n step = tickIncrement(start, stop, count);\n if (step === prestep) {\n d[i0] = start\n d[i1] = stop\n return domain(d);\n } else if (step > 0) {\n start = Math.floor(start / step) * step;\n stop = Math.ceil(stop / step) * step;\n } else if (step < 0) {\n start = Math.ceil(start * step) / step;\n stop = Math.floor(stop * step) / step;\n } else {\n break;\n }\n prestep = step;\n }\n\n return scale;\n };\n\n return scale;\n}\n\nexport default function linear() {\n var scale = continuous();\n\n scale.copy = function() {\n return copy(scale, linear());\n };\n\n initRange.apply(scale, arguments);\n\n return linearish(scale);\n}\n","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function tickFormat(start, stop, count, specifier) {\n var step = tickStep(start, stop, count),\n precision;\n specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n switch (specifier.type) {\n case \"s\": {\n var value = Math.max(Math.abs(start), Math.abs(stop));\n if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n return formatPrefix(specifier, value);\n }\n case \"\":\n case \"e\":\n case \"g\":\n case \"p\":\n case \"r\": {\n if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n break;\n }\n case \"f\":\n case \"%\": {\n if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n break;\n }\n }\n return format(specifier);\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n step = Math.abs(step), max = Math.abs(max) - step;\n return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n return Math.max(0, -exponent(Math.abs(step)));\n}\n","export default function(start, stop, step) {\n start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n var i = -1,\n n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n range = new Array(n);\n\n while (++i < n) {\n range[i] = start + i * step;\n }\n\n return range;\n}\n","export default function(grouping, thousands) {\n return function(value, width) {\n var i = value.length,\n t = [],\n j = 0,\n g = grouping[0],\n length = 0;\n\n while (i > 0 && g > 0) {\n if (length + g + 1 > width) g = Math.max(1, width - length);\n t.push(value.substring(i -= g, i + g));\n if ((length += g + 1) > width) break;\n g = grouping[j = (j + 1) % grouping.length];\n }\n\n return t.reverse().join(thousands);\n };\n}\n","export default function(numerals) {\n return function(value) {\n return value.replace(/[0-9]/g, function(i) {\n return numerals[+i];\n });\n };\n}\n","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n switch (s[i]) {\n case \".\": i0 = i1 = i; break;\n case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n }\n }\n return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n","import {initRange} from \"./init.js\";\n\nexport const implicit = Symbol(\"implicit\");\n\nexport default function ordinal() {\n var index = new Map(),\n domain = [],\n range = [],\n unknown = implicit;\n\n function scale(d) {\n var key = d + \"\", i = index.get(key);\n if (!i) {\n if (unknown !== implicit) return unknown;\n index.set(key, i = domain.push(d));\n }\n return range[(i - 1) % range.length];\n }\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [], index = new Map();\n for (const value of _) {\n const key = value + \"\";\n if (index.has(key)) continue;\n index.set(key, domain.push(value));\n }\n return scale;\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), scale) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.copy = function() {\n return ordinal(domain, range).unknown(unknown);\n };\n\n initRange.apply(scale, arguments);\n\n return scale;\n}\n","import {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init.js\";\nimport ordinal from \"./ordinal.js\";\n\nexport default function band() {\n var scale = ordinal().unknown(undefined),\n domain = scale.domain,\n ordinalRange = scale.range,\n r0 = 0,\n r1 = 1,\n step,\n bandwidth,\n round = false,\n paddingInner = 0,\n paddingOuter = 0,\n align = 0.5;\n\n delete scale.unknown;\n\n function rescale() {\n var n = domain().length,\n reverse = r1 < r0,\n start = reverse ? r1 : r0,\n stop = reverse ? r0 : r1;\n step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n if (round) step = Math.floor(step);\n start += (stop - start - step * (n - paddingInner)) * align;\n bandwidth = step * (1 - paddingInner);\n if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n var values = sequence(n).map(function(i) { return start + step * i; });\n return ordinalRange(reverse ? values.reverse() : values);\n }\n\n scale.domain = function(_) {\n return arguments.length ? (domain(_), rescale()) : domain();\n };\n\n scale.range = function(_) {\n return arguments.length ? ([r0, r1] = _, r0 = +r0, r1 = +r1, rescale()) : [r0, r1];\n };\n\n scale.rangeRound = function(_) {\n return [r0, r1] = _, r0 = +r0, r1 = +r1, round = true, rescale();\n };\n\n scale.bandwidth = function() {\n return bandwidth;\n };\n\n scale.step = function() {\n return step;\n };\n\n scale.round = function(_) {\n return arguments.length ? (round = !!_, rescale()) : round;\n };\n\n scale.padding = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n };\n\n scale.paddingInner = function(_) {\n return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n };\n\n scale.paddingOuter = function(_) {\n return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n };\n\n scale.align = function(_) {\n return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n };\n\n scale.copy = function() {\n return band(domain(), [r0, r1])\n .round(round)\n .paddingInner(paddingInner)\n .paddingOuter(paddingOuter)\n .align(align);\n };\n\n return initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n var copy = scale.copy;\n\n scale.padding = scale.paddingOuter;\n delete scale.paddingInner;\n delete scale.paddingOuter;\n\n scale.copy = function() {\n return pointish(copy());\n };\n\n return scale;\n}\n\nexport function point() {\n return pointish(band.apply(null, arguments).paddingInner(1));\n}\n","import max from \"./max.js\";\nimport min from \"./min.js\";\nimport quickselect from \"./quickselect.js\";\nimport number, {numbers} from \"./number.js\";\n\nexport default function quantile(values, p, valueof) {\n values = Float64Array.from(numbers(values, valueof));\n if (!(n = values.length)) return;\n if ((p = +p) <= 0 || n < 2) return min(values);\n if (p >= 1) return max(values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = max(quickselect(values, i0).subarray(0, i0 + 1)),\n value1 = min(values.subarray(i0 + 1));\n return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileSorted(values, p, valueof = number) {\n if (!(n = values.length)) return;\n if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n","import {ascending, bisect, quantileSorted as threshold} from \"d3-array\";\nimport {initRange} from \"./init.js\";\n\nexport default function quantile() {\n var domain = [],\n range = [],\n thresholds = [],\n unknown;\n\n function rescale() {\n var i = 0, n = Math.max(1, range.length);\n thresholds = new Array(n - 1);\n while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n return scale;\n }\n\n function scale(x) {\n return x == null || isNaN(x = +x) ? unknown : range[bisect(thresholds, x)];\n }\n\n scale.invertExtent = function(y) {\n var i = range.indexOf(y);\n return i < 0 ? [NaN, NaN] : [\n i > 0 ? thresholds[i - 1] : domain[0],\n i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n ];\n };\n\n scale.domain = function(_) {\n if (!arguments.length) return domain.slice();\n domain = [];\n for (let d of _) if (d != null && !isNaN(d = +d)) domain.push(d);\n domain.sort(ascending);\n return rescale();\n };\n\n scale.range = function(_) {\n return arguments.length ? (range = Array.from(_), rescale()) : range.slice();\n };\n\n scale.unknown = function(_) {\n return arguments.length ? (unknown = _, scale) : unknown;\n };\n\n scale.quantiles = function() {\n return thresholds.slice();\n };\n\n scale.copy = function() {\n return quantile()\n .domain(domain)\n .range(range)\n .unknown(unknown);\n };\n\n return initRange.apply(scale, arguments);\n}\n","function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // proceed\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n","const pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction Path() {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n}\n\nfunction path() {\n return new Path;\n}\n\nPath.prototype = path.prototype = {\n constructor: Path,\n moveTo: function(x, y) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n },\n closePath: function() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._ += \"Z\";\n }\n },\n lineTo: function(x, y) {\n this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n quadraticCurveTo: function(x1, y1, x, y) {\n this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n },\n arcTo: function(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n var x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n }\n\n // Otherwise, draw an arc!\n else {\n var x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n }\n\n this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n }\n },\n arc: function(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n var dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(\"negative radius: \" + r);\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._ += \"M\" + x0 + \",\" + y0;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._ += \"L\" + x0 + \",\" + y0;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n }\n },\n rect: function(x, y, w, h) {\n this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n },\n toString: function() {\n return this._;\n }\n};\n\nexport default path;\n","export var slice = Array.prototype.slice;\n\nexport default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import {path} from \"d3-path\";\nimport array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x, y) {\n var defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n x = typeof x === \"function\" ? x : (x === undefined) ? pointX : constant(x);\n y = typeof y === \"function\" ? y : (y === undefined) ? pointY : constant(y);\n\n function line(data) {\n var i,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n","import {path} from \"d3-path\";\nimport array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x0, y0, y1) {\n var x1 = null,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null;\n\n x0 = typeof x0 === \"function\" ? x0 : (x0 === undefined) ? pointX : constant(+x0);\n y0 = typeof y0 === \"function\" ? y0 : (y0 === undefined) ? constant(0) : constant(+y0);\n y1 = typeof y1 === \"function\" ? y1 : (y1 === undefined) ? pointY : constant(+y1);\n\n function area(data) {\n var i,\n j,\n k,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n\n area.x = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n\n area.x0 = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n\n area.x1 = function(_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n\n area.y = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n\n area.y0 = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n\n area.y1 = function(_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n\n area.lineX0 =\n area.lineY0 = function() {\n return arealine().x(x0).y(y0);\n };\n\n area.lineY1 = function() {\n return arealine().x(x0).y(y1);\n };\n\n area.lineX1 = function() {\n return arealine().x(x1).y(y0);\n };\n\n area.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n\n area.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n\n area.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n\n return area;\n}\n","export default function() {}\n","export function point(that, x, y) {\n that._context.bezierCurveTo(\n that._x1 + that._k * (that._x2 - that._x0),\n that._y1 + that._k * (that._y2 - that._y0),\n that._x2 + that._k * (that._x1 - x),\n that._y2 + that._k * (that._y1 - y),\n that._x2,\n that._y2\n );\n}\n\nexport function Cardinal(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 = this._x2 =\n this._y0 = this._y1 = this._y2 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x2, this._y2); break;\n case 3: point(this, this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n case 2: this._point = 3; // proceed\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new Cardinal(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import noop from \"../noop.js\";\nimport {point} from \"./cardinal.js\";\n\nexport function CardinalClosed(context, tension) {\n this._context = context;\n this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n areaStart: noop,\n areaEnd: noop,\n lineStart: function() {\n this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 1: {\n this._context.moveTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 2: {\n this._context.lineTo(this._x3, this._y3);\n this._context.closePath();\n break;\n }\n case 3: {\n this.point(this._x3, this._y3);\n this.point(this._x4, this._y4);\n this.point(this._x5, this._y5);\n break;\n }\n }\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n }\n};\n\nexport default (function custom(tension) {\n\n function cardinal(context) {\n return new CardinalClosed(context, tension);\n }\n\n cardinal.tension = function(tension) {\n return custom(+tension);\n };\n\n return cardinal;\n})(0);\n","import curveLinear from \"./linear.js\";\n\nexport var curveRadialLinear = curveRadial(curveLinear);\n\nfunction Radial(curve) {\n this._curve = curve;\n}\n\nRadial.prototype = {\n areaStart: function() {\n this._curve.areaStart();\n },\n areaEnd: function() {\n this._curve.areaEnd();\n },\n lineStart: function() {\n this._curve.lineStart();\n },\n lineEnd: function() {\n this._curve.lineEnd();\n },\n point: function(a, r) {\n this._curve.point(r * Math.sin(a), r * -Math.cos(a));\n }\n};\n\nexport default function curveRadial(curve) {\n\n function radial(context) {\n return new Radial(curve(context));\n }\n\n radial._curve = curve;\n\n return radial;\n}\n","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null;\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle.\n if (da < pi && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector’s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector’s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n","export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n","export default function(d) {\n return d;\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (x1 - x0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.y0 = y0, node.y1 = y1;\n node.x0 = x0, node.x1 = x0 += node.value * k;\n }\n}\n","export default function(parent, x0, y0, x1, y1) {\n var nodes = parent.children,\n node,\n i = -1,\n n = nodes.length,\n k = parent.value && (y1 - y0) / parent.value;\n\n while (++i < n) {\n node = nodes[i], node.x0 = x0, node.x1 = x1;\n node.y0 = y0, node.y1 = y0 += node.value * k;\n }\n}\n","function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;\n else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\n\nexport default function() {\n return this.eachAfter(count);\n}\n","import node_count from \"./count.js\";\nimport node_each from \"./each.js\";\nimport node_eachBefore from \"./eachBefore.js\";\nimport node_eachAfter from \"./eachAfter.js\";\nimport node_find from \"./find.js\";\nimport node_sum from \"./sum.js\";\nimport node_sort from \"./sort.js\";\nimport node_path from \"./path.js\";\nimport node_ancestors from \"./ancestors.js\";\nimport node_descendants from \"./descendants.js\";\nimport node_leaves from \"./leaves.js\";\nimport node_links from \"./links.js\";\nimport node_iterator from \"./iterator.js\";\n\nexport default function hierarchy(data, children) {\n if (data instanceof Map) {\n data = [undefined, data];\n if (children === undefined) children = mapChildren;\n } else if (children === undefined) {\n children = objectChildren;\n }\n\n var root = new Node(data),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n\n while (node = nodes.pop()) {\n if ((childs = children(node.data)) && (n = (childs = Array.from(childs)).length)) {\n node.children = childs;\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = childs[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n\n return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\n\nfunction objectChildren(d) {\n return d.children;\n}\n\nfunction mapChildren(d) {\n return Array.isArray(d) ? d[1] : null;\n}\n\nfunction copyData(node) {\n if (node.data.value !== undefined) node.value = node.data.value;\n node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height;\n while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n this.data = data;\n this.depth =\n this.height = 0;\n this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n constructor: Node,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n find: node_find,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy,\n [Symbol.iterator]: node_iterator\n};\n","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\n\nexport var phi = (1 + Math.sqrt(5)) / 2;\n\nexport function squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n var rows = [],\n nodes = parent.children,\n row,\n nodeValue,\n i0 = 0,\n i1 = 0,\n n = nodes.length,\n dx, dy,\n value = parent.value,\n sumValue,\n minValue,\n maxValue,\n newRatio,\n minRatio,\n alpha,\n beta;\n\n while (i0 < n) {\n dx = x1 - x0, dy = y1 - y0;\n\n // Find the next non-empty node.\n do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);\n minValue = maxValue = sumValue;\n alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n beta = sumValue * sumValue * alpha;\n minRatio = Math.max(maxValue / beta, beta / minValue);\n\n // Keep adding nodes while the aspect ratio maintains or improves.\n for (; i1 < n; ++i1) {\n sumValue += nodeValue = nodes[i1].value;\n if (nodeValue < minValue) minValue = nodeValue;\n if (nodeValue > maxValue) maxValue = nodeValue;\n beta = sumValue * sumValue * alpha;\n newRatio = Math.max(maxValue / beta, beta / minValue);\n if (newRatio > minRatio) { sumValue -= nodeValue; break; }\n minRatio = newRatio;\n }\n\n // Position and record the row orientation.\n rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)});\n if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);\n else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n value -= sumValue, i0 = i1;\n }\n\n return rows;\n}\n\nexport default (function custom(ratio) {\n\n function squarify(parent, x0, y0, x1, y1) {\n squarifyRatio(ratio, parent, x0, y0, x1, y1);\n }\n\n squarify.ratio = function(x) {\n return custom((x = +x) > 1 ? x : 1);\n };\n\n return squarify;\n})(phi);\n","export default function(callback, that) {\n let index = -1;\n for (const node of this) {\n callback.call(that, node, ++index, this);\n }\n return this;\n}\n","export default function(callback, that) {\n var node = this, nodes = [node], next = [], children, i, n, index = -1;\n while (node = nodes.pop()) {\n next.push(node);\n if (children = node.children) {\n for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n }\n while (node = next.pop()) {\n callback.call(that, node, ++index, this);\n }\n return this;\n}\n","export default function(callback, that) {\n var node = this, nodes = [node], children, i, index = -1;\n while (node = nodes.pop()) {\n callback.call(that, node, ++index, this);\n if (children = node.children) {\n for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n }\n return this;\n}\n","export default function(callback, that) {\n let index = -1;\n for (const node of this) {\n if (callback.call(that, node, ++index, this)) {\n return node;\n }\n }\n}\n","export default function(value) {\n return this.eachAfter(function(node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}\n","export default function(compare) {\n return this.eachBefore(function(node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\n","export default function(end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\n","export default function() {\n var node = this, nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n var leaves = [];\n this.eachBefore(function(node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}\n","export default function() {\n var root = this, links = [];\n root.each(function(node) {\n if (node !== root) { // Don’t include the root’s parent, if any.\n links.push({source: node.parent, target: node});\n }\n });\n return links;\n}\n","export default function*() {\n var node = this, current, next = [node], children, i, n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n yield node;\n if (children = node.children) {\n for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n }\n } while (next.length);\n}\n","import { Injectable, ApplicationRef, ComponentFactoryResolver, Injector, Component, ViewEncapsulation, ElementRef, Renderer2, Inject, PLATFORM_ID, Input, ViewChild, HostBinding, HostListener, EventEmitter, ChangeDetectionStrategy, Output, Directive, NgZone, ChangeDetectorRef, NgModule, ViewContainerRef, ContentChild } from '@angular/core';\nimport { isPlatformBrowser, isPlatformServer, CommonModule } from '@angular/common';\nimport { trigger, transition, style, animate } from '@angular/animations';\nimport { DomPortalHost, ComponentPortal } from '@angular/cdk/portal';\nimport { __decorate } from 'tslib';\nimport { fromEvent } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { select } from 'd3-selection';\nimport { brushX } from 'd3-brush';\nimport { scaleTime, scaleLinear, scalePoint, scaleQuantile, scaleOrdinal, scaleBand } from 'd3-scale';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { curveLinear, area, line, curveCardinalClosed, lineRadial, arc, pie } from 'd3-shape';\nimport { range, min, max } from 'd3-array';\nimport { interpolate } from 'd3-interpolate';\nimport { format } from 'd3-format';\nimport { rgb } from 'd3-color';\nimport { treemap, stratify } from 'd3-hierarchy';\nimport { timeFormat } from 'd3-time-format';\n\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/common';\nimport * as ɵngcc2 from '@angular/platform-browser';\n\nconst _c0 = [\"caretElm\"];\nfunction TooltipContentComponent_span_4_ng_template_1_Template(rf, ctx) { }\nconst _c1 = function (a0) { return { model: a0 }; };\nfunction TooltipContentComponent_span_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\");\n ɵngcc0.ɵɵtemplate(1, TooltipContentComponent_span_4_ng_template_1_Template, 0, 0, \"ng-template\", 5);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.template)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction1(2, _c1, ctx_r1.context));\n} }\nfunction TooltipContentComponent_span_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 6);\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"innerHTML\", ctx_r2.title, ɵngcc0.ɵɵsanitizeHtml);\n} }\nfunction ChartComponent_ngx_charts_scale_legend_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵnamespaceHTML();\n ɵngcc0.ɵɵelement(0, \"ngx-charts-scale-legend\", 4);\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"horizontal\", ctx_r0.legendOptions && ctx_r0.legendOptions.position === \"below\")(\"valueRange\", ctx_r0.legendOptions.domain)(\"colors\", ctx_r0.legendOptions.colors)(\"height\", ctx_r0.view[1])(\"width\", ctx_r0.legendWidth);\n} }\nfunction ChartComponent_ngx_charts_legend_4_Template(rf, ctx) { if (rf & 1) {\n const _r3 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵnamespaceHTML();\n ɵngcc0.ɵɵelementStart(0, \"ngx-charts-legend\", 5);\n ɵngcc0.ɵɵlistener(\"labelClick\", function ChartComponent_ngx_charts_legend_4_Template_ngx_charts_legend_labelClick_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r2 = ɵngcc0.ɵɵnextContext(); return ctx_r2.legendLabelClick.emit($event); })(\"labelActivate\", function ChartComponent_ngx_charts_legend_4_Template_ngx_charts_legend_labelActivate_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r4 = ɵngcc0.ɵɵnextContext(); return ctx_r4.legendLabelActivate.emit($event); })(\"labelDeactivate\", function ChartComponent_ngx_charts_legend_4_Template_ngx_charts_legend_labelDeactivate_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.legendLabelDeactivate.emit($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"horizontal\", ctx_r1.legendOptions && ctx_r1.legendOptions.position === \"below\")(\"data\", ctx_r1.legendOptions.domain)(\"title\", ctx_r1.legendOptions.title)(\"colors\", ctx_r1.legendOptions.colors)(\"height\", ctx_r1.view[1])(\"width\", ctx_r1.legendWidth)(\"activeEntries\", ctx_r1.activeEntries);\n} }\nconst _c2 = [\"*\"];\nconst _c3 = [\"ngx-charts-axis-label\", \"\"];\nconst _c4 = [\"ticksel\"];\nconst _c5 = [\"ngx-charts-x-axis-ticks\", \"\"];\nfunction XAxisTicksComponent__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 3)(1, \"title\");\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(3, \"text\", 4);\n ɵngcc0.ɵɵtext(4);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const tick_r3 = ctx.$implicit;\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵattribute(\"transform\", ctx_r1.tickTransform(tick_r3));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(ctx_r1.tickFormat(tick_r3));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"font-size\", \"12px\");\n ɵngcc0.ɵɵattribute(\"text-anchor\", ctx_r1.textAnchor)(\"transform\", ctx_r1.textTransform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r1.tickTrim(ctx_r1.tickFormat(tick_r3)), \" \");\n} }\nfunction XAxisTicksComponent__svg_g_3__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵelement(1, \"line\", 6);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵattribute(\"transform\", ctx_r5.gridLineTransform());\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"y1\", -ctx_r5.gridLineHeight);\n} }\nfunction XAxisTicksComponent__svg_g_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵtemplate(1, XAxisTicksComponent__svg_g_3__svg_g_1_Template, 2, 2, \"g\", 5);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const tick_r4 = ctx.$implicit;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵattribute(\"transform\", ctx_r2.tickTransform(tick_r4));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r2.showGridLines);\n} }\nconst _c6 = [\"ngx-charts-x-axis\", \"\"];\nfunction XAxisComponent__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n const _r3 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 2);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function XAxisComponent__svg_g_1_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r2 = ɵngcc0.ɵɵnextContext(); return ctx_r2.emitTicksHeight($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"trimTicks\", ctx_r0.trimTicks)(\"rotateTicks\", ctx_r0.rotateTicks)(\"maxTickLength\", ctx_r0.maxTickLength)(\"tickFormatting\", ctx_r0.tickFormatting)(\"tickArguments\", ctx_r0.tickArguments)(\"tickStroke\", ctx_r0.tickStroke)(\"scale\", ctx_r0.xScale)(\"orient\", ctx_r0.xOrient)(\"showGridLines\", ctx_r0.showGridLines)(\"gridLineHeight\", ctx_r0.dims.height)(\"width\", ctx_r0.dims.width)(\"tickValues\", ctx_r0.ticks);\n} }\nfunction XAxisComponent__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"g\", 3);\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"label\", ctx_r1.labelText)(\"offset\", ctx_r1.labelOffset)(\"orient\", \"bottom\")(\"height\", ctx_r1.dims.height)(\"width\", ctx_r1.dims.width);\n} }\nconst _c7 = [\"ngx-charts-y-axis-ticks\", \"\"];\nfunction YAxisTicksComponent__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 4)(1, \"title\");\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(3, \"text\", 5);\n ɵngcc0.ɵɵtext(4);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const tick_r5 = ctx.$implicit;\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵattribute(\"transform\", ctx_r1.transform(tick_r5));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(ctx_r1.tickFormat(tick_r5));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"font-size\", \"12px\");\n ɵngcc0.ɵɵattribute(\"dy\", ctx_r1.dy)(\"x\", ctx_r1.x1)(\"y\", ctx_r1.y1)(\"text-anchor\", ctx_r1.textAnchor);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r1.tickTrim(ctx_r1.tickFormat(tick_r5)), \" \");\n} }\nfunction YAxisTicksComponent__svg_path_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"path\", 6);\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵattribute(\"d\", ctx_r2.referenceAreaPath)(\"transform\", ctx_r2.gridLineTransform());\n} }\nfunction YAxisTicksComponent__svg_g_4__svg_g_1__svg_line_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"line\", 9);\n} if (rf & 2) {\n const ctx_r8 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵattribute(\"x2\", ctx_r8.gridLineWidth);\n} }\nfunction YAxisTicksComponent__svg_g_4__svg_g_1__svg_line_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"line\", 9);\n} if (rf & 2) {\n const ctx_r9 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵattribute(\"x2\", -ctx_r9.gridLineWidth);\n} }\nfunction YAxisTicksComponent__svg_g_4__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵtemplate(1, YAxisTicksComponent__svg_g_4__svg_g_1__svg_line_1_Template, 1, 1, \"line\", 8);\n ɵngcc0.ɵɵtemplate(2, YAxisTicksComponent__svg_g_4__svg_g_1__svg_line_2_Template, 1, 1, \"line\", 8);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r7 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵattribute(\"transform\", ctx_r7.gridLineTransform());\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r7.orient === \"left\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r7.orient === \"right\");\n} }\nfunction YAxisTicksComponent__svg_g_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵtemplate(1, YAxisTicksComponent__svg_g_4__svg_g_1_Template, 3, 3, \"g\", 7);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const tick_r6 = ctx.$implicit;\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵattribute(\"transform\", ctx_r3.transform(tick_r6));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r3.showGridLines);\n} }\nfunction YAxisTicksComponent__svg_g_5__svg_g_1__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\")(1, \"title\");\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(3, \"text\", 11);\n ɵngcc0.ɵɵtext(4);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const refLine_r10 = ɵngcc0.ɵɵnextContext(2).$implicit;\n const ctx_r12 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(ctx_r12.tickTrim(ctx_r12.tickFormat(refLine_r10.value)));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"dy\", ctx_r12.dy)(\"y\", -6)(\"x\", ctx_r12.gridLineWidth)(\"text-anchor\", ctx_r12.textAnchor);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", refLine_r10.name, \" \");\n} }\nfunction YAxisTicksComponent__svg_g_5__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵelement(1, \"line\", 10);\n ɵngcc0.ɵɵtemplate(2, YAxisTicksComponent__svg_g_5__svg_g_1__svg_g_2_Template, 5, 6, \"g\", 7);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const refLine_r10 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r11 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵattribute(\"transform\", ctx_r11.transform(refLine_r10.value));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"x2\", ctx_r11.gridLineWidth)(\"transform\", ctx_r11.gridLineTransform());\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r11.showRefLabels);\n} }\nfunction YAxisTicksComponent__svg_g_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵtemplate(1, YAxisTicksComponent__svg_g_5__svg_g_1_Template, 3, 4, \"g\", 7);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r4.showRefLines);\n} }\nconst _c8 = [\"ngx-charts-y-axis\", \"\"];\nfunction YAxisComponent__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n const _r3 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 2);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function YAxisComponent__svg_g_1_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r2 = ɵngcc0.ɵɵnextContext(); return ctx_r2.emitTicksWidth($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"trimTicks\", ctx_r0.trimTicks)(\"maxTickLength\", ctx_r0.maxTickLength)(\"tickFormatting\", ctx_r0.tickFormatting)(\"tickArguments\", ctx_r0.tickArguments)(\"tickValues\", ctx_r0.ticks)(\"tickStroke\", ctx_r0.tickStroke)(\"scale\", ctx_r0.yScale)(\"orient\", ctx_r0.yOrient)(\"showGridLines\", ctx_r0.showGridLines)(\"gridLineWidth\", ctx_r0.dims.width)(\"referenceLines\", ctx_r0.referenceLines)(\"showRefLines\", ctx_r0.showRefLines)(\"showRefLabels\", ctx_r0.showRefLabels)(\"height\", ctx_r0.dims.height);\n} }\nfunction YAxisComponent__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"g\", 3);\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"label\", ctx_r1.labelText)(\"offset\", ctx_r1.labelOffset)(\"orient\", ctx_r1.yOrient)(\"height\", ctx_r1.dims.height)(\"width\", ctx_r1.dims.width);\n} }\nconst _c9 = [\"ngx-charts-circle-series\", \"\"];\nfunction CircleSeriesComponent__svg_g_0__svg_rect_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"rect\", 4);\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"@animationState\", \"active\");\n ɵngcc0.ɵɵattribute(\"x\", ctx_r1.circle.cx - ctx_r1.circle.radius)(\"y\", ctx_r1.circle.cy)(\"width\", ctx_r1.circle.radius * 2)(\"height\", ctx_r1.circle.height)(\"fill\", ctx_r1.gradientFill);\n} }\nconst _c10 = function (a0) { return { name: a0 }; };\nfunction CircleSeriesComponent__svg_g_0_Template(rf, ctx) { if (rf & 1) {\n const _r3 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\")(1, \"defs\");\n ɵngcc0.ɵɵelement(2, \"g\", 1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, CircleSeriesComponent__svg_g_0__svg_rect_3_Template, 1, 6, \"rect\", 2);\n ɵngcc0.ɵɵelementStart(4, \"g\", 3);\n ɵngcc0.ɵɵlistener(\"select\", function CircleSeriesComponent__svg_g_0_Template__svg_g_select_4_listener() { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r2 = ɵngcc0.ɵɵnextContext(); return ctx_r2.onClick(ctx_r2.circle.data); })(\"activate\", function CircleSeriesComponent__svg_g_0_Template__svg_g_activate_4_listener() { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r4 = ɵngcc0.ɵɵnextContext(); return ctx_r4.activateCircle(); })(\"deactivate\", function CircleSeriesComponent__svg_g_0_Template__svg_g_deactivate_4_listener() { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.deactivateCircle(); });\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"name\", ctx_r0.gradientId)(\"stops\", ctx_r0.circle.gradientStops);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.barVisible && ctx_r0.type === \"standard\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"active\", ctx_r0.isActive(ɵngcc0.ɵɵpureFunction1(18, _c10, ctx_r0.circle.seriesName)));\n ɵngcc0.ɵɵproperty(\"cx\", ctx_r0.circle.cx)(\"cy\", ctx_r0.circle.cy)(\"r\", ctx_r0.circle.radius)(\"fill\", ctx_r0.circle.color)(\"pointerEvents\", ctx_r0.circle.value === 0 ? \"none\" : \"all\")(\"data\", ctx_r0.circle.value)(\"classNames\", ctx_r0.circle.classNames)(\"tooltipDisabled\", ctx_r0.tooltipDisabled)(\"tooltipPlacement\", \"top\")(\"tooltipType\", \"tooltip\")(\"tooltipTitle\", ctx_r0.tooltipTemplate ? undefined : ctx_r0.getTooltipText(ctx_r0.circle))(\"tooltipTemplate\", ctx_r0.tooltipTemplate)(\"tooltipContext\", ctx_r0.circle.data);\n} }\nconst _c11 = [\"ngx-charts-circle\", \"\"];\nconst _c12 = [\"ngx-charts-grid-panel\", \"\"];\nconst _c13 = [\"ngx-charts-grid-panel-series\", \"\"];\nfunction GridPanelSeriesComponent__svg_g_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"g\", 1);\n} if (rf & 2) {\n const gridPanel_r1 = ctx.$implicit;\n ɵngcc0.ɵɵclassProp(\"grid-panel\", true)(\"odd\", gridPanel_r1.class === \"odd\")(\"even\", gridPanel_r1.class === \"even\");\n ɵngcc0.ɵɵproperty(\"height\", gridPanel_r1.height)(\"width\", gridPanel_r1.width)(\"x\", gridPanel_r1.x)(\"y\", gridPanel_r1.y);\n} }\nconst _c14 = [\"ngx-charts-svg-linear-gradient\", \"\"];\nfunction SvgLinearGradientComponent__svg_stop_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"stop\");\n} if (rf & 2) {\n const stop_r1 = ctx.$implicit;\n ɵngcc0.ɵɵstyleProp(\"stop-color\", stop_r1.color)(\"stop-opacity\", stop_r1.opacity);\n ɵngcc0.ɵɵattribute(\"offset\", stop_r1.offset + \"%\");\n} }\nconst _c15 = [\"ngx-charts-svg-radial-gradient\", \"\"];\nfunction SvgRadialGradientComponent__svg_stop_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"stop\");\n} if (rf & 2) {\n const stop_r1 = ctx.$implicit;\n ɵngcc0.ɵɵstyleProp(\"stop-color\", stop_r1.color)(\"stop-opacity\", stop_r1.opacity);\n ɵngcc0.ɵɵattribute(\"offset\", stop_r1.offset + \"%\");\n} }\nconst _c16 = [\"ngx-charts-area\", \"\"];\nfunction AreaComponent__svg_defs_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"defs\");\n ɵngcc0.ɵɵelement(1, \"g\", 2);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"name\", ctx_r0.gradientId)(\"stops\", ctx_r0.gradientStops);\n} }\nconst _c17 = [\"ngx-charts-count-up\", \"\"];\nconst _c18 = [\"tooltipAnchor\"];\nconst _c19 = [\"ngx-charts-tooltip-area\", \"\"];\nfunction TooltipArea__svg_ng_template_2__xhtml_div_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 6);\n ɵngcc0.ɵɵelement(1, \"span\", 7);\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const tooltipItem_r5 = ctx.$implicit;\n const ctx_r4 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"background-color\", tooltipItem_r5.color);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r4.getToolTipText(tooltipItem_r5), \" \");\n} }\nfunction TooltipArea__svg_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵnamespaceHTML();\n ɵngcc0.ɵɵelementStart(0, \"div\", 4);\n ɵngcc0.ɵɵtemplate(1, TooltipArea__svg_ng_template_2__xhtml_div_1_Template, 3, 3, \"div\", 5);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const model_r3 = ctx.model;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", model_r3);\n} }\nconst _c20 = [\"ngx-charts-timeline\", \"\"];\nfunction LegendComponent_header_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"header\", 4)(1, \"span\", 5);\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(ctx_r0.title);\n} }\nfunction LegendComponent_li_4_Template(rf, ctx) { if (rf & 1) {\n const _r4 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"li\", 6)(1, \"ngx-charts-legend-entry\", 7);\n ɵngcc0.ɵɵlistener(\"select\", function LegendComponent_li_4_Template_ngx_charts_legend_entry_select_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r3 = ɵngcc0.ɵɵnextContext(); return ctx_r3.labelClick.emit($event); })(\"activate\", function LegendComponent_li_4_Template_ngx_charts_legend_entry_activate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.activate($event); })(\"deactivate\", function LegendComponent_li_4_Template_ngx_charts_legend_entry_deactivate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r6 = ɵngcc0.ɵɵnextContext(); return ctx_r6.deactivate($event); });\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const entry_r2 = ctx.$implicit;\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"label\", entry_r2.label)(\"formattedLabel\", entry_r2.formattedLabel)(\"color\", entry_r2.color)(\"isActive\", ctx_r1.isActive(entry_r2));\n} }\nfunction AdvancedLegendComponent_div_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 7);\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"countTo\", ctx_r0.roundedTotal)(\"valueFormatting\", ctx_r0.valueFormatting);\n} }\nfunction AdvancedLegendComponent_div_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 8);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r1.valueFormatting ? ctx_r1.valueFormatting(ctx_r1.roundedTotal) : ctx_r1.defaultValueFormatting(ctx_r1.roundedTotal), \" \");\n} }\nfunction AdvancedLegendComponent_div_7_div_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 16);\n} if (rf & 2) {\n const legendItem_r3 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"countTo\", legendItem_r3._value)(\"valueFormatting\", ctx_r4.valueFormatting);\n} }\nfunction AdvancedLegendComponent_div_7_div_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 17);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const legendItem_r3 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r5 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r5.valueFormatting ? ctx_r5.valueFormatting(legendItem_r3.value) : ctx_r5.defaultValueFormatting(legendItem_r3.value), \" \");\n} }\nfunction AdvancedLegendComponent_div_7_div_6_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 18);\n} if (rf & 2) {\n const legendItem_r3 = ɵngcc0.ɵɵnextContext().$implicit;\n ɵngcc0.ɵɵproperty(\"countTo\", legendItem_r3.percentage)(\"countSuffix\", \"%\");\n} }\nfunction AdvancedLegendComponent_div_7_div_7_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 19);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const legendItem_r3 = ɵngcc0.ɵɵnextContext().$implicit;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\"\", legendItem_r3.percentage.toLocaleString(), \"%\");\n} }\nfunction AdvancedLegendComponent_div_7_Template(rf, ctx) { if (rf & 1) {\n const _r13 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 9);\n ɵngcc0.ɵɵlistener(\"mouseenter\", function AdvancedLegendComponent_div_7_Template_div_mouseenter_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r13); const legendItem_r3 = restoredCtx.$implicit; const ctx_r12 = ɵngcc0.ɵɵnextContext(); return ctx_r12.activate.emit(legendItem_r3.data); })(\"mouseleave\", function AdvancedLegendComponent_div_7_Template_div_mouseleave_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r13); const legendItem_r3 = restoredCtx.$implicit; const ctx_r14 = ɵngcc0.ɵɵnextContext(); return ctx_r14.deactivate.emit(legendItem_r3.data); })(\"click\", function AdvancedLegendComponent_div_7_Template_div_click_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r13); const legendItem_r3 = restoredCtx.$implicit; const ctx_r15 = ɵngcc0.ɵɵnextContext(); return ctx_r15.select.emit(legendItem_r3.data); });\n ɵngcc0.ɵɵelement(1, \"div\", 10);\n ɵngcc0.ɵɵtemplate(2, AdvancedLegendComponent_div_7_div_2_Template, 1, 2, \"div\", 11);\n ɵngcc0.ɵɵtemplate(3, AdvancedLegendComponent_div_7_div_3_Template, 2, 1, \"div\", 12);\n ɵngcc0.ɵɵelementStart(4, \"div\", 13);\n ɵngcc0.ɵɵtext(5);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(6, AdvancedLegendComponent_div_7_div_6_Template, 1, 2, \"div\", 14);\n ɵngcc0.ɵɵtemplate(7, AdvancedLegendComponent_div_7_div_7_Template, 2, 1, \"div\", 15);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const legendItem_r3 = ctx.$implicit;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"border-left-color\", legendItem_r3.color);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r2.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r2.animations);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(legendItem_r3.displayLabel);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r2.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r2.animations);\n} }\nconst _c21 = [\"tooltipTemplate\"];\nconst _c22 = [\"seriesTooltipTemplate\"];\nfunction AreaChartComponent__svg_g_5_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 7);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function AreaChartComponent__svg_g_5_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.updateXAxisHeight($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r0.xScale)(\"dims\", ctx_r0.dims)(\"showGridLines\", ctx_r0.showGridLines)(\"showLabel\", ctx_r0.showXAxisLabel)(\"labelText\", ctx_r0.xAxisLabel)(\"trimTicks\", ctx_r0.trimXAxisTicks)(\"rotateTicks\", ctx_r0.rotateXAxisTicks)(\"maxTickLength\", ctx_r0.maxXAxisTickLength)(\"tickFormatting\", ctx_r0.xAxisTickFormatting)(\"ticks\", ctx_r0.xAxisTicks);\n} }\nfunction AreaChartComponent__svg_g_6_Template(rf, ctx) { if (rf & 1) {\n const _r8 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 8);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function AreaChartComponent__svg_g_6_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r7 = ɵngcc0.ɵɵnextContext(); return ctx_r7.updateYAxisWidth($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"yScale\", ctx_r1.yScale)(\"dims\", ctx_r1.dims)(\"showGridLines\", ctx_r1.showGridLines)(\"showLabel\", ctx_r1.showYAxisLabel)(\"labelText\", ctx_r1.yAxisLabel)(\"trimTicks\", ctx_r1.trimYAxisTicks)(\"maxTickLength\", ctx_r1.maxYAxisTickLength)(\"tickFormatting\", ctx_r1.yAxisTickFormatting)(\"ticks\", ctx_r1.yAxisTicks);\n} }\nfunction AreaChartComponent__svg_g_8_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵelement(1, \"g\", 9);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const series_r9 = ctx.$implicit;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r2.xScale)(\"yScale\", ctx_r2.yScale)(\"baseValue\", ctx_r2.baseValue)(\"colors\", ctx_r2.colors)(\"data\", series_r9)(\"activeEntries\", ctx_r2.activeEntries)(\"scaleType\", ctx_r2.scaleType)(\"gradient\", ctx_r2.gradient)(\"curve\", ctx_r2.curve)(\"animations\", ctx_r2.animations);\n} }\nfunction AreaChartComponent__svg_g_9__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n const _r13 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\")(1, \"g\", 13);\n ɵngcc0.ɵɵlistener(\"select\", function AreaChartComponent__svg_g_9__svg_g_2_Template__svg_g_select_1_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r13); const series_r11 = restoredCtx.$implicit; const ctx_r12 = ɵngcc0.ɵɵnextContext(2); return ctx_r12.onClick($event, series_r11); })(\"activate\", function AreaChartComponent__svg_g_9__svg_g_2_Template__svg_g_activate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r14 = ɵngcc0.ɵɵnextContext(2); return ctx_r14.onActivate($event); })(\"deactivate\", function AreaChartComponent__svg_g_9__svg_g_2_Template__svg_g_deactivate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r15 = ɵngcc0.ɵɵnextContext(2); return ctx_r15.onDeactivate($event); });\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const series_r11 = ctx.$implicit;\n const ctx_r10 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r10.xScale)(\"yScale\", ctx_r10.yScale)(\"colors\", ctx_r10.colors)(\"activeEntries\", ctx_r10.activeEntries)(\"data\", series_r11)(\"scaleType\", ctx_r10.scaleType)(\"visibleValue\", ctx_r10.hoveredVertical)(\"tooltipDisabled\", ctx_r10.tooltipDisabled)(\"tooltipTemplate\", ctx_r10.tooltipTemplate);\n} }\nfunction AreaChartComponent__svg_g_9_Template(rf, ctx) { if (rf & 1) {\n const _r17 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 10);\n ɵngcc0.ɵɵlistener(\"mouseleave\", function AreaChartComponent__svg_g_9_Template__svg_g_mouseleave_0_listener() { ɵngcc0.ɵɵrestoreView(_r17); const ctx_r16 = ɵngcc0.ɵɵnextContext(); return ctx_r16.hideCircles(); });\n ɵngcc0.ɵɵelementStart(1, \"g\", 11);\n ɵngcc0.ɵɵlistener(\"hover\", function AreaChartComponent__svg_g_9_Template__svg_g_hover_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r17); const ctx_r18 = ɵngcc0.ɵɵnextContext(); return ctx_r18.updateHoveredVertical($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(2, AreaChartComponent__svg_g_9__svg_g_2_Template, 2, 9, \"g\", 12);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"dims\", ctx_r3.dims)(\"xSet\", ctx_r3.xSet)(\"xScale\", ctx_r3.xScale)(\"yScale\", ctx_r3.yScale)(\"results\", ctx_r3.results)(\"colors\", ctx_r3.colors)(\"tooltipDisabled\", ctx_r3.tooltipDisabled)(\"tooltipTemplate\", ctx_r3.seriesTooltipTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r3.results);\n} }\nfunction AreaChartComponent__svg_g_10__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵelement(1, \"g\", 15);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const series_r20 = ctx.$implicit;\n const ctx_r19 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r19.timelineXScale)(\"yScale\", ctx_r19.timelineYScale)(\"baseValue\", ctx_r19.baseValue)(\"colors\", ctx_r19.colors)(\"data\", series_r20)(\"scaleType\", ctx_r19.scaleType)(\"gradient\", ctx_r19.gradient)(\"curve\", ctx_r19.curve)(\"animations\", ctx_r19.animations);\n} }\nconst _c23 = function (a0, a1) { return [a0, a1]; };\nfunction AreaChartComponent__svg_g_10_Template(rf, ctx) { if (rf & 1) {\n const _r22 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 14);\n ɵngcc0.ɵɵlistener(\"onDomainChange\", function AreaChartComponent__svg_g_10_Template__svg_g_onDomainChange_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r22); const ctx_r21 = ɵngcc0.ɵɵnextContext(); return ctx_r21.updateDomain($event); });\n ɵngcc0.ɵɵtemplate(1, AreaChartComponent__svg_g_10__svg_g_1_Template, 2, 9, \"g\", 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"results\", ctx_r4.results)(\"view\", ɵngcc0.ɵɵpureFunction2(10, _c23, ctx_r4.timelineWidth, ctx_r4.height))(\"height\", ctx_r4.timelineHeight)(\"scheme\", ctx_r4.scheme)(\"customColors\", ctx_r4.customColors)(\"legend\", ctx_r4.legend)(\"scaleType\", ctx_r4.scaleType);\n ɵngcc0.ɵɵattribute(\"transform\", ctx_r4.timelineTransform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r4.results)(\"ngForTrackBy\", ctx_r4.trackBy);\n} }\nfunction AreaChartNormalizedComponent__svg_g_5_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 7);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function AreaChartNormalizedComponent__svg_g_5_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.updateXAxisHeight($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r0.xScale)(\"dims\", ctx_r0.dims)(\"showGridLines\", ctx_r0.showGridLines)(\"showLabel\", ctx_r0.showXAxisLabel)(\"labelText\", ctx_r0.xAxisLabel)(\"trimTicks\", ctx_r0.trimXAxisTicks)(\"rotateTicks\", ctx_r0.rotateXAxisTicks)(\"maxTickLength\", ctx_r0.maxXAxisTickLength)(\"tickFormatting\", ctx_r0.xAxisTickFormatting)(\"ticks\", ctx_r0.xAxisTicks);\n} }\nfunction AreaChartNormalizedComponent__svg_g_6_Template(rf, ctx) { if (rf & 1) {\n const _r8 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 8);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function AreaChartNormalizedComponent__svg_g_6_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r7 = ɵngcc0.ɵɵnextContext(); return ctx_r7.updateYAxisWidth($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"yScale\", ctx_r1.yScale)(\"dims\", ctx_r1.dims)(\"showGridLines\", ctx_r1.showGridLines)(\"showLabel\", ctx_r1.showYAxisLabel)(\"labelText\", ctx_r1.yAxisLabel)(\"trimTicks\", ctx_r1.trimYAxisTicks)(\"maxTickLength\", ctx_r1.maxYAxisTickLength)(\"tickFormatting\", ctx_r1.yAxisTickFormatting)(\"ticks\", ctx_r1.yAxisTicks);\n} }\nfunction AreaChartNormalizedComponent__svg_g_8_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵelement(1, \"g\", 9);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const series_r9 = ctx.$implicit;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r2.xScale)(\"yScale\", ctx_r2.yScale)(\"colors\", ctx_r2.colors)(\"data\", series_r9)(\"scaleType\", ctx_r2.scaleType)(\"activeEntries\", ctx_r2.activeEntries)(\"gradient\", ctx_r2.gradient)(\"curve\", ctx_r2.curve)(\"animations\", ctx_r2.animations);\n} }\nfunction AreaChartNormalizedComponent__svg_g_9__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n const _r13 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\")(1, \"g\", 13);\n ɵngcc0.ɵɵlistener(\"select\", function AreaChartNormalizedComponent__svg_g_9__svg_g_2_Template__svg_g_select_1_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r13); const series_r11 = restoredCtx.$implicit; const ctx_r12 = ɵngcc0.ɵɵnextContext(2); return ctx_r12.onClick($event, series_r11); })(\"activate\", function AreaChartNormalizedComponent__svg_g_9__svg_g_2_Template__svg_g_activate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r14 = ɵngcc0.ɵɵnextContext(2); return ctx_r14.onActivate($event); })(\"deactivate\", function AreaChartNormalizedComponent__svg_g_9__svg_g_2_Template__svg_g_deactivate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r15 = ɵngcc0.ɵɵnextContext(2); return ctx_r15.onDeactivate($event); });\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const series_r11 = ctx.$implicit;\n const ctx_r10 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r10.xScale)(\"yScale\", ctx_r10.yScale)(\"colors\", ctx_r10.colors)(\"activeEntries\", ctx_r10.activeEntries)(\"data\", series_r11)(\"scaleType\", ctx_r10.scaleType)(\"visibleValue\", ctx_r10.hoveredVertical)(\"tooltipDisabled\", ctx_r10.tooltipDisabled)(\"tooltipTemplate\", ctx_r10.tooltipTemplate);\n} }\nfunction AreaChartNormalizedComponent__svg_g_9_Template(rf, ctx) { if (rf & 1) {\n const _r17 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 10);\n ɵngcc0.ɵɵlistener(\"mouseleave\", function AreaChartNormalizedComponent__svg_g_9_Template__svg_g_mouseleave_0_listener() { ɵngcc0.ɵɵrestoreView(_r17); const ctx_r16 = ɵngcc0.ɵɵnextContext(); return ctx_r16.hideCircles(); });\n ɵngcc0.ɵɵelementStart(1, \"g\", 11);\n ɵngcc0.ɵɵlistener(\"hover\", function AreaChartNormalizedComponent__svg_g_9_Template__svg_g_hover_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r17); const ctx_r18 = ɵngcc0.ɵɵnextContext(); return ctx_r18.updateHoveredVertical($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(2, AreaChartNormalizedComponent__svg_g_9__svg_g_2_Template, 2, 9, \"g\", 12);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"dims\", ctx_r3.dims)(\"xSet\", ctx_r3.xSet)(\"xScale\", ctx_r3.xScale)(\"yScale\", ctx_r3.yScale)(\"results\", ctx_r3.results)(\"colors\", ctx_r3.colors)(\"showPercentage\", true)(\"tooltipDisabled\", ctx_r3.tooltipDisabled)(\"tooltipTemplate\", ctx_r3.seriesTooltipTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r3.results);\n} }\nfunction AreaChartNormalizedComponent__svg_g_10__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵelement(1, \"g\", 15);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const series_r20 = ctx.$implicit;\n const ctx_r19 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r19.timelineXScale)(\"yScale\", ctx_r19.timelineYScale)(\"colors\", ctx_r19.colors)(\"data\", series_r20)(\"scaleType\", ctx_r19.scaleType)(\"gradient\", ctx_r19.gradient)(\"curve\", ctx_r19.curve)(\"animations\", ctx_r19.animations);\n} }\nfunction AreaChartNormalizedComponent__svg_g_10_Template(rf, ctx) { if (rf & 1) {\n const _r22 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 14);\n ɵngcc0.ɵɵlistener(\"onDomainChange\", function AreaChartNormalizedComponent__svg_g_10_Template__svg_g_onDomainChange_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r22); const ctx_r21 = ɵngcc0.ɵɵnextContext(); return ctx_r21.updateDomain($event); });\n ɵngcc0.ɵɵtemplate(1, AreaChartNormalizedComponent__svg_g_10__svg_g_1_Template, 2, 8, \"g\", 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"results\", ctx_r4.results)(\"view\", ɵngcc0.ɵɵpureFunction2(10, _c23, ctx_r4.timelineWidth, ctx_r4.height))(\"height\", ctx_r4.timelineHeight)(\"scheme\", ctx_r4.scheme)(\"customColors\", ctx_r4.customColors)(\"legend\", ctx_r4.legend)(\"scaleType\", ctx_r4.scaleType);\n ɵngcc0.ɵɵattribute(\"transform\", ctx_r4.timelineTransform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r4.results)(\"ngForTrackBy\", ctx_r4.trackBy);\n} }\nconst _c24 = \".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:none}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{opacity:.2;transition:opacity .1s ease-in-out}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{fill:none;stroke:#ddd;stroke-width:1}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-dasharray:5;stroke-dashoffset:5;stroke-width:1}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill:#000;fill-opacity:.05}.ngx-charts .gridline-path-dotted{fill:none;stroke:#ddd;stroke-dasharray:1,20;stroke-dashoffset:3;stroke-width:1}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\";\nfunction AreaChartStackedComponent__svg_g_5_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 7);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function AreaChartStackedComponent__svg_g_5_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.updateXAxisHeight($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r0.xScale)(\"dims\", ctx_r0.dims)(\"showGridLines\", ctx_r0.showGridLines)(\"showLabel\", ctx_r0.showXAxisLabel)(\"labelText\", ctx_r0.xAxisLabel)(\"trimTicks\", ctx_r0.trimXAxisTicks)(\"rotateTicks\", ctx_r0.rotateXAxisTicks)(\"maxTickLength\", ctx_r0.maxXAxisTickLength)(\"tickFormatting\", ctx_r0.xAxisTickFormatting)(\"ticks\", ctx_r0.xAxisTicks);\n} }\nfunction AreaChartStackedComponent__svg_g_6_Template(rf, ctx) { if (rf & 1) {\n const _r8 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 8);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function AreaChartStackedComponent__svg_g_6_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r7 = ɵngcc0.ɵɵnextContext(); return ctx_r7.updateYAxisWidth($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"yScale\", ctx_r1.yScale)(\"dims\", ctx_r1.dims)(\"showGridLines\", ctx_r1.showGridLines)(\"showLabel\", ctx_r1.showYAxisLabel)(\"labelText\", ctx_r1.yAxisLabel)(\"trimTicks\", ctx_r1.trimYAxisTicks)(\"maxTickLength\", ctx_r1.maxYAxisTickLength)(\"tickFormatting\", ctx_r1.yAxisTickFormatting)(\"ticks\", ctx_r1.yAxisTicks);\n} }\nfunction AreaChartStackedComponent__svg_g_8_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵelement(1, \"g\", 9);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const series_r9 = ctx.$implicit;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r2.xScale)(\"yScale\", ctx_r2.yScale)(\"colors\", ctx_r2.colors)(\"data\", series_r9)(\"scaleType\", ctx_r2.scaleType)(\"gradient\", ctx_r2.gradient)(\"activeEntries\", ctx_r2.activeEntries)(\"curve\", ctx_r2.curve)(\"animations\", ctx_r2.animations);\n} }\nfunction AreaChartStackedComponent__svg_g_9__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n const _r13 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\")(1, \"g\", 12);\n ɵngcc0.ɵɵlistener(\"select\", function AreaChartStackedComponent__svg_g_9__svg_g_2_Template__svg_g_select_1_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r13); const series_r11 = restoredCtx.$implicit; const ctx_r12 = ɵngcc0.ɵɵnextContext(2); return ctx_r12.onClick($event, series_r11); })(\"activate\", function AreaChartStackedComponent__svg_g_9__svg_g_2_Template__svg_g_activate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r14 = ɵngcc0.ɵɵnextContext(2); return ctx_r14.onActivate($event); })(\"deactivate\", function AreaChartStackedComponent__svg_g_9__svg_g_2_Template__svg_g_deactivate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r15 = ɵngcc0.ɵɵnextContext(2); return ctx_r15.onDeactivate($event); });\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const series_r11 = ctx.$implicit;\n const ctx_r10 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r10.xScale)(\"yScale\", ctx_r10.yScale)(\"colors\", ctx_r10.colors)(\"activeEntries\", ctx_r10.activeEntries)(\"data\", series_r11)(\"scaleType\", ctx_r10.scaleType)(\"visibleValue\", ctx_r10.hoveredVertical)(\"tooltipDisabled\", ctx_r10.tooltipDisabled)(\"tooltipTemplate\", ctx_r10.tooltipTemplate);\n} }\nfunction AreaChartStackedComponent__svg_g_9_Template(rf, ctx) { if (rf & 1) {\n const _r17 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 10);\n ɵngcc0.ɵɵlistener(\"mouseleave\", function AreaChartStackedComponent__svg_g_9_Template__svg_g_mouseleave_0_listener() { ɵngcc0.ɵɵrestoreView(_r17); const ctx_r16 = ɵngcc0.ɵɵnextContext(); return ctx_r16.hideCircles(); });\n ɵngcc0.ɵɵelementStart(1, \"g\", 11);\n ɵngcc0.ɵɵlistener(\"hover\", function AreaChartStackedComponent__svg_g_9_Template__svg_g_hover_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r17); const ctx_r18 = ɵngcc0.ɵɵnextContext(); return ctx_r18.updateHoveredVertical($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(2, AreaChartStackedComponent__svg_g_9__svg_g_2_Template, 2, 9, \"g\", 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"dims\", ctx_r3.dims)(\"xSet\", ctx_r3.xSet)(\"xScale\", ctx_r3.xScale)(\"yScale\", ctx_r3.yScale)(\"results\", ctx_r3.results)(\"colors\", ctx_r3.colors)(\"tooltipDisabled\", ctx_r3.tooltipDisabled)(\"tooltipTemplate\", ctx_r3.seriesTooltipTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r3.results)(\"ngForTrackBy\", ctx_r3.trackBy);\n} }\nfunction AreaChartStackedComponent__svg_g_10__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵelement(1, \"g\", 14);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const series_r20 = ctx.$implicit;\n const ctx_r19 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r19.timelineXScale)(\"yScale\", ctx_r19.timelineYScale)(\"colors\", ctx_r19.colors)(\"data\", series_r20)(\"scaleType\", ctx_r19.scaleType)(\"gradient\", ctx_r19.gradient)(\"curve\", ctx_r19.curve)(\"animations\", ctx_r19.animations);\n} }\nfunction AreaChartStackedComponent__svg_g_10_Template(rf, ctx) { if (rf & 1) {\n const _r22 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 13);\n ɵngcc0.ɵɵlistener(\"onDomainChange\", function AreaChartStackedComponent__svg_g_10_Template__svg_g_onDomainChange_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r22); const ctx_r21 = ɵngcc0.ɵɵnextContext(); return ctx_r21.updateDomain($event); });\n ɵngcc0.ɵɵtemplate(1, AreaChartStackedComponent__svg_g_10__svg_g_1_Template, 2, 8, \"g\", 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"results\", ctx_r4.results)(\"view\", ɵngcc0.ɵɵpureFunction2(10, _c23, ctx_r4.timelineWidth, ctx_r4.height))(\"height\", ctx_r4.timelineHeight)(\"scheme\", ctx_r4.scheme)(\"customColors\", ctx_r4.customColors)(\"legend\", ctx_r4.legend)(\"scaleType\", ctx_r4.scaleType);\n ɵngcc0.ɵɵattribute(\"transform\", ctx_r4.timelineTransform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r4.results)(\"ngForTrackBy\", ctx_r4.trackBy);\n} }\nconst _c25 = [\"ngx-charts-area-series\", \"\"];\nconst _c26 = [\"ngx-charts-bar\", \"\"];\nfunction BarComponent__svg_defs_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"defs\");\n ɵngcc0.ɵɵelement(1, \"g\", 2);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"orientation\", ctx_r0.orientation)(\"name\", ctx_r0.gradientId)(\"stops\", ctx_r0.gradientStops);\n} }\nfunction BarHorizontalComponent__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n const _r3 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 5);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BarHorizontalComponent__svg_g_2_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r2 = ɵngcc0.ɵɵnextContext(); return ctx_r2.updateXAxisHeight($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r0.xScale)(\"dims\", ctx_r0.dims)(\"showGridLines\", ctx_r0.showGridLines)(\"showLabel\", ctx_r0.showXAxisLabel)(\"labelText\", ctx_r0.xAxisLabel)(\"trimTicks\", ctx_r0.trimXAxisTicks)(\"rotateTicks\", ctx_r0.rotateXAxisTicks)(\"maxTickLength\", ctx_r0.maxXAxisTickLength)(\"tickFormatting\", ctx_r0.xAxisTickFormatting)(\"ticks\", ctx_r0.xAxisTicks);\n} }\nfunction BarHorizontalComponent__svg_g_3_Template(rf, ctx) { if (rf & 1) {\n const _r5 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 6);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BarHorizontalComponent__svg_g_3_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r4 = ɵngcc0.ɵɵnextContext(); return ctx_r4.updateYAxisWidth($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"yScale\", ctx_r1.yScale)(\"dims\", ctx_r1.dims)(\"showLabel\", ctx_r1.showYAxisLabel)(\"labelText\", ctx_r1.yAxisLabel)(\"trimTicks\", ctx_r1.trimYAxisTicks)(\"maxTickLength\", ctx_r1.maxYAxisTickLength)(\"tickFormatting\", ctx_r1.yAxisTickFormatting)(\"ticks\", ctx_r1.yAxisTicks)(\"yAxisOffset\", ctx_r1.dataLabelMaxWidth.negative);\n} }\nfunction BarHorizontal2DComponent__svg_g_3_Template(rf, ctx) { if (rf & 1) {\n const _r4 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 6);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BarHorizontal2DComponent__svg_g_3_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r3 = ɵngcc0.ɵɵnextContext(); return ctx_r3.updateXAxisHeight($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r0.valueScale)(\"dims\", ctx_r0.dims)(\"showGridLines\", ctx_r0.showGridLines)(\"showLabel\", ctx_r0.showXAxisLabel)(\"labelText\", ctx_r0.xAxisLabel)(\"trimTicks\", ctx_r0.trimXAxisTicks)(\"rotateTicks\", ctx_r0.rotateXAxisTicks)(\"maxTickLength\", ctx_r0.maxXAxisTickLength)(\"tickFormatting\", ctx_r0.xAxisTickFormatting)(\"ticks\", ctx_r0.xAxisTicks);\n} }\nfunction BarHorizontal2DComponent__svg_g_4_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 7);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BarHorizontal2DComponent__svg_g_4_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.updateYAxisWidth($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"yScale\", ctx_r1.groupScale)(\"dims\", ctx_r1.dims)(\"showLabel\", ctx_r1.showYAxisLabel)(\"labelText\", ctx_r1.yAxisLabel)(\"trimTicks\", ctx_r1.trimYAxisTicks)(\"maxTickLength\", ctx_r1.maxYAxisTickLength)(\"tickFormatting\", ctx_r1.yAxisTickFormatting)(\"ticks\", ctx_r1.yAxisTicks)(\"yAxisOffset\", ctx_r1.dataLabelMaxWidth.negative);\n} }\nfunction BarHorizontal2DComponent__svg_g_5_Template(rf, ctx) { if (rf & 1) {\n const _r10 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\")(1, \"g\", 8);\n ɵngcc0.ɵɵlistener(\"select\", function BarHorizontal2DComponent__svg_g_5_Template__svg_g_select_1_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r10); const group_r7 = restoredCtx.$implicit; const ctx_r9 = ɵngcc0.ɵɵnextContext(); return ctx_r9.onClick($event, group_r7); })(\"activate\", function BarHorizontal2DComponent__svg_g_5_Template__svg_g_activate_1_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r10); const group_r7 = restoredCtx.$implicit; const ctx_r11 = ɵngcc0.ɵɵnextContext(); return ctx_r11.onActivate($event, group_r7); })(\"deactivate\", function BarHorizontal2DComponent__svg_g_5_Template__svg_g_deactivate_1_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r10); const group_r7 = restoredCtx.$implicit; const ctx_r12 = ɵngcc0.ɵɵnextContext(); return ctx_r12.onDeactivate($event, group_r7); })(\"dataLabelWidthChanged\", function BarHorizontal2DComponent__svg_g_5_Template__svg_g_dataLabelWidthChanged_1_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r10); const index_r8 = restoredCtx.index; const ctx_r13 = ɵngcc0.ɵɵnextContext(); return ctx_r13.onDataLabelMaxWidthChanged($event, index_r8); });\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const group_r7 = ctx.$implicit;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"@animationState\", \"active\");\n ɵngcc0.ɵɵattribute(\"transform\", ctx_r2.groupTransform(group_r7));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r2.valueScale)(\"activeEntries\", ctx_r2.activeEntries)(\"yScale\", ctx_r2.innerScale)(\"colors\", ctx_r2.colors)(\"series\", group_r7.series)(\"dims\", ctx_r2.dims)(\"gradient\", ctx_r2.gradient)(\"tooltipDisabled\", ctx_r2.tooltipDisabled)(\"tooltipTemplate\", ctx_r2.tooltipTemplate)(\"seriesName\", group_r7.name)(\"roundEdges\", ctx_r2.roundEdges)(\"animations\", ctx_r2.animations)(\"showDataLabel\", ctx_r2.showDataLabel)(\"dataLabelFormatting\", ctx_r2.dataLabelFormatting)(\"noBarWhenZero\", ctx_r2.noBarWhenZero);\n} }\nfunction BarHorizontalNormalizedComponent__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n const _r4 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 5);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BarHorizontalNormalizedComponent__svg_g_2_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r3 = ɵngcc0.ɵɵnextContext(); return ctx_r3.updateXAxisHeight($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r0.xScale)(\"dims\", ctx_r0.dims)(\"showGridLines\", ctx_r0.showGridLines)(\"showLabel\", ctx_r0.showXAxisLabel)(\"labelText\", ctx_r0.xAxisLabel)(\"trimTicks\", ctx_r0.trimXAxisTicks)(\"rotateTicks\", ctx_r0.rotateXAxisTicks)(\"maxTickLength\", ctx_r0.maxXAxisTickLength)(\"tickFormatting\", ctx_r0.xAxisTickFormatting)(\"ticks\", ctx_r0.xAxisTicks);\n} }\nfunction BarHorizontalNormalizedComponent__svg_g_3_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 6);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BarHorizontalNormalizedComponent__svg_g_3_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.updateYAxisWidth($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"yScale\", ctx_r1.yScale)(\"dims\", ctx_r1.dims)(\"showLabel\", ctx_r1.showYAxisLabel)(\"labelText\", ctx_r1.yAxisLabel)(\"trimTicks\", ctx_r1.trimYAxisTicks)(\"maxTickLength\", ctx_r1.maxYAxisTickLength)(\"tickFormatting\", ctx_r1.yAxisTickFormatting)(\"ticks\", ctx_r1.yAxisTicks);\n} }\nfunction BarHorizontalNormalizedComponent__svg_g_4_Template(rf, ctx) { if (rf & 1) {\n const _r9 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\")(1, \"g\", 7);\n ɵngcc0.ɵɵlistener(\"select\", function BarHorizontalNormalizedComponent__svg_g_4_Template__svg_g_select_1_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r9); const group_r7 = restoredCtx.$implicit; const ctx_r8 = ɵngcc0.ɵɵnextContext(); return ctx_r8.onClick($event, group_r7); })(\"activate\", function BarHorizontalNormalizedComponent__svg_g_4_Template__svg_g_activate_1_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r9); const group_r7 = restoredCtx.$implicit; const ctx_r10 = ɵngcc0.ɵɵnextContext(); return ctx_r10.onActivate($event, group_r7); })(\"deactivate\", function BarHorizontalNormalizedComponent__svg_g_4_Template__svg_g_deactivate_1_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r9); const group_r7 = restoredCtx.$implicit; const ctx_r11 = ɵngcc0.ɵɵnextContext(); return ctx_r11.onDeactivate($event, group_r7); });\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const group_r7 = ctx.$implicit;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"@animationState\", \"active\");\n ɵngcc0.ɵɵattribute(\"transform\", ctx_r2.groupTransform(group_r7));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r2.xScale)(\"yScale\", ctx_r2.yScale)(\"activeEntries\", ctx_r2.activeEntries)(\"colors\", ctx_r2.colors)(\"series\", group_r7.series)(\"dims\", ctx_r2.dims)(\"gradient\", ctx_r2.gradient)(\"tooltipDisabled\", ctx_r2.tooltipDisabled)(\"tooltipTemplate\", ctx_r2.tooltipTemplate)(\"seriesName\", group_r7.name)(\"animations\", ctx_r2.animations)(\"noBarWhenZero\", ctx_r2.noBarWhenZero);\n} }\nfunction BarHorizontalStackedComponent__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n const _r4 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 5);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BarHorizontalStackedComponent__svg_g_2_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r3 = ɵngcc0.ɵɵnextContext(); return ctx_r3.updateXAxisHeight($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r0.xScale)(\"dims\", ctx_r0.dims)(\"showGridLines\", ctx_r0.showGridLines)(\"showLabel\", ctx_r0.showXAxisLabel)(\"labelText\", ctx_r0.xAxisLabel)(\"trimTicks\", ctx_r0.trimXAxisTicks)(\"rotateTicks\", ctx_r0.rotateXAxisTicks)(\"maxTickLength\", ctx_r0.maxXAxisTickLength)(\"tickFormatting\", ctx_r0.xAxisTickFormatting)(\"ticks\", ctx_r0.xAxisTicks);\n} }\nfunction BarHorizontalStackedComponent__svg_g_3_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 6);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BarHorizontalStackedComponent__svg_g_3_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.updateYAxisWidth($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"yScale\", ctx_r1.yScale)(\"dims\", ctx_r1.dims)(\"showLabel\", ctx_r1.showYAxisLabel)(\"labelText\", ctx_r1.yAxisLabel)(\"trimTicks\", ctx_r1.trimYAxisTicks)(\"maxTickLength\", ctx_r1.maxYAxisTickLength)(\"tickFormatting\", ctx_r1.yAxisTickFormatting)(\"ticks\", ctx_r1.yAxisTicks)(\"yAxisOffset\", ctx_r1.dataLabelMaxWidth.negative);\n} }\nfunction BarHorizontalStackedComponent__svg_g_4_Template(rf, ctx) { if (rf & 1) {\n const _r10 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\")(1, \"g\", 7);\n ɵngcc0.ɵɵlistener(\"select\", function BarHorizontalStackedComponent__svg_g_4_Template__svg_g_select_1_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r10); const group_r7 = restoredCtx.$implicit; const ctx_r9 = ɵngcc0.ɵɵnextContext(); return ctx_r9.onClick($event, group_r7); })(\"activate\", function BarHorizontalStackedComponent__svg_g_4_Template__svg_g_activate_1_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r10); const group_r7 = restoredCtx.$implicit; const ctx_r11 = ɵngcc0.ɵɵnextContext(); return ctx_r11.onActivate($event, group_r7); })(\"deactivate\", function BarHorizontalStackedComponent__svg_g_4_Template__svg_g_deactivate_1_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r10); const group_r7 = restoredCtx.$implicit; const ctx_r12 = ɵngcc0.ɵɵnextContext(); return ctx_r12.onDeactivate($event, group_r7); })(\"dataLabelWidthChanged\", function BarHorizontalStackedComponent__svg_g_4_Template__svg_g_dataLabelWidthChanged_1_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r10); const index_r8 = restoredCtx.index; const ctx_r13 = ɵngcc0.ɵɵnextContext(); return ctx_r13.onDataLabelMaxWidthChanged($event, index_r8); });\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const group_r7 = ctx.$implicit;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"@animationState\", \"active\");\n ɵngcc0.ɵɵattribute(\"transform\", ctx_r2.groupTransform(group_r7));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r2.xScale)(\"yScale\", ctx_r2.yScale)(\"colors\", ctx_r2.colors)(\"series\", group_r7.series)(\"activeEntries\", ctx_r2.activeEntries)(\"dims\", ctx_r2.dims)(\"gradient\", ctx_r2.gradient)(\"tooltipDisabled\", ctx_r2.tooltipDisabled)(\"tooltipTemplate\", ctx_r2.tooltipTemplate)(\"seriesName\", group_r7.name)(\"animations\", ctx_r2.animations)(\"showDataLabel\", ctx_r2.showDataLabel)(\"dataLabelFormatting\", ctx_r2.dataLabelFormatting)(\"noBarWhenZero\", ctx_r2.noBarWhenZero);\n} }\nfunction BarVerticalComponent__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n const _r3 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 5);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BarVerticalComponent__svg_g_2_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r2 = ɵngcc0.ɵɵnextContext(); return ctx_r2.updateXAxisHeight($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r0.xScale)(\"dims\", ctx_r0.dims)(\"showLabel\", ctx_r0.showXAxisLabel)(\"labelText\", ctx_r0.xAxisLabel)(\"trimTicks\", ctx_r0.trimXAxisTicks)(\"rotateTicks\", ctx_r0.rotateXAxisTicks)(\"maxTickLength\", ctx_r0.maxXAxisTickLength)(\"tickFormatting\", ctx_r0.xAxisTickFormatting)(\"ticks\", ctx_r0.xAxisTicks)(\"xAxisOffset\", ctx_r0.dataLabelMaxHeight.negative);\n} }\nfunction BarVerticalComponent__svg_g_3_Template(rf, ctx) { if (rf & 1) {\n const _r5 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 6);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BarVerticalComponent__svg_g_3_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r4 = ɵngcc0.ɵɵnextContext(); return ctx_r4.updateYAxisWidth($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"yScale\", ctx_r1.yScale)(\"dims\", ctx_r1.dims)(\"showGridLines\", ctx_r1.showGridLines)(\"showLabel\", ctx_r1.showYAxisLabel)(\"labelText\", ctx_r1.yAxisLabel)(\"trimTicks\", ctx_r1.trimYAxisTicks)(\"maxTickLength\", ctx_r1.maxYAxisTickLength)(\"tickFormatting\", ctx_r1.yAxisTickFormatting)(\"ticks\", ctx_r1.yAxisTicks);\n} }\nfunction BarVertical2DComponent__svg_g_3_Template(rf, ctx) { if (rf & 1) {\n const _r4 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 6);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BarVertical2DComponent__svg_g_3_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r3 = ɵngcc0.ɵɵnextContext(); return ctx_r3.updateXAxisHeight($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r0.groupScale)(\"dims\", ctx_r0.dims)(\"showLabel\", ctx_r0.showXAxisLabel)(\"labelText\", ctx_r0.xAxisLabel)(\"trimTicks\", ctx_r0.trimXAxisTicks)(\"rotateTicks\", ctx_r0.rotateXAxisTicks)(\"maxTickLength\", ctx_r0.maxXAxisTickLength)(\"tickFormatting\", ctx_r0.xAxisTickFormatting)(\"ticks\", ctx_r0.xAxisTicks)(\"xAxisOffset\", ctx_r0.dataLabelMaxHeight.negative);\n} }\nfunction BarVertical2DComponent__svg_g_4_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 7);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BarVertical2DComponent__svg_g_4_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.updateYAxisWidth($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"yScale\", ctx_r1.valueScale)(\"dims\", ctx_r1.dims)(\"showGridLines\", ctx_r1.showGridLines)(\"showLabel\", ctx_r1.showYAxisLabel)(\"labelText\", ctx_r1.yAxisLabel)(\"trimTicks\", ctx_r1.trimYAxisTicks)(\"maxTickLength\", ctx_r1.maxYAxisTickLength)(\"tickFormatting\", ctx_r1.yAxisTickFormatting)(\"ticks\", ctx_r1.yAxisTicks);\n} }\nfunction BarVertical2DComponent__svg_g_5_Template(rf, ctx) { if (rf & 1) {\n const _r10 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 8);\n ɵngcc0.ɵɵlistener(\"select\", function BarVertical2DComponent__svg_g_5_Template__svg_g_select_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r10); const group_r7 = restoredCtx.$implicit; const ctx_r9 = ɵngcc0.ɵɵnextContext(); return ctx_r9.onClick($event, group_r7); })(\"activate\", function BarVertical2DComponent__svg_g_5_Template__svg_g_activate_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r10); const group_r7 = restoredCtx.$implicit; const ctx_r11 = ɵngcc0.ɵɵnextContext(); return ctx_r11.onActivate($event, group_r7); })(\"deactivate\", function BarVertical2DComponent__svg_g_5_Template__svg_g_deactivate_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r10); const group_r7 = restoredCtx.$implicit; const ctx_r12 = ɵngcc0.ɵɵnextContext(); return ctx_r12.onDeactivate($event, group_r7); })(\"dataLabelHeightChanged\", function BarVertical2DComponent__svg_g_5_Template__svg_g_dataLabelHeightChanged_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r10); const index_r8 = restoredCtx.index; const ctx_r13 = ɵngcc0.ɵɵnextContext(); return ctx_r13.onDataLabelMaxHeightChanged($event, index_r8); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const group_r7 = ctx.$implicit;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"@animationState\", \"active\")(\"activeEntries\", ctx_r2.activeEntries)(\"xScale\", ctx_r2.innerScale)(\"yScale\", ctx_r2.valueScale)(\"colors\", ctx_r2.colors)(\"series\", group_r7.series)(\"dims\", ctx_r2.dims)(\"gradient\", ctx_r2.gradient)(\"tooltipDisabled\", ctx_r2.tooltipDisabled)(\"tooltipTemplate\", ctx_r2.tooltipTemplate)(\"showDataLabel\", ctx_r2.showDataLabel)(\"dataLabelFormatting\", ctx_r2.dataLabelFormatting)(\"seriesName\", group_r7.name)(\"roundEdges\", ctx_r2.roundEdges)(\"animations\", ctx_r2.animations)(\"noBarWhenZero\", ctx_r2.noBarWhenZero);\n ɵngcc0.ɵɵattribute(\"transform\", ctx_r2.groupTransform(group_r7));\n} }\nfunction BarVerticalNormalizedComponent__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n const _r4 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 5);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BarVerticalNormalizedComponent__svg_g_2_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r3 = ɵngcc0.ɵɵnextContext(); return ctx_r3.updateXAxisHeight($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r0.xScale)(\"dims\", ctx_r0.dims)(\"showLabel\", ctx_r0.showXAxisLabel)(\"labelText\", ctx_r0.xAxisLabel)(\"trimTicks\", ctx_r0.trimXAxisTicks)(\"rotateTicks\", ctx_r0.rotateXAxisTicks)(\"maxTickLength\", ctx_r0.maxXAxisTickLength)(\"tickFormatting\", ctx_r0.xAxisTickFormatting)(\"ticks\", ctx_r0.xAxisTicks);\n} }\nfunction BarVerticalNormalizedComponent__svg_g_3_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 6);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BarVerticalNormalizedComponent__svg_g_3_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.updateYAxisWidth($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"yScale\", ctx_r1.yScale)(\"dims\", ctx_r1.dims)(\"showGridLines\", ctx_r1.showGridLines)(\"showLabel\", ctx_r1.showYAxisLabel)(\"labelText\", ctx_r1.yAxisLabel)(\"trimTicks\", ctx_r1.trimYAxisTicks)(\"maxTickLength\", ctx_r1.maxYAxisTickLength)(\"tickFormatting\", ctx_r1.yAxisTickFormatting)(\"ticks\", ctx_r1.yAxisTicks);\n} }\nfunction BarVerticalNormalizedComponent__svg_g_4_Template(rf, ctx) { if (rf & 1) {\n const _r9 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\")(1, \"g\", 7);\n ɵngcc0.ɵɵlistener(\"select\", function BarVerticalNormalizedComponent__svg_g_4_Template__svg_g_select_1_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r9); const group_r7 = restoredCtx.$implicit; const ctx_r8 = ɵngcc0.ɵɵnextContext(); return ctx_r8.onClick($event, group_r7); })(\"activate\", function BarVerticalNormalizedComponent__svg_g_4_Template__svg_g_activate_1_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r9); const group_r7 = restoredCtx.$implicit; const ctx_r10 = ɵngcc0.ɵɵnextContext(); return ctx_r10.onActivate($event, group_r7); })(\"deactivate\", function BarVerticalNormalizedComponent__svg_g_4_Template__svg_g_deactivate_1_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r9); const group_r7 = restoredCtx.$implicit; const ctx_r11 = ɵngcc0.ɵɵnextContext(); return ctx_r11.onDeactivate($event, group_r7); });\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const group_r7 = ctx.$implicit;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"@animationState\", \"active\");\n ɵngcc0.ɵɵattribute(\"transform\", ctx_r2.groupTransform(group_r7));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r2.xScale)(\"yScale\", ctx_r2.yScale)(\"activeEntries\", ctx_r2.activeEntries)(\"colors\", ctx_r2.colors)(\"series\", group_r7.series)(\"dims\", ctx_r2.dims)(\"gradient\", ctx_r2.gradient)(\"tooltipDisabled\", ctx_r2.tooltipDisabled)(\"tooltipTemplate\", ctx_r2.tooltipTemplate)(\"seriesName\", group_r7.name)(\"animations\", ctx_r2.animations)(\"noBarWhenZero\", ctx_r2.noBarWhenZero);\n} }\nfunction BarVerticalStackedComponent__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n const _r4 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 5);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BarVerticalStackedComponent__svg_g_2_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r3 = ɵngcc0.ɵɵnextContext(); return ctx_r3.updateXAxisHeight($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r0.xScale)(\"dims\", ctx_r0.dims)(\"showLabel\", ctx_r0.showXAxisLabel)(\"labelText\", ctx_r0.xAxisLabel)(\"trimTicks\", ctx_r0.trimXAxisTicks)(\"rotateTicks\", ctx_r0.rotateXAxisTicks)(\"maxTickLength\", ctx_r0.maxXAxisTickLength)(\"tickFormatting\", ctx_r0.xAxisTickFormatting)(\"ticks\", ctx_r0.xAxisTicks)(\"xAxisOffset\", ctx_r0.dataLabelMaxHeight.negative);\n} }\nfunction BarVerticalStackedComponent__svg_g_3_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 6);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BarVerticalStackedComponent__svg_g_3_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.updateYAxisWidth($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"yScale\", ctx_r1.yScale)(\"dims\", ctx_r1.dims)(\"showGridLines\", ctx_r1.showGridLines)(\"showLabel\", ctx_r1.showYAxisLabel)(\"labelText\", ctx_r1.yAxisLabel)(\"trimTicks\", ctx_r1.trimYAxisTicks)(\"maxTickLength\", ctx_r1.maxYAxisTickLength)(\"tickFormatting\", ctx_r1.yAxisTickFormatting)(\"ticks\", ctx_r1.yAxisTicks);\n} }\nfunction BarVerticalStackedComponent__svg_g_4_Template(rf, ctx) { if (rf & 1) {\n const _r10 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\")(1, \"g\", 7);\n ɵngcc0.ɵɵlistener(\"select\", function BarVerticalStackedComponent__svg_g_4_Template__svg_g_select_1_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r10); const group_r7 = restoredCtx.$implicit; const ctx_r9 = ɵngcc0.ɵɵnextContext(); return ctx_r9.onClick($event, group_r7); })(\"activate\", function BarVerticalStackedComponent__svg_g_4_Template__svg_g_activate_1_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r10); const group_r7 = restoredCtx.$implicit; const ctx_r11 = ɵngcc0.ɵɵnextContext(); return ctx_r11.onActivate($event, group_r7); })(\"deactivate\", function BarVerticalStackedComponent__svg_g_4_Template__svg_g_deactivate_1_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r10); const group_r7 = restoredCtx.$implicit; const ctx_r12 = ɵngcc0.ɵɵnextContext(); return ctx_r12.onDeactivate($event, group_r7); })(\"dataLabelHeightChanged\", function BarVerticalStackedComponent__svg_g_4_Template__svg_g_dataLabelHeightChanged_1_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r10); const index_r8 = restoredCtx.index; const ctx_r13 = ɵngcc0.ɵɵnextContext(); return ctx_r13.onDataLabelMaxHeightChanged($event, index_r8); });\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const group_r7 = ctx.$implicit;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"@animationState\", \"active\");\n ɵngcc0.ɵɵattribute(\"transform\", ctx_r2.groupTransform(group_r7));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r2.xScale)(\"yScale\", ctx_r2.yScale)(\"activeEntries\", ctx_r2.activeEntries)(\"colors\", ctx_r2.colors)(\"series\", group_r7.series)(\"dims\", ctx_r2.dims)(\"gradient\", ctx_r2.gradient)(\"tooltipDisabled\", ctx_r2.tooltipDisabled)(\"tooltipTemplate\", ctx_r2.tooltipTemplate)(\"showDataLabel\", ctx_r2.showDataLabel)(\"dataLabelFormatting\", ctx_r2.dataLabelFormatting)(\"seriesName\", group_r7.name)(\"animations\", ctx_r2.animations)(\"noBarWhenZero\", ctx_r2.noBarWhenZero);\n} }\nconst _c27 = [\"ngx-charts-series-vertical\", \"\"];\nfunction SeriesVerticalComponent__svg_g_0_Template(rf, ctx) { if (rf & 1) {\n const _r4 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 2);\n ɵngcc0.ɵɵlistener(\"select\", function SeriesVerticalComponent__svg_g_0_Template__svg_g_select_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r3 = ɵngcc0.ɵɵnextContext(); return ctx_r3.onClick($event); })(\"activate\", function SeriesVerticalComponent__svg_g_0_Template__svg_g_activate_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.activate.emit($event); })(\"deactivate\", function SeriesVerticalComponent__svg_g_0_Template__svg_g_deactivate_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r6 = ɵngcc0.ɵɵnextContext(); return ctx_r6.deactivate.emit($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const bar_r2 = ctx.$implicit;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"@animationState\", \"active\")(\"@.disabled\", !ctx_r0.animations)(\"width\", bar_r2.width)(\"height\", bar_r2.height)(\"x\", bar_r2.x)(\"y\", bar_r2.y)(\"fill\", bar_r2.color)(\"stops\", bar_r2.gradientStops)(\"data\", bar_r2.data)(\"orientation\", \"vertical\")(\"roundEdges\", bar_r2.roundEdges)(\"gradient\", ctx_r0.gradient)(\"ariaLabel\", bar_r2.ariaLabel)(\"isActive\", ctx_r0.isActive(bar_r2.data))(\"tooltipDisabled\", ctx_r0.tooltipDisabled)(\"tooltipPlacement\", ctx_r0.tooltipPlacement)(\"tooltipType\", ctx_r0.tooltipType)(\"tooltipTitle\", ctx_r0.tooltipTemplate ? undefined : bar_r2.tooltipText)(\"tooltipTemplate\", ctx_r0.tooltipTemplate)(\"tooltipContext\", bar_r2.data)(\"noBarWhenZero\", ctx_r0.noBarWhenZero)(\"animations\", ctx_r0.animations);\n} }\nfunction SeriesVerticalComponent__svg_g_1__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n const _r11 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 4);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function SeriesVerticalComponent__svg_g_1__svg_g_1_Template__svg_g_dimensionsChanged_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r11); const i_r9 = restoredCtx.index; const ctx_r10 = ɵngcc0.ɵɵnextContext(2); return ctx_r10.dataLabelHeightChanged.emit({ size: $event, index: i_r9 }); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const b_r8 = ctx.$implicit;\n const ctx_r7 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"barX\", b_r8.x)(\"barY\", b_r8.y)(\"barWidth\", b_r8.width)(\"barHeight\", b_r8.height)(\"value\", b_r8.total)(\"valueFormatting\", ctx_r7.dataLabelFormatting)(\"orientation\", \"vertical\");\n} }\nfunction SeriesVerticalComponent__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵtemplate(1, SeriesVerticalComponent__svg_g_1__svg_g_1_Template, 1, 7, \"g\", 3);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r1.barsForDataLabels)(\"ngForTrackBy\", ctx_r1.trackDataLabelBy);\n} }\nconst _c28 = [\"ngx-charts-series-horizontal\", \"\"];\nfunction SeriesHorizontal__svg_g_0_Template(rf, ctx) { if (rf & 1) {\n const _r4 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 2);\n ɵngcc0.ɵɵlistener(\"select\", function SeriesHorizontal__svg_g_0_Template__svg_g_select_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r3 = ɵngcc0.ɵɵnextContext(); return ctx_r3.click($event); })(\"activate\", function SeriesHorizontal__svg_g_0_Template__svg_g_activate_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.activate.emit($event); })(\"deactivate\", function SeriesHorizontal__svg_g_0_Template__svg_g_deactivate_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r6 = ɵngcc0.ɵɵnextContext(); return ctx_r6.deactivate.emit($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const bar_r2 = ctx.$implicit;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"@animationState\", \"active\")(\"width\", bar_r2.width)(\"height\", bar_r2.height)(\"x\", bar_r2.x)(\"y\", bar_r2.y)(\"fill\", bar_r2.color)(\"stops\", bar_r2.gradientStops)(\"data\", bar_r2.data)(\"orientation\", \"horizontal\")(\"roundEdges\", bar_r2.roundEdges)(\"gradient\", ctx_r0.gradient)(\"isActive\", ctx_r0.isActive(bar_r2.data))(\"ariaLabel\", bar_r2.ariaLabel)(\"animations\", ctx_r0.animations)(\"tooltipDisabled\", ctx_r0.tooltipDisabled)(\"tooltipPlacement\", ctx_r0.tooltipPlacement)(\"tooltipType\", ctx_r0.tooltipType)(\"tooltipTitle\", ctx_r0.tooltipTemplate ? undefined : bar_r2.tooltipText)(\"tooltipTemplate\", ctx_r0.tooltipTemplate)(\"tooltipContext\", bar_r2.data)(\"noBarWhenZero\", ctx_r0.noBarWhenZero);\n} }\nfunction SeriesHorizontal__svg_g_1__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n const _r11 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 4);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function SeriesHorizontal__svg_g_1__svg_g_1_Template__svg_g_dimensionsChanged_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r11); const i_r9 = restoredCtx.index; const ctx_r10 = ɵngcc0.ɵɵnextContext(2); return ctx_r10.dataLabelWidthChanged.emit({ size: $event, index: i_r9 }); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const b_r8 = ctx.$implicit;\n const ctx_r7 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"barX\", b_r8.x)(\"barY\", b_r8.y)(\"barWidth\", b_r8.width)(\"barHeight\", b_r8.height)(\"value\", b_r8.total)(\"valueFormatting\", ctx_r7.dataLabelFormatting)(\"orientation\", \"horizontal\");\n} }\nfunction SeriesHorizontal__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵtemplate(1, SeriesHorizontal__svg_g_1__svg_g_1_Template, 1, 7, \"g\", 3);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r1.barsForDataLabels)(\"ngForTrackBy\", ctx_r1.trackDataLabelBy);\n} }\nconst _c29 = [\"ngx-charts-bar-label\", \"\"];\nfunction BubbleChartComponent__svg_g_5_Template(rf, ctx) { if (rf & 1) {\n const _r4 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 6);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BubbleChartComponent__svg_g_5_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r3 = ɵngcc0.ɵɵnextContext(); return ctx_r3.updateXAxisHeight($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"showGridLines\", ctx_r0.showGridLines)(\"dims\", ctx_r0.dims)(\"xScale\", ctx_r0.xScale)(\"showLabel\", ctx_r0.showXAxisLabel)(\"labelText\", ctx_r0.xAxisLabel)(\"trimTicks\", ctx_r0.trimXAxisTicks)(\"rotateTicks\", ctx_r0.rotateXAxisTicks)(\"maxTickLength\", ctx_r0.maxXAxisTickLength)(\"tickFormatting\", ctx_r0.xAxisTickFormatting)(\"ticks\", ctx_r0.xAxisTicks);\n} }\nfunction BubbleChartComponent__svg_g_6_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 7);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function BubbleChartComponent__svg_g_6_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.updateYAxisWidth($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"showGridLines\", ctx_r1.showGridLines)(\"yScale\", ctx_r1.yScale)(\"dims\", ctx_r1.dims)(\"showLabel\", ctx_r1.showYAxisLabel)(\"labelText\", ctx_r1.yAxisLabel)(\"trimTicks\", ctx_r1.trimYAxisTicks)(\"maxTickLength\", ctx_r1.maxYAxisTickLength)(\"tickFormatting\", ctx_r1.yAxisTickFormatting)(\"ticks\", ctx_r1.yAxisTicks);\n} }\nfunction BubbleChartComponent__svg_g_9_Template(rf, ctx) { if (rf & 1) {\n const _r9 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\")(1, \"g\", 8);\n ɵngcc0.ɵɵlistener(\"select\", function BubbleChartComponent__svg_g_9_Template__svg_g_select_1_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r9); const series_r7 = restoredCtx.$implicit; const ctx_r8 = ɵngcc0.ɵɵnextContext(); return ctx_r8.onClick($event, series_r7); })(\"activate\", function BubbleChartComponent__svg_g_9_Template__svg_g_activate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r10 = ɵngcc0.ɵɵnextContext(); return ctx_r10.onActivate($event); })(\"deactivate\", function BubbleChartComponent__svg_g_9_Template__svg_g_deactivate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r11 = ɵngcc0.ɵɵnextContext(); return ctx_r11.onDeactivate($event); });\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const series_r7 = ctx.$implicit;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"@animationState\", \"active\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r2.xScale)(\"yScale\", ctx_r2.yScale)(\"rScale\", ctx_r2.rScale)(\"xScaleType\", ctx_r2.xScaleType)(\"yScaleType\", ctx_r2.yScaleType)(\"xAxisLabel\", ctx_r2.xAxisLabel)(\"yAxisLabel\", ctx_r2.yAxisLabel)(\"colors\", ctx_r2.colors)(\"data\", series_r7)(\"activeEntries\", ctx_r2.activeEntries)(\"tooltipDisabled\", ctx_r2.tooltipDisabled)(\"tooltipTemplate\", ctx_r2.tooltipTemplate);\n} }\nconst _c30 = [\"ngx-charts-bubble-series\", \"\"];\nfunction BubbleSeriesComponent__svg_g_0_Template(rf, ctx) { if (rf & 1) {\n const _r3 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\")(1, \"g\")(2, \"g\", 1);\n ɵngcc0.ɵɵlistener(\"select\", function BubbleSeriesComponent__svg_g_0_Template__svg_g_select_2_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r3); const circle_r1 = restoredCtx.$implicit; const ctx_r2 = ɵngcc0.ɵɵnextContext(); return ctx_r2.onClick(circle_r1.data); })(\"activate\", function BubbleSeriesComponent__svg_g_0_Template__svg_g_activate_2_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r3); const circle_r1 = restoredCtx.$implicit; const ctx_r4 = ɵngcc0.ɵɵnextContext(); return ctx_r4.activateCircle(circle_r1); })(\"deactivate\", function BubbleSeriesComponent__svg_g_0_Template__svg_g_deactivate_2_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r3); const circle_r1 = restoredCtx.$implicit; const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.deactivateCircle(circle_r1); });\n ɵngcc0.ɵɵelementEnd()()();\n} if (rf & 2) {\n const circle_r1 = ctx.$implicit;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"transform\", circle_r1.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"opacity\", circle_r1.opacity);\n ɵngcc0.ɵɵclassProp(\"active\", circle_r1.isActive);\n ɵngcc0.ɵɵproperty(\"@animationState\", \"active\")(\"cx\", 0)(\"cy\", 0)(\"r\", circle_r1.radius)(\"fill\", circle_r1.color)(\"pointerEvents\", \"all\")(\"data\", circle_r1.value)(\"classNames\", circle_r1.classNames)(\"tooltipDisabled\", ctx_r0.tooltipDisabled)(\"tooltipPlacement\", \"top\")(\"tooltipType\", \"tooltip\")(\"tooltipTitle\", ctx_r0.tooltipTemplate ? undefined : ctx_r0.getTooltipText(circle_r1))(\"tooltipTemplate\", ctx_r0.tooltipTemplate)(\"tooltipContext\", circle_r1.data);\n} }\nconst _c31 = [\"ngx-charts-heat-map-cell\", \"\"];\nfunction HeatMapCellComponent__svg_defs_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"defs\");\n ɵngcc0.ɵɵelement(1, \"g\", 3);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"name\", ctx_r0.gradientId)(\"stops\", ctx_r0.gradientStops);\n} }\nconst _c32 = [\"ngx-charts-heat-map-cell-series\", \"\"];\nconst _c33 = function (a0, a1, a2) { return { series: a0, name: a1, value: a2 }; };\nfunction HeatCellSeriesComponent__svg_g_0_Template(rf, ctx) { if (rf & 1) {\n const _r3 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 1);\n ɵngcc0.ɵɵlistener(\"select\", function HeatCellSeriesComponent__svg_g_0_Template__svg_g_select_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r3); const c_r1 = restoredCtx.$implicit; const ctx_r2 = ɵngcc0.ɵɵnextContext(); return ctx_r2.onClick(c_r1.cell); })(\"activate\", function HeatCellSeriesComponent__svg_g_0_Template__svg_g_activate_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r3); const c_r1 = restoredCtx.$implicit; const ctx_r4 = ɵngcc0.ɵɵnextContext(); return ctx_r4.activate.emit(c_r1.cell); })(\"deactivate\", function HeatCellSeriesComponent__svg_g_0_Template__svg_g_deactivate_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r3); const c_r1 = restoredCtx.$implicit; const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.deactivate.emit(c_r1.cell); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const c_r1 = ctx.$implicit;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"x\", c_r1.x)(\"y\", c_r1.y)(\"width\", c_r1.width)(\"height\", c_r1.height)(\"fill\", c_r1.fill)(\"data\", c_r1.data)(\"gradient\", ctx_r0.gradient)(\"animations\", ctx_r0.animations)(\"tooltipDisabled\", ctx_r0.tooltipDisabled)(\"tooltipPlacement\", \"top\")(\"tooltipType\", \"tooltip\")(\"tooltipTitle\", ctx_r0.tooltipTemplate ? undefined : ctx_r0.tooltipText(c_r1))(\"tooltipTemplate\", ctx_r0.tooltipTemplate)(\"tooltipContext\", ɵngcc0.ɵɵpureFunction3(14, _c33, c_r1.series, c_r1.label, c_r1.data));\n} }\nfunction HeatMapComponent__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n const _r4 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 6);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function HeatMapComponent__svg_g_2_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r4); const ctx_r3 = ɵngcc0.ɵɵnextContext(); return ctx_r3.updateXAxisHeight($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r0.xScale)(\"dims\", ctx_r0.dims)(\"showLabel\", ctx_r0.showXAxisLabel)(\"labelText\", ctx_r0.xAxisLabel)(\"trimTicks\", ctx_r0.trimXAxisTicks)(\"rotateTicks\", ctx_r0.rotateXAxisTicks)(\"maxTickLength\", ctx_r0.maxXAxisTickLength)(\"tickFormatting\", ctx_r0.xAxisTickFormatting)(\"ticks\", ctx_r0.xAxisTicks);\n} }\nfunction HeatMapComponent__svg_g_3_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 7);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function HeatMapComponent__svg_g_3_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.updateYAxisWidth($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"yScale\", ctx_r1.yScale)(\"dims\", ctx_r1.dims)(\"showLabel\", ctx_r1.showYAxisLabel)(\"labelText\", ctx_r1.yAxisLabel)(\"trimTicks\", ctx_r1.trimYAxisTicks)(\"maxTickLength\", ctx_r1.maxYAxisTickLength)(\"tickFormatting\", ctx_r1.yAxisTickFormatting)(\"ticks\", ctx_r1.yAxisTicks);\n} }\nfunction HeatMapComponent__svg_rect_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"rect\");\n} if (rf & 2) {\n const rect_r7 = ctx.$implicit;\n ɵngcc0.ɵɵattribute(\"x\", rect_r7.x)(\"y\", rect_r7.y)(\"rx\", rect_r7.rx)(\"width\", rect_r7.width)(\"height\", rect_r7.height)(\"fill\", rect_r7.fill);\n} }\nconst _c34 = [\"ngx-charts-line\", \"\"];\nfunction LineChartComponent__svg_g_5_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 7);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function LineChartComponent__svg_g_5_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.updateXAxisHeight($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r0.xScale)(\"dims\", ctx_r0.dims)(\"showGridLines\", ctx_r0.showGridLines)(\"showLabel\", ctx_r0.showXAxisLabel)(\"labelText\", ctx_r0.xAxisLabel)(\"trimTicks\", ctx_r0.trimXAxisTicks)(\"rotateTicks\", ctx_r0.rotateXAxisTicks)(\"maxTickLength\", ctx_r0.maxXAxisTickLength)(\"tickFormatting\", ctx_r0.xAxisTickFormatting)(\"ticks\", ctx_r0.xAxisTicks);\n} }\nfunction LineChartComponent__svg_g_6_Template(rf, ctx) { if (rf & 1) {\n const _r8 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 8);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function LineChartComponent__svg_g_6_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r8); const ctx_r7 = ɵngcc0.ɵɵnextContext(); return ctx_r7.updateYAxisWidth($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"yScale\", ctx_r1.yScale)(\"dims\", ctx_r1.dims)(\"showGridLines\", ctx_r1.showGridLines)(\"showLabel\", ctx_r1.showYAxisLabel)(\"labelText\", ctx_r1.yAxisLabel)(\"trimTicks\", ctx_r1.trimYAxisTicks)(\"maxTickLength\", ctx_r1.maxYAxisTickLength)(\"tickFormatting\", ctx_r1.yAxisTickFormatting)(\"ticks\", ctx_r1.yAxisTicks)(\"referenceLines\", ctx_r1.referenceLines)(\"showRefLines\", ctx_r1.showRefLines)(\"showRefLabels\", ctx_r1.showRefLabels);\n} }\nfunction LineChartComponent__svg_g_8_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵelement(1, \"g\", 9);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const series_r9 = ctx.$implicit;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"@animationState\", \"active\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r2.xScale)(\"yScale\", ctx_r2.yScale)(\"colors\", ctx_r2.colors)(\"data\", series_r9)(\"activeEntries\", ctx_r2.activeEntries)(\"scaleType\", ctx_r2.scaleType)(\"curve\", ctx_r2.curve)(\"rangeFillOpacity\", ctx_r2.rangeFillOpacity)(\"hasRange\", ctx_r2.hasRange)(\"animations\", ctx_r2.animations);\n} }\nfunction LineChartComponent__svg_g_9__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n const _r13 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\")(1, \"g\", 13);\n ɵngcc0.ɵɵlistener(\"select\", function LineChartComponent__svg_g_9__svg_g_2_Template__svg_g_select_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r12 = ɵngcc0.ɵɵnextContext(2); return ctx_r12.onClick($event); })(\"activate\", function LineChartComponent__svg_g_9__svg_g_2_Template__svg_g_activate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r14 = ɵngcc0.ɵɵnextContext(2); return ctx_r14.onActivate($event); })(\"deactivate\", function LineChartComponent__svg_g_9__svg_g_2_Template__svg_g_deactivate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r15 = ɵngcc0.ɵɵnextContext(2); return ctx_r15.onDeactivate($event); });\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const series_r11 = ctx.$implicit;\n const ctx_r10 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r10.xScale)(\"yScale\", ctx_r10.yScale)(\"colors\", ctx_r10.colors)(\"data\", series_r11)(\"scaleType\", ctx_r10.scaleType)(\"visibleValue\", ctx_r10.hoveredVertical)(\"activeEntries\", ctx_r10.activeEntries)(\"tooltipDisabled\", ctx_r10.tooltipDisabled)(\"tooltipTemplate\", ctx_r10.tooltipTemplate);\n} }\nfunction LineChartComponent__svg_g_9_Template(rf, ctx) { if (rf & 1) {\n const _r17 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 10);\n ɵngcc0.ɵɵlistener(\"mouseleave\", function LineChartComponent__svg_g_9_Template__svg_g_mouseleave_0_listener() { ɵngcc0.ɵɵrestoreView(_r17); const ctx_r16 = ɵngcc0.ɵɵnextContext(); return ctx_r16.hideCircles(); });\n ɵngcc0.ɵɵelementStart(1, \"g\", 11);\n ɵngcc0.ɵɵlistener(\"hover\", function LineChartComponent__svg_g_9_Template__svg_g_hover_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r17); const ctx_r18 = ɵngcc0.ɵɵnextContext(); return ctx_r18.updateHoveredVertical($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(2, LineChartComponent__svg_g_9__svg_g_2_Template, 2, 9, \"g\", 12);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"dims\", ctx_r3.dims)(\"xSet\", ctx_r3.xSet)(\"xScale\", ctx_r3.xScale)(\"yScale\", ctx_r3.yScale)(\"results\", ctx_r3.results)(\"colors\", ctx_r3.colors)(\"tooltipDisabled\", ctx_r3.tooltipDisabled)(\"tooltipTemplate\", ctx_r3.seriesTooltipTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r3.results);\n} }\nfunction LineChartComponent__svg_g_10__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵelement(1, \"g\", 15);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const series_r20 = ctx.$implicit;\n const ctx_r19 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"xScale\", ctx_r19.timelineXScale)(\"yScale\", ctx_r19.timelineYScale)(\"colors\", ctx_r19.colors)(\"data\", series_r20)(\"scaleType\", ctx_r19.scaleType)(\"curve\", ctx_r19.curve)(\"hasRange\", ctx_r19.hasRange)(\"animations\", ctx_r19.animations);\n} }\nfunction LineChartComponent__svg_g_10_Template(rf, ctx) { if (rf & 1) {\n const _r22 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 14);\n ɵngcc0.ɵɵlistener(\"onDomainChange\", function LineChartComponent__svg_g_10_Template__svg_g_onDomainChange_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r22); const ctx_r21 = ɵngcc0.ɵɵnextContext(); return ctx_r21.updateDomain($event); });\n ɵngcc0.ɵɵtemplate(1, LineChartComponent__svg_g_10__svg_g_1_Template, 2, 8, \"g\", 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"results\", ctx_r4.results)(\"view\", ɵngcc0.ɵɵpureFunction2(10, _c23, ctx_r4.timelineWidth, ctx_r4.height))(\"height\", ctx_r4.timelineHeight)(\"scheme\", ctx_r4.scheme)(\"customColors\", ctx_r4.customColors)(\"scaleType\", ctx_r4.scaleType)(\"legend\", ctx_r4.legend);\n ɵngcc0.ɵɵattribute(\"transform\", ctx_r4.timelineTransform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r4.results)(\"ngForTrackBy\", ctx_r4.trackBy);\n} }\nconst _c35 = [\"ngx-charts-line-series\", \"\"];\nfunction LineSeriesComponent__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"g\", 4);\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"name\", ctx_r0.gradientId)(\"stops\", ctx_r0.gradientStops);\n} }\nfunction LineSeriesComponent__svg_g_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"g\", 5);\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"active\", ctx_r1.isActive(ctx_r1.data))(\"inactive\", ctx_r1.isInactive(ctx_r1.data));\n ɵngcc0.ɵɵproperty(\"data\", ctx_r1.data)(\"path\", ctx_r1.outerPath)(\"fill\", ctx_r1.hasGradient ? ctx_r1.gradientUrl : ctx_r1.colors.getColor(ctx_r1.data.name))(\"opacity\", ctx_r1.rangeFillOpacity)(\"animations\", ctx_r1.animations);\n} }\nfunction PolarChartComponent__svg_g_4__svg_circle_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"circle\", 8);\n} if (rf & 2) {\n const r_r6 = ctx.$implicit;\n ɵngcc0.ɵɵattribute(\"r\", r_r6);\n} }\nfunction PolarChartComponent__svg_g_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵtemplate(1, PolarChartComponent__svg_g_4__svg_circle_1_Template, 1, 1, \"circle\", 7);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r0.radiusTicks);\n} }\nfunction PolarChartComponent__svg_g_5__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"g\", 10);\n} if (rf & 2) {\n const tick_r8 = ctx.$implicit;\n const ctx_r7 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"data\", tick_r8)(\"radius\", ctx_r7.outerRadius)(\"label\", tick_r8.label)(\"max\", ctx_r7.outerRadius)(\"value\", ctx_r7.showGridLines ? 1 : ctx_r7.outerRadius)(\"explodeSlices\", true)(\"animations\", ctx_r7.animations)(\"labelTrim\", ctx_r7.labelTrim)(\"labelTrimSize\", ctx_r7.labelTrimSize);\n} }\nfunction PolarChartComponent__svg_g_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵtemplate(1, PolarChartComponent__svg_g_5__svg_g_1_Template, 1, 9, \"g\", 9);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r1.thetaTicks);\n} }\nfunction PolarChartComponent__svg_g_6_Template(rf, ctx) { if (rf & 1) {\n const _r10 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 11);\n ɵngcc0.ɵɵlistener(\"dimensionsChanged\", function PolarChartComponent__svg_g_6_Template__svg_g_dimensionsChanged_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r10); const ctx_r9 = ɵngcc0.ɵɵnextContext(); return ctx_r9.updateYAxisWidth($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"yScale\", ctx_r2.yAxisScale)(\"dims\", ctx_r2.yAxisDims)(\"showGridLines\", ctx_r2.showGridLines)(\"showLabel\", ctx_r2.showYAxisLabel)(\"labelText\", ctx_r2.yAxisLabel)(\"trimTicks\", ctx_r2.trimYAxisTicks)(\"maxTickLength\", ctx_r2.maxYAxisTickLength)(\"tickFormatting\", ctx_r2.yAxisTickFormatting);\n ɵngcc0.ɵɵattribute(\"transform\", ctx_r2.transformYAxis);\n} }\nfunction PolarChartComponent__svg_g_7_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"g\", 12);\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"label\", ctx_r3.xAxisLabel)(\"offset\", ctx_r3.labelOffset)(\"orient\", \"bottom\")(\"height\", ctx_r3.dims.height)(\"width\", ctx_r3.dims.width);\n} }\nfunction PolarChartComponent__svg_g_9_Template(rf, ctx) { if (rf & 1) {\n const _r13 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\")(1, \"g\", 13);\n ɵngcc0.ɵɵlistener(\"select\", function PolarChartComponent__svg_g_9_Template__svg_g_select_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r12 = ɵngcc0.ɵɵnextContext(); return ctx_r12.onClick($event); })(\"activate\", function PolarChartComponent__svg_g_9_Template__svg_g_activate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r14 = ɵngcc0.ɵɵnextContext(); return ctx_r14.onActivate($event); })(\"deactivate\", function PolarChartComponent__svg_g_9_Template__svg_g_deactivate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r15 = ɵngcc0.ɵɵnextContext(); return ctx_r15.onDeactivate($event); });\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const series_r11 = ctx.$implicit;\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"@animationState\", \"active\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"gradient\", ctx_r4.gradient)(\"xScale\", ctx_r4.xScale)(\"yScale\", ctx_r4.yScale)(\"colors\", ctx_r4.colors)(\"data\", series_r11)(\"activeEntries\", ctx_r4.activeEntries)(\"scaleType\", ctx_r4.scaleType)(\"curve\", ctx_r4.curve)(\"rangeFillOpacity\", ctx_r4.rangeFillOpacity)(\"animations\", ctx_r4.animations)(\"tooltipDisabled\", ctx_r4.tooltipDisabled)(\"tooltipTemplate\", ctx_r4.tooltipTemplate);\n} }\nconst _c36 = [\"ngx-charts-polar-series\", \"\"];\nfunction PolarSeriesComponent__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"g\", 4);\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"color\", ctx_r0.seriesColor)(\"name\", ctx_r0.gradientId)(\"startOpacity\", 0.25)(\"endOpacity\", 1)(\"stops\", ctx_r0.gradientStops);\n} }\nfunction PolarSeriesComponent__svg_g_4_Template(rf, ctx) { if (rf & 1) {\n const _r4 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 5);\n ɵngcc0.ɵɵlistener(\"select\", function PolarSeriesComponent__svg_g_4_Template__svg_g_select_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r4); const circle_r2 = restoredCtx.$implicit; const ctx_r3 = ɵngcc0.ɵɵnextContext(); return ctx_r3.select.emit(circle_r2.data); })(\"activate\", function PolarSeriesComponent__svg_g_4_Template__svg_g_activate_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r4); const circle_r2 = restoredCtx.$implicit; const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.activate.emit({ name: circle_r2.data.series }); })(\"deactivate\", function PolarSeriesComponent__svg_g_4_Template__svg_g_deactivate_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r4); const circle_r2 = restoredCtx.$implicit; const ctx_r6 = ɵngcc0.ɵɵnextContext(); return ctx_r6.deactivate.emit({ name: circle_r2.data.series }); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const circle_r2 = ctx.$implicit;\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵstyleProp(\"opacity\", ctx_r1.inactive ? 0.2 : 1);\n ɵngcc0.ɵɵproperty(\"cx\", circle_r2.cx)(\"cy\", circle_r2.cy)(\"r\", ctx_r1.circleRadius)(\"fill\", circle_r2.color)(\"tooltipDisabled\", ctx_r1.tooltipDisabled)(\"tooltipPlacement\", \"top\")(\"tooltipTitle\", ctx_r1.tooltipTemplate ? undefined : ctx_r1.tooltipText(circle_r2))(\"tooltipTemplate\", ctx_r1.tooltipTemplate)(\"tooltipContext\", circle_r2.data);\n} }\nconst _c37 = [\"ngx-charts-pie-label\", \"\"];\nconst _c38 = [\"ngx-charts-pie-arc\", \"\"];\nfunction PieArcComponent__svg_defs_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"defs\");\n ɵngcc0.ɵɵelement(1, \"g\", 3);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"color\", ctx_r0.fill)(\"name\", ctx_r0.radialGradientId)(\"startOpacity\", ctx_r0.startOpacity);\n} }\nconst _c39 = \".pie-label{font-size:11px}.pie-label.animation{-webkit-animation:fadeIn .75s ease-in;animation:fadeIn .75s ease-in}@-webkit-keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.pie-label-line{stroke-dasharray:100%}.pie-label-line.animation{-webkit-animation:drawOut 3s linear;animation:drawOut 3s linear;transition:d .75s}@-webkit-keyframes drawOut{0%{stroke-dashoffset:100%}to{stroke-dashoffset:0}}@keyframes drawOut{0%{stroke-dashoffset:100%}to{stroke-dashoffset:0}}\";\nfunction PieGridComponent__svg_g_2__svg_text_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"text\", 10);\n} if (rf & 2) {\n const series_r1 = ɵngcc0.ɵɵnextContext().$implicit;\n ɵngcc0.ɵɵproperty(\"countTo\", series_r1.percent)(\"countSuffix\", \"%\");\n} }\nfunction PieGridComponent__svg_g_2__svg_text_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"text\", 11);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const series_r1 = ɵngcc0.ɵɵnextContext().$implicit;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", series_r1.percent.toLocaleString(), \" \");\n} }\nfunction PieGridComponent__svg_g_2__svg_text_6_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"text\", 12);\n} if (rf & 2) {\n const series_r1 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"countTo\", series_r1.total)(\"countPrefix\", ctx_r4.label + \": \");\n ɵngcc0.ɵɵattribute(\"y\", series_r1.outerRadius);\n} }\nfunction PieGridComponent__svg_g_2__svg_text_7_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"text\", 13);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const series_r1 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r5 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵattribute(\"y\", series_r1.outerRadius);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate2(\" \", ctx_r5.label, \": \", series_r1.total.toLocaleString(), \" \");\n} }\nconst _c40 = function (a0) { return { data: a0 }; };\nfunction PieGridComponent__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n const _r11 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 3)(1, \"g\", 4);\n ɵngcc0.ɵɵlistener(\"select\", function PieGridComponent__svg_g_2_Template__svg_g_select_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r11); const ctx_r10 = ɵngcc0.ɵɵnextContext(); return ctx_r10.onClick($event); })(\"activate\", function PieGridComponent__svg_g_2_Template__svg_g_activate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r11); const ctx_r12 = ɵngcc0.ɵɵnextContext(); return ctx_r12.onActivate($event); })(\"deactivate\", function PieGridComponent__svg_g_2_Template__svg_g_deactivate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r11); const ctx_r13 = ɵngcc0.ɵɵnextContext(); return ctx_r13.onDeactivate($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(2, PieGridComponent__svg_g_2__svg_text_2_Template, 1, 2, \"text\", 5);\n ɵngcc0.ɵɵtemplate(3, PieGridComponent__svg_g_2__svg_text_3_Template, 2, 1, \"text\", 6);\n ɵngcc0.ɵɵelementStart(4, \"text\", 7);\n ɵngcc0.ɵɵtext(5);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(6, PieGridComponent__svg_g_2__svg_text_6_Template, 1, 3, \"text\", 8);\n ɵngcc0.ɵɵtemplate(7, PieGridComponent__svg_g_2__svg_text_7_Template, 2, 3, \"text\", 9);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const series_r1 = ctx.$implicit;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵattribute(\"transform\", series_r1.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"colors\", series_r1.colors)(\"data\", series_r1.data)(\"innerRadius\", series_r1.innerRadius)(\"outerRadius\", series_r1.outerRadius)(\"animations\", ctx_r0.animations)(\"tooltipDisabled\", ctx_r0.tooltipDisabled)(\"tooltipPlacement\", \"top\")(\"tooltipType\", \"tooltip\")(\"tooltipTitle\", ctx_r0.tooltipTemplate ? undefined : ctx_r0.tooltipText(ɵngcc0.ɵɵpureFunction1(17, _c40, series_r1)))(\"tooltipTemplate\", ctx_r0.tooltipTemplate)(\"tooltipContext\", series_r1.data[0].data);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r0.animations);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate1(\" \", series_r1.label, \" \");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r0.animations);\n} }\nconst _c41 = [\"ngx-charts-pie-grid-series\", \"\"];\nfunction PieGridSeriesComponent__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n const _r3 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 2);\n ɵngcc0.ɵɵlistener(\"select\", function PieGridSeriesComponent__svg_g_1_Template__svg_g_select_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r2 = ɵngcc0.ɵɵnextContext(); return ctx_r2.onClick($event); })(\"activate\", function PieGridSeriesComponent__svg_g_1_Template__svg_g_activate_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r4 = ɵngcc0.ɵɵnextContext(); return ctx_r4.activate.emit($event); })(\"deactivate\", function PieGridSeriesComponent__svg_g_1_Template__svg_g_deactivate_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ctx_r5.deactivate.emit($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const arc_r1 = ctx.$implicit;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"startAngle\", arc_r1.startAngle)(\"endAngle\", arc_r1.endAngle)(\"innerRadius\", ctx_r0.innerRadius)(\"outerRadius\", ctx_r0.outerRadius)(\"fill\", ctx_r0.color(arc_r1))(\"value\", arc_r1.data.value)(\"data\", arc_r1.data)(\"gradient\", false)(\"pointerEvents\", arc_r1.pointerEvents)(\"animate\", arc_r1.animate);\n ɵngcc0.ɵɵattribute(\"class\", arc_r1.class);\n} }\nconst _c42 = [\"ngx-charts-pie-series\", \"\"];\nfunction PieSeriesComponent__svg_g_0__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"g\", 3);\n} if (rf & 2) {\n const arc_r1 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"data\", arc_r1)(\"radius\", ctx_r2.outerRadius)(\"color\", ctx_r2.color(arc_r1))(\"label\", ctx_r2.labelText(arc_r1))(\"labelTrim\", ctx_r2.trimLabels)(\"labelTrimSize\", ctx_r2.maxLabelLength)(\"max\", ctx_r2.max)(\"value\", arc_r1.value)(\"explodeSlices\", ctx_r2.explodeSlices)(\"animations\", ctx_r2.animations);\n} }\nfunction PieSeriesComponent__svg_g_0_Template(rf, ctx) { if (rf & 1) {\n const _r5 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵtemplate(1, PieSeriesComponent__svg_g_0__svg_g_1_Template, 1, 10, \"g\", 1);\n ɵngcc0.ɵɵelementStart(2, \"g\", 2);\n ɵngcc0.ɵɵlistener(\"select\", function PieSeriesComponent__svg_g_0_Template__svg_g_select_2_listener($event) { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r4 = ɵngcc0.ɵɵnextContext(); return ctx_r4.onClick($event); })(\"activate\", function PieSeriesComponent__svg_g_0_Template__svg_g_activate_2_listener($event) { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r6 = ɵngcc0.ɵɵnextContext(); return ctx_r6.activate.emit($event); })(\"deactivate\", function PieSeriesComponent__svg_g_0_Template__svg_g_deactivate_2_listener($event) { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r7 = ɵngcc0.ɵɵnextContext(); return ctx_r7.deactivate.emit($event); })(\"dblclick\", function PieSeriesComponent__svg_g_0_Template__svg_g_dblclick_2_listener($event) { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r8 = ɵngcc0.ɵɵnextContext(); return ctx_r8.dblclick.emit($event); });\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const arc_r1 = ctx.$implicit;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.labelVisible(arc_r1));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"startAngle\", arc_r1.startAngle)(\"endAngle\", arc_r1.endAngle)(\"innerRadius\", ctx_r0.innerRadius)(\"outerRadius\", ctx_r0.outerRadius)(\"fill\", ctx_r0.color(arc_r1))(\"value\", arc_r1.data.value)(\"gradient\", ctx_r0.gradient)(\"data\", arc_r1.data)(\"max\", ctx_r0.max)(\"explodeSlices\", ctx_r0.explodeSlices)(\"isActive\", ctx_r0.isActive(arc_r1.data))(\"animate\", ctx_r0.animations)(\"tooltipDisabled\", ctx_r0.tooltipDisabled)(\"tooltipPlacement\", \"top\")(\"tooltipType\", \"tooltip\")(\"tooltipTitle\", ctx_r0.getTooltipTitle(arc_r1))(\"tooltipTemplate\", ctx_r0.tooltipTemplate)(\"tooltipContext\", arc_r1.data);\n} }\nconst _c43 = [\"textEl\"];\nconst _c44 = [\"ngx-charts-card\", \"\"];\nfunction CardComponent__svg_path_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"path\", 7);\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵattribute(\"fill\", ctx_r0.bandColor)(\"transform\", ctx_r0.transformBand)(\"d\", ctx_r0.bandPath);\n} }\nconst _c45 = [\"ngx-charts-card-series\", \"\"];\nfunction CardSeriesComponent__svg_rect_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"rect\", 2);\n} if (rf & 2) {\n const c_r2 = ctx.$implicit;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵstyleProp(\"fill\", ctx_r0.emptyColor);\n ɵngcc0.ɵɵattribute(\"x\", c_r2.x)(\"y\", c_r2.y)(\"width\", c_r2.width)(\"height\", c_r2.height);\n} }\nfunction CardSeriesComponent__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n const _r5 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 3);\n ɵngcc0.ɵɵlistener(\"select\", function CardSeriesComponent__svg_g_1_Template__svg_g_select_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r4 = ɵngcc0.ɵɵnextContext(); return ctx_r4.onClick($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const c_r3 = ctx.$implicit;\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"x\", c_r3.x)(\"y\", c_r3.y)(\"width\", c_r3.width)(\"height\", c_r3.height)(\"color\", c_r3.color)(\"bandColor\", c_r3.bandColor)(\"textColor\", c_r3.textColor)(\"data\", c_r3.data)(\"label\", c_r3.label)(\"medianSize\", ctx_r1.medianSize)(\"valueFormatting\", ctx_r1.valueFormatting)(\"labelFormatting\", ctx_r1.labelFormatting)(\"animations\", ctx_r1.animations);\n} }\nconst _c46 = [\"ngx-charts-tree-map-cell\", \"\"];\nfunction TreeMapCellComponent__svg_defs_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"defs\");\n ɵngcc0.ɵɵelement(1, \"g\", 3);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"name\", ctx_r0.gradientId)(\"stops\", ctx_r0.gradientStops);\n} }\nfunction TreeMapCellComponent__svg_foreignObject_3__xhtml_span_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 8);\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"countTo\", ctx_r2.value)(\"valueFormatting\", ctx_r2.valueFormatting);\n} }\nfunction TreeMapCellComponent__svg_foreignObject_3__xhtml_span_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 9);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r3.formattedValue, \" \");\n} }\nfunction TreeMapCellComponent__svg_foreignObject_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"foreignObject\", 4);\n ɵngcc0.ɵɵnamespaceHTML();\n ɵngcc0.ɵɵelementStart(1, \"p\");\n ɵngcc0.ɵɵelement(2, \"span\", 5)(3, \"br\");\n ɵngcc0.ɵɵtemplate(4, TreeMapCellComponent__svg_foreignObject_3__xhtml_span_4_Template, 1, 2, \"span\", 6);\n ɵngcc0.ɵɵtemplate(5, TreeMapCellComponent__svg_foreignObject_3__xhtml_span_5_Template, 2, 1, \"span\", 7);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵstyleProp(\"pointer-events\", \"none\");\n ɵngcc0.ɵɵattribute(\"x\", ctx_r1.x)(\"y\", ctx_r1.y)(\"width\", ctx_r1.width)(\"height\", ctx_r1.height);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"color\", ctx_r1.getTextColor())(\"height\", ctx_r1.height + \"px\")(\"width\", ctx_r1.width + \"px\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"innerHTML\", ctx_r1.formattedLabel, ɵngcc0.ɵɵsanitizeHtml);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r1.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r1.animations);\n} }\nconst _c47 = [\"ngx-charts-tree-map-cell-series\", \"\"];\nfunction TreeMapCellSeriesComponent__svg_g_0_Template(rf, ctx) { if (rf & 1) {\n const _r3 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 1);\n ɵngcc0.ɵɵlistener(\"select\", function TreeMapCellSeriesComponent__svg_g_0_Template__svg_g_select_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r2 = ɵngcc0.ɵɵnextContext(); return ctx_r2.onClick($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const c_r1 = ctx.$implicit;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"data\", c_r1.data)(\"x\", c_r1.x)(\"y\", c_r1.y)(\"width\", c_r1.width)(\"height\", c_r1.height)(\"fill\", c_r1.fill)(\"label\", c_r1.label)(\"value\", c_r1.value)(\"valueType\", c_r1.valueType)(\"valueFormatting\", ctx_r0.valueFormatting)(\"labelFormatting\", ctx_r0.labelFormatting)(\"gradient\", ctx_r0.gradient)(\"animations\", ctx_r0.animations)(\"tooltipDisabled\", ctx_r0.tooltipDisabled)(\"tooltipPlacement\", \"top\")(\"tooltipType\", \"tooltip\")(\"tooltipTitle\", ctx_r0.tooltipTemplate ? undefined : ctx_r0.getTooltipText(c_r1))(\"tooltipTemplate\", ctx_r0.tooltipTemplate)(\"tooltipContext\", c_r1.data);\n} }\nconst _c48 = [\"valueTextEl\"];\nconst _c49 = [\"unitsTextEl\"];\nfunction LinearGaugeComponent__svg_line_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"line\", 10);\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵattribute(\"transform\", ctx_r0.transformLine)(\"stroke\", ctx_r0.colors.getColor(ctx_r0.units));\n} }\nfunction LinearGaugeComponent__svg_line_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"line\", 11);\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵattribute(\"transform\", ctx_r1.transformLine)(\"stroke\", ctx_r1.colors.getColor(ctx_r1.units));\n} }\nconst _c50 = function () { return {}; };\nfunction GaugeComponent__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n const _r5 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\")(1, \"g\", 5);\n ɵngcc0.ɵɵlistener(\"select\", function GaugeComponent__svg_g_2_Template__svg_g_select_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r4 = ɵngcc0.ɵɵnextContext(); return ctx_r4.onClick($event); })(\"activate\", function GaugeComponent__svg_g_2_Template__svg_g_activate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r6 = ɵngcc0.ɵɵnextContext(); return ctx_r6.onActivate($event); })(\"deactivate\", function GaugeComponent__svg_g_2_Template__svg_g_deactivate_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r7 = ɵngcc0.ɵɵnextContext(); return ctx_r7.onDeactivate($event); });\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const arc_r3 = ctx.$implicit;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵattribute(\"transform\", ctx_r0.rotation);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"backgroundArc\", arc_r3.backgroundArc)(\"valueArc\", arc_r3.valueArc)(\"cornerRadius\", ctx_r0.cornerRadius)(\"colors\", ctx_r0.colors)(\"isActive\", ctx_r0.isActive(arc_r3.valueArc.data))(\"tooltipDisabled\", ctx_r0.tooltipDisabled)(\"tooltipTemplate\", ctx_r0.tooltipTemplate)(\"valueFormatting\", ctx_r0.valueFormatting)(\"animations\", ctx_r0.animations);\n} }\nfunction GaugeComponent__svg_g_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"g\", 6);\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"bigSegments\", ctx_r1.bigSegments)(\"smallSegments\", ctx_r1.smallSegments)(\"min\", ctx_r1.min)(\"max\", ctx_r1.max)(\"radius\", ctx_r1.outerRadius)(\"angleSpan\", ctx_r1.angleSpan)(\"valueScale\", ctx_r1.valueScale)(\"startAngle\", ctx_r1.startAngle)(\"tickFormatting\", ctx_r1.axisTickFormatting);\n} }\nfunction GaugeComponent__svg_text_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"text\", 7, 8)(2, \"tspan\", 9);\n ɵngcc0.ɵɵtext(3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(4, \"tspan\", 10);\n ɵngcc0.ɵɵtext(5);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵstyleProp(\"text-anchor\", \"middle\");\n ɵngcc0.ɵɵattribute(\"transform\", ctx_r2.textTransform);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵtextInterpolate(ctx_r2.displayValue);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(ctx_r2.units);\n} }\nconst _c51 = [\"ngx-charts-gauge-arc\", \"\"];\nconst _c52 = [\"ngx-charts-gauge-axis\", \"\"];\nfunction GaugeAxisComponent__svg_g_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 2);\n ɵngcc0.ɵɵelement(1, \"path\");\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const tick_r3 = ctx.$implicit;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"d\", tick_r3.line);\n} }\nfunction GaugeAxisComponent__svg_g_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 2)(1, \"text\", 3);\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const tick_r4 = ctx.$implicit;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"text-anchor\", tick_r4.textAnchor);\n ɵngcc0.ɵɵattribute(\"transform\", tick_r4.textTransform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", tick_r4.text, \" \");\n} }\nfunction GaugeAxisComponent__svg_g_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 4);\n ɵngcc0.ɵɵelement(1, \"path\");\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const tick_r5 = ctx.$implicit;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"d\", tick_r5.line);\n} }\nfunction isViewContainerRef(x) {\n return x.element;\n}\n/**\n * Injection service is a helper to append components\n * dynamically to a known location in the DOM, most\n * noteably for dialogs/tooltips appending to body.\n *\n * @export\n */\nclass InjectionService {\n constructor(applicationRef, componentFactoryResolver, injector) {\n this.applicationRef = applicationRef;\n this.componentFactoryResolver = componentFactoryResolver;\n this.injector = injector;\n }\n /**\n * Sets a default global root view container. This is useful for\n * things like ngUpgrade that doesn't have a ApplicationRef root.\n *\n * @param container\n */\n static setGlobalRootViewContainer(container) {\n InjectionService.globalRootViewContainer = container;\n }\n /**\n * Gets the root view container to inject the component to.\n *\n * @memberOf InjectionService\n */\n getRootViewContainer() {\n if (this._container)\n return this._container;\n if (InjectionService.globalRootViewContainer)\n return InjectionService.globalRootViewContainer;\n if (this.applicationRef.components.length)\n return this.applicationRef.components[0];\n throw new Error('View Container not found! ngUpgrade needs to manually set this via setRootViewContainer or setGlobalRootViewContainer.');\n }\n /**\n * Overrides the default root view container. This is useful for\n * things like ngUpgrade that doesn't have a ApplicationRef root.\n *\n * @param container\n *\n * @memberOf InjectionService\n */\n setRootViewContainer(container) {\n this._container = container;\n }\n /**\n * Gets the html element for a component ref.\n *\n * @param componentRef\n *\n * @memberOf InjectionService\n */\n getComponentRootNode(component) {\n if (isViewContainerRef(component)) {\n return component.element.nativeElement;\n }\n if (component.hostView && component.hostView.rootNodes.length > 0) {\n return component.hostView.rootNodes[0];\n }\n // the top most component root node has no `hostView`\n return component.location.nativeElement;\n }\n /**\n * Gets the root component container html element.\n *\n * @memberOf InjectionService\n */\n getRootViewContainerNode(component) {\n return this.getComponentRootNode(component);\n }\n /**\n * Projects the bindings onto the component\n *\n * @param component\n * @param options\n *\n * @memberOf InjectionService\n */\n projectComponentBindings(component, bindings) {\n if (bindings) {\n if (bindings.inputs !== undefined) {\n const bindingKeys = Object.getOwnPropertyNames(bindings.inputs);\n for (const bindingName of bindingKeys) {\n component.instance[bindingName] = bindings.inputs[bindingName];\n }\n }\n if (bindings.outputs !== undefined) {\n const eventKeys = Object.getOwnPropertyNames(bindings.outputs);\n for (const eventName of eventKeys) {\n component.instance[eventName] = bindings.outputs[eventName];\n }\n }\n }\n return component;\n }\n /**\n * Appends a component to a adjacent location\n *\n * @param componentClass\n * @param [options={}]\n * @param [location]\n *\n * @memberOf InjectionService\n */\n appendComponent(componentClass, bindings = {}, location) {\n if (!location)\n location = this.getRootViewContainer();\n const appendLocation = this.getComponentRootNode(location);\n const portalHost = new DomPortalHost(appendLocation, this.componentFactoryResolver, this.applicationRef, this.injector);\n const portal = new ComponentPortal(componentClass);\n const componentRef = portalHost.attach(portal);\n this.projectComponentBindings(componentRef, bindings);\n return componentRef;\n }\n}\nInjectionService.ɵfac = function InjectionService_Factory(t) { return new (t || InjectionService)(ɵngcc0.ɵɵinject(ɵngcc0.ApplicationRef), ɵngcc0.ɵɵinject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵinject(ɵngcc0.Injector)); };\nInjectionService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: InjectionService, factory: InjectionService.ɵfac });\nInjectionService.globalRootViewContainer = null;\nInjectionService.ctorParameters = () => [\n { type: ApplicationRef },\n { type: ComponentFactoryResolver },\n { type: Injector }\n];\n\n/**\n * Throttle a function\n *\n */\nfunction throttle(func, wait, options) {\n options = options || {};\n let context;\n let args;\n let result;\n let timeout = null;\n let previous = 0;\n function later() {\n previous = options.leading === false ? 0 : +new Date();\n timeout = null;\n result = func.apply(context, args);\n }\n return function () {\n const now = +new Date();\n if (!previous && options.leading === false) {\n previous = now;\n }\n const remaining = wait - (now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0) {\n clearTimeout(timeout);\n timeout = null;\n previous = now;\n result = func.apply(context, args);\n }\n else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n}\n/**\n * Throttle decorator\n *\n * class MyClass {\n * throttleable(10)\n * myFn() { ... }\n * }\n */\nfunction throttleable(duration, options) {\n return function innerDecorator(target, key, descriptor) {\n return {\n configurable: true,\n enumerable: descriptor.enumerable,\n get: function getter() {\n Object.defineProperty(this, key, {\n configurable: true,\n enumerable: descriptor.enumerable,\n value: throttle(descriptor.value, duration, options)\n });\n return this[key];\n }\n };\n };\n}\n\nvar PlacementTypes;\n(function (PlacementTypes) {\n PlacementTypes[PlacementTypes[\"top\"] = 'top'] = \"top\";\n PlacementTypes[PlacementTypes[\"bottom\"] = 'bottom'] = \"bottom\";\n PlacementTypes[PlacementTypes[\"left\"] = 'left'] = \"left\";\n PlacementTypes[PlacementTypes[\"right\"] = 'right'] = \"right\";\n})(PlacementTypes || (PlacementTypes = {}));\n\nconst caretOffset = 7;\nfunction verticalPosition(elDimensions, popoverDimensions, alignment) {\n if (alignment === 'top') {\n return elDimensions.top - caretOffset;\n }\n if (alignment === 'bottom') {\n return elDimensions.top + elDimensions.height - popoverDimensions.height + caretOffset;\n }\n if (alignment === 'center') {\n return elDimensions.top + elDimensions.height / 2 - popoverDimensions.height / 2;\n }\n return undefined;\n}\nfunction horizontalPosition(elDimensions, popoverDimensions, alignment) {\n if (alignment === 'left') {\n return elDimensions.left - caretOffset;\n }\n if (alignment === 'right') {\n return elDimensions.left + elDimensions.width - popoverDimensions.width + caretOffset;\n }\n if (alignment === 'center') {\n return elDimensions.left + elDimensions.width / 2 - popoverDimensions.width / 2;\n }\n return undefined;\n}\n/**\n * Position helper for the popover directive.\n *\n * @export\n */\nclass PositionHelper {\n /**\n * Calculate vertical alignment position\n *\n * @memberOf PositionHelper\n */\n static calculateVerticalAlignment(elDimensions, popoverDimensions, alignment) {\n let result = verticalPosition(elDimensions, popoverDimensions, alignment);\n if (result + popoverDimensions.height > window.innerHeight) {\n result = window.innerHeight - popoverDimensions.height;\n }\n return result;\n }\n /**\n * Calculate vertical caret position\n *\n * @memberOf PositionHelper\n */\n static calculateVerticalCaret(elDimensions, popoverDimensions, caretDimensions, alignment) {\n let result;\n if (alignment === 'top') {\n result = elDimensions.height / 2 - caretDimensions.height / 2 + caretOffset;\n }\n if (alignment === 'bottom') {\n result = popoverDimensions.height - elDimensions.height / 2 - caretDimensions.height / 2 - caretOffset;\n }\n if (alignment === 'center') {\n result = popoverDimensions.height / 2 - caretDimensions.height / 2;\n }\n const popoverPosition = verticalPosition(elDimensions, popoverDimensions, alignment);\n if (popoverPosition + popoverDimensions.height > window.innerHeight) {\n result += popoverPosition + popoverDimensions.height - window.innerHeight;\n }\n return result;\n }\n /**\n * Calculate horz alignment position\n *\n * @memberOf PositionHelper\n */\n static calculateHorizontalAlignment(elDimensions, popoverDimensions, alignment) {\n let result = horizontalPosition(elDimensions, popoverDimensions, alignment);\n if (result + popoverDimensions.width > window.innerWidth) {\n result = window.innerWidth - popoverDimensions.width;\n }\n return result;\n }\n /**\n * Calculate horz caret position\n *\n * @memberOf PositionHelper\n */\n static calculateHorizontalCaret(elDimensions, popoverDimensions, caretDimensions, alignment) {\n let result;\n if (alignment === 'left') {\n result = elDimensions.width / 2 - caretDimensions.width / 2 + caretOffset;\n }\n if (alignment === 'right') {\n result = popoverDimensions.width - elDimensions.width / 2 - caretDimensions.width / 2 - caretOffset;\n }\n if (alignment === 'center') {\n result = popoverDimensions.width / 2 - caretDimensions.width / 2;\n }\n const popoverPosition = horizontalPosition(elDimensions, popoverDimensions, alignment);\n if (popoverPosition + popoverDimensions.width > window.innerWidth) {\n result += popoverPosition + popoverDimensions.width - window.innerWidth;\n }\n return result;\n }\n /**\n * Checks if the element's position should be flipped\n *\n * @memberOf PositionHelper\n */\n static shouldFlip(elDimensions, popoverDimensions, placement, spacing) {\n let flip = false;\n if (placement === 'right') {\n if (elDimensions.left + elDimensions.width + popoverDimensions.width + spacing > window.innerWidth) {\n flip = true;\n }\n }\n if (placement === 'left') {\n if (elDimensions.left - popoverDimensions.width - spacing < 0) {\n flip = true;\n }\n }\n if (placement === 'top') {\n if (elDimensions.top - popoverDimensions.height - spacing < 0) {\n flip = true;\n }\n }\n if (placement === 'bottom') {\n if (elDimensions.top + elDimensions.height + popoverDimensions.height + spacing > window.innerHeight) {\n flip = true;\n }\n }\n return flip;\n }\n /**\n * Position caret\n *\n * @memberOf PositionHelper\n */\n static positionCaret(placement, elmDim, hostDim, caretDimensions, alignment) {\n let top = 0;\n let left = 0;\n if (placement === PlacementTypes.right) {\n left = -7;\n top = PositionHelper.calculateVerticalCaret(hostDim, elmDim, caretDimensions, alignment);\n }\n else if (placement === PlacementTypes.left) {\n left = elmDim.width;\n top = PositionHelper.calculateVerticalCaret(hostDim, elmDim, caretDimensions, alignment);\n }\n else if (placement === PlacementTypes.top) {\n top = elmDim.height;\n left = PositionHelper.calculateHorizontalCaret(hostDim, elmDim, caretDimensions, alignment);\n }\n else if (placement === PlacementTypes.bottom) {\n top = -7;\n left = PositionHelper.calculateHorizontalCaret(hostDim, elmDim, caretDimensions, alignment);\n }\n return { top, left };\n }\n /**\n * Position content\n *\n * @memberOf PositionHelper\n */\n static positionContent(placement, elmDim, hostDim, spacing, alignment) {\n let top = 0;\n let left = 0;\n if (placement === PlacementTypes.right) {\n left = hostDim.left + hostDim.width + spacing;\n top = PositionHelper.calculateVerticalAlignment(hostDim, elmDim, alignment);\n }\n else if (placement === PlacementTypes.left) {\n left = hostDim.left - elmDim.width - spacing;\n top = PositionHelper.calculateVerticalAlignment(hostDim, elmDim, alignment);\n }\n else if (placement === PlacementTypes.top) {\n top = hostDim.top - elmDim.height - spacing;\n left = PositionHelper.calculateHorizontalAlignment(hostDim, elmDim, alignment);\n }\n else if (placement === PlacementTypes.bottom) {\n top = hostDim.top + hostDim.height + spacing;\n left = PositionHelper.calculateHorizontalAlignment(hostDim, elmDim, alignment);\n }\n return { top, left };\n }\n /**\n * Determine placement based on flip\n *\n * @memberOf PositionHelper\n */\n static determinePlacement(placement, elmDim, hostDim, spacing) {\n const shouldFlip = PositionHelper.shouldFlip(hostDim, elmDim, placement, spacing);\n if (shouldFlip) {\n if (placement === PlacementTypes.right) {\n return PlacementTypes.left;\n }\n else if (placement === PlacementTypes.left) {\n return PlacementTypes.right;\n }\n else if (placement === PlacementTypes.top) {\n return PlacementTypes.bottom;\n }\n else if (placement === PlacementTypes.bottom) {\n return PlacementTypes.top;\n }\n }\n return placement;\n }\n}\n\nclass TooltipContentComponent {\n constructor(element, renderer, platformId) {\n this.element = element;\n this.renderer = renderer;\n this.platformId = platformId;\n }\n get cssClasses() {\n let clz = 'ngx-charts-tooltip-content';\n clz += ` position-${this.placement}`;\n clz += ` type-${this.type}`;\n clz += ` ${this.cssClass}`;\n return clz;\n }\n ngAfterViewInit() {\n setTimeout(this.position.bind(this));\n }\n position() {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n const nativeElm = this.element.nativeElement;\n const hostDim = this.host.nativeElement.getBoundingClientRect();\n // if no dims were found, never show\n if (!hostDim.height && !hostDim.width)\n return;\n const elmDim = nativeElm.getBoundingClientRect();\n this.checkFlip(hostDim, elmDim);\n this.positionContent(nativeElm, hostDim, elmDim);\n if (this.showCaret) {\n this.positionCaret(hostDim, elmDim);\n }\n // animate its entry\n setTimeout(() => this.renderer.addClass(nativeElm, 'animate'), 1);\n }\n positionContent(nativeElm, hostDim, elmDim) {\n const { top, left } = PositionHelper.positionContent(this.placement, elmDim, hostDim, this.spacing, this.alignment);\n this.renderer.setStyle(nativeElm, 'top', `${top}px`);\n this.renderer.setStyle(nativeElm, 'left', `${left}px`);\n }\n positionCaret(hostDim, elmDim) {\n const caretElm = this.caretElm.nativeElement;\n const caretDimensions = caretElm.getBoundingClientRect();\n const { top, left } = PositionHelper.positionCaret(this.placement, elmDim, hostDim, caretDimensions, this.alignment);\n this.renderer.setStyle(caretElm, 'top', `${top}px`);\n this.renderer.setStyle(caretElm, 'left', `${left}px`);\n }\n checkFlip(hostDim, elmDim) {\n this.placement = PositionHelper.determinePlacement(this.placement, elmDim, hostDim, this.spacing);\n }\n onWindowResize() {\n this.position();\n }\n}\nTooltipContentComponent.ɵfac = function TooltipContentComponent_Factory(t) { return new (t || TooltipContentComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(PLATFORM_ID)); };\nTooltipContentComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: TooltipContentComponent, selectors: [[\"ngx-tooltip-content\"]], viewQuery: function TooltipContentComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c0, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.caretElm = _t.first);\n } }, hostVars: 2, hostBindings: function TooltipContentComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"resize\", function TooltipContentComponent_resize_HostBindingHandler() { return ctx.onWindowResize(); }, false, ɵngcc0.ɵɵresolveWindow);\n } if (rf & 2) {\n ɵngcc0.ɵɵclassMap(ctx.cssClasses);\n } }, inputs: { placement: \"placement\", host: \"host\", showCaret: \"showCaret\", type: \"type\", alignment: \"alignment\", spacing: \"spacing\", cssClass: \"cssClass\", title: \"title\", template: \"template\", context: \"context\" }, decls: 6, vars: 6, consts: [[3, \"hidden\"], [\"caretElm\", \"\"], [1, \"tooltip-content\"], [4, \"ngIf\"], [3, \"innerHTML\", 4, \"ngIf\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [3, \"innerHTML\"]], template: function TooltipContentComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\");\n ɵngcc0.ɵɵelement(1, \"span\", 0, 1);\n ɵngcc0.ɵɵelementStart(3, \"div\", 2);\n ɵngcc0.ɵɵtemplate(4, TooltipContentComponent_span_4_Template, 2, 4, \"span\", 3);\n ɵngcc0.ɵɵtemplate(5, TooltipContentComponent_span_5_Template, 1, 1, \"span\", 4);\n ɵngcc0.ɵɵelementEnd()();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassMapInterpolate1(\"tooltip-caret position-\", ctx.placement, \"\");\n ɵngcc0.ɵɵproperty(\"hidden\", !ctx.showCaret);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.title);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.title);\n } }, directives: [ɵngcc1.NgIf, ɵngcc1.NgTemplateOutlet], styles: [\".ngx-charts-tooltip-content{border-radius:3px;display:block;font-weight:400;opacity:0;pointer-events:none!important;position:fixed;z-index:5000}.ngx-charts-tooltip-content.type-popover{background:#fff;border:1px solid #72809b;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);color:#060709;font-size:13px;padding:4px}.ngx-charts-tooltip-content.type-popover .tooltip-caret{height:0;position:absolute;width:0;z-index:5001}.ngx-charts-tooltip-content.type-popover .tooltip-caret.position-left{border-bottom:7px solid transparent;border-left:7px solid #fff;border-top:7px solid transparent}.ngx-charts-tooltip-content.type-popover .tooltip-caret.position-top{border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid #fff}.ngx-charts-tooltip-content.type-popover .tooltip-caret.position-right{border-bottom:7px solid transparent;border-right:7px solid #fff;border-top:7px solid transparent}.ngx-charts-tooltip-content.type-popover .tooltip-caret.position-bottom{border-bottom:7px solid #fff;border-left:7px solid transparent;border-right:7px solid transparent}.ngx-charts-tooltip-content.type-tooltip{background:rgba(0,0,0,.75);color:#fff;font-size:12px;padding:0 10px;pointer-events:auto;text-align:center}.ngx-charts-tooltip-content.type-tooltip .tooltip-caret.position-left{border-bottom:7px solid transparent;border-left:7px solid rgba(0,0,0,.75);border-top:7px solid transparent}.ngx-charts-tooltip-content.type-tooltip .tooltip-caret.position-top{border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid rgba(0,0,0,.75)}.ngx-charts-tooltip-content.type-tooltip .tooltip-caret.position-right{border-bottom:7px solid transparent;border-right:7px solid rgba(0,0,0,.75);border-top:7px solid transparent}.ngx-charts-tooltip-content.type-tooltip .tooltip-caret.position-bottom{border-bottom:7px solid rgba(0,0,0,.75);border-left:7px solid transparent;border-right:7px solid transparent}.ngx-charts-tooltip-content .tooltip-label{display:block;font-size:1em;line-height:1em;padding:8px 5px 5px}.ngx-charts-tooltip-content .tooltip-val{display:block;font-size:1.3em;line-height:1em;padding:0 5px 8px}.ngx-charts-tooltip-content .tooltip-caret{height:0;position:absolute;width:0;z-index:5001}.ngx-charts-tooltip-content.position-right{transform:translate3d(10px,0,0)}.ngx-charts-tooltip-content.position-left{transform:translate3d(-10px,0,0)}.ngx-charts-tooltip-content.position-top{transform:translate3d(0,-10px,0)}.ngx-charts-tooltip-content.position-bottom{transform:translate3d(0,10px,0)}.ngx-charts-tooltip-content.animate{opacity:1;pointer-events:auto;transform:translateZ(0);transition:opacity .3s,transform .3s}.area-tooltip-container{padding:5px 0;pointer-events:none}.tooltip-item{line-height:1.2em;padding:5px 0;text-align:left}.tooltip-item .tooltip-item-color{border-radius:3px;color:#5b646b;display:inline-block;height:12px;margin-right:5px;width:12px}\"], encapsulation: 2 });\nTooltipContentComponent.ctorParameters = () => [\n { type: ElementRef },\n { type: Renderer2 },\n { type: undefined, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }\n];\nTooltipContentComponent.propDecorators = {\n host: [{ type: Input }],\n showCaret: [{ type: Input }],\n type: [{ type: Input }],\n placement: [{ type: Input }],\n alignment: [{ type: Input }],\n spacing: [{ type: Input }],\n cssClass: [{ type: Input }],\n title: [{ type: Input }],\n template: [{ type: Input }],\n context: [{ type: Input }],\n caretElm: [{ type: ViewChild, args: ['caretElm',] }],\n cssClasses: [{ type: HostBinding, args: ['class',] }],\n onWindowResize: [{ type: HostListener, args: ['window:resize',] }]\n};\n__decorate([\n throttleable(100)\n], TooltipContentComponent.prototype, \"onWindowResize\", null);\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(InjectionService, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc0.ApplicationRef }, { type: ɵngcc0.ComponentFactoryResolver }, { type: ɵngcc0.Injector }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TooltipContentComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-tooltip-content',\n template: `\n
    \n \n
    \n \n \n \n \n
    \n
    \n `,\n encapsulation: ViewEncapsulation.None,\n styles: [\".ngx-charts-tooltip-content{border-radius:3px;display:block;font-weight:400;opacity:0;pointer-events:none!important;position:fixed;z-index:5000}.ngx-charts-tooltip-content.type-popover{background:#fff;border:1px solid #72809b;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);color:#060709;font-size:13px;padding:4px}.ngx-charts-tooltip-content.type-popover .tooltip-caret{height:0;position:absolute;width:0;z-index:5001}.ngx-charts-tooltip-content.type-popover .tooltip-caret.position-left{border-bottom:7px solid transparent;border-left:7px solid #fff;border-top:7px solid transparent}.ngx-charts-tooltip-content.type-popover .tooltip-caret.position-top{border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid #fff}.ngx-charts-tooltip-content.type-popover .tooltip-caret.position-right{border-bottom:7px solid transparent;border-right:7px solid #fff;border-top:7px solid transparent}.ngx-charts-tooltip-content.type-popover .tooltip-caret.position-bottom{border-bottom:7px solid #fff;border-left:7px solid transparent;border-right:7px solid transparent}.ngx-charts-tooltip-content.type-tooltip{background:rgba(0,0,0,.75);color:#fff;font-size:12px;padding:0 10px;pointer-events:auto;text-align:center}.ngx-charts-tooltip-content.type-tooltip .tooltip-caret.position-left{border-bottom:7px solid transparent;border-left:7px solid rgba(0,0,0,.75);border-top:7px solid transparent}.ngx-charts-tooltip-content.type-tooltip .tooltip-caret.position-top{border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid rgba(0,0,0,.75)}.ngx-charts-tooltip-content.type-tooltip .tooltip-caret.position-right{border-bottom:7px solid transparent;border-right:7px solid rgba(0,0,0,.75);border-top:7px solid transparent}.ngx-charts-tooltip-content.type-tooltip .tooltip-caret.position-bottom{border-bottom:7px solid rgba(0,0,0,.75);border-left:7px solid transparent;border-right:7px solid transparent}.ngx-charts-tooltip-content .tooltip-label{display:block;font-size:1em;line-height:1em;padding:8px 5px 5px}.ngx-charts-tooltip-content .tooltip-val{display:block;font-size:1.3em;line-height:1em;padding:0 5px 8px}.ngx-charts-tooltip-content .tooltip-caret{height:0;position:absolute;width:0;z-index:5001}.ngx-charts-tooltip-content.position-right{transform:translate3d(10px,0,0)}.ngx-charts-tooltip-content.position-left{transform:translate3d(-10px,0,0)}.ngx-charts-tooltip-content.position-top{transform:translate3d(0,-10px,0)}.ngx-charts-tooltip-content.position-bottom{transform:translate3d(0,10px,0)}.ngx-charts-tooltip-content.animate{opacity:1;pointer-events:auto;transform:translateZ(0);transition:opacity .3s,transform .3s}.area-tooltip-container{padding:5px 0;pointer-events:none}.tooltip-item{line-height:1.2em;padding:5px 0;text-align:left}.tooltip-item .tooltip-item-color{border-radius:3px;color:#5b646b;display:inline-block;height:12px;margin-right:5px;width:12px}\"]\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; }, { cssClasses: [{\n type: HostBinding,\n args: ['class']\n }], placement: [{\n type: Input\n }], onWindowResize: [{\n type: HostListener,\n args: ['window:resize']\n }], host: [{\n type: Input\n }], showCaret: [{\n type: Input\n }], type: [{\n type: Input\n }], alignment: [{\n type: Input\n }], spacing: [{\n type: Input\n }], cssClass: [{\n type: Input\n }], title: [{\n type: Input\n }], template: [{\n type: Input\n }], context: [{\n type: Input\n }], caretElm: [{\n type: ViewChild,\n args: ['caretElm']\n }] }); })();\n\nclass InjectionRegisteryService {\n constructor(injectionService) {\n this.injectionService = injectionService;\n this.defaults = {};\n this.components = new Map();\n }\n getByType(type = this.type) {\n return this.components.get(type);\n }\n create(bindings) {\n return this.createByType(this.type, bindings);\n }\n createByType(type, bindings) {\n bindings = this.assignDefaults(bindings);\n const component = this.injectComponent(type, bindings);\n this.register(type, component);\n return component;\n }\n destroy(instance) {\n const compsByType = this.components.get(instance.componentType);\n if (compsByType && compsByType.length) {\n const idx = compsByType.indexOf(instance);\n if (idx > -1) {\n const component = compsByType[idx];\n component.destroy();\n compsByType.splice(idx, 1);\n }\n }\n }\n destroyAll() {\n this.destroyByType(this.type);\n }\n destroyByType(type) {\n const comps = this.components.get(type);\n if (comps && comps.length) {\n let i = comps.length - 1;\n while (i >= 0) {\n this.destroy(comps[i--]);\n }\n }\n }\n injectComponent(type, bindings) {\n return this.injectionService.appendComponent(type, bindings);\n }\n assignDefaults(bindings) {\n const inputs = Object.assign({}, this.defaults.inputs);\n const outputs = Object.assign({}, this.defaults.outputs);\n if (!bindings.inputs && !bindings.outputs) {\n bindings = { inputs: bindings };\n }\n if (inputs) {\n bindings.inputs = Object.assign(Object.assign({}, inputs), bindings.inputs);\n }\n if (outputs) {\n bindings.outputs = Object.assign(Object.assign({}, outputs), bindings.outputs);\n }\n return bindings;\n }\n register(type, component) {\n if (!this.components.has(type)) {\n this.components.set(type, []);\n }\n const types = this.components.get(type);\n types.push(component);\n }\n}\n\nclass TooltipService extends InjectionRegisteryService {\n constructor(injectionService) {\n super(injectionService);\n this.type = TooltipContentComponent;\n }\n}\nTooltipService.ɵfac = function TooltipService_Factory(t) { return new (t || TooltipService)(ɵngcc0.ɵɵinject(InjectionService)); };\nTooltipService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: TooltipService, factory: TooltipService.ɵfac });\nTooltipService.ctorParameters = () => [\n { type: InjectionService }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TooltipService, [{\n type: Injectable\n }], function () { return [{ type: InjectionService }]; }, null); })();\n\nclass ChartComponent {\n constructor() {\n this.showLegend = false;\n this.animations = true;\n this.legendLabelClick = new EventEmitter();\n this.legendLabelActivate = new EventEmitter();\n this.legendLabelDeactivate = new EventEmitter();\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n let legendColumns = 0;\n if (this.showLegend) {\n this.legendType = this.getLegendType();\n if (!this.legendOptions || this.legendOptions.position === 'right') {\n if (this.legendType === 'scaleLegend') {\n legendColumns = 1;\n }\n else {\n legendColumns = 2;\n }\n }\n }\n const chartColumns = 12 - legendColumns;\n this.chartWidth = Math.floor((this.view[0] * chartColumns) / 12.0);\n this.legendWidth =\n !this.legendOptions || this.legendOptions.position === 'right'\n ? Math.floor((this.view[0] * legendColumns) / 12.0)\n : this.chartWidth;\n }\n getLegendType() {\n if (this.legendOptions.scaleType === 'linear') {\n return 'scaleLegend';\n }\n else {\n return 'legend';\n }\n }\n}\nChartComponent.ɵfac = function ChartComponent_Factory(t) { return new (t || ChartComponent)(); };\nChartComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ChartComponent, selectors: [[\"ngx-charts-chart\"]], inputs: { showLegend: \"showLegend\", animations: \"animations\", legendType: \"legendType\", view: \"view\", legendOptions: \"legendOptions\", data: \"data\", legendData: \"legendData\", colors: \"colors\", activeEntries: \"activeEntries\" }, outputs: { legendLabelClick: \"legendLabelClick\", legendLabelActivate: \"legendLabelActivate\", legendLabelDeactivate: \"legendLabelDeactivate\" }, features: [ɵngcc0.ɵɵProvidersFeature([TooltipService]), ɵngcc0.ɵɵNgOnChangesFeature], ngContentSelectors: _c2, decls: 5, vars: 8, consts: [[1, \"ngx-charts-outer\"], [1, \"ngx-charts\"], [\"class\", \"chart-legend\", 3, \"horizontal\", \"valueRange\", \"colors\", \"height\", \"width\", 4, \"ngIf\"], [\"class\", \"chart-legend\", 3, \"horizontal\", \"data\", \"title\", \"colors\", \"height\", \"width\", \"activeEntries\", \"labelClick\", \"labelActivate\", \"labelDeactivate\", 4, \"ngIf\"], [1, \"chart-legend\", 3, \"horizontal\", \"valueRange\", \"colors\", \"height\", \"width\"], [1, \"chart-legend\", 3, \"horizontal\", \"data\", \"title\", \"colors\", \"height\", \"width\", \"activeEntries\", \"labelClick\", \"labelActivate\", \"labelDeactivate\"]], template: function ChartComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵelementStart(0, \"div\", 0);\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(1, \"svg\", 1);\n ɵngcc0.ɵɵprojection(2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, ChartComponent_ngx_charts_scale_legend_3_Template, 1, 5, \"ngx-charts-scale-legend\", 2);\n ɵngcc0.ɵɵtemplate(4, ChartComponent_ngx_charts_legend_4_Template, 1, 7, \"ngx-charts-legend\", 3);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"width\", ctx.view[0], \"px\");\n ɵngcc0.ɵɵproperty(\"@animationState\", \"active\")(\"@.disabled\", !ctx.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"width\", ctx.chartWidth)(\"height\", ctx.view[1]);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showLegend && ctx.legendType === \"scaleLegend\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showLegend && ctx.legendType === \"legend\");\n } }, directives: function () { return [ɵngcc1.NgIf, ScaleLegendComponent, LegendComponent]; }, encapsulation: 2, data: { animation: [\n trigger('animationState', [\n transition(':enter', [style({ opacity: 0 }), animate('500ms 100ms', style({ opacity: 1 }))])\n ])\n ] }, changeDetection: 0 });\nChartComponent.propDecorators = {\n view: [{ type: Input }],\n showLegend: [{ type: Input }],\n legendOptions: [{ type: Input }],\n data: [{ type: Input }],\n legendData: [{ type: Input }],\n legendType: [{ type: Input }],\n colors: [{ type: Input }],\n activeEntries: [{ type: Input }],\n animations: [{ type: Input }],\n legendLabelClick: [{ type: Output }],\n legendLabelActivate: [{ type: Output }],\n legendLabelDeactivate: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ChartComponent, [{\n type: Component,\n args: [{\n providers: [TooltipService],\n selector: 'ngx-charts-chart',\n template: `\n
    \n \n \n \n \n \n \n \n
    \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('animationState', [\n transition(':enter', [style({ opacity: 0 }), animate('500ms 100ms', style({ opacity: 1 }))])\n ])\n ]\n }]\n }], function () { return []; }, { showLegend: [{\n type: Input\n }], animations: [{\n type: Input\n }], legendLabelClick: [{\n type: Output\n }], legendLabelActivate: [{\n type: Output\n }], legendLabelDeactivate: [{\n type: Output\n }], legendType: [{\n type: Input\n }], view: [{\n type: Input\n }], legendOptions: [{\n type: Input\n }], data: [{\n type: Input\n }], legendData: [{\n type: Input\n }], colors: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }] }); })();\n\n/**\n * Visibility Observer\n */\nclass VisibilityObserver {\n constructor(element, zone) {\n this.element = element;\n this.zone = zone;\n this.visible = new EventEmitter();\n this.isVisible = false;\n this.runCheck();\n }\n destroy() {\n clearTimeout(this.timeout);\n }\n onVisibilityChange() {\n // trigger zone recalc for columns\n this.zone.run(() => {\n this.isVisible = true;\n this.visible.emit(true);\n });\n }\n runCheck() {\n const check = () => {\n if (!this.element) {\n return;\n }\n // https://davidwalsh.name/offsetheight-visibility\n const { offsetHeight, offsetWidth } = this.element.nativeElement;\n if (offsetHeight && offsetWidth) {\n clearTimeout(this.timeout);\n this.onVisibilityChange();\n }\n else {\n clearTimeout(this.timeout);\n this.zone.runOutsideAngular(() => {\n this.timeout = setTimeout(() => check(), 100);\n });\n }\n };\n this.zone.runOutsideAngular(() => {\n this.timeout = setTimeout(() => check());\n });\n }\n}\nVisibilityObserver.ɵfac = function VisibilityObserver_Factory(t) { return new (t || VisibilityObserver)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nVisibilityObserver.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: VisibilityObserver, selectors: [[\"visibility-observer\"]], outputs: { visible: \"visible\" } });\nVisibilityObserver.ctorParameters = () => [\n { type: ElementRef },\n { type: NgZone }\n];\nVisibilityObserver.propDecorators = {\n visible: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(VisibilityObserver, [{\n type: Directive,\n args: [{\n selector: 'visibility-observer'\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }]; }, { visible: [{\n type: Output\n }] }); })();\n\nclass BaseChartComponent {\n constructor(chartElement, zone, cd, platformId) {\n this.chartElement = chartElement;\n this.zone = zone;\n this.cd = cd;\n this.platformId = platformId;\n this.scheme = 'cool';\n this.schemeType = 'ordinal';\n this.animations = true;\n this.select = new EventEmitter();\n }\n ngOnInit() {\n if (isPlatformServer(this.platformId)) {\n this.animations = false;\n }\n }\n ngAfterViewInit() {\n this.bindWindowResizeEvent();\n // listen for visibility of the element for hidden by default scenario\n this.visibilityObserver = new VisibilityObserver(this.chartElement, this.zone);\n this.visibilityObserver.visible.subscribe(this.update.bind(this));\n }\n ngOnDestroy() {\n this.unbindEvents();\n if (this.visibilityObserver) {\n this.visibilityObserver.visible.unsubscribe();\n this.visibilityObserver.destroy();\n }\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n if (this.results) {\n this.results = this.cloneData(this.results);\n }\n else {\n this.results = [];\n }\n if (this.view) {\n this.width = this.view[0];\n this.height = this.view[1];\n }\n else {\n const dims = this.getContainerDims();\n if (dims) {\n this.width = dims.width;\n this.height = dims.height;\n }\n }\n // default values if width or height are 0 or undefined\n if (!this.width) {\n this.width = 600;\n }\n if (!this.height) {\n this.height = 400;\n }\n this.width = Math.floor(this.width);\n this.height = Math.floor(this.height);\n if (this.cd) {\n this.cd.markForCheck();\n }\n }\n getContainerDims() {\n let width;\n let height;\n const hostElem = this.chartElement.nativeElement;\n if (isPlatformBrowser(this.platformId) && hostElem.parentNode !== null) {\n // Get the container dimensions\n const dims = hostElem.parentNode.getBoundingClientRect();\n width = dims.width;\n height = dims.height;\n }\n if (width && height) {\n return { width, height };\n }\n return null;\n }\n /**\n * Converts all date objects that appear as name\n * into formatted date strings\n */\n formatDates() {\n for (let i = 0; i < this.results.length; i++) {\n const g = this.results[i];\n g.label = g.name;\n if (g.label instanceof Date) {\n g.label = g.label.toLocaleDateString();\n }\n if (g.series) {\n for (let j = 0; j < g.series.length; j++) {\n const d = g.series[j];\n d.label = d.name;\n if (d.label instanceof Date) {\n d.label = d.label.toLocaleDateString();\n }\n }\n }\n }\n }\n unbindEvents() {\n if (this.resizeSubscription) {\n this.resizeSubscription.unsubscribe();\n }\n }\n bindWindowResizeEvent() {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n const source = fromEvent(window, 'resize');\n const subscription = source.pipe(debounceTime(200)).subscribe(e => {\n this.update();\n if (this.cd) {\n this.cd.markForCheck();\n }\n });\n this.resizeSubscription = subscription;\n }\n /**\n * Clones the data into a new object\n *\n * @memberOf BaseChart\n */\n cloneData(data) {\n const results = [];\n for (const item of data) {\n const copy = {\n name: item['name']\n };\n if (item['value'] !== undefined) {\n copy['value'] = item['value'];\n }\n if (item['series'] !== undefined) {\n copy['series'] = [];\n for (const seriesItem of item['series']) {\n const seriesItemCopy = Object.assign({}, seriesItem);\n copy['series'].push(seriesItemCopy);\n }\n }\n if (item['extra'] !== undefined) {\n copy['extra'] = JSON.parse(JSON.stringify(item['extra']));\n }\n results.push(copy);\n }\n return results;\n }\n}\nBaseChartComponent.ɵfac = function BaseChartComponent_Factory(t) { return new (t || BaseChartComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(PLATFORM_ID)); };\nBaseChartComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: BaseChartComponent, selectors: [[\"base-chart\"]], inputs: { scheme: \"scheme\", schemeType: \"schemeType\", animations: \"animations\", results: \"results\", view: \"view\", customColors: \"customColors\" }, outputs: { select: \"select\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 1, vars: 0, template: function BaseChartComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\");\n } }, encapsulation: 2 });\nBaseChartComponent.ctorParameters = () => [\n { type: ElementRef },\n { type: NgZone },\n { type: ChangeDetectorRef },\n { type: undefined, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }\n];\nBaseChartComponent.propDecorators = {\n results: [{ type: Input }],\n view: [{ type: Input }],\n scheme: [{ type: Input }],\n schemeType: [{ type: Input }],\n customColors: [{ type: Input }],\n animations: [{ type: Input }],\n select: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BaseChartComponent, [{\n type: Component,\n args: [{\n selector: 'base-chart',\n template: `
    `\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; }, { scheme: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }], results: [{\n type: Input\n }], view: [{\n type: Input\n }], customColors: [{\n type: Input\n }] }); })();\n\nclass AxisLabelComponent {\n constructor(element) {\n this.textHeight = 25;\n this.margin = 5;\n this.element = element.nativeElement;\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.strokeWidth = '0.01';\n this.textAnchor = 'middle';\n this.transform = '';\n switch (this.orient) {\n case 'top':\n this.y = this.offset;\n this.x = this.width / 2;\n break;\n case 'bottom':\n this.y = this.offset;\n this.x = this.width / 2;\n break;\n case 'left':\n this.y = -(this.offset + this.textHeight + this.margin);\n this.x = -this.height / 2;\n this.transform = 'rotate(270)';\n break;\n case 'right':\n this.y = this.offset + this.margin;\n this.x = -this.height / 2;\n this.transform = 'rotate(270)';\n break;\n default:\n }\n }\n}\nAxisLabelComponent.ɵfac = function AxisLabelComponent_Factory(t) { return new (t || AxisLabelComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nAxisLabelComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: AxisLabelComponent, selectors: [[\"g\", \"ngx-charts-axis-label\", \"\"]], inputs: { orient: \"orient\", label: \"label\", offset: \"offset\", width: \"width\", height: \"height\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c3, decls: 2, vars: 6, template: function AxisLabelComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"text\");\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"stroke-width\", ctx.strokeWidth)(\"x\", ctx.x)(\"y\", ctx.y)(\"text-anchor\", ctx.textAnchor)(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx.label, \" \");\n } }, encapsulation: 2, changeDetection: 0 });\nAxisLabelComponent.ctorParameters = () => [\n { type: ElementRef }\n];\nAxisLabelComponent.propDecorators = {\n orient: [{ type: Input }],\n label: [{ type: Input }],\n offset: [{ type: Input }],\n width: [{ type: Input }],\n height: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AxisLabelComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-axis-label]',\n template: `\n \n {{ label }}\n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { orient: [{\n type: Input\n }], label: [{\n type: Input\n }], offset: [{\n type: Input\n }], width: [{\n type: Input\n }], height: [{\n type: Input\n }] }); })();\n\nfunction trimLabel(s, max = 16) {\n if (typeof s !== 'string') {\n if (typeof s === 'number') {\n return s + '';\n }\n else {\n return '';\n }\n }\n s = s.trim();\n if (s.length <= max) {\n return s;\n }\n else {\n return `${s.slice(0, max)}...`;\n }\n}\n\nfunction reduceTicks(ticks, maxTicks) {\n if (ticks.length > maxTicks) {\n const reduced = [];\n const modulus = Math.floor(ticks.length / maxTicks);\n for (let i = 0; i < ticks.length; i++) {\n if (i % modulus === 0) {\n reduced.push(ticks[i]);\n }\n }\n ticks = reduced;\n }\n return ticks;\n}\n\nclass XAxisTicksComponent {\n constructor(platformId) {\n this.platformId = platformId;\n this.tickArguments = [5];\n this.tickStroke = '#ccc';\n this.trimTicks = true;\n this.maxTickLength = 16;\n this.showGridLines = false;\n this.rotateTicks = true;\n this.dimensionsChanged = new EventEmitter();\n this.verticalSpacing = 20;\n this.rotateLabels = false;\n this.innerTickSize = 6;\n this.outerTickSize = 6;\n this.tickPadding = 3;\n this.textAnchor = 'middle';\n this.maxTicksLength = 0;\n this.maxAllowedLength = 16;\n this.height = 0;\n this.approxHeight = 10;\n }\n ngOnChanges(changes) {\n this.update();\n }\n ngAfterViewInit() {\n setTimeout(() => this.updateDims());\n }\n updateDims() {\n if (!isPlatformBrowser(this.platformId)) {\n // for SSR, use approximate value instead of measured\n this.dimensionsChanged.emit({ height: this.approxHeight });\n return;\n }\n const height = parseInt(this.ticksElement.nativeElement.getBoundingClientRect().height, 10);\n if (height !== this.height) {\n this.height = height;\n this.dimensionsChanged.emit({ height: this.height });\n setTimeout(() => this.updateDims());\n }\n }\n update() {\n const scale = this.scale;\n this.ticks = this.getTicks();\n if (this.tickFormatting) {\n this.tickFormat = this.tickFormatting;\n }\n else if (scale.tickFormat) {\n this.tickFormat = scale.tickFormat.apply(scale, this.tickArguments);\n }\n else {\n this.tickFormat = function (d) {\n if (d.constructor.name === 'Date') {\n return d.toLocaleDateString();\n }\n return d.toLocaleString();\n };\n }\n const angle = this.rotateTicks ? this.getRotationAngle(this.ticks) : null;\n this.adjustedScale = this.scale.bandwidth\n ? function (d) {\n return this.scale(d) + this.scale.bandwidth() * 0.5;\n }\n : this.scale;\n this.textTransform = '';\n if (angle && angle !== 0) {\n this.textTransform = `rotate(${angle})`;\n this.textAnchor = 'end';\n this.verticalSpacing = 10;\n }\n else {\n this.textAnchor = 'middle';\n }\n setTimeout(() => this.updateDims());\n }\n getRotationAngle(ticks) {\n let angle = 0;\n this.maxTicksLength = 0;\n for (let i = 0; i < ticks.length; i++) {\n const tick = this.tickFormat(ticks[i]).toString();\n let tickLength = tick.length;\n if (this.trimTicks) {\n tickLength = this.tickTrim(tick).length;\n }\n if (tickLength > this.maxTicksLength) {\n this.maxTicksLength = tickLength;\n }\n }\n const len = Math.min(this.maxTicksLength, this.maxAllowedLength);\n const charWidth = 7; // need to measure this\n const wordWidth = len * charWidth;\n let baseWidth = wordWidth;\n const maxBaseWidth = Math.floor(this.width / ticks.length);\n // calculate optimal angle\n while (baseWidth > maxBaseWidth && angle > -90) {\n angle -= 30;\n baseWidth = Math.cos(angle * (Math.PI / 180)) * wordWidth;\n }\n this.approxHeight = Math.max(Math.abs(Math.sin(angle * (Math.PI / 180)) * wordWidth), 10);\n return angle;\n }\n getTicks() {\n let ticks;\n const maxTicks = this.getMaxTicks(20);\n const maxScaleTicks = this.getMaxTicks(100);\n if (this.tickValues) {\n ticks = this.tickValues;\n }\n else if (this.scale.ticks) {\n ticks = this.scale.ticks.apply(this.scale, [maxScaleTicks]);\n }\n else {\n ticks = this.scale.domain();\n ticks = reduceTicks(ticks, maxTicks);\n }\n return ticks;\n }\n getMaxTicks(tickWidth) {\n return Math.floor(this.width / tickWidth);\n }\n tickTransform(tick) {\n return 'translate(' + this.adjustedScale(tick) + ',' + this.verticalSpacing + ')';\n }\n gridLineTransform() {\n return `translate(0,${-this.verticalSpacing - 5})`;\n }\n tickTrim(label) {\n return this.trimTicks ? trimLabel(label, this.maxTickLength) : label;\n }\n}\nXAxisTicksComponent.ɵfac = function XAxisTicksComponent_Factory(t) { return new (t || XAxisTicksComponent)(ɵngcc0.ɵɵdirectiveInject(PLATFORM_ID)); };\nXAxisTicksComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: XAxisTicksComponent, selectors: [[\"g\", \"ngx-charts-x-axis-ticks\", \"\"]], viewQuery: function XAxisTicksComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c4, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.ticksElement = _t.first);\n } }, inputs: { tickArguments: \"tickArguments\", tickStroke: \"tickStroke\", trimTicks: \"trimTicks\", maxTickLength: \"maxTickLength\", showGridLines: \"showGridLines\", rotateTicks: \"rotateTicks\", scale: \"scale\", orient: \"orient\", tickValues: \"tickValues\", tickFormatting: \"tickFormatting\", gridLineHeight: \"gridLineHeight\", width: \"width\" }, outputs: { dimensionsChanged: \"dimensionsChanged\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c5, decls: 4, vars: 2, consts: [[\"ticksel\", \"\"], [\"class\", \"tick\", 4, \"ngFor\", \"ngForOf\"], [4, \"ngFor\", \"ngForOf\"], [1, \"tick\"], [\"stroke-width\", \"0.01\"], [4, \"ngIf\"], [\"y2\", \"0\", 1, \"gridline-path\", \"gridline-path-vertical\"]], template: function XAxisTicksComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", null, 0);\n ɵngcc0.ɵɵtemplate(2, XAxisTicksComponent__svg_g_2_Template, 5, 7, \"g\", 1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, XAxisTicksComponent__svg_g_3_Template, 2, 2, \"g\", 2);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.ticks);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.ticks);\n } }, directives: [ɵngcc1.NgForOf, ɵngcc1.NgIf], encapsulation: 2, changeDetection: 0 });\nXAxisTicksComponent.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }\n];\nXAxisTicksComponent.propDecorators = {\n scale: [{ type: Input }],\n orient: [{ type: Input }],\n tickArguments: [{ type: Input }],\n tickValues: [{ type: Input }],\n tickStroke: [{ type: Input }],\n trimTicks: [{ type: Input }],\n maxTickLength: [{ type: Input }],\n tickFormatting: [{ type: Input }],\n showGridLines: [{ type: Input }],\n gridLineHeight: [{ type: Input }],\n width: [{ type: Input }],\n rotateTicks: [{ type: Input }],\n dimensionsChanged: [{ type: Output }],\n ticksElement: [{ type: ViewChild, args: ['ticksel',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(XAxisTicksComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-x-axis-ticks]',\n template: `\n \n \n {{ tickFormat(tick) }}\n \n {{ tickTrim(tickFormat(tick)) }}\n \n \n \n\n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; }, { tickArguments: [{\n type: Input\n }], tickStroke: [{\n type: Input\n }], trimTicks: [{\n type: Input\n }], maxTickLength: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], rotateTicks: [{\n type: Input\n }], dimensionsChanged: [{\n type: Output\n }], scale: [{\n type: Input\n }], orient: [{\n type: Input\n }], tickValues: [{\n type: Input\n }], tickFormatting: [{\n type: Input\n }], gridLineHeight: [{\n type: Input\n }], width: [{\n type: Input\n }], ticksElement: [{\n type: ViewChild,\n args: ['ticksel']\n }] }); })();\n\nclass XAxisComponent {\n constructor() {\n this.rotateTicks = true;\n this.showGridLines = false;\n this.xOrient = 'bottom';\n this.xAxisOffset = 0;\n this.dimensionsChanged = new EventEmitter();\n this.xAxisClassName = 'x axis';\n this.labelOffset = 0;\n this.fill = 'none';\n this.stroke = 'stroke';\n this.tickStroke = '#ccc';\n this.strokeWidth = 'none';\n this.padding = 5;\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.transform = `translate(0,${this.xAxisOffset + this.padding + this.dims.height})`;\n if (typeof this.xAxisTickCount !== 'undefined') {\n this.tickArguments = [this.xAxisTickCount];\n }\n }\n emitTicksHeight({ height }) {\n const newLabelOffset = height + 25 + 5;\n if (newLabelOffset !== this.labelOffset) {\n this.labelOffset = newLabelOffset;\n setTimeout(() => {\n this.dimensionsChanged.emit({ height });\n }, 0);\n }\n }\n}\nXAxisComponent.ɵfac = function XAxisComponent_Factory(t) { return new (t || XAxisComponent)(); };\nXAxisComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: XAxisComponent, selectors: [[\"g\", \"ngx-charts-x-axis\", \"\"]], viewQuery: function XAxisComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(XAxisTicksComponent, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.ticksComponent = _t.first);\n } }, inputs: { rotateTicks: \"rotateTicks\", showGridLines: \"showGridLines\", xOrient: \"xOrient\", xAxisOffset: \"xAxisOffset\", xScale: \"xScale\", dims: \"dims\", trimTicks: \"trimTicks\", maxTickLength: \"maxTickLength\", tickFormatting: \"tickFormatting\", showLabel: \"showLabel\", labelText: \"labelText\", ticks: \"ticks\", xAxisTickInterval: \"xAxisTickInterval\", xAxisTickCount: \"xAxisTickCount\" }, outputs: { dimensionsChanged: \"dimensionsChanged\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c6, decls: 3, vars: 4, consts: [[\"ngx-charts-x-axis-ticks\", \"\", 3, \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"tickArguments\", \"tickStroke\", \"scale\", \"orient\", \"showGridLines\", \"gridLineHeight\", \"width\", \"tickValues\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-axis-label\", \"\", 3, \"label\", \"offset\", \"orient\", \"height\", \"width\", 4, \"ngIf\"], [\"ngx-charts-x-axis-ticks\", \"\", 3, \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"tickArguments\", \"tickStroke\", \"scale\", \"orient\", \"showGridLines\", \"gridLineHeight\", \"width\", \"tickValues\", \"dimensionsChanged\"], [\"ngx-charts-axis-label\", \"\", 3, \"label\", \"offset\", \"orient\", \"height\", \"width\"]], template: function XAxisComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵtemplate(1, XAxisComponent__svg_g_1_Template, 1, 12, \"g\", 0);\n ɵngcc0.ɵɵtemplate(2, XAxisComponent__svg_g_2_Template, 1, 5, \"g\", 1);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"class\", ctx.xAxisClassName)(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.xScale);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showLabel);\n } }, directives: [ɵngcc1.NgIf, XAxisTicksComponent, AxisLabelComponent], encapsulation: 2, changeDetection: 0 });\nXAxisComponent.propDecorators = {\n xScale: [{ type: Input }],\n dims: [{ type: Input }],\n trimTicks: [{ type: Input }],\n rotateTicks: [{ type: Input }],\n maxTickLength: [{ type: Input }],\n tickFormatting: [{ type: Input }],\n showGridLines: [{ type: Input }],\n showLabel: [{ type: Input }],\n labelText: [{ type: Input }],\n ticks: [{ type: Input }],\n xAxisTickInterval: [{ type: Input }],\n xAxisTickCount: [{ type: Input }],\n xOrient: [{ type: Input }],\n xAxisOffset: [{ type: Input }],\n dimensionsChanged: [{ type: Output }],\n ticksComponent: [{ type: ViewChild, args: [XAxisTicksComponent,] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(XAxisComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-x-axis]',\n template: `\n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return []; }, { rotateTicks: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], xOrient: [{\n type: Input\n }], xAxisOffset: [{\n type: Input\n }], dimensionsChanged: [{\n type: Output\n }], xScale: [{\n type: Input\n }], dims: [{\n type: Input\n }], trimTicks: [{\n type: Input\n }], maxTickLength: [{\n type: Input\n }], tickFormatting: [{\n type: Input\n }], showLabel: [{\n type: Input\n }], labelText: [{\n type: Input\n }], ticks: [{\n type: Input\n }], xAxisTickInterval: [{\n type: Input\n }], xAxisTickCount: [{\n type: Input\n }], ticksComponent: [{\n type: ViewChild,\n args: [XAxisTicksComponent]\n }] }); })();\n\n/**\n * Generates a rounded rectanglar path\n *\n * @export\n * @param x, y, w, h, r, tl, tr, bl, br\n */\nfunction roundedRect(x, y, w, h, r, [tl, tr, bl, br]) {\n let retval = '';\n w = Math.floor(w);\n h = Math.floor(h);\n w = w === 0 ? 1 : w;\n h = h === 0 ? 1 : h;\n retval = `M${[x + r, y]}`;\n retval += `h${w - 2 * r}`;\n if (tr) {\n retval += `a${[r, r]} 0 0 1 ${[r, r]}`;\n }\n else {\n retval += `h${r}v${r}`;\n }\n retval += `v${h - 2 * r}`;\n if (br) {\n retval += `a${[r, r]} 0 0 1 ${[-r, r]}`;\n }\n else {\n retval += `v${r}h${-r}`;\n }\n retval += `h${2 * r - w}`;\n if (bl) {\n retval += `a${[r, r]} 0 0 1 ${[-r, -r]}`;\n }\n else {\n retval += `h${-r}v${-r}`;\n }\n retval += `v${2 * r - h}`;\n if (tl) {\n retval += `a${[r, r]} 0 0 1 ${[r, -r]}`;\n }\n else {\n retval += `v${-r}h${r}`;\n }\n retval += `z`;\n return retval;\n}\n\nclass YAxisTicksComponent {\n constructor(platformId) {\n this.platformId = platformId;\n this.tickArguments = [5];\n this.tickStroke = '#ccc';\n this.trimTicks = true;\n this.maxTickLength = 16;\n this.showGridLines = false;\n this.showRefLabels = false;\n this.showRefLines = false;\n this.dimensionsChanged = new EventEmitter();\n this.innerTickSize = 6;\n this.tickPadding = 3;\n this.verticalSpacing = 20;\n this.textAnchor = 'middle';\n this.width = 0;\n this.outerTickSize = 6;\n this.rotateLabels = false;\n this.referenceLineLength = 0;\n }\n ngOnChanges(changes) {\n this.update();\n }\n ngAfterViewInit() {\n setTimeout(() => this.updateDims());\n }\n updateDims() {\n if (!isPlatformBrowser(this.platformId)) {\n // for SSR, use approximate value instead of measured\n this.width = this.getApproximateAxisWidth();\n this.dimensionsChanged.emit({ width: this.width });\n return;\n }\n const width = parseInt(this.ticksElement.nativeElement.getBoundingClientRect().width, 10);\n if (width !== this.width) {\n this.width = width;\n this.dimensionsChanged.emit({ width });\n setTimeout(() => this.updateDims());\n }\n }\n update() {\n let scale;\n const sign = this.orient === 'top' || this.orient === 'right' ? -1 : 1;\n this.tickSpacing = Math.max(this.innerTickSize, 0) + this.tickPadding;\n scale = this.scale;\n this.ticks = this.getTicks();\n if (this.tickFormatting) {\n this.tickFormat = this.tickFormatting;\n }\n else if (scale.tickFormat) {\n this.tickFormat = scale.tickFormat.apply(scale, this.tickArguments);\n }\n else {\n this.tickFormat = function (d) {\n if (d.constructor.name === 'Date') {\n return d.toLocaleDateString();\n }\n return d.toLocaleString();\n };\n }\n this.adjustedScale = scale.bandwidth\n ? function (d) {\n return scale(d) + scale.bandwidth() * 0.5;\n }\n : scale;\n if (this.showRefLines && this.referenceLines) {\n this.setReferencelines();\n }\n switch (this.orient) {\n case 'top':\n this.transform = function (tick) {\n return 'translate(' + this.adjustedScale(tick) + ',0)';\n };\n this.textAnchor = 'middle';\n this.y2 = this.innerTickSize * sign;\n this.y1 = this.tickSpacing * sign;\n this.dy = sign < 0 ? '0em' : '.71em';\n break;\n case 'bottom':\n this.transform = function (tick) {\n return 'translate(' + this.adjustedScale(tick) + ',0)';\n };\n this.textAnchor = 'middle';\n this.y2 = this.innerTickSize * sign;\n this.y1 = this.tickSpacing * sign;\n this.dy = sign < 0 ? '0em' : '.71em';\n break;\n case 'left':\n this.transform = function (tick) {\n return 'translate(0,' + this.adjustedScale(tick) + ')';\n };\n this.textAnchor = 'end';\n this.x2 = this.innerTickSize * -sign;\n this.x1 = this.tickSpacing * -sign;\n this.dy = '.32em';\n break;\n case 'right':\n this.transform = function (tick) {\n return 'translate(0,' + this.adjustedScale(tick) + ')';\n };\n this.textAnchor = 'start';\n this.x2 = this.innerTickSize * -sign;\n this.x1 = this.tickSpacing * -sign;\n this.dy = '.32em';\n break;\n default:\n }\n setTimeout(() => this.updateDims());\n }\n setReferencelines() {\n this.refMin = this.adjustedScale(Math.min.apply(null, this.referenceLines.map(item => item.value)));\n this.refMax = this.adjustedScale(Math.max.apply(null, this.referenceLines.map(item => item.value)));\n this.referenceLineLength = this.referenceLines.length;\n this.referenceAreaPath = roundedRect(0, this.refMax, this.gridLineWidth, this.refMin - this.refMax, 0, [\n false,\n false,\n false,\n false\n ]);\n }\n getTicks() {\n let ticks;\n const maxTicks = this.getMaxTicks(20);\n const maxScaleTicks = this.getMaxTicks(50);\n if (this.tickValues) {\n ticks = this.tickValues;\n }\n else if (this.scale.ticks) {\n ticks = this.scale.ticks.apply(this.scale, [maxScaleTicks]);\n }\n else {\n ticks = this.scale.domain();\n ticks = reduceTicks(ticks, maxTicks);\n }\n return ticks;\n }\n getMaxTicks(tickHeight) {\n return Math.floor(this.height / tickHeight);\n }\n tickTransform(tick) {\n return `translate(${this.adjustedScale(tick)},${this.verticalSpacing})`;\n }\n gridLineTransform() {\n return `translate(5,0)`;\n }\n tickTrim(label) {\n return this.trimTicks ? trimLabel(label, this.maxTickLength) : label;\n }\n getApproximateAxisWidth() {\n const maxChars = Math.max(...this.ticks.map(t => this.tickTrim(this.tickFormat(t)).length));\n const charWidth = 7;\n return maxChars * charWidth;\n }\n}\nYAxisTicksComponent.ɵfac = function YAxisTicksComponent_Factory(t) { return new (t || YAxisTicksComponent)(ɵngcc0.ɵɵdirectiveInject(PLATFORM_ID)); };\nYAxisTicksComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: YAxisTicksComponent, selectors: [[\"g\", \"ngx-charts-y-axis-ticks\", \"\"]], viewQuery: function YAxisTicksComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c4, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.ticksElement = _t.first);\n } }, inputs: { tickArguments: \"tickArguments\", tickStroke: \"tickStroke\", trimTicks: \"trimTicks\", maxTickLength: \"maxTickLength\", showGridLines: \"showGridLines\", showRefLabels: \"showRefLabels\", showRefLines: \"showRefLines\", scale: \"scale\", orient: \"orient\", tickValues: \"tickValues\", tickFormatting: \"tickFormatting\", gridLineWidth: \"gridLineWidth\", height: \"height\", referenceLines: \"referenceLines\" }, outputs: { dimensionsChanged: \"dimensionsChanged\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c7, decls: 6, vars: 4, consts: [[\"ticksel\", \"\"], [\"class\", \"tick\", 4, \"ngFor\", \"ngForOf\"], [\"class\", \"reference-area\", 4, \"ngIf\"], [4, \"ngFor\", \"ngForOf\"], [1, \"tick\"], [\"stroke-width\", \"0.01\"], [1, \"reference-area\"], [4, \"ngIf\"], [\"class\", \"gridline-path gridline-path-horizontal\", \"x1\", \"0\", 4, \"ngIf\"], [\"x1\", \"0\", 1, \"gridline-path\", \"gridline-path-horizontal\"], [\"x1\", \"0\", 1, \"refline-path\", \"gridline-path-horizontal\"], [1, \"refline-label\"]], template: function YAxisTicksComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", null, 0);\n ɵngcc0.ɵɵtemplate(2, YAxisTicksComponent__svg_g_2_Template, 5, 9, \"g\", 1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, YAxisTicksComponent__svg_path_3_Template, 1, 2, \"path\", 2);\n ɵngcc0.ɵɵtemplate(4, YAxisTicksComponent__svg_g_4_Template, 2, 2, \"g\", 3);\n ɵngcc0.ɵɵtemplate(5, YAxisTicksComponent__svg_g_5_Template, 2, 1, \"g\", 3);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.ticks);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.referenceLineLength > 1 && ctx.refMax && ctx.refMin && ctx.showRefLines);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.ticks);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.referenceLines);\n } }, directives: [ɵngcc1.NgForOf, ɵngcc1.NgIf], encapsulation: 2, changeDetection: 0 });\nYAxisTicksComponent.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }\n];\nYAxisTicksComponent.propDecorators = {\n scale: [{ type: Input }],\n orient: [{ type: Input }],\n tickArguments: [{ type: Input }],\n tickValues: [{ type: Input }],\n tickStroke: [{ type: Input }],\n trimTicks: [{ type: Input }],\n maxTickLength: [{ type: Input }],\n tickFormatting: [{ type: Input }],\n showGridLines: [{ type: Input }],\n gridLineWidth: [{ type: Input }],\n height: [{ type: Input }],\n referenceLines: [{ type: Input }],\n showRefLabels: [{ type: Input }],\n showRefLines: [{ type: Input }],\n dimensionsChanged: [{ type: Output }],\n ticksElement: [{ type: ViewChild, args: ['ticksel',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(YAxisTicksComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-y-axis-ticks]',\n template: `\n \n \n {{ tickFormat(tick) }}\n \n {{ tickTrim(tickFormat(tick)) }}\n \n \n \n\n 1 && refMax && refMin && showRefLines\"\n class=\"reference-area\"\n [attr.d]=\"referenceAreaPath\"\n [attr.transform]=\"gridLineTransform()\"\n />\n \n \n \n \n \n \n\n \n \n \n \n {{ tickTrim(tickFormat(refLine.value)) }}\n \n {{ refLine.name }}\n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; }, { tickArguments: [{\n type: Input\n }], tickStroke: [{\n type: Input\n }], trimTicks: [{\n type: Input\n }], maxTickLength: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], showRefLabels: [{\n type: Input\n }], showRefLines: [{\n type: Input\n }], dimensionsChanged: [{\n type: Output\n }], scale: [{\n type: Input\n }], orient: [{\n type: Input\n }], tickValues: [{\n type: Input\n }], tickFormatting: [{\n type: Input\n }], gridLineWidth: [{\n type: Input\n }], height: [{\n type: Input\n }], referenceLines: [{\n type: Input\n }], ticksElement: [{\n type: ViewChild,\n args: ['ticksel']\n }] }); })();\n\nclass YAxisComponent {\n constructor() {\n this.showGridLines = false;\n this.yOrient = 'left';\n this.yAxisOffset = 0;\n this.dimensionsChanged = new EventEmitter();\n this.yAxisClassName = 'y axis';\n this.labelOffset = 15;\n this.fill = 'none';\n this.stroke = '#CCC';\n this.tickStroke = '#CCC';\n this.strokeWidth = 1;\n this.padding = 5;\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.offset = -(this.yAxisOffset + this.padding);\n if (this.yOrient === 'right') {\n this.labelOffset = 65;\n this.transform = `translate(${this.offset + this.dims.width} , 0)`;\n }\n else {\n this.offset = this.offset;\n this.transform = `translate(${this.offset} , 0)`;\n }\n if (this.yAxisTickCount !== undefined) {\n this.tickArguments = [this.yAxisTickCount];\n }\n }\n emitTicksWidth({ width }) {\n if (width !== this.labelOffset && this.yOrient === 'right') {\n this.labelOffset = width + this.labelOffset;\n setTimeout(() => {\n this.dimensionsChanged.emit({ width });\n }, 0);\n }\n else if (width !== this.labelOffset) {\n this.labelOffset = width;\n setTimeout(() => {\n this.dimensionsChanged.emit({ width });\n }, 0);\n }\n }\n}\nYAxisComponent.ɵfac = function YAxisComponent_Factory(t) { return new (t || YAxisComponent)(); };\nYAxisComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: YAxisComponent, selectors: [[\"g\", \"ngx-charts-y-axis\", \"\"]], viewQuery: function YAxisComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(YAxisTicksComponent, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.ticksComponent = _t.first);\n } }, inputs: { showGridLines: \"showGridLines\", yOrient: \"yOrient\", yAxisOffset: \"yAxisOffset\", yScale: \"yScale\", dims: \"dims\", trimTicks: \"trimTicks\", maxTickLength: \"maxTickLength\", tickFormatting: \"tickFormatting\", ticks: \"ticks\", showLabel: \"showLabel\", labelText: \"labelText\", yAxisTickInterval: \"yAxisTickInterval\", yAxisTickCount: \"yAxisTickCount\", referenceLines: \"referenceLines\", showRefLines: \"showRefLines\", showRefLabels: \"showRefLabels\" }, outputs: { dimensionsChanged: \"dimensionsChanged\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c8, decls: 3, vars: 4, consts: [[\"ngx-charts-y-axis-ticks\", \"\", 3, \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"tickArguments\", \"tickValues\", \"tickStroke\", \"scale\", \"orient\", \"showGridLines\", \"gridLineWidth\", \"referenceLines\", \"showRefLines\", \"showRefLabels\", \"height\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-axis-label\", \"\", 3, \"label\", \"offset\", \"orient\", \"height\", \"width\", 4, \"ngIf\"], [\"ngx-charts-y-axis-ticks\", \"\", 3, \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"tickArguments\", \"tickValues\", \"tickStroke\", \"scale\", \"orient\", \"showGridLines\", \"gridLineWidth\", \"referenceLines\", \"showRefLines\", \"showRefLabels\", \"height\", \"dimensionsChanged\"], [\"ngx-charts-axis-label\", \"\", 3, \"label\", \"offset\", \"orient\", \"height\", \"width\"]], template: function YAxisComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵtemplate(1, YAxisComponent__svg_g_1_Template, 1, 14, \"g\", 0);\n ɵngcc0.ɵɵtemplate(2, YAxisComponent__svg_g_2_Template, 1, 5, \"g\", 1);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"class\", ctx.yAxisClassName)(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.yScale);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showLabel);\n } }, directives: [ɵngcc1.NgIf, YAxisTicksComponent, AxisLabelComponent], encapsulation: 2, changeDetection: 0 });\nYAxisComponent.propDecorators = {\n yScale: [{ type: Input }],\n dims: [{ type: Input }],\n trimTicks: [{ type: Input }],\n maxTickLength: [{ type: Input }],\n tickFormatting: [{ type: Input }],\n ticks: [{ type: Input }],\n showGridLines: [{ type: Input }],\n showLabel: [{ type: Input }],\n labelText: [{ type: Input }],\n yAxisTickInterval: [{ type: Input }],\n yAxisTickCount: [{ type: Input }],\n yOrient: [{ type: Input }],\n referenceLines: [{ type: Input }],\n showRefLines: [{ type: Input }],\n showRefLabels: [{ type: Input }],\n yAxisOffset: [{ type: Input }],\n dimensionsChanged: [{ type: Output }],\n ticksComponent: [{ type: ViewChild, args: [YAxisTicksComponent,] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(YAxisComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-y-axis]',\n template: `\n \n \n\n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return []; }, { showGridLines: [{\n type: Input\n }], yOrient: [{\n type: Input\n }], yAxisOffset: [{\n type: Input\n }], dimensionsChanged: [{\n type: Output\n }], yScale: [{\n type: Input\n }], dims: [{\n type: Input\n }], trimTicks: [{\n type: Input\n }], maxTickLength: [{\n type: Input\n }], tickFormatting: [{\n type: Input\n }], ticks: [{\n type: Input\n }], showLabel: [{\n type: Input\n }], labelText: [{\n type: Input\n }], yAxisTickInterval: [{\n type: Input\n }], yAxisTickCount: [{\n type: Input\n }], referenceLines: [{\n type: Input\n }], showRefLines: [{\n type: Input\n }], showRefLabels: [{\n type: Input\n }], ticksComponent: [{\n type: ViewChild,\n args: [YAxisTicksComponent]\n }] }); })();\n\nclass AxesModule {\n}\nAxesModule.ɵfac = function AxesModule_Factory(t) { return new (t || AxesModule)(); };\nAxesModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: AxesModule });\nAxesModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AxesModule, [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n declarations: [AxisLabelComponent, XAxisComponent, XAxisTicksComponent, YAxisComponent, YAxisTicksComponent],\n exports: [AxisLabelComponent, XAxisComponent, XAxisTicksComponent, YAxisComponent, YAxisTicksComponent]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(AxesModule, { declarations: function () { return [AxisLabelComponent, XAxisComponent, XAxisTicksComponent, YAxisComponent, YAxisTicksComponent]; }, imports: function () { return [CommonModule]; }, exports: function () { return [AxisLabelComponent, XAxisComponent, XAxisTicksComponent, YAxisComponent, YAxisTicksComponent]; } }); })();\n\nvar StyleTypes;\n(function (StyleTypes) {\n StyleTypes[StyleTypes[\"popover\"] = 'popover'] = \"popover\";\n StyleTypes[StyleTypes[\"tooltip\"] = 'tooltip'] = \"tooltip\";\n})(StyleTypes || (StyleTypes = {}));\n\nvar AlignmentTypes;\n(function (AlignmentTypes) {\n AlignmentTypes[AlignmentTypes[\"left\"] = 'left'] = \"left\";\n AlignmentTypes[AlignmentTypes[\"center\"] = 'center'] = \"center\";\n AlignmentTypes[AlignmentTypes[\"right\"] = 'right'] = \"right\";\n})(AlignmentTypes || (AlignmentTypes = {}));\n\nvar ShowTypes;\n(function (ShowTypes) {\n ShowTypes[ShowTypes[\"all\"] = 'all'] = \"all\";\n ShowTypes[ShowTypes[\"focus\"] = 'focus'] = \"focus\";\n ShowTypes[ShowTypes[\"mouseover\"] = 'mouseover'] = \"mouseover\";\n})(ShowTypes || (ShowTypes = {}));\n\nclass TooltipDirective {\n constructor(tooltipService, viewContainerRef, renderer) {\n this.tooltipService = tooltipService;\n this.viewContainerRef = viewContainerRef;\n this.renderer = renderer;\n this.tooltipCssClass = '';\n this.tooltipTitle = '';\n this.tooltipAppendToBody = true;\n this.tooltipSpacing = 10;\n this.tooltipDisabled = false;\n this.tooltipShowCaret = true;\n this.tooltipPlacement = PlacementTypes.top;\n this.tooltipAlignment = AlignmentTypes.center;\n this.tooltipType = StyleTypes.popover;\n this.tooltipCloseOnClickOutside = true;\n this.tooltipCloseOnMouseLeave = true;\n this.tooltipHideTimeout = 300;\n this.tooltipShowTimeout = 100;\n this.tooltipShowEvent = ShowTypes.all;\n this.tooltipImmediateExit = false;\n this.show = new EventEmitter();\n this.hide = new EventEmitter();\n }\n get listensForFocus() {\n return this.tooltipShowEvent === ShowTypes.all || this.tooltipShowEvent === ShowTypes.focus;\n }\n get listensForHover() {\n return this.tooltipShowEvent === ShowTypes.all || this.tooltipShowEvent === ShowTypes.mouseover;\n }\n ngOnDestroy() {\n this.hideTooltip(true);\n }\n onFocus() {\n if (this.listensForFocus) {\n this.showTooltip();\n }\n }\n onBlur() {\n if (this.listensForFocus) {\n this.hideTooltip(true);\n }\n }\n onMouseEnter() {\n if (this.listensForHover) {\n this.showTooltip();\n }\n }\n onMouseLeave(target) {\n if (this.listensForHover && this.tooltipCloseOnMouseLeave) {\n clearTimeout(this.timeout);\n if (this.component) {\n const contentDom = this.component.instance.element.nativeElement;\n const contains = contentDom.contains(target);\n if (contains)\n return;\n }\n this.hideTooltip(this.tooltipImmediateExit);\n }\n }\n onMouseClick() {\n if (this.listensForHover) {\n this.hideTooltip(true);\n }\n }\n showTooltip(immediate) {\n if (this.component || this.tooltipDisabled)\n return;\n const time = immediate\n ? 0\n : this.tooltipShowTimeout + (navigator.userAgent.match(/\\(i[^;]+;( U;)? CPU.+Mac OS X/) ? 300 : 0);\n clearTimeout(this.timeout);\n this.timeout = setTimeout(() => {\n this.tooltipService.destroyAll();\n const options = this.createBoundOptions();\n this.component = this.tooltipService.create(options);\n // add a tiny timeout to avoid event re-triggers\n setTimeout(() => {\n if (this.component) {\n this.addHideListeners(this.component.instance.element.nativeElement);\n }\n }, 10);\n this.show.emit(true);\n }, time);\n }\n addHideListeners(tooltip) {\n // on mouse enter, cancel the hide triggered by the leave\n this.mouseEnterContentEvent = this.renderer.listen(tooltip, 'mouseenter', () => {\n clearTimeout(this.timeout);\n });\n // content mouse leave listener\n if (this.tooltipCloseOnMouseLeave) {\n this.mouseLeaveContentEvent = this.renderer.listen(tooltip, 'mouseleave', () => {\n this.hideTooltip(this.tooltipImmediateExit);\n });\n }\n // content close on click outside\n if (this.tooltipCloseOnClickOutside) {\n this.documentClickEvent = this.renderer.listen('window', 'click', event => {\n const contains = tooltip.contains(event.target);\n if (!contains)\n this.hideTooltip();\n });\n }\n }\n hideTooltip(immediate = false) {\n if (!this.component)\n return;\n const destroyFn = () => {\n // remove events\n if (this.mouseLeaveContentEvent)\n this.mouseLeaveContentEvent();\n if (this.mouseEnterContentEvent)\n this.mouseEnterContentEvent();\n if (this.documentClickEvent)\n this.documentClickEvent();\n // emit events\n this.hide.emit(true);\n // destroy component\n this.tooltipService.destroy(this.component);\n this.component = undefined;\n };\n clearTimeout(this.timeout);\n if (!immediate) {\n this.timeout = setTimeout(destroyFn, this.tooltipHideTimeout);\n }\n else {\n destroyFn();\n }\n }\n createBoundOptions() {\n return {\n title: this.tooltipTitle,\n template: this.tooltipTemplate,\n host: this.viewContainerRef.element,\n placement: this.tooltipPlacement,\n alignment: this.tooltipAlignment,\n type: this.tooltipType,\n showCaret: this.tooltipShowCaret,\n cssClass: this.tooltipCssClass,\n spacing: this.tooltipSpacing,\n context: this.tooltipContext\n };\n }\n}\nTooltipDirective.ɵfac = function TooltipDirective_Factory(t) { return new (t || TooltipDirective)(ɵngcc0.ɵɵdirectiveInject(TooltipService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nTooltipDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: TooltipDirective, selectors: [[\"\", \"ngx-tooltip\", \"\"]], hostBindings: function TooltipDirective_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"focusin\", function TooltipDirective_focusin_HostBindingHandler() { return ctx.onFocus(); })(\"blur\", function TooltipDirective_blur_HostBindingHandler() { return ctx.onBlur(); })(\"mouseenter\", function TooltipDirective_mouseenter_HostBindingHandler() { return ctx.onMouseEnter(); })(\"mouseleave\", function TooltipDirective_mouseleave_HostBindingHandler($event) { return ctx.onMouseLeave($event.target); })(\"click\", function TooltipDirective_click_HostBindingHandler() { return ctx.onMouseClick(); });\n } }, inputs: { tooltipCssClass: \"tooltipCssClass\", tooltipTitle: \"tooltipTitle\", tooltipAppendToBody: \"tooltipAppendToBody\", tooltipSpacing: \"tooltipSpacing\", tooltipDisabled: \"tooltipDisabled\", tooltipShowCaret: \"tooltipShowCaret\", tooltipPlacement: \"tooltipPlacement\", tooltipAlignment: \"tooltipAlignment\", tooltipType: \"tooltipType\", tooltipCloseOnClickOutside: \"tooltipCloseOnClickOutside\", tooltipCloseOnMouseLeave: \"tooltipCloseOnMouseLeave\", tooltipHideTimeout: \"tooltipHideTimeout\", tooltipShowTimeout: \"tooltipShowTimeout\", tooltipShowEvent: \"tooltipShowEvent\", tooltipImmediateExit: \"tooltipImmediateExit\", tooltipTemplate: \"tooltipTemplate\", tooltipContext: \"tooltipContext\" }, outputs: { show: \"show\", hide: \"hide\" } });\nTooltipDirective.ctorParameters = () => [\n { type: TooltipService },\n { type: ViewContainerRef },\n { type: Renderer2 }\n];\nTooltipDirective.propDecorators = {\n tooltipCssClass: [{ type: Input }],\n tooltipTitle: [{ type: Input }],\n tooltipAppendToBody: [{ type: Input }],\n tooltipSpacing: [{ type: Input }],\n tooltipDisabled: [{ type: Input }],\n tooltipShowCaret: [{ type: Input }],\n tooltipPlacement: [{ type: Input }],\n tooltipAlignment: [{ type: Input }],\n tooltipType: [{ type: Input }],\n tooltipCloseOnClickOutside: [{ type: Input }],\n tooltipCloseOnMouseLeave: [{ type: Input }],\n tooltipHideTimeout: [{ type: Input }],\n tooltipShowTimeout: [{ type: Input }],\n tooltipTemplate: [{ type: Input }],\n tooltipShowEvent: [{ type: Input }],\n tooltipContext: [{ type: Input }],\n tooltipImmediateExit: [{ type: Input }],\n show: [{ type: Output }],\n hide: [{ type: Output }],\n onFocus: [{ type: HostListener, args: ['focusin',] }],\n onBlur: [{ type: HostListener, args: ['blur',] }],\n onMouseEnter: [{ type: HostListener, args: ['mouseenter',] }],\n onMouseLeave: [{ type: HostListener, args: ['mouseleave', ['$event.target'],] }],\n onMouseClick: [{ type: HostListener, args: ['click',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TooltipDirective, [{\n type: Directive,\n args: [{ selector: '[ngx-tooltip]' }]\n }], function () { return [{ type: TooltipService }, { type: ɵngcc0.ViewContainerRef }, { type: ɵngcc0.Renderer2 }]; }, { tooltipCssClass: [{\n type: Input\n }], tooltipTitle: [{\n type: Input\n }], tooltipAppendToBody: [{\n type: Input\n }], tooltipSpacing: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], tooltipShowCaret: [{\n type: Input\n }], tooltipPlacement: [{\n type: Input\n }], tooltipAlignment: [{\n type: Input\n }], tooltipType: [{\n type: Input\n }], tooltipCloseOnClickOutside: [{\n type: Input\n }], tooltipCloseOnMouseLeave: [{\n type: Input\n }], tooltipHideTimeout: [{\n type: Input\n }], tooltipShowTimeout: [{\n type: Input\n }], tooltipShowEvent: [{\n type: Input\n }], tooltipImmediateExit: [{\n type: Input\n }], show: [{\n type: Output\n }], hide: [{\n type: Output\n }], onFocus: [{\n type: HostListener,\n args: ['focusin']\n }], onBlur: [{\n type: HostListener,\n args: ['blur']\n }], onMouseEnter: [{\n type: HostListener,\n args: ['mouseenter']\n }], onMouseLeave: [{\n type: HostListener,\n args: ['mouseleave', ['$event.target']]\n }], onMouseClick: [{\n type: HostListener,\n args: ['click']\n }], tooltipTemplate: [{\n type: Input\n }], tooltipContext: [{\n type: Input\n }] }); })();\n\nclass TooltipModule {\n}\nTooltipModule.ɵfac = function TooltipModule_Factory(t) { return new (t || TooltipModule)(); };\nTooltipModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: TooltipModule });\nTooltipModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ providers: [InjectionService, TooltipService], imports: [[CommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TooltipModule, [{\n type: NgModule,\n args: [{\n declarations: [TooltipContentComponent, TooltipDirective],\n providers: [InjectionService, TooltipService],\n exports: [TooltipContentComponent, TooltipDirective],\n imports: [CommonModule],\n entryComponents: [TooltipContentComponent]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(TooltipModule, { declarations: function () { return [TooltipContentComponent, TooltipDirective]; }, imports: function () { return [CommonModule]; }, exports: function () { return [TooltipContentComponent, TooltipDirective]; } }); })();\n\n/**\n * Formats a label given a date, number or string.\n *\n * @export\n */\nfunction formatLabel(label) {\n if (label instanceof Date) {\n label = label.toLocaleDateString();\n }\n else {\n label = label.toLocaleString();\n }\n return label;\n}\n/**\n * Escapes a label.\n *\n * @export\n */\nfunction escapeLabel(label) {\n return label.toLocaleString().replace(/[&'`\"<>]/g, match => {\n return {\n '&': '&',\n // tslint:disable-next-line: quotemark\n \"'\": ''',\n '`': '`',\n '\"': '"',\n '<': '<',\n '>': '>'\n }[match];\n });\n}\n\nconst cache = {};\n/**\n * Generates a short id.\n *\n * Description:\n * A 4-character alphanumeric sequence (364 = 1.6 million)\n * This should only be used for JavaScript specific models.\n * http://stackoverflow.com/questions/6248666/how-to-generate-short-uid-like-ax4j9z-in-js\n *\n * Example: `ebgf`\n */\nfunction id() {\n let newId = ('0000' + ((Math.random() * Math.pow(36, 4)) << 0).toString(36)).slice(-4);\n // append a 'a' because neo gets mad\n newId = `a${newId}`;\n // ensure not already used\n if (!cache[newId]) {\n cache[newId] = true;\n return newId;\n }\n return id();\n}\n\nclass CircleSeriesComponent {\n constructor() {\n this.type = 'standard';\n this.tooltipDisabled = false;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.barVisible = false;\n }\n ngOnInit() {\n this.gradientId = 'grad' + id().toString();\n this.gradientFill = `url(#${this.gradientId})`;\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.circle = this.getActiveCircle();\n }\n getActiveCircle() {\n const indexActiveDataPoint = this.data.series.findIndex(d => {\n const label = d.name;\n return label && this.visibleValue && label.toString() === this.visibleValue.toString() && d.value !== undefined;\n });\n if (indexActiveDataPoint === -1) {\n // No valid point is 'active/hovered over' at this moment.\n return undefined;\n }\n return this.mapDataPointToCircle(this.data.series[indexActiveDataPoint], indexActiveDataPoint);\n }\n mapDataPointToCircle(d, i) {\n const seriesName = this.data.name;\n const value = d.value;\n const label = d.name;\n const tooltipLabel = formatLabel(label);\n let cx;\n if (this.scaleType === 'time') {\n cx = this.xScale(label);\n }\n else if (this.scaleType === 'linear') {\n cx = this.xScale(Number(label));\n }\n else {\n cx = this.xScale(label);\n }\n const cy = this.yScale(this.type === 'standard' ? value : d.d1);\n const radius = 5;\n const height = this.yScale.range()[0] - cy;\n const opacity = 1;\n let color;\n if (this.colors.scaleType === 'linear') {\n if (this.type === 'standard') {\n color = this.colors.getColor(value);\n }\n else {\n color = this.colors.getColor(d.d1);\n }\n }\n else {\n color = this.colors.getColor(seriesName);\n }\n const data = Object.assign({}, d, {\n series: seriesName,\n value,\n name: label\n });\n return {\n classNames: [`circle-data-${i}`],\n value,\n label,\n data,\n cx,\n cy,\n radius,\n height,\n tooltipLabel,\n color,\n opacity,\n seriesName,\n gradientStops: this.getGradientStops(color),\n min: d.min,\n max: d.max\n };\n }\n getTooltipText({ tooltipLabel, value, seriesName, min, max }) {\n return `\n ${escapeLabel(seriesName)} • ${escapeLabel(tooltipLabel)}\n ${value.toLocaleString()}${this.getTooltipMinMaxText(min, max)}\n `;\n }\n getTooltipMinMaxText(min, max) {\n if (min !== undefined || max !== undefined) {\n let result = ' (';\n if (min !== undefined) {\n if (max === undefined) {\n result += '≥';\n }\n result += min.toLocaleString();\n if (max !== undefined) {\n result += ' - ';\n }\n }\n else if (max !== undefined) {\n result += '≤';\n }\n if (max !== undefined) {\n result += max.toLocaleString();\n }\n result += ')';\n return result;\n }\n else {\n return '';\n }\n }\n getGradientStops(color) {\n return [\n {\n offset: 0,\n color,\n opacity: 0.2\n },\n {\n offset: 100,\n color,\n opacity: 1\n }\n ];\n }\n onClick(data) {\n this.select.emit(data);\n }\n isActive(entry) {\n if (!this.activeEntries)\n return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name;\n });\n return item !== undefined;\n }\n activateCircle() {\n this.barVisible = true;\n this.activate.emit({ name: this.data.name });\n }\n deactivateCircle() {\n this.barVisible = false;\n this.circle.opacity = 0;\n this.deactivate.emit({ name: this.data.name });\n }\n}\nCircleSeriesComponent.ɵfac = function CircleSeriesComponent_Factory(t) { return new (t || CircleSeriesComponent)(); };\nCircleSeriesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CircleSeriesComponent, selectors: [[\"g\", \"ngx-charts-circle-series\", \"\"]], inputs: { type: \"type\", tooltipDisabled: \"tooltipDisabled\", data: \"data\", xScale: \"xScale\", yScale: \"yScale\", colors: \"colors\", scaleType: \"scaleType\", visibleValue: \"visibleValue\", activeEntries: \"activeEntries\", tooltipTemplate: \"tooltipTemplate\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c9, decls: 1, vars: 1, consts: [[4, \"ngIf\"], [\"ngx-charts-svg-linear-gradient\", \"\", \"orientation\", \"vertical\", 3, \"name\", \"stops\"], [\"class\", \"tooltip-bar\", 4, \"ngIf\"], [\"ngx-charts-circle\", \"\", \"ngx-tooltip\", \"\", 1, \"circle\", 3, \"cx\", \"cy\", \"r\", \"fill\", \"pointerEvents\", \"data\", \"classNames\", \"tooltipDisabled\", \"tooltipPlacement\", \"tooltipType\", \"tooltipTitle\", \"tooltipTemplate\", \"tooltipContext\", \"select\", \"activate\", \"deactivate\"], [1, \"tooltip-bar\"]], template: function CircleSeriesComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, CircleSeriesComponent__svg_g_0_Template, 5, 20, \"g\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.circle);\n } }, directives: function () { return [ɵngcc1.NgIf, SvgLinearGradientComponent, CircleComponent, TooltipDirective]; }, encapsulation: 2, data: { animation: [\n trigger('animationState', [\n transition(':enter', [\n style({\n opacity: 0\n }),\n animate(250, style({ opacity: 1 }))\n ])\n ])\n ] }, changeDetection: 0 });\nCircleSeriesComponent.propDecorators = {\n data: [{ type: Input }],\n type: [{ type: Input }],\n xScale: [{ type: Input }],\n yScale: [{ type: Input }],\n colors: [{ type: Input }],\n scaleType: [{ type: Input }],\n visibleValue: [{ type: Input }],\n activeEntries: [{ type: Input }],\n tooltipDisabled: [{ type: Input }],\n tooltipTemplate: [{ type: Input }],\n select: [{ type: Output }],\n activate: [{ type: Output }],\n deactivate: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CircleSeriesComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-circle-series]',\n template: `\n \n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('animationState', [\n transition(':enter', [\n style({\n opacity: 0\n }),\n animate(250, style({ opacity: 1 }))\n ])\n ])\n ]\n }]\n }], function () { return []; }, { type: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], data: [{\n type: Input\n }], xScale: [{\n type: Input\n }], yScale: [{\n type: Input\n }], colors: [{\n type: Input\n }], scaleType: [{\n type: Input\n }], visibleValue: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }] }); })();\n\nclass CircleComponent {\n constructor() {\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n }\n onClick() {\n this.select.emit(this.data);\n }\n onMouseEnter() {\n this.activate.emit(this.data);\n }\n onMouseLeave() {\n this.deactivate.emit(this.data);\n }\n ngOnChanges(changes) {\n this.classNames = Array.isArray(this.classNames) ? this.classNames.join(' ') : '';\n this.classNames += 'circle';\n }\n}\nCircleComponent.ɵfac = function CircleComponent_Factory(t) { return new (t || CircleComponent)(); };\nCircleComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CircleComponent, selectors: [[\"g\", \"ngx-charts-circle\", \"\"]], hostBindings: function CircleComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function CircleComponent_click_HostBindingHandler() { return ctx.onClick(); })(\"mouseenter\", function CircleComponent_mouseenter_HostBindingHandler() { return ctx.onMouseEnter(); })(\"mouseleave\", function CircleComponent_mouseleave_HostBindingHandler() { return ctx.onMouseLeave(); });\n } }, inputs: { classNames: \"classNames\", cx: \"cx\", cy: \"cy\", r: \"r\", fill: \"fill\", stroke: \"stroke\", data: \"data\", circleOpacity: \"circleOpacity\", pointerEvents: \"pointerEvents\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c11, decls: 1, vars: 8, template: function CircleComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"circle\");\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"cx\", ctx.cx)(\"cy\", ctx.cy)(\"r\", ctx.r)(\"fill\", ctx.fill)(\"stroke\", ctx.stroke)(\"opacity\", ctx.circleOpacity)(\"class\", ctx.classNames)(\"pointer-events\", ctx.pointerEvents);\n } }, encapsulation: 2, changeDetection: 0 });\nCircleComponent.propDecorators = {\n cx: [{ type: Input }],\n cy: [{ type: Input }],\n r: [{ type: Input }],\n fill: [{ type: Input }],\n stroke: [{ type: Input }],\n data: [{ type: Input }],\n classNames: [{ type: Input }],\n circleOpacity: [{ type: Input }],\n pointerEvents: [{ type: Input }],\n select: [{ type: Output }],\n activate: [{ type: Output }],\n deactivate: [{ type: Output }],\n onClick: [{ type: HostListener, args: ['click',] }],\n onMouseEnter: [{ type: HostListener, args: ['mouseenter',] }],\n onMouseLeave: [{ type: HostListener, args: ['mouseleave',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CircleComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-circle]',\n template: `\n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return []; }, { select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], onClick: [{\n type: HostListener,\n args: ['click']\n }], onMouseEnter: [{\n type: HostListener,\n args: ['mouseenter']\n }], onMouseLeave: [{\n type: HostListener,\n args: ['mouseleave']\n }], classNames: [{\n type: Input\n }], cx: [{\n type: Input\n }], cy: [{\n type: Input\n }], r: [{\n type: Input\n }], fill: [{\n type: Input\n }], stroke: [{\n type: Input\n }], data: [{\n type: Input\n }], circleOpacity: [{\n type: Input\n }], pointerEvents: [{\n type: Input\n }] }); })();\n\nclass GridPanelComponent {\n}\nGridPanelComponent.ɵfac = function GridPanelComponent_Factory(t) { return new (t || GridPanelComponent)(); };\nGridPanelComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: GridPanelComponent, selectors: [[\"g\", \"ngx-charts-grid-panel\", \"\"]], inputs: { path: \"path\", width: \"width\", height: \"height\", x: \"x\", y: \"y\" }, attrs: _c12, decls: 1, vars: 4, consts: [[\"stroke\", \"none\", 1, \"gridpanel\"]], template: function GridPanelComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"rect\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"height\", ctx.height)(\"width\", ctx.width)(\"x\", ctx.x)(\"y\", ctx.y);\n } }, encapsulation: 2, changeDetection: 0 });\nGridPanelComponent.propDecorators = {\n path: [{ type: Input }],\n width: [{ type: Input }],\n height: [{ type: Input }],\n x: [{ type: Input }],\n y: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GridPanelComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-grid-panel]',\n template: `\n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], null, { path: [{\n type: Input\n }], width: [{\n type: Input\n }], height: [{\n type: Input\n }], x: [{\n type: Input\n }], y: [{\n type: Input\n }] }); })();\n\nclass GridPanelSeriesComponent {\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.gridPanels = this.getGridPanels();\n }\n getGridPanels() {\n return this.data.map(d => {\n let offset;\n let width;\n let height;\n let x;\n let y;\n let className = 'odd';\n if (this.orient === 'vertical') {\n const position = this.xScale(d.name);\n const positionIndex = Number.parseInt((position / this.xScale.step()).toString(), 10);\n if (positionIndex % 2 === 1) {\n className = 'even';\n }\n offset = this.xScale.bandwidth() * this.xScale.paddingInner();\n width = this.xScale.bandwidth() + offset;\n height = this.dims.height;\n x = this.xScale(d.name) - offset / 2;\n y = 0;\n }\n else if (this.orient === 'horizontal') {\n const position = this.yScale(d.name);\n const positionIndex = Number.parseInt((position / this.yScale.step()).toString(), 10);\n if (positionIndex % 2 === 1) {\n className = 'even';\n }\n offset = this.yScale.bandwidth() * this.yScale.paddingInner();\n width = this.dims.width;\n height = this.yScale.bandwidth() + offset;\n x = 0;\n y = this.yScale(d.name) - offset / 2;\n }\n return {\n name: d.name,\n class: className,\n height,\n width,\n x,\n y\n };\n });\n }\n}\nGridPanelSeriesComponent.ɵfac = function GridPanelSeriesComponent_Factory(t) { return new (t || GridPanelSeriesComponent)(); };\nGridPanelSeriesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: GridPanelSeriesComponent, selectors: [[\"g\", \"ngx-charts-grid-panel-series\", \"\"]], inputs: { data: \"data\", dims: \"dims\", xScale: \"xScale\", yScale: \"yScale\", orient: \"orient\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c13, decls: 1, vars: 1, consts: [[\"ngx-charts-grid-panel\", \"\", 3, \"height\", \"width\", \"x\", \"y\", \"grid-panel\", \"odd\", \"even\", 4, \"ngFor\", \"ngForOf\"], [\"ngx-charts-grid-panel\", \"\", 3, \"height\", \"width\", \"x\", \"y\"]], template: function GridPanelSeriesComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, GridPanelSeriesComponent__svg_g_0_Template, 1, 10, \"g\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.gridPanels);\n } }, directives: [ɵngcc1.NgForOf, GridPanelComponent], encapsulation: 2, changeDetection: 0 });\nGridPanelSeriesComponent.propDecorators = {\n data: [{ type: Input }],\n dims: [{ type: Input }],\n xScale: [{ type: Input }],\n yScale: [{ type: Input }],\n orient: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GridPanelSeriesComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-grid-panel-series]',\n template: `\n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], null, { data: [{\n type: Input\n }], dims: [{\n type: Input\n }], xScale: [{\n type: Input\n }], yScale: [{\n type: Input\n }], orient: [{\n type: Input\n }] }); })();\n\nclass SvgLinearGradientComponent {\n constructor() {\n this.orientation = 'vertical';\n }\n ngOnChanges(changes) {\n this.x1 = '0%';\n this.x2 = '0%';\n this.y1 = '0%';\n this.y2 = '0%';\n if (this.orientation === 'horizontal') {\n this.x2 = '100%';\n }\n else if (this.orientation === 'vertical') {\n this.y1 = '100%';\n }\n }\n}\nSvgLinearGradientComponent.ɵfac = function SvgLinearGradientComponent_Factory(t) { return new (t || SvgLinearGradientComponent)(); };\nSvgLinearGradientComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: SvgLinearGradientComponent, selectors: [[\"g\", \"ngx-charts-svg-linear-gradient\", \"\"]], inputs: { orientation: \"orientation\", name: \"name\", stops: \"stops\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c14, decls: 2, vars: 6, consts: [[3, \"id\"], [3, \"stop-color\", \"stop-opacity\", 4, \"ngFor\", \"ngForOf\"]], template: function SvgLinearGradientComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"linearGradient\", 0);\n ɵngcc0.ɵɵtemplate(1, SvgLinearGradientComponent__svg_stop_1_Template, 1, 5, \"stop\", 1);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"id\", ctx.name);\n ɵngcc0.ɵɵattribute(\"x1\", ctx.x1)(\"y1\", ctx.y1)(\"x2\", ctx.x2)(\"y2\", ctx.y2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.stops);\n } }, directives: [ɵngcc1.NgForOf], encapsulation: 2, changeDetection: 0 });\nSvgLinearGradientComponent.propDecorators = {\n orientation: [{ type: Input }],\n name: [{ type: Input }],\n stops: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SvgLinearGradientComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-svg-linear-gradient]',\n template: `\n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return []; }, { orientation: [{\n type: Input\n }], name: [{\n type: Input\n }], stops: [{\n type: Input\n }] }); })();\n\nclass SvgRadialGradientComponent {\n constructor() {\n this.endOpacity = 1;\n this.cx = 0;\n this.cy = 0;\n }\n get stops() {\n return this.stopsInput || this.stopsDefault;\n }\n set stops(value) {\n this.stopsInput = value;\n }\n ngOnChanges(changes) {\n this.r = '30%';\n if ('color' in changes || 'startOpacity' in changes || 'endOpacity' in changes) {\n this.stopsDefault = [\n {\n offset: 0,\n color: this.color,\n opacity: this.startOpacity\n },\n {\n offset: 100,\n color: this.color,\n opacity: this.endOpacity\n }\n ];\n }\n }\n}\nSvgRadialGradientComponent.ɵfac = function SvgRadialGradientComponent_Factory(t) { return new (t || SvgRadialGradientComponent)(); };\nSvgRadialGradientComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: SvgRadialGradientComponent, selectors: [[\"g\", \"ngx-charts-svg-radial-gradient\", \"\"]], inputs: { endOpacity: \"endOpacity\", cx: \"cx\", cy: \"cy\", stops: \"stops\", color: \"color\", name: \"name\", startOpacity: \"startOpacity\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c15, decls: 2, vars: 5, consts: [[\"gradientUnits\", \"userSpaceOnUse\", 3, \"id\"], [3, \"stop-color\", \"stop-opacity\", 4, \"ngFor\", \"ngForOf\"]], template: function SvgRadialGradientComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"radialGradient\", 0);\n ɵngcc0.ɵɵtemplate(1, SvgRadialGradientComponent__svg_stop_1_Template, 1, 5, \"stop\", 1);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"id\", ctx.name);\n ɵngcc0.ɵɵattribute(\"cx\", ctx.cx)(\"cy\", ctx.cy)(\"r\", ctx.r);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.stops);\n } }, directives: [ɵngcc1.NgForOf], encapsulation: 2, changeDetection: 0 });\nSvgRadialGradientComponent.propDecorators = {\n color: [{ type: Input }],\n name: [{ type: Input }],\n startOpacity: [{ type: Input }],\n endOpacity: [{ type: Input }],\n cx: [{ type: Input }],\n cy: [{ type: Input }],\n stops: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SvgRadialGradientComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-svg-radial-gradient]',\n template: `\n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return []; }, { endOpacity: [{\n type: Input\n }], cx: [{\n type: Input\n }], cy: [{\n type: Input\n }], stops: [{\n type: Input\n }], color: [{\n type: Input\n }], name: [{\n type: Input\n }], startOpacity: [{\n type: Input\n }] }); })();\n\nclass AreaComponent {\n constructor(element) {\n this.opacity = 1;\n this.startOpacity = 0.5;\n this.endOpacity = 1;\n this.gradient = false;\n this.animations = true;\n this.select = new EventEmitter();\n this.initialized = false;\n this.hasGradient = false;\n this.element = element.nativeElement;\n }\n ngOnChanges(changes) {\n if (!this.initialized) {\n this.loadAnimation();\n this.initialized = true;\n }\n else {\n this.update();\n }\n }\n update() {\n this.gradientId = 'grad' + id().toString();\n this.gradientFill = `url(#${this.gradientId})`;\n if (this.gradient || this.stops) {\n this.gradientStops = this.getGradient();\n this.hasGradient = true;\n }\n else {\n this.hasGradient = false;\n }\n this.updatePathEl();\n }\n loadAnimation() {\n this.areaPath = this.startingPath;\n setTimeout(this.update.bind(this), 100);\n }\n updatePathEl() {\n const node = select(this.element).select('.area');\n if (this.animations) {\n node.transition().duration(750).attr('d', this.path);\n }\n else {\n node.attr('d', this.path);\n }\n }\n getGradient() {\n if (this.stops) {\n return this.stops;\n }\n return [\n {\n offset: 0,\n color: this.fill,\n opacity: this.startOpacity\n },\n {\n offset: 100,\n color: this.fill,\n opacity: this.endOpacity\n }\n ];\n }\n}\nAreaComponent.ɵfac = function AreaComponent_Factory(t) { return new (t || AreaComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nAreaComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: AreaComponent, selectors: [[\"g\", \"ngx-charts-area\", \"\"]], inputs: { opacity: \"opacity\", startOpacity: \"startOpacity\", endOpacity: \"endOpacity\", gradient: \"gradient\", animations: \"animations\", data: \"data\", path: \"path\", startingPath: \"startingPath\", fill: \"fill\", activeLabel: \"activeLabel\", stops: \"stops\" }, outputs: { select: \"select\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c16, decls: 2, vars: 5, consts: [[4, \"ngIf\"], [1, \"area\"], [\"ngx-charts-svg-linear-gradient\", \"\", \"orientation\", \"vertical\", 3, \"name\", \"stops\"]], template: function AreaComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, AreaComponent__svg_defs_0_Template, 2, 2, \"defs\", 0);\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(1, \"path\", 1);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.gradient);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"opacity\", ctx.opacity);\n ɵngcc0.ɵɵattribute(\"d\", ctx.areaPath)(\"fill\", ctx.gradient ? ctx.gradientFill : ctx.fill);\n } }, directives: [ɵngcc1.NgIf, SvgLinearGradientComponent], encapsulation: 2, changeDetection: 0 });\nAreaComponent.ctorParameters = () => [\n { type: ElementRef }\n];\nAreaComponent.propDecorators = {\n data: [{ type: Input }],\n path: [{ type: Input }],\n startingPath: [{ type: Input }],\n fill: [{ type: Input }],\n opacity: [{ type: Input }],\n startOpacity: [{ type: Input }],\n endOpacity: [{ type: Input }],\n activeLabel: [{ type: Input }],\n gradient: [{ type: Input }],\n stops: [{ type: Input }],\n animations: [{ type: Input }],\n select: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AreaComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-area]',\n template: `\n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { opacity: [{\n type: Input\n }], startOpacity: [{\n type: Input\n }], endOpacity: [{\n type: Input\n }], gradient: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }], data: [{\n type: Input\n }], path: [{\n type: Input\n }], startingPath: [{\n type: Input\n }], fill: [{\n type: Input\n }], activeLabel: [{\n type: Input\n }], stops: [{\n type: Input\n }] }); })();\n\n// Robert Penner's easeOutExpo\nfunction easeOutExpo(t, b, c, d) {\n return (c * (-Math.pow(2, (-10 * t) / d) + 1) * 1024) / 1023 + b;\n}\n/**\n * Counts from a number to the end incrementally.\n */\nfunction count(countFrom, countTo, countDecimals, countDuration, callback) {\n const startVal = Number(countFrom);\n const endVal = Number(countTo);\n const countDown = startVal > endVal;\n const decimals = Math.max(0, countDecimals);\n const dec = Math.pow(10, decimals);\n const duration = Number(countDuration) * 1000;\n let startTime;\n function runCount(timestamp) {\n let frameVal;\n const progress = timestamp - startTime;\n if (countDown) {\n frameVal = startVal - easeOutExpo(progress, 0, startVal - endVal, duration);\n }\n else {\n frameVal = easeOutExpo(progress, startVal, endVal - startVal, duration);\n }\n if (countDown) {\n frameVal = frameVal < endVal ? endVal : frameVal;\n }\n else {\n frameVal = frameVal > endVal ? endVal : frameVal;\n }\n frameVal = Math.round(frameVal * dec) / dec;\n const tick = progress < duration;\n callback({\n value: frameVal,\n progress,\n timestamp,\n finished: !tick\n });\n if (tick) {\n return requestAnimationFrame(val => runCount(val));\n }\n }\n return requestAnimationFrame(timestamp => {\n startTime = timestamp;\n return runCount(timestamp);\n });\n}\n/**\n * Determine decimals places\n *\n * @export\n */\nfunction decimalChecker(countTo) {\n const endVal = Number(countTo);\n if (endVal % 1 !== 0 && Math.abs(endVal) <= 10) {\n return 2;\n }\n return 0;\n}\n\n/**\n * Count up component\n *\n * Loosely inspired by:\n * - https://github.com/izupet/angular2-counto\n * - https://inorganik.github.io/countUp.js/\n *\n * @export\n */\nclass CountUpDirective {\n constructor(cd, element) {\n this.cd = cd;\n this.countDuration = 1;\n this.countPrefix = '';\n this.countSuffix = '';\n this.countChange = new EventEmitter();\n this.countFinish = new EventEmitter();\n this.value = '';\n this._countDecimals = 0;\n this._countTo = 0;\n this._countFrom = 0;\n this.nativeElement = element.nativeElement;\n }\n set countDecimals(val) {\n this._countDecimals = val;\n }\n get countDecimals() {\n if (this._countDecimals)\n return this._countDecimals;\n return decimalChecker(this.countTo);\n }\n set countTo(val) {\n this._countTo = parseFloat(val);\n this.start();\n }\n get countTo() {\n return this._countTo;\n }\n set countFrom(val) {\n this._countFrom = parseFloat(val);\n this.start();\n }\n get countFrom() {\n return this._countFrom;\n }\n ngOnDestroy() {\n cancelAnimationFrame(this.animationReq);\n }\n start() {\n cancelAnimationFrame(this.animationReq);\n const valueFormatting = this.valueFormatting || (value => `${this.countPrefix}${value.toLocaleString()}${this.countSuffix}`);\n const callback = ({ value, progress, finished }) => {\n this.value = valueFormatting(value);\n this.cd.markForCheck();\n if (!finished)\n this.countChange.emit({ value: this.value, progress });\n if (finished)\n this.countFinish.emit({ value: this.value, progress });\n };\n this.animationReq = count(this.countFrom, this.countTo, this.countDecimals, this.countDuration, callback);\n }\n}\nCountUpDirective.ɵfac = function CountUpDirective_Factory(t) { return new (t || CountUpDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nCountUpDirective.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CountUpDirective, selectors: [[\"\", \"ngx-charts-count-up\", \"\"]], inputs: { countDuration: \"countDuration\", countPrefix: \"countPrefix\", countSuffix: \"countSuffix\", countDecimals: \"countDecimals\", countTo: \"countTo\", countFrom: \"countFrom\", valueFormatting: \"valueFormatting\" }, outputs: { countChange: \"countChange\", countFinish: \"countFinish\" }, attrs: _c17, decls: 1, vars: 1, template: function CountUpDirective_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n } if (rf & 2) {\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx.value, \" \");\n } }, encapsulation: 2 });\nCountUpDirective.ctorParameters = () => [\n { type: ChangeDetectorRef },\n { type: ElementRef }\n];\nCountUpDirective.propDecorators = {\n countDuration: [{ type: Input }],\n countPrefix: [{ type: Input }],\n countSuffix: [{ type: Input }],\n valueFormatting: [{ type: Input }],\n countDecimals: [{ type: Input }],\n countTo: [{ type: Input }],\n countFrom: [{ type: Input }],\n countChange: [{ type: Output }],\n countFinish: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CountUpDirective, [{\n type: Component,\n args: [{\n selector: '[ngx-charts-count-up]',\n template: ` {{ value }} `\n }]\n }], function () { return [{ type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.ElementRef }]; }, { countDuration: [{\n type: Input\n }], countPrefix: [{\n type: Input\n }], countSuffix: [{\n type: Input\n }], countChange: [{\n type: Output\n }], countFinish: [{\n type: Output\n }], countDecimals: [{\n type: Input\n }], countTo: [{\n type: Input\n }], countFrom: [{\n type: Input\n }], valueFormatting: [{\n type: Input\n }] }); })();\n\n// If we don't check whether 'window' and 'global' variables are defined,\n// code will fail in browser/node with 'variable is undefined' error.\nlet root;\nif (typeof window !== 'undefined') {\n root = window;\n}\nelse if (typeof global !== 'undefined') {\n root = global;\n}\n// tslint:disable-next-line:variable-name\nconst MouseEvent = root.MouseEvent;\nfunction createMouseEvent(name, bubbles = false, cancelable = true) {\n // Calling new of an event does not work correctly on IE. The following is a tested workaround\n // See https://stackoverflow.com/questions/27176983/dispatchevent-not-working-in-ie11\n if (typeof MouseEvent === 'function') {\n // Sane browsers\n return new MouseEvent(name, { bubbles, cancelable });\n }\n else {\n // IE\n const event = document.createEvent('MouseEvent');\n event.initEvent(name, bubbles, cancelable);\n return event;\n }\n}\n\nclass TooltipArea {\n constructor(platformId) {\n this.platformId = platformId;\n this.anchorOpacity = 0;\n this.anchorPos = -1;\n this.anchorValues = [];\n this.showPercentage = false;\n this.tooltipDisabled = false;\n this.hover = new EventEmitter();\n }\n getValues(xVal) {\n const results = [];\n for (const group of this.results) {\n const item = group.series.find(d => d.name.toString() === xVal.toString());\n let groupName = group.name;\n if (groupName instanceof Date) {\n groupName = groupName.toLocaleDateString();\n }\n if (item) {\n const label = item.name;\n let val = item.value;\n if (this.showPercentage) {\n val = (item.d1 - item.d0).toFixed(2) + '%';\n }\n let color;\n if (this.colors.scaleType === 'linear') {\n let v = val;\n if (item.d1) {\n v = item.d1;\n }\n color = this.colors.getColor(v);\n }\n else {\n color = this.colors.getColor(group.name);\n }\n const data = Object.assign({}, item, {\n value: val,\n name: label,\n series: groupName,\n min: item.min,\n max: item.max,\n color\n });\n results.push(data);\n }\n }\n return results;\n }\n mouseMove(event) {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n const xPos = event.pageX - event.target.getBoundingClientRect().left;\n const closestIndex = this.findClosestPointIndex(xPos);\n const closestPoint = this.xSet[closestIndex];\n this.anchorPos = this.xScale(closestPoint);\n this.anchorPos = Math.max(0, this.anchorPos);\n this.anchorPos = Math.min(this.dims.width, this.anchorPos);\n this.anchorValues = this.getValues(closestPoint);\n if (this.anchorPos !== this.lastAnchorPos) {\n const ev = createMouseEvent('mouseleave');\n this.tooltipAnchor.nativeElement.dispatchEvent(ev);\n this.anchorOpacity = 0.7;\n this.hover.emit({\n value: closestPoint\n });\n this.showTooltip();\n this.lastAnchorPos = this.anchorPos;\n }\n }\n findClosestPointIndex(xPos) {\n let minIndex = 0;\n let maxIndex = this.xSet.length - 1;\n let minDiff = Number.MAX_VALUE;\n let closestIndex = 0;\n while (minIndex <= maxIndex) {\n const currentIndex = ((minIndex + maxIndex) / 2) | 0;\n const currentElement = this.xScale(this.xSet[currentIndex]);\n const curDiff = Math.abs(currentElement - xPos);\n if (curDiff < minDiff) {\n minDiff = curDiff;\n closestIndex = currentIndex;\n }\n if (currentElement < xPos) {\n minIndex = currentIndex + 1;\n }\n else if (currentElement > xPos) {\n maxIndex = currentIndex - 1;\n }\n else {\n minDiff = 0;\n closestIndex = currentIndex;\n break;\n }\n }\n return closestIndex;\n }\n showTooltip() {\n const event = createMouseEvent('mouseenter');\n this.tooltipAnchor.nativeElement.dispatchEvent(event);\n }\n hideTooltip() {\n const event = createMouseEvent('mouseleave');\n this.tooltipAnchor.nativeElement.dispatchEvent(event);\n this.anchorOpacity = 0;\n this.lastAnchorPos = -1;\n }\n getToolTipText(tooltipItem) {\n let result = '';\n if (tooltipItem.series !== undefined) {\n result += tooltipItem.series;\n }\n else {\n result += '???';\n }\n result += ': ';\n if (tooltipItem.value !== undefined) {\n result += tooltipItem.value.toLocaleString();\n }\n if (tooltipItem.min !== undefined || tooltipItem.max !== undefined) {\n result += ' (';\n if (tooltipItem.min !== undefined) {\n if (tooltipItem.max === undefined) {\n result += '≥';\n }\n result += tooltipItem.min.toLocaleString();\n if (tooltipItem.max !== undefined) {\n result += ' - ';\n }\n }\n else if (tooltipItem.max !== undefined) {\n result += '≤';\n }\n if (tooltipItem.max !== undefined) {\n result += tooltipItem.max.toLocaleString();\n }\n result += ')';\n }\n return result;\n }\n}\nTooltipArea.ɵfac = function TooltipArea_Factory(t) { return new (t || TooltipArea)(ɵngcc0.ɵɵdirectiveInject(PLATFORM_ID)); };\nTooltipArea.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: TooltipArea, selectors: [[\"g\", \"ngx-charts-tooltip-area\", \"\"]], viewQuery: function TooltipArea_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c18, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipAnchor = _t.first);\n } }, inputs: { showPercentage: \"showPercentage\", tooltipDisabled: \"tooltipDisabled\", dims: \"dims\", xSet: \"xSet\", xScale: \"xScale\", yScale: \"yScale\", results: \"results\", colors: \"colors\", tooltipTemplate: \"tooltipTemplate\" }, outputs: { hover: \"hover\" }, attrs: _c19, decls: 6, vars: 18, consts: [[\"y\", \"0\", 1, \"tooltip-area\", 2, \"opacity\", \"0\", \"cursor\", \"auto\", 3, \"mousemove\", \"mouseleave\"], [\"defaultTooltipTemplate\", \"\"], [\"y\", \"0\", \"ngx-tooltip\", \"\", 1, \"tooltip-anchor\", 3, \"tooltipDisabled\", \"tooltipPlacement\", \"tooltipType\", \"tooltipSpacing\", \"tooltipTemplate\", \"tooltipContext\", \"tooltipImmediateExit\"], [\"tooltipAnchor\", \"\"], [1, \"area-tooltip-container\"], [\"class\", \"tooltip-item\", 4, \"ngFor\", \"ngForOf\"], [1, \"tooltip-item\"], [1, \"tooltip-item-color\"]], template: function TooltipArea_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\")(1, \"rect\", 0);\n ɵngcc0.ɵɵlistener(\"mousemove\", function TooltipArea_Template__svg_rect_mousemove_1_listener($event) { return ctx.mouseMove($event); })(\"mouseleave\", function TooltipArea_Template__svg_rect_mouseleave_1_listener() { return ctx.hideTooltip(); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(2, TooltipArea__svg_ng_template_2_Template, 2, 1, \"ng-template\", null, 1, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵelement(4, \"rect\", 2, 3);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n const _r0 = ɵngcc0.ɵɵreference(3);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"x\", 0)(\"width\", ctx.dims.width)(\"height\", ctx.dims.height);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵstyleProp(\"opacity\", ctx.anchorOpacity)(\"pointer-events\", \"none\");\n ɵngcc0.ɵɵproperty(\"@animationState\", ctx.anchorOpacity !== 0 ? \"active\" : \"inactive\")(\"tooltipDisabled\", ctx.tooltipDisabled)(\"tooltipPlacement\", \"right\")(\"tooltipType\", \"tooltip\")(\"tooltipSpacing\", 15)(\"tooltipTemplate\", ctx.tooltipTemplate ? ctx.tooltipTemplate : _r0)(\"tooltipContext\", ctx.anchorValues)(\"tooltipImmediateExit\", true);\n ɵngcc0.ɵɵattribute(\"x\", ctx.anchorPos)(\"width\", 1)(\"height\", ctx.dims.height);\n } }, directives: [ɵngcc1.NgForOf, TooltipDirective], encapsulation: 2, data: { animation: [\n trigger('animationState', [\n transition('inactive => active', [\n style({\n opacity: 0\n }),\n animate(250, style({ opacity: 0.7 }))\n ]),\n transition('active => inactive', [\n style({\n opacity: 0.7\n }),\n animate(250, style({ opacity: 0 }))\n ])\n ])\n ] }, changeDetection: 0 });\nTooltipArea.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }\n];\nTooltipArea.propDecorators = {\n dims: [{ type: Input }],\n xSet: [{ type: Input }],\n xScale: [{ type: Input }],\n yScale: [{ type: Input }],\n results: [{ type: Input }],\n colors: [{ type: Input }],\n showPercentage: [{ type: Input }],\n tooltipDisabled: [{ type: Input }],\n tooltipTemplate: [{ type: Input }],\n hover: [{ type: Output }],\n tooltipAnchor: [{ type: ViewChild, args: ['tooltipAnchor', { static: false },] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TooltipArea, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-tooltip-area]',\n template: `\n \n \n \n \n \n \n {{ getToolTipText(tooltipItem) }}\n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('animationState', [\n transition('inactive => active', [\n style({\n opacity: 0\n }),\n animate(250, style({ opacity: 0.7 }))\n ]),\n transition('active => inactive', [\n style({\n opacity: 0.7\n }),\n animate(250, style({ opacity: 0 }))\n ])\n ])\n ]\n }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; }, { showPercentage: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], hover: [{\n type: Output\n }], dims: [{\n type: Input\n }], xSet: [{\n type: Input\n }], xScale: [{\n type: Input\n }], yScale: [{\n type: Input\n }], results: [{\n type: Input\n }], colors: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }], tooltipAnchor: [{\n type: ViewChild,\n args: ['tooltipAnchor', { static: false }]\n }] }); })();\n\nclass Timeline {\n constructor(element, cd) {\n this.cd = cd;\n this.height = 50;\n this.select = new EventEmitter();\n this.onDomainChange = new EventEmitter();\n this.initialized = false;\n this.element = element.nativeElement;\n }\n ngOnChanges(changes) {\n this.update();\n if (!this.initialized) {\n this.addBrush();\n this.initialized = true;\n }\n }\n update() {\n this.dims = this.getDims();\n this.height = this.dims.height;\n const offsetY = this.view[1] - this.height;\n this.xDomain = this.getXDomain();\n this.xScale = this.getXScale();\n if (this.brush) {\n this.updateBrush();\n }\n this.transform = `translate(0 , ${offsetY})`;\n this.filterId = 'filter' + id().toString();\n this.filter = `url(#${this.filterId})`;\n this.cd.markForCheck();\n }\n getXDomain() {\n let values = [];\n for (const results of this.results) {\n for (const d of results.series) {\n if (!values.includes(d.name)) {\n values.push(d.name);\n }\n }\n }\n let domain = [];\n if (this.scaleType === 'time') {\n const min = Math.min(...values);\n const max = Math.max(...values);\n domain = [min, max];\n }\n else if (this.scaleType === 'linear') {\n values = values.map(v => Number(v));\n const min = Math.min(...values);\n const max = Math.max(...values);\n domain = [min, max];\n }\n else {\n domain = values;\n }\n return domain;\n }\n getXScale() {\n let scale;\n if (this.scaleType === 'time') {\n scale = scaleTime().range([0, this.dims.width]).domain(this.xDomain);\n }\n else if (this.scaleType === 'linear') {\n scale = scaleLinear().range([0, this.dims.width]).domain(this.xDomain);\n }\n else if (this.scaleType === 'ordinal') {\n scale = scalePoint().range([0, this.dims.width]).padding(0.1).domain(this.xDomain);\n }\n return scale;\n }\n addBrush() {\n if (this.brush)\n return;\n const height = this.height;\n const width = this.view[0];\n this.brush = brushX()\n .extent([\n [0, 0],\n [width, height]\n ])\n .on('brush end', ({ d3selection }) => {\n const selection = d3selection || this.xScale.range();\n const newDomain = selection.map(this.xScale.invert);\n this.onDomainChange.emit(newDomain);\n this.cd.markForCheck();\n });\n select(this.element).select('.brush').call(this.brush);\n }\n updateBrush() {\n if (!this.brush)\n return;\n const height = this.height;\n const width = this.view[0];\n this.brush.extent([\n [0, 0],\n [width, height]\n ]);\n select(this.element).select('.brush').call(this.brush);\n // clear hardcoded properties so they can be defined by CSS\n select(this.element)\n .select('.selection')\n .attr('fill', undefined)\n .attr('stroke', undefined)\n .attr('fill-opacity', undefined);\n this.cd.markForCheck();\n }\n getDims() {\n const width = this.view[0];\n const dims = {\n width,\n height: this.height\n };\n return dims;\n }\n}\nTimeline.ɵfac = function Timeline_Factory(t) { return new (t || Timeline)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nTimeline.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: Timeline, selectors: [[\"g\", \"ngx-charts-timeline\", \"\"]], inputs: { height: \"height\", view: \"view\", state: \"state\", results: \"results\", scheme: \"scheme\", customColors: \"customColors\", legend: \"legend\", miniChart: \"miniChart\", autoScale: \"autoScale\", scaleType: \"scaleType\" }, outputs: { select: \"select\", onDomainChange: \"onDomainChange\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c20, ngContentSelectors: _c2, decls: 7, vars: 4, consts: [[1, \"timeline\"], [\"in\", \"SourceGraphic\", \"type\", \"matrix\", \"values\", \"0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\"], [1, \"embedded-chart\"], [\"x\", \"0\", \"y\", \"0\", 1, \"brush-background\"], [1, \"brush\"]], template: function Timeline_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 0)(1, \"filter\");\n ɵngcc0.ɵɵelement(2, \"feColorMatrix\", 1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(3, \"g\", 2);\n ɵngcc0.ɵɵprojection(4);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelement(5, \"rect\", 3)(6, \"g\", 4);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"id\", ctx.filterId);\n ɵngcc0.ɵɵadvance(4);\n ɵngcc0.ɵɵattribute(\"width\", ctx.view[0])(\"height\", ctx.height);\n } }, styles: [\".timeline .brush-background{fill:rgba(0,0,0,.05)}.timeline .brush .selection{fill:rgba(0,0,0,.1);stroke:#888;stroke-width:1px}.timeline .brush .handle{fill-opacity:0}.timeline .embedded-chart{opacity:.6}\"], encapsulation: 2, changeDetection: 0 });\nTimeline.ctorParameters = () => [\n { type: ElementRef },\n { type: ChangeDetectorRef }\n];\nTimeline.propDecorators = {\n view: [{ type: Input }],\n state: [{ type: Input }],\n results: [{ type: Input }],\n scheme: [{ type: Input }],\n customColors: [{ type: Input }],\n legend: [{ type: Input }],\n miniChart: [{ type: Input }],\n autoScale: [{ type: Input }],\n scaleType: [{ type: Input }],\n height: [{ type: Input }],\n select: [{ type: Output }],\n onDomainChange: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(Timeline, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-timeline]',\n template: `\n \n \n \n \n \n \n \n \n \n \n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: [\".timeline .brush-background{fill:rgba(0,0,0,.05)}.timeline .brush .selection{fill:rgba(0,0,0,.1);stroke:#888;stroke-width:1px}.timeline .brush .handle{fill-opacity:0}.timeline .embedded-chart{opacity:.6}\"]\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.ChangeDetectorRef }]; }, { height: [{\n type: Input\n }], select: [{\n type: Output\n }], onDomainChange: [{\n type: Output\n }], view: [{\n type: Input\n }], state: [{\n type: Input\n }], results: [{\n type: Input\n }], scheme: [{\n type: Input\n }], customColors: [{\n type: Input\n }], legend: [{\n type: Input\n }], miniChart: [{\n type: Input\n }], autoScale: [{\n type: Input\n }], scaleType: [{\n type: Input\n }] }); })();\n\nclass LegendComponent {\n constructor(cd) {\n this.cd = cd;\n this.horizontal = false;\n this.labelClick = new EventEmitter();\n this.labelActivate = new EventEmitter();\n this.labelDeactivate = new EventEmitter();\n this.legendEntries = [];\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.cd.markForCheck();\n this.legendEntries = this.getLegendEntries();\n }\n getLegendEntries() {\n const items = [];\n for (const label of this.data) {\n const formattedLabel = formatLabel(label);\n const idx = items.findIndex(i => {\n return i.label === formattedLabel;\n });\n if (idx === -1) {\n items.push({\n label,\n formattedLabel,\n color: this.colors.getColor(label)\n });\n }\n }\n return items;\n }\n isActive(entry) {\n if (!this.activeEntries)\n return false;\n const item = this.activeEntries.find(d => {\n return entry.label === d.name;\n });\n return item !== undefined;\n }\n activate(item) {\n this.labelActivate.emit(item);\n }\n deactivate(item) {\n this.labelDeactivate.emit(item);\n }\n trackBy(index, item) {\n return item.label;\n }\n}\nLegendComponent.ɵfac = function LegendComponent_Factory(t) { return new (t || LegendComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nLegendComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: LegendComponent, selectors: [[\"ngx-charts-legend\"]], inputs: { horizontal: \"horizontal\", data: \"data\", title: \"title\", colors: \"colors\", height: \"height\", width: \"width\", activeEntries: \"activeEntries\" }, outputs: { labelClick: \"labelClick\", labelActivate: \"labelActivate\", labelDeactivate: \"labelDeactivate\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 5, vars: 9, consts: [[\"class\", \"legend-title\", 4, \"ngIf\"], [1, \"legend-wrap\"], [1, \"legend-labels\"], [\"class\", \"legend-label\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [1, \"legend-title\"], [1, \"legend-title-text\"], [1, \"legend-label\"], [3, \"label\", \"formattedLabel\", \"color\", \"isActive\", \"select\", \"activate\", \"deactivate\"]], template: function LegendComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\");\n ɵngcc0.ɵɵtemplate(1, LegendComponent_header_1_Template, 3, 1, \"header\", 0);\n ɵngcc0.ɵɵelementStart(2, \"div\", 1)(3, \"ul\", 2);\n ɵngcc0.ɵɵtemplate(4, LegendComponent_li_4_Template, 2, 4, \"li\", 3);\n ɵngcc0.ɵɵelementEnd()()();\n } if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"width\", ctx.width, \"px\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", (ctx.title == null ? null : ctx.title.length) > 0);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵstyleProp(\"max-height\", ctx.height - 45, \"px\");\n ɵngcc0.ɵɵclassProp(\"horizontal-legend\", ctx.horizontal);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.legendEntries)(\"ngForTrackBy\", ctx.trackBy);\n } }, directives: function () { return [ɵngcc1.NgIf, ɵngcc1.NgForOf, LegendEntryComponent]; }, styles: [\".chart-legend{display:inline-block;padding:0;width:auto!important}.chart-legend .legend-title{font-size:14px;font-weight:700;margin-bottom:5px;margin-left:10px;overflow:hidden;white-space:nowrap}.chart-legend li,.chart-legend ul{list-style:none;margin:0;padding:0}.chart-legend .horizontal-legend li{display:inline-block}.chart-legend .legend-wrap{width:calc(100% - 10px)}.chart-legend .legend-labels{background:rgba(0,0,0,.05);border-radius:3px;float:left;line-height:85%;list-style:none;overflow-x:hidden;overflow-y:auto;text-align:left;white-space:nowrap;width:100%}.chart-legend .legend-label{color:#afb7c8;cursor:pointer;font-size:90%;margin:8px}.chart-legend .legend-label:hover{color:#000;transition:.2s}.chart-legend .legend-label .active .legend-label-text{color:#000}.chart-legend .legend-label-color{border-radius:3px;color:#5b646b;display:inline-block;height:15px;margin-right:5px;width:15px}.chart-legend .legend-label-text{font-size:12px;line-height:15px;vertical-align:top;width:calc(100% - 20px)}.chart-legend .legend-label-text,.chart-legend .legend-title-text{display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chart-legend .legend-title-text{line-height:16px;vertical-align:bottom}\"], encapsulation: 2, changeDetection: 0 });\nLegendComponent.ctorParameters = () => [\n { type: ChangeDetectorRef }\n];\nLegendComponent.propDecorators = {\n data: [{ type: Input }],\n title: [{ type: Input }],\n colors: [{ type: Input }],\n height: [{ type: Input }],\n width: [{ type: Input }],\n activeEntries: [{ type: Input }],\n horizontal: [{ type: Input }],\n labelClick: [{ type: Output }],\n labelActivate: [{ type: Output }],\n labelDeactivate: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LegendComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-charts-legend',\n template: `\n
    \n
    0\">\n {{ title }}\n
    \n
    \n
      \n
    • \n \n \n
    • \n
    \n
    \n
    \n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: [\".chart-legend{display:inline-block;padding:0;width:auto!important}.chart-legend .legend-title{font-size:14px;font-weight:700;margin-bottom:5px;margin-left:10px;overflow:hidden;white-space:nowrap}.chart-legend li,.chart-legend ul{list-style:none;margin:0;padding:0}.chart-legend .horizontal-legend li{display:inline-block}.chart-legend .legend-wrap{width:calc(100% - 10px)}.chart-legend .legend-labels{background:rgba(0,0,0,.05);border-radius:3px;float:left;line-height:85%;list-style:none;overflow-x:hidden;overflow-y:auto;text-align:left;white-space:nowrap;width:100%}.chart-legend .legend-label{color:#afb7c8;cursor:pointer;font-size:90%;margin:8px}.chart-legend .legend-label:hover{color:#000;transition:.2s}.chart-legend .legend-label .active .legend-label-text{color:#000}.chart-legend .legend-label-color{border-radius:3px;color:#5b646b;display:inline-block;height:15px;margin-right:5px;width:15px}.chart-legend .legend-label-text{font-size:12px;line-height:15px;vertical-align:top;width:calc(100% - 20px)}.chart-legend .legend-label-text,.chart-legend .legend-title-text{display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chart-legend .legend-title-text{line-height:16px;vertical-align:bottom}\"]\n }]\n }], function () { return [{ type: ɵngcc0.ChangeDetectorRef }]; }, { horizontal: [{\n type: Input\n }], labelClick: [{\n type: Output\n }], labelActivate: [{\n type: Output\n }], labelDeactivate: [{\n type: Output\n }], data: [{\n type: Input\n }], title: [{\n type: Input\n }], colors: [{\n type: Input\n }], height: [{\n type: Input\n }], width: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }] }); })();\n\nclass LegendEntryComponent {\n constructor() {\n this.isActive = false;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.toggle = new EventEmitter();\n }\n get trimmedLabel() {\n return this.formattedLabel || '(empty)';\n }\n onMouseEnter() {\n this.activate.emit({ name: this.label });\n }\n onMouseLeave() {\n this.deactivate.emit({ name: this.label });\n }\n}\nLegendEntryComponent.ɵfac = function LegendEntryComponent_Factory(t) { return new (t || LegendEntryComponent)(); };\nLegendEntryComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: LegendEntryComponent, selectors: [[\"ngx-charts-legend-entry\"]], hostBindings: function LegendEntryComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"mouseenter\", function LegendEntryComponent_mouseenter_HostBindingHandler() { return ctx.onMouseEnter(); })(\"mouseleave\", function LegendEntryComponent_mouseleave_HostBindingHandler() { return ctx.onMouseLeave(); });\n } }, inputs: { isActive: \"isActive\", color: \"color\", label: \"label\", formattedLabel: \"formattedLabel\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\", toggle: \"toggle\" }, decls: 4, vars: 6, consts: [[\"tabindex\", \"-1\", 3, \"title\", \"click\"], [1, \"legend-label-color\", 3, \"click\"], [1, \"legend-label-text\"]], template: function LegendEntryComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 0);\n ɵngcc0.ɵɵlistener(\"click\", function LegendEntryComponent_Template_span_click_0_listener() { return ctx.select.emit(ctx.formattedLabel); });\n ɵngcc0.ɵɵelementStart(1, \"span\", 1);\n ɵngcc0.ɵɵlistener(\"click\", function LegendEntryComponent_Template_span_click_1_listener() { return ctx.toggle.emit(ctx.formattedLabel); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(2, \"span\", 2);\n ɵngcc0.ɵɵtext(3);\n ɵngcc0.ɵɵelementEnd()();\n } if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"active\", ctx.isActive);\n ɵngcc0.ɵɵproperty(\"title\", ctx.formattedLabel);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"background-color\", ctx.color);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx.trimmedLabel, \" \");\n } }, encapsulation: 2, changeDetection: 0 });\nLegendEntryComponent.propDecorators = {\n color: [{ type: Input }],\n label: [{ type: Input }],\n formattedLabel: [{ type: Input }],\n isActive: [{ type: Input }],\n select: [{ type: Output }],\n activate: [{ type: Output }],\n deactivate: [{ type: Output }],\n toggle: [{ type: Output }],\n onMouseEnter: [{ type: HostListener, args: ['mouseenter',] }],\n onMouseLeave: [{ type: HostListener, args: ['mouseleave',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LegendEntryComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-charts-legend-entry',\n template: `\n \n \n \n {{ trimmedLabel }}\n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return []; }, { isActive: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], toggle: [{\n type: Output\n }], onMouseEnter: [{\n type: HostListener,\n args: ['mouseenter']\n }], onMouseLeave: [{\n type: HostListener,\n args: ['mouseleave']\n }], color: [{\n type: Input\n }], label: [{\n type: Input\n }], formattedLabel: [{\n type: Input\n }] }); })();\n\nclass ScaleLegendComponent {\n constructor(sanitizer) {\n this.sanitizer = sanitizer;\n this.horizontal = false;\n }\n ngOnChanges(changes) {\n const gradientValues = this.gradientString(this.colors.range(), this.colors.domain());\n const direction = this.horizontal ? 'right' : 'bottom';\n this.gradient = `linear-gradient(to ${direction}, ${gradientValues})`;\n }\n /**\n * Generates the string used in the gradient stylesheet properties\n * @param colors array of colors\n * @param splits array of splits on a scale of (0, 1)\n */\n gradientString(colors, splits) {\n // add the 100%\n splits.push(1);\n const pairs = [];\n colors.reverse().forEach((c, i) => {\n pairs.push(`${c} ${Math.round(splits[i] * 100)}%`);\n });\n return pairs.join(', ');\n }\n}\nScaleLegendComponent.ɵfac = function ScaleLegendComponent_Factory(t) { return new (t || ScaleLegendComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc2.DomSanitizer)); };\nScaleLegendComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ScaleLegendComponent, selectors: [[\"ngx-charts-scale-legend\"]], inputs: { horizontal: \"horizontal\", valueRange: \"valueRange\", colors: \"colors\", height: \"height\", width: \"width\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 8, vars: 10, consts: [[1, \"scale-legend\"], [1, \"scale-legend-label\"], [1, \"scale-legend-wrap\"]], template: function ScaleLegendComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 0)(1, \"div\", 1)(2, \"span\");\n ɵngcc0.ɵɵtext(3);\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵelement(4, \"div\", 2);\n ɵngcc0.ɵɵelementStart(5, \"div\", 1)(6, \"span\");\n ɵngcc0.ɵɵtext(7);\n ɵngcc0.ɵɵelementEnd()()();\n } if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"height\", ctx.horizontal ? undefined : ctx.height, \"px\")(\"width\", ctx.width, \"px\");\n ɵngcc0.ɵɵclassProp(\"horizontal-legend\", ctx.horizontal);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵtextInterpolate(ctx.valueRange[1].toLocaleString());\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"background\", ctx.gradient);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵtextInterpolate(ctx.valueRange[0].toLocaleString());\n } }, styles: [\".chart-legend{display:inline-block;padding:0;width:auto!important}.chart-legend .scale-legend{display:flex;flex-direction:column;text-align:center}.chart-legend .scale-legend-wrap{border-radius:5px;display:inline-block;flex:1;margin:0 auto;width:30px}.chart-legend .scale-legend-label{font-size:12px}.chart-legend .horizontal-legend.scale-legend{flex-direction:row}.chart-legend .horizontal-legend .scale-legend-wrap{height:30px;margin:0 16px;width:auto}\"], encapsulation: 2, changeDetection: 0 });\nScaleLegendComponent.ctorParameters = () => [\n { type: DomSanitizer }\n];\nScaleLegendComponent.propDecorators = {\n valueRange: [{ type: Input }],\n colors: [{ type: Input }],\n height: [{ type: Input }],\n width: [{ type: Input }],\n horizontal: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ScaleLegendComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-charts-scale-legend',\n template: `\n \n
    \n {{ valueRange[1].toLocaleString() }}\n
    \n
    \n
    \n {{ valueRange[0].toLocaleString() }}\n
    \n \n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: [\".chart-legend{display:inline-block;padding:0;width:auto!important}.chart-legend .scale-legend{display:flex;flex-direction:column;text-align:center}.chart-legend .scale-legend-wrap{border-radius:5px;display:inline-block;flex:1;margin:0 auto;width:30px}.chart-legend .scale-legend-label{font-size:12px}.chart-legend .horizontal-legend.scale-legend{flex-direction:row}.chart-legend .horizontal-legend .scale-legend-wrap{height:30px;margin:0 16px;width:auto}\"]\n }]\n }], function () { return [{ type: ɵngcc2.DomSanitizer }]; }, { horizontal: [{\n type: Input\n }], valueRange: [{\n type: Input\n }], colors: [{\n type: Input\n }], height: [{\n type: Input\n }], width: [{\n type: Input\n }] }); })();\n\nclass AdvancedLegendComponent {\n constructor() {\n this.label = 'Total';\n this.animations = true;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.legendItems = [];\n this.labelFormatting = label => label;\n this.percentageFormatting = percentage => percentage;\n this.defaultValueFormatting = value => value.toLocaleString();\n }\n ngOnChanges(changes) {\n this.update();\n }\n getTotal() {\n return this.data.map(d => d.value).reduce((sum, d) => sum + d, 0);\n }\n update() {\n this.total = this.getTotal();\n this.roundedTotal = this.total;\n this.legendItems = this.getLegendItems();\n }\n getLegendItems() {\n return this.data.map(d => {\n const label = formatLabel(d.name);\n const value = d.value;\n const color = this.colors.getColor(label);\n const percentage = this.total > 0 ? (value / this.total) * 100 : 0;\n const formattedLabel = typeof this.labelFormatting === 'function' ? this.labelFormatting(label) : label;\n return {\n _value: value,\n data: d,\n value,\n color,\n label: formattedLabel,\n displayLabel: trimLabel(formattedLabel, 20),\n origialLabel: d.name,\n percentage: this.percentageFormatting ? this.percentageFormatting(percentage) : percentage.toLocaleString()\n };\n });\n }\n trackBy(item) {\n return item.formattedLabel;\n }\n}\nAdvancedLegendComponent.ɵfac = function AdvancedLegendComponent_Factory(t) { return new (t || AdvancedLegendComponent)(); };\nAdvancedLegendComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: AdvancedLegendComponent, selectors: [[\"ngx-charts-advanced-legend\"]], inputs: { label: \"label\", animations: \"animations\", labelFormatting: \"labelFormatting\", percentageFormatting: \"percentageFormatting\", width: \"width\", data: \"data\", colors: \"colors\", valueFormatting: \"valueFormatting\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 8, vars: 7, consts: [[1, \"advanced-pie-legend\"], [\"class\", \"total-value\", \"ngx-charts-count-up\", \"\", 3, \"countTo\", \"valueFormatting\", 4, \"ngIf\"], [\"class\", \"total-value\", 4, \"ngIf\"], [1, \"total-label\"], [1, \"legend-items-container\"], [1, \"legend-items\"], [\"tabindex\", \"-1\", \"class\", \"legend-item\", 3, \"mouseenter\", \"mouseleave\", \"click\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"ngx-charts-count-up\", \"\", 1, \"total-value\", 3, \"countTo\", \"valueFormatting\"], [1, \"total-value\"], [\"tabindex\", \"-1\", 1, \"legend-item\", 3, \"mouseenter\", \"mouseleave\", \"click\"], [1, \"item-color\"], [\"class\", \"item-value\", \"ngx-charts-count-up\", \"\", 3, \"countTo\", \"valueFormatting\", 4, \"ngIf\"], [\"class\", \"item-value\", 4, \"ngIf\"], [1, \"item-label\"], [\"class\", \"item-percent\", \"ngx-charts-count-up\", \"\", 3, \"countTo\", \"countSuffix\", 4, \"ngIf\"], [\"class\", \"item-percent\", 4, \"ngIf\"], [\"ngx-charts-count-up\", \"\", 1, \"item-value\", 3, \"countTo\", \"valueFormatting\"], [1, \"item-value\"], [\"ngx-charts-count-up\", \"\", 1, \"item-percent\", 3, \"countTo\", \"countSuffix\"], [1, \"item-percent\"]], template: function AdvancedLegendComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 0);\n ɵngcc0.ɵɵtemplate(1, AdvancedLegendComponent_div_1_Template, 1, 2, \"div\", 1);\n ɵngcc0.ɵɵtemplate(2, AdvancedLegendComponent_div_2_Template, 2, 1, \"div\", 2);\n ɵngcc0.ɵɵelementStart(3, \"div\", 3);\n ɵngcc0.ɵɵtext(4);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(5, \"div\", 4)(6, \"div\", 5);\n ɵngcc0.ɵɵtemplate(7, AdvancedLegendComponent_div_7_Template, 8, 7, \"div\", 6);\n ɵngcc0.ɵɵelementEnd()()();\n } if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"width\", ctx.width, \"px\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.animations);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx.label, \" \");\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.legendItems)(\"ngForTrackBy\", ctx.trackBy);\n } }, directives: [ɵngcc1.NgIf, CountUpDirective, ɵngcc1.NgForOf], styles: [\".advanced-pie-legend{float:left;position:relative;top:50%;transform:translateY(-50%)}.advanced-pie-legend .total-value{font-size:36px}.advanced-pie-legend .total-label{font-size:24px;margin-bottom:19px}.advanced-pie-legend .legend-items-container{width:100%}.advanced-pie-legend .legend-items-container .legend-items{overflow:auto;white-space:nowrap}.advanced-pie-legend .legend-items-container .legend-items .legend-item{cursor:pointer;display:inline-block;margin-right:20px}.advanced-pie-legend .legend-items-container .legend-items .legend-item:focus{outline:none}.advanced-pie-legend .legend-items-container .legend-items .legend-item:hover{color:#000;transition:.2s}.advanced-pie-legend .legend-items-container .legend-items .legend-item .item-value{font-size:24px;margin-left:11px;margin-top:-6px}.advanced-pie-legend .legend-items-container .legend-items .legend-item .item-label{font-size:14px;margin-left:11px;margin-top:-6px;opacity:.7}.advanced-pie-legend .legend-items-container .legend-items .legend-item .item-percent{font-size:24px;margin-left:11px;opacity:.7}.advanced-pie-legend .legend-items-container .legend-items .legend-item .item-color{border-left:4px solid;float:left;height:42px;margin-right:7px;width:4px}\"], encapsulation: 2, changeDetection: 0 });\nAdvancedLegendComponent.propDecorators = {\n width: [{ type: Input }],\n data: [{ type: Input }],\n colors: [{ type: Input }],\n label: [{ type: Input }],\n animations: [{ type: Input }],\n select: [{ type: Output }],\n activate: [{ type: Output }],\n deactivate: [{ type: Output }],\n valueFormatting: [{ type: Input }],\n labelFormatting: [{ type: Input }],\n percentageFormatting: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AdvancedLegendComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-charts-advanced-legend',\n template: `\n
    \n
    \n
    \n {{ valueFormatting ? valueFormatting(roundedTotal) : defaultValueFormatting(roundedTotal) }}\n
    \n
    \n {{ label }}\n
    \n
    \n
    \n \n
    \n
    \n
    \n {{ valueFormatting ? valueFormatting(legendItem.value) : defaultValueFormatting(legendItem.value) }}\n
    \n
    {{ legendItem.displayLabel }}
    \n
    \n
    {{ legendItem.percentage.toLocaleString() }}%
    \n \n \n \n \n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: [\".advanced-pie-legend{float:left;position:relative;top:50%;transform:translateY(-50%)}.advanced-pie-legend .total-value{font-size:36px}.advanced-pie-legend .total-label{font-size:24px;margin-bottom:19px}.advanced-pie-legend .legend-items-container{width:100%}.advanced-pie-legend .legend-items-container .legend-items{overflow:auto;white-space:nowrap}.advanced-pie-legend .legend-items-container .legend-items .legend-item{cursor:pointer;display:inline-block;margin-right:20px}.advanced-pie-legend .legend-items-container .legend-items .legend-item:focus{outline:none}.advanced-pie-legend .legend-items-container .legend-items .legend-item:hover{color:#000;transition:.2s}.advanced-pie-legend .legend-items-container .legend-items .legend-item .item-value{font-size:24px;margin-left:11px;margin-top:-6px}.advanced-pie-legend .legend-items-container .legend-items .legend-item .item-label{font-size:14px;margin-left:11px;margin-top:-6px;opacity:.7}.advanced-pie-legend .legend-items-container .legend-items .legend-item .item-percent{font-size:24px;margin-left:11px;opacity:.7}.advanced-pie-legend .legend-items-container .legend-items .legend-item .item-color{border-left:4px solid;float:left;height:42px;margin-right:7px;width:4px}\"]\n }]\n }], function () { return []; }, { label: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], labelFormatting: [{\n type: Input\n }], percentageFormatting: [{\n type: Input\n }], width: [{\n type: Input\n }], data: [{\n type: Input\n }], colors: [{\n type: Input\n }], valueFormatting: [{\n type: Input\n }] }); })();\n\nconst COMPONENTS = [\n AreaComponent,\n BaseChartComponent,\n CountUpDirective,\n TooltipArea,\n ChartComponent,\n LegendComponent,\n LegendEntryComponent,\n ScaleLegendComponent,\n CircleComponent,\n CircleSeriesComponent,\n GridPanelComponent,\n GridPanelSeriesComponent,\n SvgLinearGradientComponent,\n SvgRadialGradientComponent,\n Timeline,\n AdvancedLegendComponent\n];\nclass ChartCommonModule {\n}\nChartCommonModule.ɵfac = function ChartCommonModule_Factory(t) { return new (t || ChartCommonModule)(); };\nChartCommonModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: ChartCommonModule });\nChartCommonModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule, AxesModule, TooltipModule], CommonModule, AxesModule, TooltipModule] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ChartCommonModule, [{\n type: NgModule,\n args: [{\n imports: [CommonModule, AxesModule, TooltipModule],\n declarations: [...COMPONENTS, VisibilityObserver],\n exports: [CommonModule, AxesModule, TooltipModule, ...COMPONENTS, VisibilityObserver]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ChartCommonModule, { declarations: function () { return [AreaComponent, BaseChartComponent, CountUpDirective, TooltipArea, ChartComponent, LegendComponent, LegendEntryComponent, ScaleLegendComponent, CircleComponent, CircleSeriesComponent, GridPanelComponent, GridPanelSeriesComponent, SvgLinearGradientComponent, SvgRadialGradientComponent, Timeline, AdvancedLegendComponent, VisibilityObserver]; }, imports: function () { return [CommonModule, AxesModule, TooltipModule]; }, exports: function () { return [CommonModule, AxesModule, TooltipModule, AreaComponent, BaseChartComponent, CountUpDirective, TooltipArea, ChartComponent, LegendComponent, LegendEntryComponent, ScaleLegendComponent, CircleComponent, CircleSeriesComponent, GridPanelComponent, GridPanelSeriesComponent, SvgLinearGradientComponent, SvgRadialGradientComponent, Timeline, AdvancedLegendComponent, VisibilityObserver]; } }); })();\n\nfunction calculateViewDimensions({ width, height, margins, showXAxis = false, showYAxis = false, xAxisHeight = 0, yAxisWidth = 0, showXLabel = false, showYLabel = false, showLegend = false, legendType = 'ordinal', legendPosition = 'right', columns = 12 }) {\n let xOffset = margins[3];\n let chartWidth = width;\n let chartHeight = height - margins[0] - margins[2];\n if (showLegend && legendPosition === 'right') {\n if (legendType === 'ordinal') {\n columns -= 2;\n }\n else {\n columns -= 1;\n }\n }\n chartWidth = (chartWidth * columns) / 12;\n chartWidth = chartWidth - margins[1] - margins[3];\n if (showXAxis) {\n chartHeight -= 5;\n chartHeight -= xAxisHeight;\n if (showXLabel) {\n // text height + spacing between axis label and tick labels\n const offset = 25 + 5;\n chartHeight -= offset;\n }\n }\n if (showYAxis) {\n chartWidth -= 5;\n chartWidth -= yAxisWidth;\n xOffset += yAxisWidth;\n xOffset += 10;\n if (showYLabel) {\n // text height + spacing between axis label and tick labels\n const offset = 25 + 5;\n chartWidth -= offset;\n xOffset += offset;\n }\n }\n chartWidth = Math.max(0, chartWidth);\n chartHeight = Math.max(0, chartHeight);\n return {\n width: Math.floor(chartWidth),\n height: Math.floor(chartHeight),\n xOffset: Math.floor(xOffset)\n };\n}\n\nlet colorSets = [\n {\n name: 'vivid',\n selectable: true,\n group: 'Ordinal',\n domain: [\n '#647c8a',\n '#3f51b5',\n '#2196f3',\n '#00b862',\n '#afdf0a',\n '#a7b61a',\n '#f3e562',\n '#ff9800',\n '#ff5722',\n '#ff4514'\n ]\n },\n {\n name: 'natural',\n selectable: true,\n group: 'Ordinal',\n domain: [\n '#bf9d76',\n '#e99450',\n '#d89f59',\n '#f2dfa7',\n '#a5d7c6',\n '#7794b1',\n '#afafaf',\n '#707160',\n '#ba9383',\n '#d9d5c3'\n ]\n },\n {\n name: 'cool',\n selectable: true,\n group: 'Ordinal',\n domain: [\n '#a8385d',\n '#7aa3e5',\n '#a27ea8',\n '#aae3f5',\n '#adcded',\n '#a95963',\n '#8796c0',\n '#7ed3ed',\n '#50abcc',\n '#ad6886'\n ]\n },\n {\n name: 'fire',\n selectable: true,\n group: 'Ordinal',\n domain: ['#ff3d00', '#bf360c', '#ff8f00', '#ff6f00', '#ff5722', '#e65100', '#ffca28', '#ffab00']\n },\n {\n name: 'solar',\n selectable: true,\n group: 'Continuous',\n domain: [\n '#fff8e1',\n '#ffecb3',\n '#ffe082',\n '#ffd54f',\n '#ffca28',\n '#ffc107',\n '#ffb300',\n '#ffa000',\n '#ff8f00',\n '#ff6f00'\n ]\n },\n {\n name: 'air',\n selectable: true,\n group: 'Continuous',\n domain: [\n '#e1f5fe',\n '#b3e5fc',\n '#81d4fa',\n '#4fc3f7',\n '#29b6f6',\n '#03a9f4',\n '#039be5',\n '#0288d1',\n '#0277bd',\n '#01579b'\n ]\n },\n {\n name: 'aqua',\n selectable: true,\n group: 'Continuous',\n domain: [\n '#e0f7fa',\n '#b2ebf2',\n '#80deea',\n '#4dd0e1',\n '#26c6da',\n '#00bcd4',\n '#00acc1',\n '#0097a7',\n '#00838f',\n '#006064'\n ]\n },\n {\n name: 'flame',\n selectable: false,\n group: 'Ordinal',\n domain: [\n '#A10A28',\n '#D3342D',\n '#EF6D49',\n '#FAAD67',\n '#FDDE90',\n '#DBED91',\n '#A9D770',\n '#6CBA67',\n '#2C9653',\n '#146738'\n ]\n },\n {\n name: 'ocean',\n selectable: false,\n group: 'Ordinal',\n domain: [\n '#1D68FB',\n '#33C0FC',\n '#4AFFFE',\n '#AFFFFF',\n '#FFFC63',\n '#FDBD2D',\n '#FC8A25',\n '#FA4F1E',\n '#FA141B',\n '#BA38D1'\n ]\n },\n {\n name: 'forest',\n selectable: false,\n group: 'Ordinal',\n domain: [\n '#55C22D',\n '#C1F33D',\n '#3CC099',\n '#AFFFFF',\n '#8CFC9D',\n '#76CFFA',\n '#BA60FB',\n '#EE6490',\n '#C42A1C',\n '#FC9F32'\n ]\n },\n {\n name: 'horizon',\n selectable: false,\n group: 'Ordinal',\n domain: [\n '#2597FB',\n '#65EBFD',\n '#99FDD0',\n '#FCEE4B',\n '#FEFCFA',\n '#FDD6E3',\n '#FCB1A8',\n '#EF6F7B',\n '#CB96E8',\n '#EFDEE0'\n ]\n },\n {\n name: 'neons',\n selectable: false,\n group: 'Ordinal',\n domain: [\n '#FF3333',\n '#FF33FF',\n '#CC33FF',\n '#0000FF',\n '#33CCFF',\n '#33FFFF',\n '#33FF66',\n '#CCFF33',\n '#FFCC00',\n '#FF6600'\n ]\n },\n {\n name: 'picnic',\n selectable: false,\n group: 'Ordinal',\n domain: [\n '#FAC51D',\n '#66BD6D',\n '#FAA026',\n '#29BB9C',\n '#E96B56',\n '#55ACD2',\n '#B7332F',\n '#2C83C9',\n '#9166B8',\n '#92E7E8'\n ]\n },\n {\n name: 'night',\n selectable: false,\n group: 'Ordinal',\n domain: [\n '#2B1B5A',\n '#501356',\n '#183356',\n '#28203F',\n '#391B3C',\n '#1E2B3C',\n '#120634',\n '#2D0432',\n '#051932',\n '#453080',\n '#75267D',\n '#2C507D',\n '#4B3880',\n '#752F7D',\n '#35547D'\n ]\n },\n {\n name: 'nightLights',\n selectable: false,\n group: 'Ordinal',\n domain: [\n '#4e31a5',\n '#9c25a7',\n '#3065ab',\n '#57468b',\n '#904497',\n '#46648b',\n '#32118d',\n '#a00fb3',\n '#1052a2',\n '#6e51bd',\n '#b63cc3',\n '#6c97cb',\n '#8671c1',\n '#b455be',\n '#7496c3'\n ]\n }\n];\n\nclass ColorHelper {\n constructor(scheme, type, domain, customColors) {\n if (typeof scheme === 'string') {\n scheme = colorSets.find(cs => {\n return cs.name === scheme;\n });\n }\n this.colorDomain = scheme.domain;\n this.scaleType = type;\n this.domain = domain;\n this.customColors = customColors;\n this.scale = this.generateColorScheme(scheme, type, this.domain);\n }\n generateColorScheme(scheme, type, domain) {\n if (typeof scheme === 'string') {\n scheme = colorSets.find(cs => {\n return cs.name === scheme;\n });\n }\n let colorScale;\n if (type === 'quantile') {\n colorScale = scaleQuantile().range(scheme.domain).domain(domain);\n }\n else if (type === 'ordinal') {\n colorScale = scaleOrdinal().range(scheme.domain).domain(domain);\n }\n else if (type === 'linear') {\n // linear schemes must have at least 2 colors\n const colorDomain = [...scheme.domain];\n if (colorDomain.length === 1) {\n colorDomain.push(colorDomain[0]);\n this.colorDomain = colorDomain;\n }\n const points = range(0, 1, 1.0 / colorDomain.length);\n colorScale = scaleLinear().domain(points).range(colorDomain);\n }\n return colorScale;\n }\n getColor(value) {\n if (value === undefined || value === null) {\n throw new Error('Value can not be null');\n }\n if (this.scaleType === 'linear') {\n const valueScale = scaleLinear().domain(this.domain).range([0, 1]);\n return this.scale(valueScale(value));\n }\n else {\n if (typeof this.customColors === 'function') {\n return this.customColors(value);\n }\n const formattedValue = value.toString();\n let found; // todo type customColors\n if (this.customColors && this.customColors.length > 0) {\n found = this.customColors.find(mapping => {\n return mapping.name.toLowerCase() === formattedValue.toLowerCase();\n });\n }\n if (found) {\n return found.value;\n }\n else {\n return this.scale(value);\n }\n }\n }\n getLinearGradientStops(value, start) {\n if (start === undefined) {\n start = this.domain[0];\n }\n const valueScale = scaleLinear().domain(this.domain).range([0, 1]);\n const colorValueScale = scaleBand().domain(this.colorDomain).range([0, 1]);\n const endColor = this.getColor(value);\n // generate the stops\n const startVal = valueScale(start);\n const startColor = this.getColor(start);\n const endVal = valueScale(value);\n let i = 1;\n let currentVal = startVal;\n const stops = [];\n stops.push({\n color: startColor,\n offset: startVal,\n originalOffset: startVal,\n opacity: 1\n });\n while (currentVal < endVal && i < this.colorDomain.length) {\n const color = this.colorDomain[i];\n const offset = colorValueScale(color);\n if (offset <= startVal) {\n i++;\n continue;\n }\n if (offset.toFixed(4) >= (endVal - colorValueScale.bandwidth()).toFixed(4)) {\n break;\n }\n stops.push({\n color,\n offset,\n opacity: 1\n });\n currentVal = offset;\n i++;\n }\n if (stops[stops.length - 1].offset < 100) {\n stops.push({\n color: endColor,\n offset: endVal,\n opacity: 1\n });\n }\n if (endVal === startVal) {\n stops[0].offset = 0;\n stops[1].offset = 100;\n }\n else {\n // normalize the offsets into percentages\n if (stops[stops.length - 1].offset !== 100) {\n for (const s of stops) {\n s.offset = ((s.offset - startVal) / (endVal - startVal)) * 100;\n }\n }\n }\n return stops;\n }\n}\n\n/**\n * Based on the data, return an array with unique values.\n *\n * @export\n * @returns array\n */\nfunction getUniqueXDomainValues(results) {\n const valueSet = new Set();\n for (const result of results) {\n for (const d of result.series) {\n valueSet.add(d.name);\n }\n }\n return Array.from(valueSet);\n}\n/**\n * Get the scaleType of enumerable of values.\n * @returns 'time', 'linear' or 'ordinal'\n */\nfunction getScaleType(values, checkDateType = true) {\n if (checkDateType) {\n const allDates = values.every(value => value instanceof Date);\n if (allDates) {\n return 'time';\n }\n }\n const allNumbers = values.every(value => typeof value === 'number');\n if (allNumbers) {\n return 'linear';\n }\n return 'ordinal';\n}\n\nclass AreaChartComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legendTitle = 'Legend';\n this.legendPosition = 'right';\n this.baseValue = 'auto';\n this.showGridLines = true;\n this.curve = curveLinear;\n this.activeEntries = [];\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.roundDomains = false;\n this.tooltipDisabled = false;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.timelineHeight = 50;\n this.timelinePadding = 10;\n }\n update() {\n super.update();\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n if (this.timeline) {\n this.dims.height -= this.timelineHeight + this.margin[2] + this.timelinePadding;\n }\n this.xDomain = this.getXDomain();\n if (this.filteredDomain) {\n this.xDomain = this.filteredDomain;\n }\n this.yDomain = this.getYDomain();\n this.seriesDomain = this.getSeriesDomain();\n this.xScale = this.getXScale(this.xDomain, this.dims.width);\n this.yScale = this.getYScale(this.yDomain, this.dims.height);\n this.updateTimeline();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset}, ${this.margin[0]})`;\n this.clipPathId = 'clip' + id().toString();\n this.clipPath = `url(#${this.clipPathId})`;\n }\n updateTimeline() {\n if (this.timeline) {\n this.timelineWidth = this.dims.width;\n this.timelineXDomain = this.getXDomain();\n this.timelineXScale = this.getXScale(this.timelineXDomain, this.timelineWidth);\n this.timelineYScale = this.getYScale(this.yDomain, this.timelineHeight);\n this.timelineTransform = `translate(${this.dims.xOffset}, ${-this.margin[2]})`;\n }\n }\n getXDomain() {\n let values = getUniqueXDomainValues(this.results);\n this.scaleType = getScaleType(values);\n let domain = [];\n if (this.scaleType === 'linear') {\n values = values.map(v => Number(v));\n }\n let min;\n let max;\n if (this.scaleType === 'time' || this.scaleType === 'linear') {\n min = this.xScaleMin ? this.xScaleMin : Math.min(...values);\n max = this.xScaleMax ? this.xScaleMax : Math.max(...values);\n }\n if (this.scaleType === 'time') {\n domain = [new Date(min), new Date(max)];\n this.xSet = [...values].sort((a, b) => {\n const aDate = a.getTime();\n const bDate = b.getTime();\n if (aDate > bDate)\n return 1;\n if (bDate > aDate)\n return -1;\n return 0;\n });\n }\n else if (this.scaleType === 'linear') {\n domain = [min, max];\n // Use compare function to sort numbers numerically\n this.xSet = [...values].sort((a, b) => a - b);\n }\n else {\n domain = values;\n this.xSet = values;\n }\n return domain;\n }\n getYDomain() {\n const domain = [];\n for (const results of this.results) {\n for (const d of results.series) {\n if (!domain.includes(d.value)) {\n domain.push(d.value);\n }\n }\n }\n const values = [...domain];\n if (!this.autoScale) {\n values.push(0);\n }\n if (this.baseValue !== 'auto') {\n values.push(this.baseValue);\n }\n const min = this.yScaleMin ? this.yScaleMin : Math.min(...values);\n const max = this.yScaleMax ? this.yScaleMax : Math.max(...values);\n return [min, max];\n }\n getSeriesDomain() {\n return this.results.map(d => d.name);\n }\n getXScale(domain, width) {\n let scale;\n if (this.scaleType === 'time') {\n scale = scaleTime();\n }\n else if (this.scaleType === 'linear') {\n scale = scaleLinear();\n }\n else if (this.scaleType === 'ordinal') {\n scale = scalePoint().padding(0.1);\n }\n scale.range([0, width]).domain(domain);\n return this.roundDomains ? scale.nice() : scale;\n }\n getYScale(domain, height) {\n const scale = scaleLinear().range([height, 0]).domain(domain);\n return this.roundDomains ? scale.nice() : scale;\n }\n getScaleType(values) {\n let date = true;\n let num = true;\n for (const value of values) {\n if (!this.isDate(value)) {\n date = false;\n }\n if (typeof value !== 'number') {\n num = false;\n }\n }\n if (date) {\n return 'time';\n }\n if (num) {\n return 'linear';\n }\n return 'ordinal';\n }\n isDate(value) {\n if (value instanceof Date) {\n return true;\n }\n return false;\n }\n updateDomain(domain) {\n this.filteredDomain = domain;\n this.xDomain = this.filteredDomain;\n this.xScale = this.getXScale(this.xDomain, this.dims.width);\n }\n updateHoveredVertical(item) {\n this.hoveredVertical = item.value;\n this.deactivateAll();\n }\n hideCircles() {\n this.hoveredVertical = null;\n this.deactivateAll();\n }\n onClick(data, series) {\n if (series) {\n data.series = series.name;\n }\n this.select.emit(data);\n }\n trackBy(index, item) {\n return item.name;\n }\n setColors() {\n let domain;\n if (this.schemeType === 'ordinal') {\n domain = this.seriesDomain;\n }\n else {\n domain = this.yDomain;\n }\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === 'ordinal') {\n opts.domain = this.seriesDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n }\n else {\n opts.domain = this.yDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onActivate(item) {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n if (idx > -1) {\n return;\n }\n this.activeEntries = [item, ...this.activeEntries];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(item) {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n deactivateAll() {\n this.activeEntries = [...this.activeEntries];\n for (const entry of this.activeEntries) {\n this.deactivate.emit({ value: entry, entries: [] });\n }\n this.activeEntries = [];\n }\n}\nAreaChartComponent.ɵfac = /*@__PURE__*/ function () { let ɵAreaChartComponent_BaseFactory; return function AreaChartComponent_Factory(t) { return (ɵAreaChartComponent_BaseFactory || (ɵAreaChartComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(AreaChartComponent)))(t || AreaChartComponent); }; }();\nAreaChartComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: AreaChartComponent, selectors: [[\"ngx-charts-area-chart\"]], contentQueries: function AreaChartComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, _c22, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.seriesTooltipTemplate = _t.first);\n } }, hostBindings: function AreaChartComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"mouseleave\", function AreaChartComponent_mouseleave_HostBindingHandler() { return ctx.hideCircles(); });\n } }, inputs: { legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", baseValue: \"baseValue\", showGridLines: \"showGridLines\", curve: \"curve\", activeEntries: \"activeEntries\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", roundDomains: \"roundDomains\", tooltipDisabled: \"tooltipDisabled\", legend: \"legend\", state: \"state\", xAxis: \"xAxis\", yAxis: \"yAxis\", autoScale: \"autoScale\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", timeline: \"timeline\", gradient: \"gradient\", schemeType: \"schemeType\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", xScaleMin: \"xScaleMin\", xScaleMax: \"xScaleMax\", yScaleMin: \"yScaleMin\", yScaleMax: \"yScaleMax\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 11, vars: 20, consts: [[3, \"view\", \"showLegend\", \"legendOptions\", \"activeEntries\", \"animations\", \"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"], [1, \"area-chart\", \"chart\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [3, \"mouseleave\", 4, \"ngIf\"], [\"ngx-charts-timeline\", \"\", 3, \"results\", \"view\", \"height\", \"scheme\", \"customColors\", \"legend\", \"scaleType\", \"onDomainChange\", 4, \"ngIf\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-area-series\", \"\", 3, \"xScale\", \"yScale\", \"baseValue\", \"colors\", \"data\", \"activeEntries\", \"scaleType\", \"gradient\", \"curve\", \"animations\"], [3, \"mouseleave\"], [\"ngx-charts-tooltip-area\", \"\", 3, \"dims\", \"xSet\", \"xScale\", \"yScale\", \"results\", \"colors\", \"tooltipDisabled\", \"tooltipTemplate\", \"hover\"], [4, \"ngFor\", \"ngForOf\"], [\"ngx-charts-circle-series\", \"\", 3, \"xScale\", \"yScale\", \"colors\", \"activeEntries\", \"data\", \"scaleType\", \"visibleValue\", \"tooltipDisabled\", \"tooltipTemplate\", \"select\", \"activate\", \"deactivate\"], [\"ngx-charts-timeline\", \"\", 3, \"results\", \"view\", \"height\", \"scheme\", \"customColors\", \"legend\", \"scaleType\", \"onDomainChange\"], [\"ngx-charts-area-series\", \"\", 3, \"xScale\", \"yScale\", \"baseValue\", \"colors\", \"data\", \"scaleType\", \"gradient\", \"curve\", \"animations\"]], template: function AreaChartComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n ɵngcc0.ɵɵlistener(\"legendLabelClick\", function AreaChartComponent_Template_ngx_charts_chart_legendLabelClick_0_listener($event) { return ctx.onClick($event); })(\"legendLabelActivate\", function AreaChartComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener($event) { return ctx.onActivate($event); })(\"legendLabelDeactivate\", function AreaChartComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener($event) { return ctx.onDeactivate($event); });\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(1, \"defs\")(2, \"clipPath\");\n ɵngcc0.ɵɵelement(3, \"rect\");\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵelementStart(4, \"g\", 1);\n ɵngcc0.ɵɵtemplate(5, AreaChartComponent__svg_g_5_Template, 1, 10, \"g\", 2);\n ɵngcc0.ɵɵtemplate(6, AreaChartComponent__svg_g_6_Template, 1, 9, \"g\", 3);\n ɵngcc0.ɵɵelementStart(7, \"g\");\n ɵngcc0.ɵɵtemplate(8, AreaChartComponent__svg_g_8_Template, 2, 10, \"g\", 4);\n ɵngcc0.ɵɵtemplate(9, AreaChartComponent__svg_g_9_Template, 3, 9, \"g\", 5);\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵtemplate(10, AreaChartComponent__svg_g_10_Template, 2, 13, \"g\", 6);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(17, _c23, ctx.width, ctx.height))(\"showLegend\", ctx.legend)(\"legendOptions\", ctx.legendOptions)(\"activeEntries\", ctx.activeEntries)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵattribute(\"id\", ctx.clipPathId);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"width\", ctx.dims.width + 10)(\"height\", ctx.dims.height + 10)(\"transform\", \"translate(-5, -5)\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.xAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.yAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"clip-path\", ctx.clipPath);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.results)(\"ngForTrackBy\", ctx.trackBy);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.tooltipDisabled);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.timeline && ctx.scaleType != \"ordinal\");\n } }, directives: function () { return [ChartComponent, ɵngcc1.NgIf, XAxisComponent, YAxisComponent, ɵngcc1.NgForOf, AreaSeriesComponent, TooltipArea, CircleSeriesComponent, Timeline]; }, styles: [_c24], encapsulation: 2, changeDetection: 0 });\nAreaChartComponent.propDecorators = {\n legend: [{ type: Input }],\n legendTitle: [{ type: Input }],\n legendPosition: [{ type: Input }],\n state: [{ type: Input }],\n xAxis: [{ type: Input }],\n yAxis: [{ type: Input }],\n baseValue: [{ type: Input }],\n autoScale: [{ type: Input }],\n showXAxisLabel: [{ type: Input }],\n showYAxisLabel: [{ type: Input }],\n xAxisLabel: [{ type: Input }],\n yAxisLabel: [{ type: Input }],\n timeline: [{ type: Input }],\n gradient: [{ type: Input }],\n showGridLines: [{ type: Input }],\n curve: [{ type: Input }],\n activeEntries: [{ type: Input }],\n schemeType: [{ type: Input }],\n trimXAxisTicks: [{ type: Input }],\n trimYAxisTicks: [{ type: Input }],\n rotateXAxisTicks: [{ type: Input }],\n maxXAxisTickLength: [{ type: Input }],\n maxYAxisTickLength: [{ type: Input }],\n xAxisTickFormatting: [{ type: Input }],\n yAxisTickFormatting: [{ type: Input }],\n xAxisTicks: [{ type: Input }],\n yAxisTicks: [{ type: Input }],\n roundDomains: [{ type: Input }],\n tooltipDisabled: [{ type: Input }],\n xScaleMin: [{ type: Input }],\n xScaleMax: [{ type: Input }],\n yScaleMin: [{ type: Input }],\n yScaleMax: [{ type: Input }],\n activate: [{ type: Output }],\n deactivate: [{ type: Output }],\n tooltipTemplate: [{ type: ContentChild, args: ['tooltipTemplate',] }],\n seriesTooltipTemplate: [{ type: ContentChild, args: ['seriesTooltipTemplate',] }],\n hideCircles: [{ type: HostListener, args: ['mouseleave',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AreaChartComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-charts-area-chart',\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 \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:none}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{opacity:.2;transition:opacity .1s ease-in-out}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{fill:none;stroke:#ddd;stroke-width:1}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-dasharray:5;stroke-dashoffset:5;stroke-width:1}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill:#000;fill-opacity:.05}.ngx-charts .gridline-path-dotted{fill:none;stroke:#ddd;stroke-dasharray:1,20;stroke-dashoffset:3;stroke-width:1}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"]\n }]\n }], null, { legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], baseValue: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], curve: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], hideCircles: [{\n type: HostListener,\n args: ['mouseleave']\n }], legend: [{\n type: Input\n }], state: [{\n type: Input\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], autoScale: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], timeline: [{\n type: Input\n }], gradient: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], xScaleMin: [{\n type: Input\n }], xScaleMax: [{\n type: Input\n }], yScaleMin: [{\n type: Input\n }], yScaleMax: [{\n type: Input\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }], seriesTooltipTemplate: [{\n type: ContentChild,\n args: ['seriesTooltipTemplate']\n }] }); })();\n\nclass AreaChartNormalizedComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = 'right';\n this.showGridLines = true;\n this.curve = curveLinear;\n this.activeEntries = [];\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.roundDomains = false;\n this.tooltipDisabled = false;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.timelineHeight = 50;\n this.timelinePadding = 10;\n }\n update() {\n super.update();\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n if (this.timeline) {\n this.dims.height -= this.timelineHeight + this.margin[2] + this.timelinePadding;\n }\n this.xDomain = this.getXDomain();\n if (this.filteredDomain) {\n this.xDomain = this.filteredDomain;\n }\n this.yDomain = this.getYDomain();\n this.seriesDomain = this.getSeriesDomain();\n this.xScale = this.getXScale(this.xDomain, this.dims.width);\n this.yScale = this.getYScale(this.yDomain, this.dims.height);\n for (let i = 0; i < this.xSet.length; i++) {\n const val = this.xSet[i];\n let d0 = 0;\n let total = 0;\n for (const group of this.results) {\n const d = group.series.find(item => {\n let a = item.name;\n let b = val;\n if (this.scaleType === 'time') {\n a = a.valueOf();\n b = b.valueOf();\n }\n return a === b;\n });\n if (d) {\n total += d.value;\n }\n }\n for (const group of this.results) {\n let d = group.series.find(item => {\n let a = item.name;\n let b = val;\n if (this.scaleType === 'time') {\n a = a.valueOf();\n b = b.valueOf();\n }\n return a === b;\n });\n if (d) {\n d.d0 = d0;\n d.d1 = d0 + d.value;\n d0 += d.value;\n }\n else {\n d = {\n name: val,\n value: 0,\n d0,\n d1: d0\n };\n group.series.push(d);\n }\n if (total > 0) {\n d.d0 = (d.d0 * 100) / total;\n d.d1 = (d.d1 * 100) / total;\n }\n else {\n d.d0 = 0;\n d.d1 = 0;\n }\n }\n }\n this.updateTimeline();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n this.clipPathId = 'clip' + id().toString();\n this.clipPath = `url(#${this.clipPathId})`;\n }\n updateTimeline() {\n if (this.timeline) {\n this.timelineWidth = this.dims.width;\n this.timelineXDomain = this.getXDomain();\n this.timelineXScale = this.getXScale(this.timelineXDomain, this.timelineWidth);\n this.timelineYScale = this.getYScale(this.yDomain, this.timelineHeight);\n this.timelineTransform = `translate(${this.dims.xOffset}, ${-this.margin[2]})`;\n }\n }\n getXDomain() {\n let values = getUniqueXDomainValues(this.results);\n this.scaleType = getScaleType(values);\n let domain = [];\n if (this.scaleType === 'time') {\n const min = Math.min(...values);\n const max = Math.max(...values);\n domain = [new Date(min), new Date(max)];\n this.xSet = [...values].sort((a, b) => {\n const aDate = a.getTime();\n const bDate = b.getTime();\n if (aDate > bDate)\n return 1;\n if (bDate > aDate)\n return -1;\n return 0;\n });\n }\n else if (this.scaleType === 'linear') {\n values = values.map(v => Number(v));\n const min = Math.min(...values);\n const max = Math.max(...values);\n domain = [min, max];\n // Use compare function to sort numbers numerically\n this.xSet = [...values].sort((a, b) => a - b);\n }\n else {\n domain = values;\n this.xSet = values;\n }\n return domain;\n }\n getYDomain() {\n return [0, 100];\n }\n getSeriesDomain() {\n return this.results.map(d => d.name);\n }\n getXScale(domain, width) {\n let scale;\n if (this.scaleType === 'time') {\n scale = scaleTime();\n }\n else if (this.scaleType === 'linear') {\n scale = scaleLinear();\n }\n else if (this.scaleType === 'ordinal') {\n scale = scalePoint().padding(0.1);\n }\n scale.range([0, width]).domain(domain);\n return this.roundDomains ? scale.nice() : scale;\n }\n getYScale(domain, height) {\n const scale = scaleLinear().range([height, 0]).domain(domain);\n return this.roundDomains ? scale.nice() : scale;\n }\n updateDomain(domain) {\n this.filteredDomain = domain;\n this.xDomain = this.filteredDomain;\n this.xScale = this.getXScale(this.xDomain, this.dims.width);\n }\n updateHoveredVertical(item) {\n this.hoveredVertical = item.value;\n this.deactivateAll();\n }\n hideCircles() {\n this.hoveredVertical = null;\n this.deactivateAll();\n }\n onClick(data, series) {\n if (series) {\n data.series = series.name;\n }\n this.select.emit(data);\n }\n trackBy(index, item) {\n return item.name;\n }\n setColors() {\n let domain;\n if (this.schemeType === 'ordinal') {\n domain = this.seriesDomain;\n }\n else {\n domain = this.yDomain;\n }\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === 'ordinal') {\n opts.domain = this.seriesDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n }\n else {\n opts.domain = this.yDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onActivate(item) {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n if (idx > -1) {\n return;\n }\n this.activeEntries = [item, ...this.activeEntries];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(item) {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n deactivateAll() {\n this.activeEntries = [...this.activeEntries];\n for (const entry of this.activeEntries) {\n this.deactivate.emit({ value: entry, entries: [] });\n }\n this.activeEntries = [];\n }\n}\nAreaChartNormalizedComponent.ɵfac = /*@__PURE__*/ function () { let ɵAreaChartNormalizedComponent_BaseFactory; return function AreaChartNormalizedComponent_Factory(t) { return (ɵAreaChartNormalizedComponent_BaseFactory || (ɵAreaChartNormalizedComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(AreaChartNormalizedComponent)))(t || AreaChartNormalizedComponent); }; }();\nAreaChartNormalizedComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: AreaChartNormalizedComponent, selectors: [[\"ngx-charts-area-chart-normalized\"]], contentQueries: function AreaChartNormalizedComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, _c22, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.seriesTooltipTemplate = _t.first);\n } }, hostBindings: function AreaChartNormalizedComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"mouseleave\", function AreaChartNormalizedComponent_mouseleave_HostBindingHandler() { return ctx.hideCircles(); });\n } }, inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", showGridLines: \"showGridLines\", curve: \"curve\", activeEntries: \"activeEntries\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", roundDomains: \"roundDomains\", tooltipDisabled: \"tooltipDisabled\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", timeline: \"timeline\", gradient: \"gradient\", schemeType: \"schemeType\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 11, vars: 20, consts: [[3, \"view\", \"showLegend\", \"legendOptions\", \"activeEntries\", \"animations\", \"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"], [1, \"area-chart\", \"chart\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [3, \"mouseleave\", 4, \"ngIf\"], [\"ngx-charts-timeline\", \"\", 3, \"results\", \"view\", \"height\", \"scheme\", \"customColors\", \"legend\", \"scaleType\", \"onDomainChange\", 4, \"ngIf\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-area-series\", \"\", \"normalized\", \"true\", 3, \"xScale\", \"yScale\", \"colors\", \"data\", \"scaleType\", \"activeEntries\", \"gradient\", \"curve\", \"animations\"], [3, \"mouseleave\"], [\"ngx-charts-tooltip-area\", \"\", 3, \"dims\", \"xSet\", \"xScale\", \"yScale\", \"results\", \"colors\", \"showPercentage\", \"tooltipDisabled\", \"tooltipTemplate\", \"hover\"], [4, \"ngFor\", \"ngForOf\"], [\"ngx-charts-circle-series\", \"\", \"type\", \"stacked\", 3, \"xScale\", \"yScale\", \"colors\", \"activeEntries\", \"data\", \"scaleType\", \"visibleValue\", \"tooltipDisabled\", \"tooltipTemplate\", \"select\", \"activate\", \"deactivate\"], [\"ngx-charts-timeline\", \"\", 3, \"results\", \"view\", \"height\", \"scheme\", \"customColors\", \"legend\", \"scaleType\", \"onDomainChange\"], [\"ngx-charts-area-series\", \"\", \"normalized\", \"true\", 3, \"xScale\", \"yScale\", \"colors\", \"data\", \"scaleType\", \"gradient\", \"curve\", \"animations\"]], template: function AreaChartNormalizedComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n ɵngcc0.ɵɵlistener(\"legendLabelClick\", function AreaChartNormalizedComponent_Template_ngx_charts_chart_legendLabelClick_0_listener($event) { return ctx.onClick($event); })(\"legendLabelActivate\", function AreaChartNormalizedComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener($event) { return ctx.onActivate($event); })(\"legendLabelDeactivate\", function AreaChartNormalizedComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener($event) { return ctx.onDeactivate($event); });\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(1, \"defs\")(2, \"clipPath\");\n ɵngcc0.ɵɵelement(3, \"rect\");\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵelementStart(4, \"g\", 1);\n ɵngcc0.ɵɵtemplate(5, AreaChartNormalizedComponent__svg_g_5_Template, 1, 10, \"g\", 2);\n ɵngcc0.ɵɵtemplate(6, AreaChartNormalizedComponent__svg_g_6_Template, 1, 9, \"g\", 3);\n ɵngcc0.ɵɵelementStart(7, \"g\");\n ɵngcc0.ɵɵtemplate(8, AreaChartNormalizedComponent__svg_g_8_Template, 2, 9, \"g\", 4);\n ɵngcc0.ɵɵtemplate(9, AreaChartNormalizedComponent__svg_g_9_Template, 3, 10, \"g\", 5);\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵtemplate(10, AreaChartNormalizedComponent__svg_g_10_Template, 2, 13, \"g\", 6);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(17, _c23, ctx.width, ctx.height))(\"showLegend\", ctx.legend)(\"legendOptions\", ctx.legendOptions)(\"activeEntries\", ctx.activeEntries)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵattribute(\"id\", ctx.clipPathId);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"width\", ctx.dims.width + 10)(\"height\", ctx.dims.height + 10)(\"transform\", \"translate(-5, -5)\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.xAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.yAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"clip-path\", ctx.clipPath);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.results)(\"ngForTrackBy\", ctx.trackBy);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.tooltipDisabled);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.timeline && ctx.scaleType != \"ordinal\");\n } }, directives: function () { return [ChartComponent, ɵngcc1.NgIf, XAxisComponent, YAxisComponent, ɵngcc1.NgForOf, AreaSeriesComponent, TooltipArea, CircleSeriesComponent, Timeline]; }, styles: [_c24], encapsulation: 2, changeDetection: 0 });\nAreaChartNormalizedComponent.propDecorators = {\n legend: [{ type: Input }],\n legendTitle: [{ type: Input }],\n legendPosition: [{ type: Input }],\n xAxis: [{ type: Input }],\n yAxis: [{ type: Input }],\n showXAxisLabel: [{ type: Input }],\n showYAxisLabel: [{ type: Input }],\n xAxisLabel: [{ type: Input }],\n yAxisLabel: [{ type: Input }],\n timeline: [{ type: Input }],\n gradient: [{ type: Input }],\n showGridLines: [{ type: Input }],\n curve: [{ type: Input }],\n activeEntries: [{ type: Input }],\n schemeType: [{ type: Input }],\n trimXAxisTicks: [{ type: Input }],\n trimYAxisTicks: [{ type: Input }],\n rotateXAxisTicks: [{ type: Input }],\n maxXAxisTickLength: [{ type: Input }],\n maxYAxisTickLength: [{ type: Input }],\n xAxisTickFormatting: [{ type: Input }],\n yAxisTickFormatting: [{ type: Input }],\n xAxisTicks: [{ type: Input }],\n yAxisTicks: [{ type: Input }],\n roundDomains: [{ type: Input }],\n tooltipDisabled: [{ type: Input }],\n activate: [{ type: Output }],\n deactivate: [{ type: Output }],\n tooltipTemplate: [{ type: ContentChild, args: ['tooltipTemplate',] }],\n seriesTooltipTemplate: [{ type: ContentChild, args: ['seriesTooltipTemplate',] }],\n hideCircles: [{ type: HostListener, args: ['mouseleave',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AreaChartNormalizedComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-charts-area-chart-normalized',\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 \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:none}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{opacity:.2;transition:opacity .1s ease-in-out}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{fill:none;stroke:#ddd;stroke-width:1}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-dasharray:5;stroke-dashoffset:5;stroke-width:1}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill:#000;fill-opacity:.05}.ngx-charts .gridline-path-dotted{fill:none;stroke:#ddd;stroke-dasharray:1,20;stroke-dashoffset:3;stroke-width:1}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"]\n }]\n }], null, { legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], curve: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], hideCircles: [{\n type: HostListener,\n args: ['mouseleave']\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], timeline: [{\n type: Input\n }], gradient: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }], seriesTooltipTemplate: [{\n type: ContentChild,\n args: ['seriesTooltipTemplate']\n }] }); })();\n\nclass AreaChartStackedComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = 'right';\n this.showGridLines = true;\n this.curve = curveLinear;\n this.activeEntries = [];\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.roundDomains = false;\n this.tooltipDisabled = false;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.timelineHeight = 50;\n this.timelinePadding = 10;\n }\n update() {\n super.update();\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n if (this.timeline) {\n this.dims.height -= this.timelineHeight + this.margin[2] + this.timelinePadding;\n }\n this.xDomain = this.getXDomain();\n if (this.filteredDomain) {\n this.xDomain = this.filteredDomain;\n }\n this.yDomain = this.getYDomain();\n this.seriesDomain = this.getSeriesDomain();\n this.xScale = this.getXScale(this.xDomain, this.dims.width);\n this.yScale = this.getYScale(this.yDomain, this.dims.height);\n for (let i = 0; i < this.xSet.length; i++) {\n const val = this.xSet[i];\n let d0 = 0;\n for (const group of this.results) {\n let d = group.series.find(item => {\n let a = item.name;\n let b = val;\n if (this.scaleType === 'time') {\n a = a.valueOf();\n b = b.valueOf();\n }\n return a === b;\n });\n if (d) {\n d.d0 = d0;\n d.d1 = d0 + d.value;\n d0 += d.value;\n }\n else {\n d = {\n name: val,\n value: 0,\n d0,\n d1: d0\n };\n group.series.push(d);\n }\n }\n }\n this.updateTimeline();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n this.clipPathId = 'clip' + id().toString();\n this.clipPath = `url(#${this.clipPathId})`;\n }\n updateTimeline() {\n if (this.timeline) {\n this.timelineWidth = this.dims.width;\n this.timelineXDomain = this.getXDomain();\n this.timelineXScale = this.getXScale(this.timelineXDomain, this.timelineWidth);\n this.timelineYScale = this.getYScale(this.yDomain, this.timelineHeight);\n this.timelineTransform = `translate(${this.dims.xOffset}, ${-this.margin[2]})`;\n }\n }\n getXDomain() {\n let values = getUniqueXDomainValues(this.results);\n this.scaleType = getScaleType(values);\n let domain = [];\n if (this.scaleType === 'linear') {\n values = values.map(v => Number(v));\n }\n let min;\n let max;\n if (this.scaleType === 'time' || this.scaleType === 'linear') {\n min = this.xScaleMin ? this.xScaleMin : Math.min(...values);\n max = this.xScaleMax ? this.xScaleMax : Math.max(...values);\n }\n if (this.scaleType === 'time') {\n domain = [new Date(min), new Date(max)];\n this.xSet = [...values].sort((a, b) => {\n const aDate = a.getTime();\n const bDate = b.getTime();\n if (aDate > bDate)\n return 1;\n if (bDate > aDate)\n return -1;\n return 0;\n });\n }\n else if (this.scaleType === 'linear') {\n domain = [min, max];\n // Use compare function to sort numbers numerically\n this.xSet = [...values].sort((a, b) => a - b);\n }\n else {\n domain = values;\n this.xSet = values;\n }\n return domain;\n }\n getYDomain() {\n const domain = [];\n for (let i = 0; i < this.xSet.length; i++) {\n const val = this.xSet[i];\n let sum = 0;\n for (const group of this.results) {\n const d = group.series.find(item => {\n let a = item.name;\n let b = val;\n if (this.scaleType === 'time') {\n a = a.valueOf();\n b = b.valueOf();\n }\n return a === b;\n });\n if (d) {\n sum += d.value;\n }\n }\n domain.push(sum);\n }\n const min = this.yScaleMin ? this.yScaleMin : Math.min(0, ...domain);\n const max = this.yScaleMax ? this.yScaleMax : Math.max(...domain);\n return [min, max];\n }\n getSeriesDomain() {\n return this.results.map(d => d.name);\n }\n getXScale(domain, width) {\n let scale;\n if (this.scaleType === 'time') {\n scale = scaleTime();\n }\n else if (this.scaleType === 'linear') {\n scale = scaleLinear();\n }\n else if (this.scaleType === 'ordinal') {\n scale = scalePoint().padding(0.1);\n }\n scale.range([0, width]).domain(domain);\n return this.roundDomains ? scale.nice() : scale;\n }\n getYScale(domain, height) {\n const scale = scaleLinear().range([height, 0]).domain(domain);\n return this.roundDomains ? scale.nice() : scale;\n }\n updateDomain(domain) {\n this.filteredDomain = domain;\n this.xDomain = this.filteredDomain;\n this.xScale = this.getXScale(this.xDomain, this.dims.width);\n }\n updateHoveredVertical(item) {\n this.hoveredVertical = item.value;\n this.deactivateAll();\n }\n hideCircles() {\n this.hoveredVertical = null;\n this.deactivateAll();\n }\n onClick(data, series) {\n if (series) {\n data.series = series.name;\n }\n this.select.emit(data);\n }\n trackBy(index, item) {\n return item.name;\n }\n setColors() {\n let domain;\n if (this.schemeType === 'ordinal') {\n domain = this.seriesDomain;\n }\n else {\n domain = this.yDomain;\n }\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === 'ordinal') {\n opts.domain = this.seriesDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n }\n else {\n opts.domain = this.yDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onActivate(item) {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n if (idx > -1) {\n return;\n }\n this.activeEntries = [item, ...this.activeEntries];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(item) {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n deactivateAll() {\n this.activeEntries = [...this.activeEntries];\n for (const entry of this.activeEntries) {\n this.deactivate.emit({ value: entry, entries: [] });\n }\n this.activeEntries = [];\n }\n}\nAreaChartStackedComponent.ɵfac = /*@__PURE__*/ function () { let ɵAreaChartStackedComponent_BaseFactory; return function AreaChartStackedComponent_Factory(t) { return (ɵAreaChartStackedComponent_BaseFactory || (ɵAreaChartStackedComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(AreaChartStackedComponent)))(t || AreaChartStackedComponent); }; }();\nAreaChartStackedComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: AreaChartStackedComponent, selectors: [[\"ngx-charts-area-chart-stacked\"]], contentQueries: function AreaChartStackedComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, _c22, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.seriesTooltipTemplate = _t.first);\n } }, hostBindings: function AreaChartStackedComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"mouseleave\", function AreaChartStackedComponent_mouseleave_HostBindingHandler() { return ctx.hideCircles(); });\n } }, inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", showGridLines: \"showGridLines\", curve: \"curve\", activeEntries: \"activeEntries\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", roundDomains: \"roundDomains\", tooltipDisabled: \"tooltipDisabled\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", timeline: \"timeline\", gradient: \"gradient\", schemeType: \"schemeType\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", xScaleMin: \"xScaleMin\", xScaleMax: \"xScaleMax\", yScaleMin: \"yScaleMin\", yScaleMax: \"yScaleMax\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 11, vars: 20, consts: [[3, \"view\", \"showLegend\", \"legendOptions\", \"activeEntries\", \"animations\", \"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"], [1, \"area-chart\", \"chart\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [3, \"mouseleave\", 4, \"ngIf\"], [\"ngx-charts-timeline\", \"\", 3, \"results\", \"view\", \"height\", \"scheme\", \"customColors\", \"legend\", \"scaleType\", \"onDomainChange\", 4, \"ngIf\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-area-series\", \"\", \"stacked\", \"true\", 3, \"xScale\", \"yScale\", \"colors\", \"data\", \"scaleType\", \"gradient\", \"activeEntries\", \"curve\", \"animations\"], [3, \"mouseleave\"], [\"ngx-charts-tooltip-area\", \"\", 3, \"dims\", \"xSet\", \"xScale\", \"yScale\", \"results\", \"colors\", \"tooltipDisabled\", \"tooltipTemplate\", \"hover\"], [\"ngx-charts-circle-series\", \"\", \"type\", \"stacked\", 3, \"xScale\", \"yScale\", \"colors\", \"activeEntries\", \"data\", \"scaleType\", \"visibleValue\", \"tooltipDisabled\", \"tooltipTemplate\", \"select\", \"activate\", \"deactivate\"], [\"ngx-charts-timeline\", \"\", 3, \"results\", \"view\", \"height\", \"scheme\", \"customColors\", \"legend\", \"scaleType\", \"onDomainChange\"], [\"ngx-charts-area-series\", \"\", \"stacked\", \"true\", 3, \"xScale\", \"yScale\", \"colors\", \"data\", \"scaleType\", \"gradient\", \"curve\", \"animations\"]], template: function AreaChartStackedComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n ɵngcc0.ɵɵlistener(\"legendLabelClick\", function AreaChartStackedComponent_Template_ngx_charts_chart_legendLabelClick_0_listener($event) { return ctx.onClick($event); })(\"legendLabelActivate\", function AreaChartStackedComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener($event) { return ctx.onActivate($event); })(\"legendLabelDeactivate\", function AreaChartStackedComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener($event) { return ctx.onDeactivate($event); });\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(1, \"defs\")(2, \"clipPath\");\n ɵngcc0.ɵɵelement(3, \"rect\");\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵelementStart(4, \"g\", 1);\n ɵngcc0.ɵɵtemplate(5, AreaChartStackedComponent__svg_g_5_Template, 1, 10, \"g\", 2);\n ɵngcc0.ɵɵtemplate(6, AreaChartStackedComponent__svg_g_6_Template, 1, 9, \"g\", 3);\n ɵngcc0.ɵɵelementStart(7, \"g\");\n ɵngcc0.ɵɵtemplate(8, AreaChartStackedComponent__svg_g_8_Template, 2, 9, \"g\", 4);\n ɵngcc0.ɵɵtemplate(9, AreaChartStackedComponent__svg_g_9_Template, 3, 10, \"g\", 5);\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵtemplate(10, AreaChartStackedComponent__svg_g_10_Template, 2, 13, \"g\", 6);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(17, _c23, ctx.width, ctx.height))(\"showLegend\", ctx.legend)(\"legendOptions\", ctx.legendOptions)(\"activeEntries\", ctx.activeEntries)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵattribute(\"id\", ctx.clipPathId);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"width\", ctx.dims.width + 10)(\"height\", ctx.dims.height + 10)(\"transform\", \"translate(-5, -5)\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.xAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.yAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"clip-path\", ctx.clipPath);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.results)(\"ngForTrackBy\", ctx.trackBy);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.tooltipDisabled);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.timeline && ctx.scaleType != \"ordinal\");\n } }, directives: function () { return [ChartComponent, ɵngcc1.NgIf, XAxisComponent, YAxisComponent, ɵngcc1.NgForOf, AreaSeriesComponent, TooltipArea, CircleSeriesComponent, Timeline]; }, styles: [_c24], encapsulation: 2, changeDetection: 0 });\nAreaChartStackedComponent.propDecorators = {\n legend: [{ type: Input }],\n legendTitle: [{ type: Input }],\n legendPosition: [{ type: Input }],\n xAxis: [{ type: Input }],\n yAxis: [{ type: Input }],\n showXAxisLabel: [{ type: Input }],\n showYAxisLabel: [{ type: Input }],\n xAxisLabel: [{ type: Input }],\n yAxisLabel: [{ type: Input }],\n timeline: [{ type: Input }],\n gradient: [{ type: Input }],\n showGridLines: [{ type: Input }],\n curve: [{ type: Input }],\n activeEntries: [{ type: Input }],\n schemeType: [{ type: Input }],\n trimXAxisTicks: [{ type: Input }],\n trimYAxisTicks: [{ type: Input }],\n rotateXAxisTicks: [{ type: Input }],\n maxXAxisTickLength: [{ type: Input }],\n maxYAxisTickLength: [{ type: Input }],\n xAxisTickFormatting: [{ type: Input }],\n yAxisTickFormatting: [{ type: Input }],\n xAxisTicks: [{ type: Input }],\n yAxisTicks: [{ type: Input }],\n roundDomains: [{ type: Input }],\n tooltipDisabled: [{ type: Input }],\n xScaleMin: [{ type: Input }],\n xScaleMax: [{ type: Input }],\n yScaleMin: [{ type: Input }],\n yScaleMax: [{ type: Input }],\n activate: [{ type: Output }],\n deactivate: [{ type: Output }],\n tooltipTemplate: [{ type: ContentChild, args: ['tooltipTemplate',] }],\n seriesTooltipTemplate: [{ type: ContentChild, args: ['seriesTooltipTemplate',] }],\n hideCircles: [{ type: HostListener, args: ['mouseleave',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AreaChartStackedComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-charts-area-chart-stacked',\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 \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:none}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{opacity:.2;transition:opacity .1s ease-in-out}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{fill:none;stroke:#ddd;stroke-width:1}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-dasharray:5;stroke-dashoffset:5;stroke-width:1}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill:#000;fill-opacity:.05}.ngx-charts .gridline-path-dotted{fill:none;stroke:#ddd;stroke-dasharray:1,20;stroke-dashoffset:3;stroke-width:1}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"]\n }]\n }], null, { legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], curve: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], hideCircles: [{\n type: HostListener,\n args: ['mouseleave']\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], timeline: [{\n type: Input\n }], gradient: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], xScaleMin: [{\n type: Input\n }], xScaleMax: [{\n type: Input\n }], yScaleMin: [{\n type: Input\n }], yScaleMax: [{\n type: Input\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }], seriesTooltipTemplate: [{\n type: ContentChild,\n args: ['seriesTooltipTemplate']\n }] }); })();\n\nfunction sortLinear(data, property, direction = 'asc') {\n return data.sort((a, b) => {\n if (direction === 'asc') {\n return a[property] - b[property];\n }\n else {\n return b[property] - a[property];\n }\n });\n}\nfunction sortByDomain(data, property, direction = 'asc', domain) {\n return data.sort((a, b) => {\n const aVal = a[property];\n const bVal = b[property];\n const aIdx = domain.indexOf(aVal);\n const bIdx = domain.indexOf(bVal);\n if (direction === 'asc') {\n return aIdx - bIdx;\n }\n else {\n return bIdx - aIdx;\n }\n });\n}\nfunction sortByTime(data, property, direction = 'asc') {\n return data.sort((a, b) => {\n const aDate = a[property].getTime();\n const bDate = b[property].getTime();\n if (direction === 'asc') {\n if (aDate > bDate)\n return 1;\n if (bDate > aDate)\n return -1;\n return 0;\n }\n else {\n if (aDate > bDate)\n return -1;\n if (bDate > aDate)\n return 1;\n return 0;\n }\n });\n}\n\nclass AreaSeriesComponent {\n constructor() {\n this.baseValue = 'auto';\n this.stacked = false;\n this.normalized = false;\n this.animations = true;\n this.select = new EventEmitter();\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.updateGradient();\n let currentArea;\n let startingArea;\n const xProperty = d => {\n const label = d.name;\n return this.xScale(label);\n };\n if (this.stacked || this.normalized) {\n currentArea = area()\n .x(xProperty)\n .y0((d, i) => this.yScale(d.d0))\n .y1((d, i) => this.yScale(d.d1));\n startingArea = area()\n .x(xProperty)\n .y0(d => this.yScale.range()[0])\n .y1(d => this.yScale.range()[0]);\n }\n else {\n currentArea = area()\n .x(xProperty)\n .y0(() => (this.baseValue === 'auto' ? this.yScale.range()[0] : this.yScale(this.baseValue)))\n .y1(d => this.yScale(d.value));\n startingArea = area()\n .x(xProperty)\n .y0(d => (this.baseValue === 'auto' ? this.yScale.range()[0] : this.yScale(this.baseValue)))\n .y1(d => (this.baseValue === 'auto' ? this.yScale.range()[0] : this.yScale(this.baseValue)));\n }\n currentArea.curve(this.curve);\n startingArea.curve(this.curve);\n this.opacity = 0.8;\n let data = this.data.series;\n if (this.scaleType === 'linear') {\n data = sortLinear(data, 'name');\n }\n else if (this.scaleType === 'time') {\n data = sortByTime(data, 'name');\n }\n else {\n data = sortByDomain(data, 'name', 'asc', this.xScale.domain());\n }\n this.path = currentArea(data);\n this.startingPath = startingArea(data);\n }\n updateGradient() {\n if (this.colors.scaleType === 'linear') {\n this.hasGradient = true;\n if (this.stacked || this.normalized) {\n const d0values = this.data.series.map(d => d.d0);\n const d1values = this.data.series.map(d => d.d1);\n const max = Math.max(...d1values);\n const min = Math.min(...d0values);\n this.gradientStops = this.colors.getLinearGradientStops(max, min);\n }\n else {\n const values = this.data.series.map(d => d.value);\n const max = Math.max(...values);\n this.gradientStops = this.colors.getLinearGradientStops(max);\n }\n }\n else {\n this.hasGradient = false;\n this.gradientStops = undefined;\n }\n }\n isActive(entry) {\n if (!this.activeEntries)\n return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name;\n });\n return item !== undefined;\n }\n isInactive(entry) {\n if (!this.activeEntries || this.activeEntries.length === 0)\n return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name;\n });\n return item === undefined;\n }\n}\nAreaSeriesComponent.ɵfac = function AreaSeriesComponent_Factory(t) { return new (t || AreaSeriesComponent)(); };\nAreaSeriesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: AreaSeriesComponent, selectors: [[\"g\", \"ngx-charts-area-series\", \"\"]], inputs: { baseValue: \"baseValue\", stacked: \"stacked\", normalized: \"normalized\", animations: \"animations\", data: \"data\", xScale: \"xScale\", yScale: \"yScale\", colors: \"colors\", scaleType: \"scaleType\", gradient: \"gradient\", curve: \"curve\", activeEntries: \"activeEntries\" }, outputs: { select: \"select\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c25, decls: 1, vars: 12, consts: [[\"ngx-charts-area\", \"\", 1, \"area-series\", 3, \"data\", \"path\", \"fill\", \"stops\", \"startingPath\", \"opacity\", \"gradient\", \"animations\"]], template: function AreaSeriesComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"g\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"active\", ctx.isActive(ctx.data))(\"inactive\", ctx.isInactive(ctx.data));\n ɵngcc0.ɵɵproperty(\"data\", ctx.data)(\"path\", ctx.path)(\"fill\", ctx.colors.getColor(ctx.data.name))(\"stops\", ctx.gradientStops)(\"startingPath\", ctx.startingPath)(\"opacity\", ctx.opacity)(\"gradient\", ctx.gradient || ctx.hasGradient)(\"animations\", ctx.animations);\n } }, directives: [AreaComponent], encapsulation: 2, changeDetection: 0 });\nAreaSeriesComponent.propDecorators = {\n data: [{ type: Input }],\n xScale: [{ type: Input }],\n yScale: [{ type: Input }],\n baseValue: [{ type: Input }],\n colors: [{ type: Input }],\n scaleType: [{ type: Input }],\n stacked: [{ type: Input }],\n normalized: [{ type: Input }],\n gradient: [{ type: Input }],\n curve: [{ type: Input }],\n activeEntries: [{ type: Input }],\n animations: [{ type: Input }],\n select: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AreaSeriesComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-area-series]',\n template: `\n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return []; }, { baseValue: [{\n type: Input\n }], stacked: [{\n type: Input\n }], normalized: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }], data: [{\n type: Input\n }], xScale: [{\n type: Input\n }], yScale: [{\n type: Input\n }], colors: [{\n type: Input\n }], scaleType: [{\n type: Input\n }], gradient: [{\n type: Input\n }], curve: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }] }); })();\n\nclass AreaChartModule {\n}\nAreaChartModule.ɵfac = function AreaChartModule_Factory(t) { return new (t || AreaChartModule)(); };\nAreaChartModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: AreaChartModule });\nAreaChartModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[ChartCommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AreaChartModule, [{\n type: NgModule,\n args: [{\n imports: [ChartCommonModule],\n declarations: [AreaChartComponent, AreaChartNormalizedComponent, AreaChartStackedComponent, AreaSeriesComponent],\n exports: [AreaChartComponent, AreaChartNormalizedComponent, AreaChartStackedComponent, AreaSeriesComponent]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(AreaChartModule, { declarations: [AreaChartComponent, AreaChartNormalizedComponent, AreaChartStackedComponent, AreaSeriesComponent], imports: [ChartCommonModule], exports: [AreaChartComponent, AreaChartNormalizedComponent, AreaChartStackedComponent, AreaSeriesComponent] }); })();\n\nclass BarComponent {\n constructor(element) {\n this.roundEdges = true;\n this.gradient = false;\n this.offset = 0;\n this.isActive = false;\n this.animations = true;\n this.noBarWhenZero = true;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.hasGradient = false;\n this.hideBar = false;\n this.element = element.nativeElement;\n }\n ngOnChanges(changes) {\n if (changes.roundEdges) {\n this.loadAnimation();\n }\n this.update();\n }\n update() {\n this.gradientId = 'grad' + id().toString();\n this.gradientFill = `url(#${this.gradientId})`;\n if (this.gradient || this.stops) {\n this.gradientStops = this.getGradient();\n this.hasGradient = true;\n }\n else {\n this.hasGradient = false;\n }\n this.updatePathEl();\n this.checkToHideBar();\n }\n loadAnimation() {\n this.path = this.getStartingPath();\n setTimeout(this.update.bind(this), 100);\n }\n updatePathEl() {\n const node = select(this.element).select('.bar');\n const path = this.getPath();\n if (this.animations) {\n node.transition().duration(500).attr('d', path);\n }\n else {\n node.attr('d', path);\n }\n }\n getGradient() {\n if (this.stops) {\n return this.stops;\n }\n return [\n {\n offset: 0,\n color: this.fill,\n opacity: this.getStartOpacity()\n },\n {\n offset: 100,\n color: this.fill,\n opacity: 1\n }\n ];\n }\n getStartingPath() {\n if (!this.animations) {\n return this.getPath();\n }\n let radius = this.getRadius();\n let path;\n if (this.roundEdges) {\n if (this.orientation === 'vertical') {\n radius = Math.min(this.height, radius);\n path = roundedRect(this.x, this.y + this.height, this.width, 1, 0, this.edges);\n }\n else if (this.orientation === 'horizontal') {\n radius = Math.min(this.width, radius);\n path = roundedRect(this.x, this.y, 1, this.height, 0, this.edges);\n }\n }\n else {\n if (this.orientation === 'vertical') {\n path = roundedRect(this.x, this.y + this.height, this.width, 1, 0, this.edges);\n }\n else if (this.orientation === 'horizontal') {\n path = roundedRect(this.x, this.y, 1, this.height, 0, this.edges);\n }\n }\n return path;\n }\n getPath() {\n let radius = this.getRadius();\n let path;\n if (this.roundEdges) {\n if (this.orientation === 'vertical') {\n radius = Math.min(this.height, radius);\n path = roundedRect(this.x, this.y, this.width, this.height, radius, this.edges);\n }\n else if (this.orientation === 'horizontal') {\n radius = Math.min(this.width, radius);\n path = roundedRect(this.x, this.y, this.width, this.height, radius, this.edges);\n }\n }\n else {\n path = roundedRect(this.x, this.y, this.width, this.height, radius, this.edges);\n }\n return path;\n }\n getRadius() {\n let radius = 0;\n if (this.roundEdges && this.height > 5 && this.width > 5) {\n radius = Math.floor(Math.min(5, this.height / 2, this.width / 2));\n }\n return radius;\n }\n getStartOpacity() {\n if (this.roundEdges) {\n return 0.2;\n }\n else {\n return 0.5;\n }\n }\n get edges() {\n let edges = [false, false, false, false];\n if (this.roundEdges) {\n if (this.orientation === 'vertical') {\n if (this.data.value > 0) {\n edges = [true, true, false, false];\n }\n else {\n edges = [false, false, true, true];\n }\n }\n else if (this.orientation === 'horizontal') {\n if (this.data.value > 0) {\n edges = [false, true, false, true];\n }\n else {\n edges = [true, false, true, false];\n }\n }\n }\n return edges;\n }\n onMouseEnter() {\n this.activate.emit(this.data);\n }\n onMouseLeave() {\n this.deactivate.emit(this.data);\n }\n checkToHideBar() {\n this.hideBar =\n this.noBarWhenZero &&\n ((this.orientation === 'vertical' && this.height === 0) ||\n (this.orientation === 'horizontal' && this.width === 0));\n }\n}\nBarComponent.ɵfac = function BarComponent_Factory(t) { return new (t || BarComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nBarComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: BarComponent, selectors: [[\"g\", \"ngx-charts-bar\", \"\"]], hostBindings: function BarComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"mouseenter\", function BarComponent_mouseenter_HostBindingHandler() { return ctx.onMouseEnter(); })(\"mouseleave\", function BarComponent_mouseleave_HostBindingHandler() { return ctx.onMouseLeave(); });\n } }, inputs: { roundEdges: \"roundEdges\", gradient: \"gradient\", offset: \"offset\", isActive: \"isActive\", animations: \"animations\", noBarWhenZero: \"noBarWhenZero\", fill: \"fill\", data: \"data\", width: \"width\", height: \"height\", x: \"x\", y: \"y\", orientation: \"orientation\", stops: \"stops\", ariaLabel: \"ariaLabel\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c26, decls: 2, vars: 8, consts: [[4, \"ngIf\"], [\"stroke\", \"none\", \"role\", \"img\", \"tabIndex\", \"-1\", 1, \"bar\", 3, \"click\"], [\"ngx-charts-svg-linear-gradient\", \"\", 3, \"orientation\", \"name\", \"stops\"]], template: function BarComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, BarComponent__svg_defs_0_Template, 2, 3, \"defs\", 0);\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(1, \"path\", 1);\n ɵngcc0.ɵɵlistener(\"click\", function BarComponent_Template__svg_path_click_1_listener() { return ctx.select.emit(ctx.data); });\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.hasGradient);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"active\", ctx.isActive)(\"hidden\", ctx.hideBar);\n ɵngcc0.ɵɵattribute(\"d\", ctx.path)(\"aria-label\", ctx.ariaLabel)(\"fill\", ctx.hasGradient ? ctx.gradientFill : ctx.fill);\n } }, directives: [ɵngcc1.NgIf, SvgLinearGradientComponent], encapsulation: 2, changeDetection: 0 });\nBarComponent.ctorParameters = () => [\n { type: ElementRef }\n];\nBarComponent.propDecorators = {\n fill: [{ type: Input }],\n data: [{ type: Input }],\n width: [{ type: Input }],\n height: [{ type: Input }],\n x: [{ type: Input }],\n y: [{ type: Input }],\n orientation: [{ type: Input }],\n roundEdges: [{ type: Input }],\n gradient: [{ type: Input }],\n offset: [{ type: Input }],\n isActive: [{ type: Input }],\n stops: [{ type: Input }],\n animations: [{ type: Input }],\n ariaLabel: [{ type: Input }],\n noBarWhenZero: [{ type: Input }],\n select: [{ type: Output }],\n activate: [{ type: Output }],\n deactivate: [{ type: Output }],\n onMouseEnter: [{ type: HostListener, args: ['mouseenter',] }],\n onMouseLeave: [{ type: HostListener, args: ['mouseleave',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BarComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-bar]',\n template: `\n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { roundEdges: [{\n type: Input\n }], gradient: [{\n type: Input\n }], offset: [{\n type: Input\n }], isActive: [{\n type: Input\n }], animations: [{\n type: Input\n }], noBarWhenZero: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], onMouseEnter: [{\n type: HostListener,\n args: ['mouseenter']\n }], onMouseLeave: [{\n type: HostListener,\n args: ['mouseleave']\n }], fill: [{\n type: Input\n }], data: [{\n type: Input\n }], width: [{\n type: Input\n }], height: [{\n type: Input\n }], x: [{\n type: Input\n }], y: [{\n type: Input\n }], orientation: [{\n type: Input\n }], stops: [{\n type: Input\n }], ariaLabel: [{\n type: Input\n }] }); })();\n\nclass BarHorizontalComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = 'right';\n this.tooltipDisabled = false;\n this.showGridLines = true;\n this.activeEntries = [];\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.barPadding = 8;\n this.roundDomains = false;\n this.roundEdges = true;\n this.showDataLabel = false;\n this.noBarWhenZero = true;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.dataLabelMaxWidth = { negative: 0, positive: 0 };\n }\n update() {\n super.update();\n if (!this.showDataLabel) {\n this.dataLabelMaxWidth = { negative: 0, positive: 0 };\n }\n this.margin = [10, 20 + this.dataLabelMaxWidth.positive, 10, 20 + this.dataLabelMaxWidth.negative];\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n this.formatDates();\n this.xScale = this.getXScale();\n this.yScale = this.getYScale();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n }\n getXScale() {\n this.xDomain = this.getXDomain();\n const scale = scaleLinear().range([0, this.dims.width]).domain(this.xDomain);\n return this.roundDomains ? scale.nice() : scale;\n }\n getYScale() {\n this.yDomain = this.getYDomain();\n const spacing = this.yDomain.length / (this.dims.height / this.barPadding + 1);\n return scaleBand().rangeRound([0, this.dims.height]).paddingInner(spacing).domain(this.yDomain);\n }\n getXDomain() {\n const values = this.results.map(d => d.value);\n const min = this.xScaleMin ? Math.min(this.xScaleMin, ...values) : Math.min(0, ...values);\n const max = this.xScaleMax ? Math.max(this.xScaleMax, ...values) : Math.max(0, ...values);\n return [min, max];\n }\n getYDomain() {\n return this.results.map(d => d.label);\n }\n onClick(data) {\n this.select.emit(data);\n }\n setColors() {\n let domain;\n if (this.schemeType === 'ordinal') {\n domain = this.yDomain;\n }\n else {\n domain = this.xDomain;\n }\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === 'ordinal') {\n opts.domain = this.yDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n }\n else {\n opts.domain = this.xDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onDataLabelMaxWidthChanged(event) {\n if (event.size.negative) {\n this.dataLabelMaxWidth.negative = Math.max(this.dataLabelMaxWidth.negative, event.size.width);\n }\n else {\n this.dataLabelMaxWidth.positive = Math.max(this.dataLabelMaxWidth.positive, event.size.width);\n }\n if (event.index === this.results.length - 1) {\n setTimeout(() => this.update());\n }\n }\n onActivate(item, fromLegend = false) {\n item = this.results.find(d => {\n if (fromLegend) {\n return d.label === item.name;\n }\n else {\n return d.name === item.name;\n }\n });\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value && d.series === item.series;\n });\n if (idx > -1) {\n return;\n }\n this.activeEntries = [item, ...this.activeEntries];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(item, fromLegend = false) {\n item = this.results.find(d => {\n if (fromLegend) {\n return d.label === item.name;\n }\n else {\n return d.name === item.name;\n }\n });\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value && d.series === item.series;\n });\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n}\nBarHorizontalComponent.ɵfac = /*@__PURE__*/ function () { let ɵBarHorizontalComponent_BaseFactory; return function BarHorizontalComponent_Factory(t) { return (ɵBarHorizontalComponent_BaseFactory || (ɵBarHorizontalComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(BarHorizontalComponent)))(t || BarHorizontalComponent); }; }();\nBarHorizontalComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: BarHorizontalComponent, selectors: [[\"ngx-charts-bar-horizontal\"]], contentQueries: function BarHorizontalComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n } }, inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", tooltipDisabled: \"tooltipDisabled\", showGridLines: \"showGridLines\", activeEntries: \"activeEntries\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", barPadding: \"barPadding\", roundDomains: \"roundDomains\", roundEdges: \"roundEdges\", showDataLabel: \"showDataLabel\", noBarWhenZero: \"noBarWhenZero\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", gradient: \"gradient\", schemeType: \"schemeType\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", xScaleMax: \"xScaleMax\", xScaleMin: \"xScaleMin\", dataLabelFormatting: \"dataLabelFormatting\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 5, vars: 25, consts: [[3, \"view\", \"showLegend\", \"legendOptions\", \"activeEntries\", \"animations\", \"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"], [1, \"bar-chart\", \"chart\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"yAxisOffset\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-series-horizontal\", \"\", 3, \"xScale\", \"yScale\", \"colors\", \"series\", \"dims\", \"gradient\", \"tooltipDisabled\", \"tooltipTemplate\", \"activeEntries\", \"roundEdges\", \"animations\", \"showDataLabel\", \"dataLabelFormatting\", \"noBarWhenZero\", \"select\", \"activate\", \"deactivate\", \"dataLabelWidthChanged\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"yAxisOffset\", \"dimensionsChanged\"]], template: function BarHorizontalComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n ɵngcc0.ɵɵlistener(\"legendLabelClick\", function BarHorizontalComponent_Template_ngx_charts_chart_legendLabelClick_0_listener($event) { return ctx.onClick($event); })(\"legendLabelActivate\", function BarHorizontalComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener($event) { return ctx.onActivate($event, true); })(\"legendLabelDeactivate\", function BarHorizontalComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener($event) { return ctx.onDeactivate($event, true); });\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(1, \"g\", 1);\n ɵngcc0.ɵɵtemplate(2, BarHorizontalComponent__svg_g_2_Template, 1, 10, \"g\", 2);\n ɵngcc0.ɵɵtemplate(3, BarHorizontalComponent__svg_g_3_Template, 1, 9, \"g\", 3);\n ɵngcc0.ɵɵelementStart(4, \"g\", 4);\n ɵngcc0.ɵɵlistener(\"select\", function BarHorizontalComponent_Template__svg_g_select_4_listener($event) { return ctx.onClick($event); })(\"activate\", function BarHorizontalComponent_Template__svg_g_activate_4_listener($event) { return ctx.onActivate($event); })(\"deactivate\", function BarHorizontalComponent_Template__svg_g_deactivate_4_listener($event) { return ctx.onDeactivate($event); })(\"dataLabelWidthChanged\", function BarHorizontalComponent_Template__svg_g_dataLabelWidthChanged_4_listener($event) { return ctx.onDataLabelMaxWidthChanged($event); });\n ɵngcc0.ɵɵelementEnd()()();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(22, _c23, ctx.width, ctx.height))(\"showLegend\", ctx.legend)(\"legendOptions\", ctx.legendOptions)(\"activeEntries\", ctx.activeEntries)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.xAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.yAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"xScale\", ctx.xScale)(\"yScale\", ctx.yScale)(\"colors\", ctx.colors)(\"series\", ctx.results)(\"dims\", ctx.dims)(\"gradient\", ctx.gradient)(\"tooltipDisabled\", ctx.tooltipDisabled)(\"tooltipTemplate\", ctx.tooltipTemplate)(\"activeEntries\", ctx.activeEntries)(\"roundEdges\", ctx.roundEdges)(\"animations\", ctx.animations)(\"showDataLabel\", ctx.showDataLabel)(\"dataLabelFormatting\", ctx.dataLabelFormatting)(\"noBarWhenZero\", ctx.noBarWhenZero);\n } }, directives: function () { return [ChartComponent, ɵngcc1.NgIf, XAxisComponent, YAxisComponent, SeriesHorizontal]; }, styles: [_c24], encapsulation: 2, changeDetection: 0 });\nBarHorizontalComponent.propDecorators = {\n legend: [{ type: Input }],\n legendTitle: [{ type: Input }],\n legendPosition: [{ type: Input }],\n xAxis: [{ type: Input }],\n yAxis: [{ type: Input }],\n showXAxisLabel: [{ type: Input }],\n showYAxisLabel: [{ type: Input }],\n xAxisLabel: [{ type: Input }],\n yAxisLabel: [{ type: Input }],\n tooltipDisabled: [{ type: Input }],\n gradient: [{ type: Input }],\n showGridLines: [{ type: Input }],\n activeEntries: [{ type: Input }],\n schemeType: [{ type: Input }],\n trimXAxisTicks: [{ type: Input }],\n trimYAxisTicks: [{ type: Input }],\n rotateXAxisTicks: [{ type: Input }],\n maxXAxisTickLength: [{ type: Input }],\n maxYAxisTickLength: [{ type: Input }],\n xAxisTickFormatting: [{ type: Input }],\n yAxisTickFormatting: [{ type: Input }],\n xAxisTicks: [{ type: Input }],\n yAxisTicks: [{ type: Input }],\n barPadding: [{ type: Input }],\n roundDomains: [{ type: Input }],\n roundEdges: [{ type: Input }],\n xScaleMax: [{ type: Input }],\n xScaleMin: [{ type: Input }],\n showDataLabel: [{ type: Input }],\n dataLabelFormatting: [{ type: Input }],\n noBarWhenZero: [{ type: Input }],\n activate: [{ type: Output }],\n deactivate: [{ type: Output }],\n tooltipTemplate: [{ type: ContentChild, args: ['tooltipTemplate',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BarHorizontalComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-charts-bar-horizontal',\n template: `\n \n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:none}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{opacity:.2;transition:opacity .1s ease-in-out}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{fill:none;stroke:#ddd;stroke-width:1}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-dasharray:5;stroke-dashoffset:5;stroke-width:1}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill:#000;fill-opacity:.05}.ngx-charts .gridline-path-dotted{fill:none;stroke:#ddd;stroke-dasharray:1,20;stroke-dashoffset:3;stroke-width:1}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"]\n }]\n }], null, { legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], barPadding: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], roundEdges: [{\n type: Input\n }], showDataLabel: [{\n type: Input\n }], noBarWhenZero: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], gradient: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], xScaleMax: [{\n type: Input\n }], xScaleMin: [{\n type: Input\n }], dataLabelFormatting: [{\n type: Input\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] }); })();\n\nclass BarHorizontal2DComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = 'right';\n this.tooltipDisabled = false;\n this.showGridLines = true;\n this.activeEntries = [];\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.groupPadding = 16;\n this.barPadding = 8;\n this.roundDomains = false;\n this.roundEdges = true;\n this.showDataLabel = false;\n this.noBarWhenZero = true;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.dataLabelMaxWidth = { negative: 0, positive: 0 };\n }\n update() {\n super.update();\n if (!this.showDataLabel) {\n this.dataLabelMaxWidth = { negative: 0, positive: 0 };\n }\n this.margin = [10, 20 + this.dataLabelMaxWidth.positive, 10, 20 + this.dataLabelMaxWidth.negative];\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n this.formatDates();\n this.groupDomain = this.getGroupDomain();\n this.innerDomain = this.getInnerDomain();\n this.valuesDomain = this.getValueDomain();\n this.groupScale = this.getGroupScale();\n this.innerScale = this.getInnerScale();\n this.valueScale = this.getValueScale();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n }\n getGroupScale() {\n const spacing = this.groupDomain.length / (this.dims.height / this.groupPadding + 1);\n return scaleBand()\n .rangeRound([0, this.dims.height])\n .paddingInner(spacing)\n .paddingOuter(spacing / 2)\n .domain(this.groupDomain);\n }\n getInnerScale() {\n const height = this.groupScale.bandwidth();\n const spacing = this.innerDomain.length / (height / this.barPadding + 1);\n return scaleBand().rangeRound([0, height]).paddingInner(spacing).domain(this.innerDomain);\n }\n getValueScale() {\n const scale = scaleLinear().range([0, this.dims.width]).domain(this.valuesDomain);\n return this.roundDomains ? scale.nice() : scale;\n }\n getGroupDomain() {\n const domain = [];\n for (const group of this.results) {\n if (!domain.includes(group.label)) {\n domain.push(group.label);\n }\n }\n return domain;\n }\n getInnerDomain() {\n const domain = [];\n for (const group of this.results) {\n for (const d of group.series) {\n if (!domain.includes(d.label)) {\n domain.push(d.label);\n }\n }\n }\n return domain;\n }\n getValueDomain() {\n const domain = [];\n for (const group of this.results) {\n for (const d of group.series) {\n if (!domain.includes(d.value)) {\n domain.push(d.value);\n }\n }\n }\n const min = Math.min(0, ...domain);\n const max = this.xScaleMax ? Math.max(this.xScaleMax, ...domain) : Math.max(0, ...domain);\n return [min, max];\n }\n groupTransform(group) {\n return `translate(0, ${this.groupScale(group.label)})`;\n }\n onClick(data, group) {\n if (group) {\n data.series = group.name;\n }\n this.select.emit(data);\n }\n trackBy(index, item) {\n return item.name;\n }\n setColors() {\n let domain;\n if (this.schemeType === 'ordinal') {\n domain = this.innerDomain;\n }\n else {\n domain = this.valuesDomain;\n }\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === 'ordinal') {\n opts.domain = this.innerDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n }\n else {\n opts.domain = this.valuesDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onDataLabelMaxWidthChanged(event, groupIndex) {\n if (event.size.negative) {\n this.dataLabelMaxWidth.negative = Math.max(this.dataLabelMaxWidth.negative, event.size.width);\n }\n else {\n this.dataLabelMaxWidth.positive = Math.max(this.dataLabelMaxWidth.positive, event.size.width);\n }\n if (groupIndex === this.results.length - 1) {\n setTimeout(() => this.update());\n }\n }\n onActivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n const items = this.results\n .map(g => g.series)\n .flat()\n .filter(i => {\n if (fromLegend) {\n return i.label === item.name;\n }\n else {\n return i.name === item.name && i.series === item.series;\n }\n });\n this.activeEntries = [...items];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n this.activeEntries = this.activeEntries.filter(i => {\n if (fromLegend) {\n return i.label !== item.name;\n }\n else {\n return !(i.name === item.name && i.series === item.series);\n }\n });\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n}\nBarHorizontal2DComponent.ɵfac = /*@__PURE__*/ function () { let ɵBarHorizontal2DComponent_BaseFactory; return function BarHorizontal2DComponent_Factory(t) { return (ɵBarHorizontal2DComponent_BaseFactory || (ɵBarHorizontal2DComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(BarHorizontal2DComponent)))(t || BarHorizontal2DComponent); }; }();\nBarHorizontal2DComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: BarHorizontal2DComponent, selectors: [[\"ngx-charts-bar-horizontal-2d\"]], contentQueries: function BarHorizontal2DComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n } }, inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", tooltipDisabled: \"tooltipDisabled\", showGridLines: \"showGridLines\", activeEntries: \"activeEntries\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", groupPadding: \"groupPadding\", barPadding: \"barPadding\", roundDomains: \"roundDomains\", roundEdges: \"roundEdges\", showDataLabel: \"showDataLabel\", noBarWhenZero: \"noBarWhenZero\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", gradient: \"gradient\", schemeType: \"schemeType\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", xScaleMax: \"xScaleMax\", dataLabelFormatting: \"dataLabelFormatting\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 6, vars: 17, consts: [[3, \"view\", \"showLegend\", \"legendOptions\", \"activeEntries\", \"animations\", \"legendLabelActivate\", \"legendLabelDeactivate\", \"legendLabelClick\"], [1, \"bar-chart\", \"chart\"], [\"ngx-charts-grid-panel-series\", \"\", \"orient\", \"horizontal\", 3, \"xScale\", \"yScale\", \"data\", \"dims\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"yAxisOffset\", \"dimensionsChanged\", 4, \"ngIf\"], [4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"yAxisOffset\", \"dimensionsChanged\"], [\"ngx-charts-series-horizontal\", \"\", 3, \"xScale\", \"activeEntries\", \"yScale\", \"colors\", \"series\", \"dims\", \"gradient\", \"tooltipDisabled\", \"tooltipTemplate\", \"seriesName\", \"roundEdges\", \"animations\", \"showDataLabel\", \"dataLabelFormatting\", \"noBarWhenZero\", \"select\", \"activate\", \"deactivate\", \"dataLabelWidthChanged\"]], template: function BarHorizontal2DComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n ɵngcc0.ɵɵlistener(\"legendLabelActivate\", function BarHorizontal2DComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener($event) { return ctx.onActivate($event, undefined, true); })(\"legendLabelDeactivate\", function BarHorizontal2DComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener($event) { return ctx.onDeactivate($event, undefined, true); })(\"legendLabelClick\", function BarHorizontal2DComponent_Template_ngx_charts_chart_legendLabelClick_0_listener($event) { return ctx.onClick($event); });\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(1, \"g\", 1);\n ɵngcc0.ɵɵelement(2, \"g\", 2);\n ɵngcc0.ɵɵtemplate(3, BarHorizontal2DComponent__svg_g_3_Template, 1, 10, \"g\", 3);\n ɵngcc0.ɵɵtemplate(4, BarHorizontal2DComponent__svg_g_4_Template, 1, 9, \"g\", 4);\n ɵngcc0.ɵɵtemplate(5, BarHorizontal2DComponent__svg_g_5_Template, 2, 17, \"g\", 5);\n ɵngcc0.ɵɵelementEnd()();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(14, _c23, ctx.width, ctx.height))(\"showLegend\", ctx.legend)(\"legendOptions\", ctx.legendOptions)(\"activeEntries\", ctx.activeEntries)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"xScale\", ctx.valueScale)(\"yScale\", ctx.groupScale)(\"data\", ctx.results)(\"dims\", ctx.dims);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.xAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.yAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.results)(\"ngForTrackBy\", ctx.trackBy);\n } }, directives: function () { return [ChartComponent, GridPanelSeriesComponent, ɵngcc1.NgIf, XAxisComponent, YAxisComponent, ɵngcc1.NgForOf, SeriesHorizontal]; }, styles: [_c24], encapsulation: 2, data: { animation: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ] }, changeDetection: 0 });\nBarHorizontal2DComponent.propDecorators = {\n legend: [{ type: Input }],\n legendTitle: [{ type: Input }],\n legendPosition: [{ type: Input }],\n xAxis: [{ type: Input }],\n yAxis: [{ type: Input }],\n showXAxisLabel: [{ type: Input }],\n showYAxisLabel: [{ type: Input }],\n xAxisLabel: [{ type: Input }],\n yAxisLabel: [{ type: Input }],\n tooltipDisabled: [{ type: Input }],\n gradient: [{ type: Input }],\n showGridLines: [{ type: Input }],\n activeEntries: [{ type: Input }],\n schemeType: [{ type: Input }],\n trimXAxisTicks: [{ type: Input }],\n trimYAxisTicks: [{ type: Input }],\n rotateXAxisTicks: [{ type: Input }],\n maxXAxisTickLength: [{ type: Input }],\n maxYAxisTickLength: [{ type: Input }],\n xAxisTickFormatting: [{ type: Input }],\n yAxisTickFormatting: [{ type: Input }],\n xAxisTicks: [{ type: Input }],\n yAxisTicks: [{ type: Input }],\n groupPadding: [{ type: Input }],\n barPadding: [{ type: Input }],\n roundDomains: [{ type: Input }],\n roundEdges: [{ type: Input }],\n xScaleMax: [{ type: Input }],\n showDataLabel: [{ type: Input }],\n dataLabelFormatting: [{ type: Input }],\n noBarWhenZero: [{ type: Input }],\n activate: [{ type: Output }],\n deactivate: [{ type: Output }],\n tooltipTemplate: [{ type: ContentChild, args: ['tooltipTemplate',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BarHorizontal2DComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-charts-bar-horizontal-2d',\n template: `\n \n \n \n \n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ],\n styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:none}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{opacity:.2;transition:opacity .1s ease-in-out}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{fill:none;stroke:#ddd;stroke-width:1}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-dasharray:5;stroke-dashoffset:5;stroke-width:1}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill:#000;fill-opacity:.05}.ngx-charts .gridline-path-dotted{fill:none;stroke:#ddd;stroke-dasharray:1,20;stroke-dashoffset:3;stroke-width:1}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"]\n }]\n }], null, { legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], groupPadding: [{\n type: Input\n }], barPadding: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], roundEdges: [{\n type: Input\n }], showDataLabel: [{\n type: Input\n }], noBarWhenZero: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], gradient: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], xScaleMax: [{\n type: Input\n }], dataLabelFormatting: [{\n type: Input\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] }); })();\n\nclass BarHorizontalNormalizedComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = 'right';\n this.tooltipDisabled = false;\n this.showGridLines = true;\n this.activeEntries = [];\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.barPadding = 8;\n this.roundDomains = false;\n this.noBarWhenZero = true;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n }\n update() {\n super.update();\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n this.formatDates();\n this.groupDomain = this.getGroupDomain();\n this.innerDomain = this.getInnerDomain();\n this.valueDomain = this.getValueDomain();\n this.xScale = this.getXScale();\n this.yScale = this.getYScale();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n }\n getGroupDomain() {\n const domain = [];\n for (const group of this.results) {\n if (!domain.includes(group.label)) {\n domain.push(group.label);\n }\n }\n return domain;\n }\n getInnerDomain() {\n const domain = [];\n for (const group of this.results) {\n for (const d of group.series) {\n if (!domain.includes(d.label)) {\n domain.push(d.label);\n }\n }\n }\n return domain;\n }\n getValueDomain() {\n return [0, 100];\n }\n getYScale() {\n const spacing = this.groupDomain.length / (this.dims.height / this.barPadding + 1);\n return scaleBand().rangeRound([0, this.dims.height]).paddingInner(spacing).domain(this.groupDomain);\n }\n getXScale() {\n const scale = scaleLinear().range([0, this.dims.width]).domain(this.valueDomain);\n return this.roundDomains ? scale.nice() : scale;\n }\n groupTransform(group) {\n return `translate(0, ${this.yScale(group.name)})`;\n }\n onClick(data, group) {\n if (group) {\n data.series = group.name;\n }\n this.select.emit(data);\n }\n trackBy(index, item) {\n return item.name;\n }\n setColors() {\n let domain;\n if (this.schemeType === 'ordinal') {\n domain = this.innerDomain;\n }\n else {\n domain = this.valueDomain;\n }\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === 'ordinal') {\n opts.domain = this.innerDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n }\n else {\n opts.domain = this.valueDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onActivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n const items = this.results\n .map(g => g.series)\n .flat()\n .filter(i => {\n if (fromLegend) {\n return i.label === item.name;\n }\n else {\n return i.name === item.name && i.series === item.series;\n }\n });\n this.activeEntries = [...items];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n this.activeEntries = this.activeEntries.filter(i => {\n if (fromLegend) {\n return i.label !== item.name;\n }\n else {\n return !(i.name === item.name && i.series === item.series);\n }\n });\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n}\nBarHorizontalNormalizedComponent.ɵfac = /*@__PURE__*/ function () { let ɵBarHorizontalNormalizedComponent_BaseFactory; return function BarHorizontalNormalizedComponent_Factory(t) { return (ɵBarHorizontalNormalizedComponent_BaseFactory || (ɵBarHorizontalNormalizedComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(BarHorizontalNormalizedComponent)))(t || BarHorizontalNormalizedComponent); }; }();\nBarHorizontalNormalizedComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: BarHorizontalNormalizedComponent, selectors: [[\"ngx-charts-bar-horizontal-normalized\"]], contentQueries: function BarHorizontalNormalizedComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n } }, inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", tooltipDisabled: \"tooltipDisabled\", showGridLines: \"showGridLines\", activeEntries: \"activeEntries\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", barPadding: \"barPadding\", roundDomains: \"roundDomains\", noBarWhenZero: \"noBarWhenZero\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", gradient: \"gradient\", schemeType: \"schemeType\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 5, vars: 13, consts: [[3, \"view\", \"showLegend\", \"legendOptions\", \"activeEntries\", \"animations\", \"legendLabelActivate\", \"legendLabelDeactivate\", \"legendLabelClick\"], [1, \"bar-chart\", \"chart\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-series-horizontal\", \"\", \"type\", \"normalized\", 3, \"xScale\", \"yScale\", \"activeEntries\", \"colors\", \"series\", \"dims\", \"gradient\", \"tooltipDisabled\", \"tooltipTemplate\", \"seriesName\", \"animations\", \"noBarWhenZero\", \"select\", \"activate\", \"deactivate\"]], template: function BarHorizontalNormalizedComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n ɵngcc0.ɵɵlistener(\"legendLabelActivate\", function BarHorizontalNormalizedComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener($event) { return ctx.onActivate($event, undefined, true); })(\"legendLabelDeactivate\", function BarHorizontalNormalizedComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener($event) { return ctx.onDeactivate($event, undefined, true); })(\"legendLabelClick\", function BarHorizontalNormalizedComponent_Template_ngx_charts_chart_legendLabelClick_0_listener($event) { return ctx.onClick($event); });\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(1, \"g\", 1);\n ɵngcc0.ɵɵtemplate(2, BarHorizontalNormalizedComponent__svg_g_2_Template, 1, 10, \"g\", 2);\n ɵngcc0.ɵɵtemplate(3, BarHorizontalNormalizedComponent__svg_g_3_Template, 1, 8, \"g\", 3);\n ɵngcc0.ɵɵtemplate(4, BarHorizontalNormalizedComponent__svg_g_4_Template, 2, 14, \"g\", 4);\n ɵngcc0.ɵɵelementEnd()();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(10, _c23, ctx.width, ctx.height))(\"showLegend\", ctx.legend)(\"legendOptions\", ctx.legendOptions)(\"activeEntries\", ctx.activeEntries)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.xAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.yAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.results)(\"ngForTrackBy\", ctx.trackBy);\n } }, directives: function () { return [ChartComponent, ɵngcc1.NgIf, XAxisComponent, YAxisComponent, ɵngcc1.NgForOf, SeriesHorizontal]; }, styles: [_c24], encapsulation: 2, data: { animation: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ] }, changeDetection: 0 });\nBarHorizontalNormalizedComponent.propDecorators = {\n legend: [{ type: Input }],\n legendTitle: [{ type: Input }],\n legendPosition: [{ type: Input }],\n xAxis: [{ type: Input }],\n yAxis: [{ type: Input }],\n showXAxisLabel: [{ type: Input }],\n showYAxisLabel: [{ type: Input }],\n xAxisLabel: [{ type: Input }],\n yAxisLabel: [{ type: Input }],\n tooltipDisabled: [{ type: Input }],\n gradient: [{ type: Input }],\n showGridLines: [{ type: Input }],\n activeEntries: [{ type: Input }],\n schemeType: [{ type: Input }],\n trimXAxisTicks: [{ type: Input }],\n trimYAxisTicks: [{ type: Input }],\n rotateXAxisTicks: [{ type: Input }],\n maxXAxisTickLength: [{ type: Input }],\n maxYAxisTickLength: [{ type: Input }],\n xAxisTickFormatting: [{ type: Input }],\n yAxisTickFormatting: [{ type: Input }],\n xAxisTicks: [{ type: Input }],\n yAxisTicks: [{ type: Input }],\n barPadding: [{ type: Input }],\n roundDomains: [{ type: Input }],\n noBarWhenZero: [{ type: Input }],\n activate: [{ type: Output }],\n deactivate: [{ type: Output }],\n tooltipTemplate: [{ type: ContentChild, args: ['tooltipTemplate',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BarHorizontalNormalizedComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-charts-bar-horizontal-normalized',\n template: `\n \n \n \n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ],\n styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:none}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{opacity:.2;transition:opacity .1s ease-in-out}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{fill:none;stroke:#ddd;stroke-width:1}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-dasharray:5;stroke-dashoffset:5;stroke-width:1}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill:#000;fill-opacity:.05}.ngx-charts .gridline-path-dotted{fill:none;stroke:#ddd;stroke-dasharray:1,20;stroke-dashoffset:3;stroke-width:1}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"]\n }]\n }], null, { legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], barPadding: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], noBarWhenZero: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], gradient: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] }); })();\n\nclass BarHorizontalStackedComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = 'right';\n this.tooltipDisabled = false;\n this.showGridLines = true;\n this.activeEntries = [];\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.barPadding = 8;\n this.roundDomains = false;\n this.showDataLabel = false;\n this.noBarWhenZero = true;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.dataLabelMaxWidth = { negative: 0, positive: 0 };\n }\n update() {\n super.update();\n if (!this.showDataLabel) {\n this.dataLabelMaxWidth = { negative: 0, positive: 0 };\n }\n this.margin = [10, 20 + this.dataLabelMaxWidth.positive, 10, 20 + this.dataLabelMaxWidth.negative];\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n this.formatDates();\n this.groupDomain = this.getGroupDomain();\n this.innerDomain = this.getInnerDomain();\n this.valueDomain = this.getValueDomain();\n this.xScale = this.getXScale();\n this.yScale = this.getYScale();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n }\n getGroupDomain() {\n const domain = [];\n for (const group of this.results) {\n if (!domain.includes(group.label)) {\n domain.push(group.label);\n }\n }\n return domain;\n }\n getInnerDomain() {\n const domain = [];\n for (const group of this.results) {\n for (const d of group.series) {\n if (!domain.includes(d.label)) {\n domain.push(d.label);\n }\n }\n }\n return domain;\n }\n getValueDomain() {\n const domain = [];\n let smallest = 0;\n let biggest = 0;\n for (const group of this.results) {\n let smallestSum = 0;\n let biggestSum = 0;\n for (const d of group.series) {\n if (d.value < 0) {\n smallestSum += d.value;\n }\n else {\n biggestSum += d.value;\n }\n smallest = d.value < smallest ? d.value : smallest;\n biggest = d.value > biggest ? d.value : biggest;\n }\n domain.push(smallestSum);\n domain.push(biggestSum);\n }\n domain.push(smallest);\n domain.push(biggest);\n const min = Math.min(0, ...domain);\n const max = this.xScaleMax ? Math.max(this.xScaleMax, ...domain) : Math.max(...domain);\n return [min, max];\n }\n getYScale() {\n const spacing = this.groupDomain.length / (this.dims.height / this.barPadding + 1);\n return scaleBand().rangeRound([0, this.dims.height]).paddingInner(spacing).domain(this.groupDomain);\n }\n getXScale() {\n const scale = scaleLinear().range([0, this.dims.width]).domain(this.valueDomain);\n return this.roundDomains ? scale.nice() : scale;\n }\n groupTransform(group) {\n return `translate(0, ${this.yScale(group.name)})`;\n }\n onClick(data, group) {\n if (group) {\n data.series = group.name;\n }\n this.select.emit(data);\n }\n trackBy(index, item) {\n return item.name;\n }\n setColors() {\n let domain;\n if (this.schemeType === 'ordinal') {\n domain = this.innerDomain;\n }\n else {\n domain = this.valueDomain;\n }\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === 'ordinal') {\n opts.domain = this.innerDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n }\n else {\n opts.domain = this.valueDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onDataLabelMaxWidthChanged(event, groupIndex) {\n if (event.size.negative) {\n this.dataLabelMaxWidth.negative = Math.max(this.dataLabelMaxWidth.negative, event.size.width);\n }\n else {\n this.dataLabelMaxWidth.positive = Math.max(this.dataLabelMaxWidth.positive, event.size.width);\n }\n if (groupIndex === this.results.length - 1) {\n setTimeout(() => this.update());\n }\n }\n onActivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n const items = this.results\n .map(g => g.series)\n .flat()\n .filter(i => {\n if (fromLegend) {\n return i.label === item.name;\n }\n else {\n return i.name === item.name && i.series === item.series;\n }\n });\n this.activeEntries = [...items];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n this.activeEntries = this.activeEntries.filter(i => {\n if (fromLegend) {\n return i.label !== item.name;\n }\n else {\n return !(i.name === item.name && i.series === item.series);\n }\n });\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n}\nBarHorizontalStackedComponent.ɵfac = /*@__PURE__*/ function () { let ɵBarHorizontalStackedComponent_BaseFactory; return function BarHorizontalStackedComponent_Factory(t) { return (ɵBarHorizontalStackedComponent_BaseFactory || (ɵBarHorizontalStackedComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(BarHorizontalStackedComponent)))(t || BarHorizontalStackedComponent); }; }();\nBarHorizontalStackedComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: BarHorizontalStackedComponent, selectors: [[\"ngx-charts-bar-horizontal-stacked\"]], contentQueries: function BarHorizontalStackedComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n } }, inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", tooltipDisabled: \"tooltipDisabled\", showGridLines: \"showGridLines\", activeEntries: \"activeEntries\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", barPadding: \"barPadding\", roundDomains: \"roundDomains\", showDataLabel: \"showDataLabel\", noBarWhenZero: \"noBarWhenZero\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", gradient: \"gradient\", schemeType: \"schemeType\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", xScaleMax: \"xScaleMax\", dataLabelFormatting: \"dataLabelFormatting\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 5, vars: 13, consts: [[3, \"view\", \"showLegend\", \"legendOptions\", \"activeEntries\", \"animations\", \"legendLabelActivate\", \"legendLabelDeactivate\", \"legendLabelClick\"], [1, \"bar-chart\", \"chart\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"yAxisOffset\", \"dimensionsChanged\", 4, \"ngIf\"], [4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"yAxisOffset\", \"dimensionsChanged\"], [\"ngx-charts-series-horizontal\", \"\", \"type\", \"stacked\", 3, \"xScale\", \"yScale\", \"colors\", \"series\", \"activeEntries\", \"dims\", \"gradient\", \"tooltipDisabled\", \"tooltipTemplate\", \"seriesName\", \"animations\", \"showDataLabel\", \"dataLabelFormatting\", \"noBarWhenZero\", \"select\", \"activate\", \"deactivate\", \"dataLabelWidthChanged\"]], template: function BarHorizontalStackedComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n ɵngcc0.ɵɵlistener(\"legendLabelActivate\", function BarHorizontalStackedComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener($event) { return ctx.onActivate($event, undefined, true); })(\"legendLabelDeactivate\", function BarHorizontalStackedComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener($event) { return ctx.onDeactivate($event, undefined, true); })(\"legendLabelClick\", function BarHorizontalStackedComponent_Template_ngx_charts_chart_legendLabelClick_0_listener($event) { return ctx.onClick($event); });\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(1, \"g\", 1);\n ɵngcc0.ɵɵtemplate(2, BarHorizontalStackedComponent__svg_g_2_Template, 1, 10, \"g\", 2);\n ɵngcc0.ɵɵtemplate(3, BarHorizontalStackedComponent__svg_g_3_Template, 1, 9, \"g\", 3);\n ɵngcc0.ɵɵtemplate(4, BarHorizontalStackedComponent__svg_g_4_Template, 2, 16, \"g\", 4);\n ɵngcc0.ɵɵelementEnd()();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(10, _c23, ctx.width, ctx.height))(\"showLegend\", ctx.legend)(\"legendOptions\", ctx.legendOptions)(\"activeEntries\", ctx.activeEntries)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.xAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.yAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.results)(\"ngForTrackBy\", ctx.trackBy);\n } }, directives: function () { return [ChartComponent, ɵngcc1.NgIf, XAxisComponent, YAxisComponent, ɵngcc1.NgForOf, SeriesHorizontal]; }, styles: [_c24], encapsulation: 2, data: { animation: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ] }, changeDetection: 0 });\nBarHorizontalStackedComponent.propDecorators = {\n legend: [{ type: Input }],\n legendTitle: [{ type: Input }],\n legendPosition: [{ type: Input }],\n xAxis: [{ type: Input }],\n yAxis: [{ type: Input }],\n showXAxisLabel: [{ type: Input }],\n showYAxisLabel: [{ type: Input }],\n xAxisLabel: [{ type: Input }],\n yAxisLabel: [{ type: Input }],\n tooltipDisabled: [{ type: Input }],\n gradient: [{ type: Input }],\n showGridLines: [{ type: Input }],\n activeEntries: [{ type: Input }],\n schemeType: [{ type: Input }],\n trimXAxisTicks: [{ type: Input }],\n trimYAxisTicks: [{ type: Input }],\n rotateXAxisTicks: [{ type: Input }],\n maxXAxisTickLength: [{ type: Input }],\n maxYAxisTickLength: [{ type: Input }],\n xAxisTickFormatting: [{ type: Input }],\n yAxisTickFormatting: [{ type: Input }],\n xAxisTicks: [{ type: Input }],\n yAxisTicks: [{ type: Input }],\n barPadding: [{ type: Input }],\n roundDomains: [{ type: Input }],\n xScaleMax: [{ type: Input }],\n showDataLabel: [{ type: Input }],\n dataLabelFormatting: [{ type: Input }],\n noBarWhenZero: [{ type: Input }],\n activate: [{ type: Output }],\n deactivate: [{ type: Output }],\n tooltipTemplate: [{ type: ContentChild, args: ['tooltipTemplate',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BarHorizontalStackedComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-charts-bar-horizontal-stacked',\n template: `\n \n \n \n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ],\n styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:none}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{opacity:.2;transition:opacity .1s ease-in-out}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{fill:none;stroke:#ddd;stroke-width:1}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-dasharray:5;stroke-dashoffset:5;stroke-width:1}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill:#000;fill-opacity:.05}.ngx-charts .gridline-path-dotted{fill:none;stroke:#ddd;stroke-dasharray:1,20;stroke-dashoffset:3;stroke-width:1}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"]\n }]\n }], null, { legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], barPadding: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], showDataLabel: [{\n type: Input\n }], noBarWhenZero: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], gradient: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], xScaleMax: [{\n type: Input\n }], dataLabelFormatting: [{\n type: Input\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] }); })();\n\nclass BarVerticalComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = 'right';\n this.tooltipDisabled = false;\n this.showGridLines = true;\n this.activeEntries = [];\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.barPadding = 8;\n this.roundDomains = false;\n this.roundEdges = true;\n this.showDataLabel = false;\n this.noBarWhenZero = true;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.dataLabelMaxHeight = { negative: 0, positive: 0 };\n }\n update() {\n super.update();\n if (!this.showDataLabel) {\n this.dataLabelMaxHeight = { negative: 0, positive: 0 };\n }\n this.margin = [10 + this.dataLabelMaxHeight.positive, 20, 10 + this.dataLabelMaxHeight.negative, 20];\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n this.formatDates();\n if (this.showDataLabel) {\n this.dims.height -= this.dataLabelMaxHeight.negative;\n }\n this.xScale = this.getXScale();\n this.yScale = this.getYScale();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0] + this.dataLabelMaxHeight.negative})`;\n }\n getXScale() {\n this.xDomain = this.getXDomain();\n const spacing = this.xDomain.length / (this.dims.width / this.barPadding + 1);\n return scaleBand().range([0, this.dims.width]).paddingInner(spacing).domain(this.xDomain);\n }\n getYScale() {\n this.yDomain = this.getYDomain();\n const scale = scaleLinear().range([this.dims.height, 0]).domain(this.yDomain);\n return this.roundDomains ? scale.nice() : scale;\n }\n getXDomain() {\n return this.results.map(d => d.label);\n }\n getYDomain() {\n const values = this.results.map(d => d.value);\n let min = this.yScaleMin ? Math.min(this.yScaleMin, ...values) : Math.min(0, ...values);\n if (this.yAxisTicks && !this.yAxisTicks.some(isNaN)) {\n min = Math.min(min, ...this.yAxisTicks);\n }\n let max = this.yScaleMax ? Math.max(this.yScaleMax, ...values) : Math.max(0, ...values);\n if (this.yAxisTicks && !this.yAxisTicks.some(isNaN)) {\n max = Math.max(max, ...this.yAxisTicks);\n }\n return [min, max];\n }\n onClick(data) {\n this.select.emit(data);\n }\n setColors() {\n let domain;\n if (this.schemeType === 'ordinal') {\n domain = this.xDomain;\n }\n else {\n domain = this.yDomain;\n }\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === 'ordinal') {\n opts.domain = this.xDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n }\n else {\n opts.domain = this.yDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onDataLabelMaxHeightChanged(event) {\n if (event.size.negative) {\n this.dataLabelMaxHeight.negative = Math.max(this.dataLabelMaxHeight.negative, event.size.height);\n }\n else {\n this.dataLabelMaxHeight.positive = Math.max(this.dataLabelMaxHeight.positive, event.size.height);\n }\n if (event.index === this.results.length - 1) {\n setTimeout(() => this.update());\n }\n }\n onActivate(item, fromLegend = false) {\n item = this.results.find(d => {\n if (fromLegend) {\n return d.label === item.name;\n }\n else {\n return d.name === item.name;\n }\n });\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value && d.series === item.series;\n });\n if (idx > -1) {\n return;\n }\n this.activeEntries = [item, ...this.activeEntries];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(item, fromLegend = false) {\n item = this.results.find(d => {\n if (fromLegend) {\n return d.label === item.name;\n }\n else {\n return d.name === item.name;\n }\n });\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value && d.series === item.series;\n });\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n}\nBarVerticalComponent.ɵfac = /*@__PURE__*/ function () { let ɵBarVerticalComponent_BaseFactory; return function BarVerticalComponent_Factory(t) { return (ɵBarVerticalComponent_BaseFactory || (ɵBarVerticalComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(BarVerticalComponent)))(t || BarVerticalComponent); }; }();\nBarVerticalComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: BarVerticalComponent, selectors: [[\"ngx-charts-bar-vertical\"]], contentQueries: function BarVerticalComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n } }, inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", tooltipDisabled: \"tooltipDisabled\", showGridLines: \"showGridLines\", activeEntries: \"activeEntries\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", barPadding: \"barPadding\", roundDomains: \"roundDomains\", roundEdges: \"roundEdges\", showDataLabel: \"showDataLabel\", noBarWhenZero: \"noBarWhenZero\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", gradient: \"gradient\", schemeType: \"schemeType\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", yScaleMax: \"yScaleMax\", yScaleMin: \"yScaleMin\", dataLabelFormatting: \"dataLabelFormatting\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 5, vars: 25, consts: [[3, \"view\", \"showLegend\", \"legendOptions\", \"activeEntries\", \"animations\", \"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"], [1, \"bar-chart\", \"chart\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"xAxisOffset\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-series-vertical\", \"\", 3, \"xScale\", \"yScale\", \"colors\", \"series\", \"dims\", \"gradient\", \"tooltipDisabled\", \"tooltipTemplate\", \"showDataLabel\", \"dataLabelFormatting\", \"activeEntries\", \"roundEdges\", \"animations\", \"noBarWhenZero\", \"activate\", \"deactivate\", \"select\", \"dataLabelHeightChanged\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"xAxisOffset\", \"dimensionsChanged\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"]], template: function BarVerticalComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n ɵngcc0.ɵɵlistener(\"legendLabelClick\", function BarVerticalComponent_Template_ngx_charts_chart_legendLabelClick_0_listener($event) { return ctx.onClick($event); })(\"legendLabelActivate\", function BarVerticalComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener($event) { return ctx.onActivate($event, true); })(\"legendLabelDeactivate\", function BarVerticalComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener($event) { return ctx.onDeactivate($event, true); });\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(1, \"g\", 1);\n ɵngcc0.ɵɵtemplate(2, BarVerticalComponent__svg_g_2_Template, 1, 10, \"g\", 2);\n ɵngcc0.ɵɵtemplate(3, BarVerticalComponent__svg_g_3_Template, 1, 9, \"g\", 3);\n ɵngcc0.ɵɵelementStart(4, \"g\", 4);\n ɵngcc0.ɵɵlistener(\"activate\", function BarVerticalComponent_Template__svg_g_activate_4_listener($event) { return ctx.onActivate($event); })(\"deactivate\", function BarVerticalComponent_Template__svg_g_deactivate_4_listener($event) { return ctx.onDeactivate($event); })(\"select\", function BarVerticalComponent_Template__svg_g_select_4_listener($event) { return ctx.onClick($event); })(\"dataLabelHeightChanged\", function BarVerticalComponent_Template__svg_g_dataLabelHeightChanged_4_listener($event) { return ctx.onDataLabelMaxHeightChanged($event); });\n ɵngcc0.ɵɵelementEnd()()();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(22, _c23, ctx.width, ctx.height))(\"showLegend\", ctx.legend)(\"legendOptions\", ctx.legendOptions)(\"activeEntries\", ctx.activeEntries)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.xAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.yAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"xScale\", ctx.xScale)(\"yScale\", ctx.yScale)(\"colors\", ctx.colors)(\"series\", ctx.results)(\"dims\", ctx.dims)(\"gradient\", ctx.gradient)(\"tooltipDisabled\", ctx.tooltipDisabled)(\"tooltipTemplate\", ctx.tooltipTemplate)(\"showDataLabel\", ctx.showDataLabel)(\"dataLabelFormatting\", ctx.dataLabelFormatting)(\"activeEntries\", ctx.activeEntries)(\"roundEdges\", ctx.roundEdges)(\"animations\", ctx.animations)(\"noBarWhenZero\", ctx.noBarWhenZero);\n } }, directives: function () { return [ChartComponent, ɵngcc1.NgIf, XAxisComponent, YAxisComponent, SeriesVerticalComponent]; }, styles: [_c24], encapsulation: 2, changeDetection: 0 });\nBarVerticalComponent.propDecorators = {\n legend: [{ type: Input }],\n legendTitle: [{ type: Input }],\n legendPosition: [{ type: Input }],\n xAxis: [{ type: Input }],\n yAxis: [{ type: Input }],\n showXAxisLabel: [{ type: Input }],\n showYAxisLabel: [{ type: Input }],\n xAxisLabel: [{ type: Input }],\n yAxisLabel: [{ type: Input }],\n tooltipDisabled: [{ type: Input }],\n gradient: [{ type: Input }],\n showGridLines: [{ type: Input }],\n activeEntries: [{ type: Input }],\n schemeType: [{ type: Input }],\n trimXAxisTicks: [{ type: Input }],\n trimYAxisTicks: [{ type: Input }],\n rotateXAxisTicks: [{ type: Input }],\n maxXAxisTickLength: [{ type: Input }],\n maxYAxisTickLength: [{ type: Input }],\n xAxisTickFormatting: [{ type: Input }],\n yAxisTickFormatting: [{ type: Input }],\n xAxisTicks: [{ type: Input }],\n yAxisTicks: [{ type: Input }],\n barPadding: [{ type: Input }],\n roundDomains: [{ type: Input }],\n roundEdges: [{ type: Input }],\n yScaleMax: [{ type: Input }],\n yScaleMin: [{ type: Input }],\n showDataLabel: [{ type: Input }],\n dataLabelFormatting: [{ type: Input }],\n noBarWhenZero: [{ type: Input }],\n activate: [{ type: Output }],\n deactivate: [{ type: Output }],\n tooltipTemplate: [{ type: ContentChild, args: ['tooltipTemplate',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BarVerticalComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-charts-bar-vertical',\n template: `\n \n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:none}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{opacity:.2;transition:opacity .1s ease-in-out}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{fill:none;stroke:#ddd;stroke-width:1}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-dasharray:5;stroke-dashoffset:5;stroke-width:1}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill:#000;fill-opacity:.05}.ngx-charts .gridline-path-dotted{fill:none;stroke:#ddd;stroke-dasharray:1,20;stroke-dashoffset:3;stroke-width:1}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"]\n }]\n }], null, { legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], barPadding: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], roundEdges: [{\n type: Input\n }], showDataLabel: [{\n type: Input\n }], noBarWhenZero: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], gradient: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], yScaleMax: [{\n type: Input\n }], yScaleMin: [{\n type: Input\n }], dataLabelFormatting: [{\n type: Input\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] }); })();\n\nclass BarVertical2DComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = 'right';\n this.tooltipDisabled = false;\n this.scaleType = 'ordinal';\n this.showGridLines = true;\n this.activeEntries = [];\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.groupPadding = 16;\n this.barPadding = 8;\n this.roundDomains = false;\n this.roundEdges = true;\n this.showDataLabel = false;\n this.noBarWhenZero = true;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.dataLabelMaxHeight = { negative: 0, positive: 0 };\n }\n update() {\n super.update();\n if (!this.showDataLabel) {\n this.dataLabelMaxHeight = { negative: 0, positive: 0 };\n }\n this.margin = [10 + this.dataLabelMaxHeight.positive, 20, 10 + this.dataLabelMaxHeight.negative, 20];\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n if (this.showDataLabel) {\n this.dims.height -= this.dataLabelMaxHeight.negative;\n }\n this.formatDates();\n this.groupDomain = this.getGroupDomain();\n this.innerDomain = this.getInnerDomain();\n this.valuesDomain = this.getValueDomain();\n this.groupScale = this.getGroupScale();\n this.innerScale = this.getInnerScale();\n this.valueScale = this.getValueScale();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0] + this.dataLabelMaxHeight.negative})`;\n }\n onDataLabelMaxHeightChanged(event, groupIndex) {\n if (event.size.negative) {\n this.dataLabelMaxHeight.negative = Math.max(this.dataLabelMaxHeight.negative, event.size.height);\n }\n else {\n this.dataLabelMaxHeight.positive = Math.max(this.dataLabelMaxHeight.positive, event.size.height);\n }\n if (groupIndex === this.results.length - 1) {\n setTimeout(() => this.update());\n }\n }\n getGroupScale() {\n const spacing = this.groupDomain.length / (this.dims.height / this.groupPadding + 1);\n return scaleBand()\n .rangeRound([0, this.dims.width])\n .paddingInner(spacing)\n .paddingOuter(spacing / 2)\n .domain(this.groupDomain);\n }\n getInnerScale() {\n const width = this.groupScale.bandwidth();\n const spacing = this.innerDomain.length / (width / this.barPadding + 1);\n return scaleBand().rangeRound([0, width]).paddingInner(spacing).domain(this.innerDomain);\n }\n getValueScale() {\n const scale = scaleLinear().range([this.dims.height, 0]).domain(this.valuesDomain);\n return this.roundDomains ? scale.nice() : scale;\n }\n getGroupDomain() {\n const domain = [];\n for (const group of this.results) {\n if (!domain.includes(group.label)) {\n domain.push(group.label);\n }\n }\n return domain;\n }\n getInnerDomain() {\n const domain = [];\n for (const group of this.results) {\n for (const d of group.series) {\n if (!domain.includes(d.label)) {\n domain.push(d.label);\n }\n }\n }\n return domain;\n }\n getValueDomain() {\n const domain = [];\n for (const group of this.results) {\n for (const d of group.series) {\n if (!domain.includes(d.value)) {\n domain.push(d.value);\n }\n }\n }\n const min = Math.min(0, ...domain);\n const max = this.yScaleMax ? Math.max(this.yScaleMax, ...domain) : Math.max(0, ...domain);\n return [min, max];\n }\n groupTransform(group) {\n return `translate(${this.groupScale(group.label)}, 0)`;\n }\n onClick(data, group) {\n if (group) {\n data.series = group.name;\n }\n this.select.emit(data);\n }\n trackBy(index, item) {\n return item.name;\n }\n setColors() {\n let domain;\n if (this.schemeType === 'ordinal') {\n domain = this.innerDomain;\n }\n else {\n domain = this.valuesDomain;\n }\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === 'ordinal') {\n opts.domain = this.innerDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n }\n else {\n opts.domain = this.valuesDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onActivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n const items = this.results\n .map(g => g.series)\n .flat()\n .filter(i => {\n if (fromLegend) {\n return i.label === item.name;\n }\n else {\n return i.name === item.name && i.series === item.series;\n }\n });\n this.activeEntries = [...items];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n this.activeEntries = this.activeEntries.filter(i => {\n if (fromLegend) {\n return i.label !== item.name;\n }\n else {\n return !(i.name === item.name && i.series === item.series);\n }\n });\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n}\nBarVertical2DComponent.ɵfac = /*@__PURE__*/ function () { let ɵBarVertical2DComponent_BaseFactory; return function BarVertical2DComponent_Factory(t) { return (ɵBarVertical2DComponent_BaseFactory || (ɵBarVertical2DComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(BarVertical2DComponent)))(t || BarVertical2DComponent); }; }();\nBarVertical2DComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: BarVertical2DComponent, selectors: [[\"ngx-charts-bar-vertical-2d\"]], contentQueries: function BarVertical2DComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n } }, inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", tooltipDisabled: \"tooltipDisabled\", scaleType: \"scaleType\", showGridLines: \"showGridLines\", activeEntries: \"activeEntries\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", groupPadding: \"groupPadding\", barPadding: \"barPadding\", roundDomains: \"roundDomains\", roundEdges: \"roundEdges\", showDataLabel: \"showDataLabel\", noBarWhenZero: \"noBarWhenZero\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", gradient: \"gradient\", schemeType: \"schemeType\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", yScaleMax: \"yScaleMax\", dataLabelFormatting: \"dataLabelFormatting\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 6, vars: 17, consts: [[3, \"view\", \"showLegend\", \"legendOptions\", \"activeEntries\", \"animations\", \"legendLabelActivate\", \"legendLabelDeactivate\", \"legendLabelClick\"], [1, \"bar-chart\", \"chart\"], [\"ngx-charts-grid-panel-series\", \"\", \"orient\", \"vertical\", 3, \"xScale\", \"yScale\", \"data\", \"dims\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"xAxisOffset\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-series-vertical\", \"\", 3, \"activeEntries\", \"xScale\", \"yScale\", \"colors\", \"series\", \"dims\", \"gradient\", \"tooltipDisabled\", \"tooltipTemplate\", \"showDataLabel\", \"dataLabelFormatting\", \"seriesName\", \"roundEdges\", \"animations\", \"noBarWhenZero\", \"select\", \"activate\", \"deactivate\", \"dataLabelHeightChanged\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"xAxisOffset\", \"dimensionsChanged\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-series-vertical\", \"\", 3, \"activeEntries\", \"xScale\", \"yScale\", \"colors\", \"series\", \"dims\", \"gradient\", \"tooltipDisabled\", \"tooltipTemplate\", \"showDataLabel\", \"dataLabelFormatting\", \"seriesName\", \"roundEdges\", \"animations\", \"noBarWhenZero\", \"select\", \"activate\", \"deactivate\", \"dataLabelHeightChanged\"]], template: function BarVertical2DComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n ɵngcc0.ɵɵlistener(\"legendLabelActivate\", function BarVertical2DComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener($event) { return ctx.onActivate($event, undefined, true); })(\"legendLabelDeactivate\", function BarVertical2DComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener($event) { return ctx.onDeactivate($event, undefined, true); })(\"legendLabelClick\", function BarVertical2DComponent_Template_ngx_charts_chart_legendLabelClick_0_listener($event) { return ctx.onClick($event); });\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(1, \"g\", 1);\n ɵngcc0.ɵɵelement(2, \"g\", 2);\n ɵngcc0.ɵɵtemplate(3, BarVertical2DComponent__svg_g_3_Template, 1, 10, \"g\", 3);\n ɵngcc0.ɵɵtemplate(4, BarVertical2DComponent__svg_g_4_Template, 1, 9, \"g\", 4);\n ɵngcc0.ɵɵtemplate(5, BarVertical2DComponent__svg_g_5_Template, 1, 17, \"g\", 5);\n ɵngcc0.ɵɵelementEnd()();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(14, _c23, ctx.width, ctx.height))(\"showLegend\", ctx.legend)(\"legendOptions\", ctx.legendOptions)(\"activeEntries\", ctx.activeEntries)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"xScale\", ctx.groupScale)(\"yScale\", ctx.valueScale)(\"data\", ctx.results)(\"dims\", ctx.dims);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.xAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.yAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.results)(\"ngForTrackBy\", ctx.trackBy);\n } }, directives: function () { return [ChartComponent, GridPanelSeriesComponent, ɵngcc1.NgIf, XAxisComponent, YAxisComponent, ɵngcc1.NgForOf, SeriesVerticalComponent]; }, styles: [_c24], encapsulation: 2, data: { animation: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ] }, changeDetection: 0 });\nBarVertical2DComponent.propDecorators = {\n legend: [{ type: Input }],\n legendTitle: [{ type: Input }],\n legendPosition: [{ type: Input }],\n xAxis: [{ type: Input }],\n yAxis: [{ type: Input }],\n showXAxisLabel: [{ type: Input }],\n showYAxisLabel: [{ type: Input }],\n xAxisLabel: [{ type: Input }],\n yAxisLabel: [{ type: Input }],\n tooltipDisabled: [{ type: Input }],\n scaleType: [{ type: Input }],\n gradient: [{ type: Input }],\n showGridLines: [{ type: Input }],\n activeEntries: [{ type: Input }],\n schemeType: [{ type: Input }],\n trimXAxisTicks: [{ type: Input }],\n trimYAxisTicks: [{ type: Input }],\n rotateXAxisTicks: [{ type: Input }],\n maxXAxisTickLength: [{ type: Input }],\n maxYAxisTickLength: [{ type: Input }],\n xAxisTickFormatting: [{ type: Input }],\n yAxisTickFormatting: [{ type: Input }],\n xAxisTicks: [{ type: Input }],\n yAxisTicks: [{ type: Input }],\n groupPadding: [{ type: Input }],\n barPadding: [{ type: Input }],\n roundDomains: [{ type: Input }],\n roundEdges: [{ type: Input }],\n yScaleMax: [{ type: Input }],\n showDataLabel: [{ type: Input }],\n dataLabelFormatting: [{ type: Input }],\n noBarWhenZero: [{ type: Input }],\n activate: [{ type: Output }],\n deactivate: [{ type: Output }],\n tooltipTemplate: [{ type: ContentChild, args: ['tooltipTemplate',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BarVertical2DComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-charts-bar-vertical-2d',\n template: `\n \n \n \n \n \n \n \n \n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ],\n styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:none}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{opacity:.2;transition:opacity .1s ease-in-out}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{fill:none;stroke:#ddd;stroke-width:1}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-dasharray:5;stroke-dashoffset:5;stroke-width:1}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill:#000;fill-opacity:.05}.ngx-charts .gridline-path-dotted{fill:none;stroke:#ddd;stroke-dasharray:1,20;stroke-dashoffset:3;stroke-width:1}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"]\n }]\n }], null, { legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], scaleType: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], groupPadding: [{\n type: Input\n }], barPadding: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], roundEdges: [{\n type: Input\n }], showDataLabel: [{\n type: Input\n }], noBarWhenZero: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], gradient: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], yScaleMax: [{\n type: Input\n }], dataLabelFormatting: [{\n type: Input\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] }); })();\n\nclass BarVerticalNormalizedComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = 'right';\n this.tooltipDisabled = false;\n this.showGridLines = true;\n this.activeEntries = [];\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.barPadding = 8;\n this.roundDomains = false;\n this.noBarWhenZero = true;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n }\n update() {\n super.update();\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n this.formatDates();\n this.groupDomain = this.getGroupDomain();\n this.innerDomain = this.getInnerDomain();\n this.valueDomain = this.getValueDomain();\n this.xScale = this.getXScale();\n this.yScale = this.getYScale();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n }\n getGroupDomain() {\n const domain = [];\n for (const group of this.results) {\n if (!domain.includes(group.label)) {\n domain.push(group.label);\n }\n }\n return domain;\n }\n getInnerDomain() {\n const domain = [];\n for (const group of this.results) {\n for (const d of group.series) {\n if (!domain.includes(d.label)) {\n domain.push(d.label);\n }\n }\n }\n return domain;\n }\n getValueDomain() {\n return [0, 100];\n }\n getXScale() {\n const spacing = this.groupDomain.length / (this.dims.width / this.barPadding + 1);\n return scaleBand().rangeRound([0, this.dims.width]).paddingInner(spacing).domain(this.groupDomain);\n }\n getYScale() {\n const scale = scaleLinear().range([this.dims.height, 0]).domain(this.valueDomain);\n return this.roundDomains ? scale.nice() : scale;\n }\n groupTransform(group) {\n return `translate(${this.xScale(group.name)}, 0)`;\n }\n onClick(data, group) {\n if (group) {\n data.series = group.name;\n }\n this.select.emit(data);\n }\n trackBy(index, item) {\n return item.name;\n }\n setColors() {\n let domain;\n if (this.schemeType === 'ordinal') {\n domain = this.innerDomain;\n }\n else {\n domain = this.valueDomain;\n }\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === 'ordinal') {\n opts.domain = this.innerDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n }\n else {\n opts.domain = this.valueDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onActivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n const items = this.results\n .map(g => g.series)\n .flat()\n .filter(i => {\n if (fromLegend) {\n return i.label === item.name;\n }\n else {\n return i.name === item.name && i.series === item.series;\n }\n });\n this.activeEntries = [...items];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n this.activeEntries = this.activeEntries.filter(i => {\n if (fromLegend) {\n return i.label !== item.name;\n }\n else {\n return !(i.name === item.name && i.series === item.series);\n }\n });\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n}\nBarVerticalNormalizedComponent.ɵfac = /*@__PURE__*/ function () { let ɵBarVerticalNormalizedComponent_BaseFactory; return function BarVerticalNormalizedComponent_Factory(t) { return (ɵBarVerticalNormalizedComponent_BaseFactory || (ɵBarVerticalNormalizedComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(BarVerticalNormalizedComponent)))(t || BarVerticalNormalizedComponent); }; }();\nBarVerticalNormalizedComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: BarVerticalNormalizedComponent, selectors: [[\"ngx-charts-bar-vertical-normalized\"]], contentQueries: function BarVerticalNormalizedComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n } }, inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", tooltipDisabled: \"tooltipDisabled\", showGridLines: \"showGridLines\", activeEntries: \"activeEntries\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", barPadding: \"barPadding\", roundDomains: \"roundDomains\", noBarWhenZero: \"noBarWhenZero\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", gradient: \"gradient\", schemeType: \"schemeType\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 5, vars: 13, consts: [[3, \"view\", \"showLegend\", \"legendOptions\", \"activeEntries\", \"animations\", \"legendLabelActivate\", \"legendLabelDeactivate\", \"legendLabelClick\"], [1, \"bar-chart\", \"chart\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-series-vertical\", \"\", \"type\", \"normalized\", 3, \"xScale\", \"yScale\", \"activeEntries\", \"colors\", \"series\", \"dims\", \"gradient\", \"tooltipDisabled\", \"tooltipTemplate\", \"seriesName\", \"animations\", \"noBarWhenZero\", \"select\", \"activate\", \"deactivate\"]], template: function BarVerticalNormalizedComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n ɵngcc0.ɵɵlistener(\"legendLabelActivate\", function BarVerticalNormalizedComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener($event) { return ctx.onActivate($event, undefined, true); })(\"legendLabelDeactivate\", function BarVerticalNormalizedComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener($event) { return ctx.onDeactivate($event, undefined, true); })(\"legendLabelClick\", function BarVerticalNormalizedComponent_Template_ngx_charts_chart_legendLabelClick_0_listener($event) { return ctx.onClick($event); });\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(1, \"g\", 1);\n ɵngcc0.ɵɵtemplate(2, BarVerticalNormalizedComponent__svg_g_2_Template, 1, 9, \"g\", 2);\n ɵngcc0.ɵɵtemplate(3, BarVerticalNormalizedComponent__svg_g_3_Template, 1, 9, \"g\", 3);\n ɵngcc0.ɵɵtemplate(4, BarVerticalNormalizedComponent__svg_g_4_Template, 2, 14, \"g\", 4);\n ɵngcc0.ɵɵelementEnd()();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(10, _c23, ctx.width, ctx.height))(\"showLegend\", ctx.legend)(\"legendOptions\", ctx.legendOptions)(\"activeEntries\", ctx.activeEntries)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.xAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.yAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.results)(\"ngForTrackBy\", ctx.trackBy);\n } }, directives: function () { return [ChartComponent, ɵngcc1.NgIf, XAxisComponent, YAxisComponent, ɵngcc1.NgForOf, SeriesVerticalComponent]; }, styles: [_c24], encapsulation: 2, data: { animation: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ] }, changeDetection: 0 });\nBarVerticalNormalizedComponent.propDecorators = {\n legend: [{ type: Input }],\n legendTitle: [{ type: Input }],\n legendPosition: [{ type: Input }],\n xAxis: [{ type: Input }],\n yAxis: [{ type: Input }],\n showXAxisLabel: [{ type: Input }],\n showYAxisLabel: [{ type: Input }],\n xAxisLabel: [{ type: Input }],\n yAxisLabel: [{ type: Input }],\n tooltipDisabled: [{ type: Input }],\n gradient: [{ type: Input }],\n showGridLines: [{ type: Input }],\n activeEntries: [{ type: Input }],\n schemeType: [{ type: Input }],\n trimXAxisTicks: [{ type: Input }],\n trimYAxisTicks: [{ type: Input }],\n rotateXAxisTicks: [{ type: Input }],\n maxXAxisTickLength: [{ type: Input }],\n maxYAxisTickLength: [{ type: Input }],\n xAxisTickFormatting: [{ type: Input }],\n yAxisTickFormatting: [{ type: Input }],\n xAxisTicks: [{ type: Input }],\n yAxisTicks: [{ type: Input }],\n barPadding: [{ type: Input }],\n roundDomains: [{ type: Input }],\n noBarWhenZero: [{ type: Input }],\n activate: [{ type: Output }],\n deactivate: [{ type: Output }],\n tooltipTemplate: [{ type: ContentChild, args: ['tooltipTemplate',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BarVerticalNormalizedComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-charts-bar-vertical-normalized',\n template: `\n \n \n \n \n \n \n \n \n \n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ],\n styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:none}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{opacity:.2;transition:opacity .1s ease-in-out}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{fill:none;stroke:#ddd;stroke-width:1}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-dasharray:5;stroke-dashoffset:5;stroke-width:1}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill:#000;fill-opacity:.05}.ngx-charts .gridline-path-dotted{fill:none;stroke:#ddd;stroke-dasharray:1,20;stroke-dashoffset:3;stroke-width:1}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"]\n }]\n }], null, { legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], barPadding: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], noBarWhenZero: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], gradient: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] }); })();\n\nclass BarVerticalStackedComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = 'right';\n this.tooltipDisabled = false;\n this.showGridLines = true;\n this.activeEntries = [];\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.barPadding = 8;\n this.roundDomains = false;\n this.showDataLabel = false;\n this.noBarWhenZero = true;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.dataLabelMaxHeight = { negative: 0, positive: 0 };\n }\n update() {\n super.update();\n if (!this.showDataLabel) {\n this.dataLabelMaxHeight = { negative: 0, positive: 0 };\n }\n this.margin = [10 + this.dataLabelMaxHeight.positive, 20, 10 + this.dataLabelMaxHeight.negative, 20];\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n if (this.showDataLabel) {\n this.dims.height -= this.dataLabelMaxHeight.negative;\n }\n this.formatDates();\n this.groupDomain = this.getGroupDomain();\n this.innerDomain = this.getInnerDomain();\n this.valueDomain = this.getValueDomain();\n this.xScale = this.getXScale();\n this.yScale = this.getYScale();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0] + this.dataLabelMaxHeight.negative})`;\n }\n getGroupDomain() {\n const domain = [];\n for (const group of this.results) {\n if (!domain.includes(group.label)) {\n domain.push(group.label);\n }\n }\n return domain;\n }\n getInnerDomain() {\n const domain = [];\n for (const group of this.results) {\n for (const d of group.series) {\n if (!domain.includes(d.label)) {\n domain.push(d.label);\n }\n }\n }\n return domain;\n }\n getValueDomain() {\n const domain = [];\n let smallest = 0;\n let biggest = 0;\n for (const group of this.results) {\n let smallestSum = 0;\n let biggestSum = 0;\n for (const d of group.series) {\n if (d.value < 0) {\n smallestSum += d.value;\n }\n else {\n biggestSum += d.value;\n }\n smallest = d.value < smallest ? d.value : smallest;\n biggest = d.value > biggest ? d.value : biggest;\n }\n domain.push(smallestSum);\n domain.push(biggestSum);\n }\n domain.push(smallest);\n domain.push(biggest);\n const min = Math.min(0, ...domain);\n const max = this.yScaleMax ? Math.max(this.yScaleMax, ...domain) : Math.max(...domain);\n return [min, max];\n }\n getXScale() {\n const spacing = this.groupDomain.length / (this.dims.width / this.barPadding + 1);\n return scaleBand().rangeRound([0, this.dims.width]).paddingInner(spacing).domain(this.groupDomain);\n }\n getYScale() {\n const scale = scaleLinear().range([this.dims.height, 0]).domain(this.valueDomain);\n return this.roundDomains ? scale.nice() : scale;\n }\n onDataLabelMaxHeightChanged(event, groupIndex) {\n if (event.size.negative) {\n this.dataLabelMaxHeight.negative = Math.max(this.dataLabelMaxHeight.negative, event.size.height);\n }\n else {\n this.dataLabelMaxHeight.positive = Math.max(this.dataLabelMaxHeight.positive, event.size.height);\n }\n if (groupIndex === this.results.length - 1) {\n setTimeout(() => this.update());\n }\n }\n groupTransform(group) {\n return `translate(${this.xScale(group.name) || 0}, 0)`;\n }\n onClick(data, group) {\n if (group) {\n data.series = group.name;\n }\n this.select.emit(data);\n }\n trackBy(index, item) {\n return item.name;\n }\n setColors() {\n let domain;\n if (this.schemeType === 'ordinal') {\n domain = this.innerDomain;\n }\n else {\n domain = this.valueDomain;\n }\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === 'ordinal') {\n opts.domain = this.innerDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n }\n else {\n opts.domain = this.valueDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onActivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n const items = this.results\n .map(g => g.series)\n .flat()\n .filter(i => {\n if (fromLegend) {\n return i.label === item.name;\n }\n else {\n return i.name === item.name && i.series === item.series;\n }\n });\n this.activeEntries = [...items];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n this.activeEntries = this.activeEntries.filter(i => {\n if (fromLegend) {\n return i.label !== item.name;\n }\n else {\n return !(i.name === item.name && i.series === item.series);\n }\n });\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n}\nBarVerticalStackedComponent.ɵfac = /*@__PURE__*/ function () { let ɵBarVerticalStackedComponent_BaseFactory; return function BarVerticalStackedComponent_Factory(t) { return (ɵBarVerticalStackedComponent_BaseFactory || (ɵBarVerticalStackedComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(BarVerticalStackedComponent)))(t || BarVerticalStackedComponent); }; }();\nBarVerticalStackedComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: BarVerticalStackedComponent, selectors: [[\"ngx-charts-bar-vertical-stacked\"]], contentQueries: function BarVerticalStackedComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n } }, inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", tooltipDisabled: \"tooltipDisabled\", showGridLines: \"showGridLines\", activeEntries: \"activeEntries\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", barPadding: \"barPadding\", roundDomains: \"roundDomains\", showDataLabel: \"showDataLabel\", noBarWhenZero: \"noBarWhenZero\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", gradient: \"gradient\", schemeType: \"schemeType\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", yScaleMax: \"yScaleMax\", dataLabelFormatting: \"dataLabelFormatting\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 5, vars: 13, consts: [[3, \"view\", \"showLegend\", \"legendOptions\", \"activeEntries\", \"animations\", \"legendLabelActivate\", \"legendLabelDeactivate\", \"legendLabelClick\"], [1, \"bar-chart\", \"chart\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"xAxisOffset\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"xAxisOffset\", \"dimensionsChanged\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-series-vertical\", \"\", \"type\", \"stacked\", 3, \"xScale\", \"yScale\", \"activeEntries\", \"colors\", \"series\", \"dims\", \"gradient\", \"tooltipDisabled\", \"tooltipTemplate\", \"showDataLabel\", \"dataLabelFormatting\", \"seriesName\", \"animations\", \"noBarWhenZero\", \"select\", \"activate\", \"deactivate\", \"dataLabelHeightChanged\"]], template: function BarVerticalStackedComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n ɵngcc0.ɵɵlistener(\"legendLabelActivate\", function BarVerticalStackedComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener($event) { return ctx.onActivate($event, undefined, true); })(\"legendLabelDeactivate\", function BarVerticalStackedComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener($event) { return ctx.onDeactivate($event, undefined, true); })(\"legendLabelClick\", function BarVerticalStackedComponent_Template_ngx_charts_chart_legendLabelClick_0_listener($event) { return ctx.onClick($event); });\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(1, \"g\", 1);\n ɵngcc0.ɵɵtemplate(2, BarVerticalStackedComponent__svg_g_2_Template, 1, 10, \"g\", 2);\n ɵngcc0.ɵɵtemplate(3, BarVerticalStackedComponent__svg_g_3_Template, 1, 9, \"g\", 3);\n ɵngcc0.ɵɵtemplate(4, BarVerticalStackedComponent__svg_g_4_Template, 2, 16, \"g\", 4);\n ɵngcc0.ɵɵelementEnd()();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(10, _c23, ctx.width, ctx.height))(\"showLegend\", ctx.legend)(\"legendOptions\", ctx.legendOptions)(\"activeEntries\", ctx.activeEntries)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.xAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.yAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.results)(\"ngForTrackBy\", ctx.trackBy);\n } }, directives: function () { return [ChartComponent, ɵngcc1.NgIf, XAxisComponent, YAxisComponent, ɵngcc1.NgForOf, SeriesVerticalComponent]; }, styles: [_c24], encapsulation: 2, data: { animation: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ] }, changeDetection: 0 });\nBarVerticalStackedComponent.propDecorators = {\n legend: [{ type: Input }],\n legendTitle: [{ type: Input }],\n legendPosition: [{ type: Input }],\n xAxis: [{ type: Input }],\n yAxis: [{ type: Input }],\n showXAxisLabel: [{ type: Input }],\n showYAxisLabel: [{ type: Input }],\n xAxisLabel: [{ type: Input }],\n yAxisLabel: [{ type: Input }],\n tooltipDisabled: [{ type: Input }],\n gradient: [{ type: Input }],\n showGridLines: [{ type: Input }],\n activeEntries: [{ type: Input }],\n schemeType: [{ type: Input }],\n trimXAxisTicks: [{ type: Input }],\n trimYAxisTicks: [{ type: Input }],\n rotateXAxisTicks: [{ type: Input }],\n maxXAxisTickLength: [{ type: Input }],\n maxYAxisTickLength: [{ type: Input }],\n xAxisTickFormatting: [{ type: Input }],\n yAxisTickFormatting: [{ type: Input }],\n xAxisTicks: [{ type: Input }],\n yAxisTicks: [{ type: Input }],\n barPadding: [{ type: Input }],\n roundDomains: [{ type: Input }],\n yScaleMax: [{ type: Input }],\n showDataLabel: [{ type: Input }],\n dataLabelFormatting: [{ type: Input }],\n noBarWhenZero: [{ type: Input }],\n activate: [{ type: Output }],\n deactivate: [{ type: Output }],\n tooltipTemplate: [{ type: ContentChild, args: ['tooltipTemplate',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BarVerticalStackedComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-charts-bar-vertical-stacked',\n template: `\n \n \n \n \n \n \n \n \n \n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1,\n transform: '*'\n }),\n animate(500, style({ opacity: 0, transform: 'scale(0)' }))\n ])\n ])\n ],\n styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:none}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{opacity:.2;transition:opacity .1s ease-in-out}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{fill:none;stroke:#ddd;stroke-width:1}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-dasharray:5;stroke-dashoffset:5;stroke-width:1}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill:#000;fill-opacity:.05}.ngx-charts .gridline-path-dotted{fill:none;stroke:#ddd;stroke-dasharray:1,20;stroke-dashoffset:3;stroke-width:1}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"]\n }]\n }], null, { legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], barPadding: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], showDataLabel: [{\n type: Input\n }], noBarWhenZero: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], gradient: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], yScaleMax: [{\n type: Input\n }], dataLabelFormatting: [{\n type: Input\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] }); })();\n\nvar D0Types;\n(function (D0Types) {\n D0Types[\"positive\"] = \"positive\";\n D0Types[\"negative\"] = \"negative\";\n})(D0Types || (D0Types = {}));\nclass SeriesVerticalComponent {\n constructor() {\n this.type = 'standard';\n this.tooltipDisabled = false;\n this.animations = true;\n this.showDataLabel = false;\n this.noBarWhenZero = true;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.dataLabelHeightChanged = new EventEmitter();\n this.barsForDataLabels = [];\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.updateTooltipSettings();\n let width;\n if (this.series.length) {\n width = this.xScale.bandwidth();\n }\n width = Math.round(width);\n const yScaleMin = Math.max(this.yScale.domain()[0], 0);\n const d0 = {\n [D0Types.positive]: 0,\n [D0Types.negative]: 0\n };\n let d0Type = D0Types.positive;\n let total;\n if (this.type === 'normalized') {\n total = this.series.map(d => d.value).reduce((sum, d) => sum + d, 0);\n }\n this.bars = this.series.map((d, index) => {\n let value = d.value;\n const label = this.getLabel(d);\n const formattedLabel = formatLabel(label);\n const roundEdges = this.roundEdges;\n d0Type = value > 0 ? D0Types.positive : D0Types.negative;\n const bar = {\n value,\n label,\n roundEdges,\n data: d,\n width,\n formattedLabel,\n height: 0,\n x: 0,\n y: 0\n };\n if (this.type === 'standard') {\n bar.height = Math.abs(this.yScale(value) - this.yScale(yScaleMin));\n bar.x = this.xScale(label);\n if (value < 0) {\n bar.y = this.yScale(0);\n }\n else {\n bar.y = this.yScale(value);\n }\n }\n else if (this.type === 'stacked') {\n const offset0 = d0[d0Type];\n const offset1 = offset0 + value;\n d0[d0Type] += value;\n bar.height = this.yScale(offset0) - this.yScale(offset1);\n bar.x = 0;\n bar.y = this.yScale(offset1);\n bar.offset0 = offset0;\n bar.offset1 = offset1;\n }\n else if (this.type === 'normalized') {\n let offset0 = d0[d0Type];\n let offset1 = offset0 + value;\n d0[d0Type] += value;\n if (total > 0) {\n offset0 = (offset0 * 100) / total;\n offset1 = (offset1 * 100) / total;\n }\n else {\n offset0 = 0;\n offset1 = 0;\n }\n bar.height = this.yScale(offset0) - this.yScale(offset1);\n bar.x = 0;\n bar.y = this.yScale(offset1);\n bar.offset0 = offset0;\n bar.offset1 = offset1;\n value = (offset1 - offset0).toFixed(2) + '%';\n }\n if (this.colors.scaleType === 'ordinal') {\n bar.color = this.colors.getColor(label);\n }\n else {\n if (this.type === 'standard') {\n bar.color = this.colors.getColor(value);\n bar.gradientStops = this.colors.getLinearGradientStops(value);\n }\n else {\n bar.color = this.colors.getColor(bar.offset1);\n bar.gradientStops = this.colors.getLinearGradientStops(bar.offset1, bar.offset0);\n }\n }\n let tooltipLabel = formattedLabel;\n bar.ariaLabel = formattedLabel + ' ' + value.toLocaleString();\n if (this.seriesName) {\n tooltipLabel = `${this.seriesName} • ${formattedLabel}`;\n bar.data.series = this.seriesName;\n bar.ariaLabel = this.seriesName + ' ' + bar.ariaLabel;\n }\n bar.tooltipText = this.tooltipDisabled\n ? undefined\n : `\n ${escapeLabel(tooltipLabel)}\n ${this.dataLabelFormatting ? this.dataLabelFormatting(value) : value.toLocaleString()}\n `;\n return bar;\n });\n this.updateDataLabels();\n }\n updateDataLabels() {\n if (this.type === 'stacked') {\n this.barsForDataLabels = [];\n const section = {};\n section.series = this.seriesName;\n const totalPositive = this.series.map(d => d.value).reduce((sum, d) => (d > 0 ? sum + d : sum), 0);\n const totalNegative = this.series.map(d => d.value).reduce((sum, d) => (d < 0 ? sum + d : sum), 0);\n section.total = totalPositive + totalNegative;\n section.x = 0;\n section.y = 0;\n if (section.total > 0) {\n section.height = this.yScale(totalPositive);\n }\n else {\n section.height = this.yScale(totalNegative);\n }\n section.width = this.xScale.bandwidth();\n this.barsForDataLabels.push(section);\n }\n else {\n this.barsForDataLabels = this.series.map(d => {\n const section = {};\n section.series = this.seriesName ? this.seriesName : d.label;\n section.total = d.value;\n section.x = this.xScale(d.label);\n section.y = this.yScale(0);\n section.height = this.yScale(section.total) - this.yScale(0);\n section.width = this.xScale.bandwidth();\n return section;\n });\n }\n }\n updateTooltipSettings() {\n this.tooltipPlacement = this.tooltipDisabled ? undefined : 'top';\n this.tooltipType = this.tooltipDisabled ? undefined : 'tooltip';\n }\n isActive(entry) {\n if (!this.activeEntries)\n return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name && entry.series === d.series;\n });\n return item !== undefined;\n }\n onClick(data) {\n this.select.emit(data);\n }\n getLabel(dataItem) {\n if (dataItem.label) {\n return dataItem.label;\n }\n return dataItem.name;\n }\n trackBy(index, bar) {\n return bar.label;\n }\n trackDataLabelBy(index, barLabel) {\n return index + '#' + barLabel.series + '#' + barLabel.total;\n }\n}\nSeriesVerticalComponent.ɵfac = function SeriesVerticalComponent_Factory(t) { return new (t || SeriesVerticalComponent)(); };\nSeriesVerticalComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: SeriesVerticalComponent, selectors: [[\"g\", \"ngx-charts-series-vertical\", \"\"]], inputs: { type: \"type\", tooltipDisabled: \"tooltipDisabled\", animations: \"animations\", showDataLabel: \"showDataLabel\", noBarWhenZero: \"noBarWhenZero\", dims: \"dims\", series: \"series\", xScale: \"xScale\", yScale: \"yScale\", colors: \"colors\", gradient: \"gradient\", activeEntries: \"activeEntries\", seriesName: \"seriesName\", tooltipTemplate: \"tooltipTemplate\", roundEdges: \"roundEdges\", dataLabelFormatting: \"dataLabelFormatting\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\", dataLabelHeightChanged: \"dataLabelHeightChanged\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c27, decls: 2, vars: 3, consts: [[\"ngx-charts-bar\", \"\", \"ngx-tooltip\", \"\", 3, \"width\", \"height\", \"x\", \"y\", \"fill\", \"stops\", \"data\", \"orientation\", \"roundEdges\", \"gradient\", \"ariaLabel\", \"isActive\", \"tooltipDisabled\", \"tooltipPlacement\", \"tooltipType\", \"tooltipTitle\", \"tooltipTemplate\", \"tooltipContext\", \"noBarWhenZero\", \"animations\", \"select\", \"activate\", \"deactivate\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [4, \"ngIf\"], [\"ngx-charts-bar\", \"\", \"ngx-tooltip\", \"\", 3, \"width\", \"height\", \"x\", \"y\", \"fill\", \"stops\", \"data\", \"orientation\", \"roundEdges\", \"gradient\", \"ariaLabel\", \"isActive\", \"tooltipDisabled\", \"tooltipPlacement\", \"tooltipType\", \"tooltipTitle\", \"tooltipTemplate\", \"tooltipContext\", \"noBarWhenZero\", \"animations\", \"select\", \"activate\", \"deactivate\"], [\"ngx-charts-bar-label\", \"\", 3, \"barX\", \"barY\", \"barWidth\", \"barHeight\", \"value\", \"valueFormatting\", \"orientation\", \"dimensionsChanged\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"ngx-charts-bar-label\", \"\", 3, \"barX\", \"barY\", \"barWidth\", \"barHeight\", \"value\", \"valueFormatting\", \"orientation\", \"dimensionsChanged\"]], template: function SeriesVerticalComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, SeriesVerticalComponent__svg_g_0_Template, 1, 22, \"g\", 0);\n ɵngcc0.ɵɵtemplate(1, SeriesVerticalComponent__svg_g_1_Template, 2, 2, \"g\", 1);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.bars)(\"ngForTrackBy\", ctx.trackBy);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showDataLabel);\n } }, directives: function () { return [ɵngcc1.NgForOf, BarComponent, TooltipDirective, ɵngcc1.NgIf, BarLabelComponent]; }, encapsulation: 2, data: { animation: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1\n }),\n animate(500, style({ opacity: 0 }))\n ])\n ])\n ] }, changeDetection: 0 });\nSeriesVerticalComponent.propDecorators = {\n dims: [{ type: Input }],\n type: [{ type: Input }],\n series: [{ type: Input }],\n xScale: [{ type: Input }],\n yScale: [{ type: Input }],\n colors: [{ type: Input }],\n gradient: [{ type: Input }],\n activeEntries: [{ type: Input }],\n seriesName: [{ type: Input }],\n tooltipDisabled: [{ type: Input }],\n tooltipTemplate: [{ type: Input }],\n roundEdges: [{ type: Input }],\n animations: [{ type: Input }],\n showDataLabel: [{ type: Input }],\n dataLabelFormatting: [{ type: Input }],\n noBarWhenZero: [{ type: Input }],\n select: [{ type: Output }],\n activate: [{ type: Output }],\n deactivate: [{ type: Output }],\n dataLabelHeightChanged: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SeriesVerticalComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-series-vertical]',\n template: `\n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1\n }),\n animate(500, style({ opacity: 0 }))\n ])\n ])\n ]\n }]\n }], function () { return []; }, { type: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], animations: [{\n type: Input\n }], showDataLabel: [{\n type: Input\n }], noBarWhenZero: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], dataLabelHeightChanged: [{\n type: Output\n }], dims: [{\n type: Input\n }], series: [{\n type: Input\n }], xScale: [{\n type: Input\n }], yScale: [{\n type: Input\n }], colors: [{\n type: Input\n }], gradient: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], seriesName: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }], roundEdges: [{\n type: Input\n }], dataLabelFormatting: [{\n type: Input\n }] }); })();\n\nclass SeriesHorizontal {\n constructor() {\n this.barsForDataLabels = [];\n this.type = 'standard';\n this.tooltipDisabled = false;\n this.animations = true;\n this.showDataLabel = false;\n this.noBarWhenZero = true;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.dataLabelWidthChanged = new EventEmitter();\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.updateTooltipSettings();\n const d0 = {\n [D0Types.positive]: 0,\n [D0Types.negative]: 0\n };\n let d0Type;\n d0Type = D0Types.positive;\n let total;\n if (this.type === 'normalized') {\n total = this.series.map(d => d.value).reduce((sum, d) => sum + d, 0);\n }\n const xScaleMin = Math.max(this.xScale.domain()[0], 0);\n this.bars = this.series.map((d, index) => {\n let value = d.value;\n const label = this.getLabel(d);\n const formattedLabel = formatLabel(label);\n const roundEdges = this.roundEdges;\n d0Type = value > 0 ? D0Types.positive : D0Types.negative;\n const bar = {\n value,\n label,\n roundEdges,\n data: d,\n formattedLabel\n };\n bar.height = this.yScale.bandwidth();\n if (this.type === 'standard') {\n bar.width = Math.abs(this.xScale(value) - this.xScale(xScaleMin));\n if (value < 0) {\n bar.x = this.xScale(value);\n }\n else {\n bar.x = this.xScale(xScaleMin);\n }\n bar.y = this.yScale(label);\n }\n else if (this.type === 'stacked') {\n const offset0 = d0[d0Type];\n const offset1 = offset0 + value;\n d0[d0Type] += value;\n bar.width = this.xScale(offset1) - this.xScale(offset0);\n bar.x = this.xScale(offset0);\n bar.y = 0;\n bar.offset0 = offset0;\n bar.offset1 = offset1;\n }\n else if (this.type === 'normalized') {\n let offset0 = d0[d0Type];\n let offset1 = offset0 + value;\n d0[d0Type] += value;\n if (total > 0) {\n offset0 = (offset0 * 100) / total;\n offset1 = (offset1 * 100) / total;\n }\n else {\n offset0 = 0;\n offset1 = 0;\n }\n bar.width = this.xScale(offset1) - this.xScale(offset0);\n bar.x = this.xScale(offset0);\n bar.y = 0;\n bar.offset0 = offset0;\n bar.offset1 = offset1;\n value = (offset1 - offset0).toFixed(2) + '%';\n }\n if (this.colors.scaleType === 'ordinal') {\n bar.color = this.colors.getColor(label);\n }\n else {\n if (this.type === 'standard') {\n bar.color = this.colors.getColor(value);\n bar.gradientStops = this.colors.getLinearGradientStops(value);\n }\n else {\n bar.color = this.colors.getColor(bar.offset1);\n bar.gradientStops = this.colors.getLinearGradientStops(bar.offset1, bar.offset0);\n }\n }\n let tooltipLabel = formattedLabel;\n bar.ariaLabel = formattedLabel + ' ' + value.toLocaleString();\n if (this.seriesName) {\n tooltipLabel = `${this.seriesName} • ${formattedLabel}`;\n bar.data.series = this.seriesName;\n bar.ariaLabel = this.seriesName + ' ' + bar.ariaLabel;\n }\n bar.tooltipText = this.tooltipDisabled\n ? undefined\n : `\n ${escapeLabel(tooltipLabel)}\n ${this.dataLabelFormatting ? this.dataLabelFormatting(value) : value.toLocaleString()}\n `;\n return bar;\n });\n this.updateDataLabels();\n }\n updateDataLabels() {\n if (this.type === 'stacked') {\n this.barsForDataLabels = [];\n const section = {};\n section.series = this.seriesName;\n const totalPositive = this.series.map(d => d.value).reduce((sum, d) => (d > 0 ? sum + d : sum), 0);\n const totalNegative = this.series.map(d => d.value).reduce((sum, d) => (d < 0 ? sum + d : sum), 0);\n section.total = totalPositive + totalNegative;\n section.x = 0;\n section.y = 0;\n // if total is positive then we show it on the right, otherwise on the left\n if (section.total > 0) {\n section.width = this.xScale(totalPositive);\n }\n else {\n section.width = this.xScale(totalNegative);\n }\n section.height = this.yScale.bandwidth();\n this.barsForDataLabels.push(section);\n }\n else {\n this.barsForDataLabels = this.series.map(d => {\n const section = {};\n section.series = this.seriesName ? this.seriesName : d.label;\n section.total = d.value;\n section.x = this.xScale(0);\n section.y = this.yScale(d.label);\n section.width = this.xScale(section.total) - this.xScale(0);\n section.height = this.yScale.bandwidth();\n return section;\n });\n }\n }\n updateTooltipSettings() {\n this.tooltipPlacement = this.tooltipDisabled ? undefined : 'top';\n this.tooltipType = this.tooltipDisabled ? undefined : 'tooltip';\n }\n isActive(entry) {\n if (!this.activeEntries)\n return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name && entry.series === d.series;\n });\n return item !== undefined;\n }\n getLabel(dataItem) {\n if (dataItem.label) {\n return dataItem.label;\n }\n return dataItem.name;\n }\n trackBy(index, bar) {\n return bar.label;\n }\n trackDataLabelBy(index, barLabel) {\n return index + '#' + barLabel.series + '#' + barLabel.total;\n }\n click(data) {\n this.select.emit(data);\n }\n}\nSeriesHorizontal.ɵfac = function SeriesHorizontal_Factory(t) { return new (t || SeriesHorizontal)(); };\nSeriesHorizontal.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: SeriesHorizontal, selectors: [[\"g\", \"ngx-charts-series-horizontal\", \"\"]], inputs: { type: \"type\", tooltipDisabled: \"tooltipDisabled\", animations: \"animations\", showDataLabel: \"showDataLabel\", noBarWhenZero: \"noBarWhenZero\", dims: \"dims\", series: \"series\", xScale: \"xScale\", yScale: \"yScale\", colors: \"colors\", gradient: \"gradient\", activeEntries: \"activeEntries\", seriesName: \"seriesName\", tooltipTemplate: \"tooltipTemplate\", roundEdges: \"roundEdges\", dataLabelFormatting: \"dataLabelFormatting\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\", dataLabelWidthChanged: \"dataLabelWidthChanged\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c28, decls: 2, vars: 3, consts: [[\"ngx-charts-bar\", \"\", \"ngx-tooltip\", \"\", 3, \"width\", \"height\", \"x\", \"y\", \"fill\", \"stops\", \"data\", \"orientation\", \"roundEdges\", \"gradient\", \"isActive\", \"ariaLabel\", \"animations\", \"tooltipDisabled\", \"tooltipPlacement\", \"tooltipType\", \"tooltipTitle\", \"tooltipTemplate\", \"tooltipContext\", \"noBarWhenZero\", \"select\", \"activate\", \"deactivate\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [4, \"ngIf\"], [\"ngx-charts-bar\", \"\", \"ngx-tooltip\", \"\", 3, \"width\", \"height\", \"x\", \"y\", \"fill\", \"stops\", \"data\", \"orientation\", \"roundEdges\", \"gradient\", \"isActive\", \"ariaLabel\", \"animations\", \"tooltipDisabled\", \"tooltipPlacement\", \"tooltipType\", \"tooltipTitle\", \"tooltipTemplate\", \"tooltipContext\", \"noBarWhenZero\", \"select\", \"activate\", \"deactivate\"], [\"ngx-charts-bar-label\", \"\", 3, \"barX\", \"barY\", \"barWidth\", \"barHeight\", \"value\", \"valueFormatting\", \"orientation\", \"dimensionsChanged\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"ngx-charts-bar-label\", \"\", 3, \"barX\", \"barY\", \"barWidth\", \"barHeight\", \"value\", \"valueFormatting\", \"orientation\", \"dimensionsChanged\"]], template: function SeriesHorizontal_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, SeriesHorizontal__svg_g_0_Template, 1, 21, \"g\", 0);\n ɵngcc0.ɵɵtemplate(1, SeriesHorizontal__svg_g_1_Template, 2, 2, \"g\", 1);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.bars)(\"ngForTrackBy\", ctx.trackBy);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showDataLabel);\n } }, directives: function () { return [ɵngcc1.NgForOf, BarComponent, TooltipDirective, ɵngcc1.NgIf, BarLabelComponent]; }, encapsulation: 2, data: { animation: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1\n }),\n animate(500, style({ opacity: 0 }))\n ])\n ])\n ] }, changeDetection: 0 });\nSeriesHorizontal.propDecorators = {\n dims: [{ type: Input }],\n type: [{ type: Input }],\n series: [{ type: Input }],\n xScale: [{ type: Input }],\n yScale: [{ type: Input }],\n colors: [{ type: Input }],\n tooltipDisabled: [{ type: Input }],\n gradient: [{ type: Input }],\n activeEntries: [{ type: Input }],\n seriesName: [{ type: Input }],\n tooltipTemplate: [{ type: Input }],\n roundEdges: [{ type: Input }],\n animations: [{ type: Input }],\n showDataLabel: [{ type: Input }],\n dataLabelFormatting: [{ type: Input }],\n noBarWhenZero: [{ type: Input }],\n select: [{ type: Output }],\n activate: [{ type: Output }],\n deactivate: [{ type: Output }],\n dataLabelWidthChanged: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SeriesHorizontal, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-series-horizontal]',\n template: `\n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1\n }),\n animate(500, style({ opacity: 0 }))\n ])\n ])\n ]\n }]\n }], function () { return []; }, { type: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], animations: [{\n type: Input\n }], showDataLabel: [{\n type: Input\n }], noBarWhenZero: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], dataLabelWidthChanged: [{\n type: Output\n }], dims: [{\n type: Input\n }], series: [{\n type: Input\n }], xScale: [{\n type: Input\n }], yScale: [{\n type: Input\n }], colors: [{\n type: Input\n }], gradient: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], seriesName: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }], roundEdges: [{\n type: Input\n }], dataLabelFormatting: [{\n type: Input\n }] }); })();\n\nclass BarLabelComponent {\n constructor(element) {\n this.dimensionsChanged = new EventEmitter();\n this.horizontalPadding = 2;\n this.verticalPadding = 5;\n this.element = element.nativeElement;\n }\n ngOnChanges(changes) {\n this.update();\n }\n getSize() {\n const h = this.element.getBoundingClientRect().height;\n const w = this.element.getBoundingClientRect().width;\n return { height: h, width: w, negative: this.value < 0 };\n }\n ngAfterViewInit() {\n this.dimensionsChanged.emit(this.getSize());\n }\n update() {\n if (this.valueFormatting) {\n this.formatedValue = this.valueFormatting(this.value);\n }\n else {\n this.formatedValue = formatLabel(this.value);\n }\n if (this.orientation === 'horizontal') {\n this.x = this.barX + this.barWidth;\n // if the value is negative then it's on the left of the x0.\n // we need to put the data label in front of the bar\n if (this.value < 0) {\n this.x = this.x - this.horizontalPadding;\n this.textAnchor = 'end';\n }\n else {\n this.x = this.x + this.horizontalPadding;\n this.textAnchor = 'start';\n }\n this.y = this.barY + this.barHeight / 2;\n }\n else {\n // orientation must be \"vertical\"\n this.x = this.barX + this.barWidth / 2;\n this.y = this.barY + this.barHeight;\n if (this.value < 0) {\n this.y = this.y + this.verticalPadding;\n this.textAnchor = 'end';\n }\n else {\n this.y = this.y - this.verticalPadding;\n this.textAnchor = 'start';\n }\n this.transform = `rotate(-45, ${this.x} , ${this.y})`;\n }\n }\n}\nBarLabelComponent.ɵfac = function BarLabelComponent_Factory(t) { return new (t || BarLabelComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nBarLabelComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: BarLabelComponent, selectors: [[\"g\", \"ngx-charts-bar-label\", \"\"]], inputs: { value: \"value\", valueFormatting: \"valueFormatting\", barX: \"barX\", barY: \"barY\", barWidth: \"barWidth\", barHeight: \"barHeight\", orientation: \"orientation\" }, outputs: { dimensionsChanged: \"dimensionsChanged\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c29, decls: 2, vars: 5, consts: [[\"alignment-baseline\", \"middle\", 1, \"textDataLabel\"]], template: function BarLabelComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"text\", 0);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"text-anchor\", ctx.textAnchor)(\"transform\", ctx.transform)(\"x\", ctx.x)(\"y\", ctx.y);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx.formatedValue, \" \");\n } }, styles: [\".textDataLabel[_ngcontent-%COMP%]{font-size:11px}\"], changeDetection: 0 });\nBarLabelComponent.ctorParameters = () => [\n { type: ElementRef }\n];\nBarLabelComponent.propDecorators = {\n value: [{ type: Input }],\n valueFormatting: [{ type: Input }],\n barX: [{ type: Input }],\n barY: [{ type: Input }],\n barWidth: [{ type: Input }],\n barHeight: [{ type: Input }],\n orientation: [{ type: Input }],\n dimensionsChanged: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BarLabelComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-bar-label]',\n template: `\n \n {{ formatedValue }}\n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: [\".textDataLabel{font-size:11px}\"]\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { dimensionsChanged: [{\n type: Output\n }], value: [{\n type: Input\n }], valueFormatting: [{\n type: Input\n }], barX: [{\n type: Input\n }], barY: [{\n type: Input\n }], barWidth: [{\n type: Input\n }], barHeight: [{\n type: Input\n }], orientation: [{\n type: Input\n }] }); })();\n\nclass BarChartModule {\n}\nBarChartModule.ɵfac = function BarChartModule_Factory(t) { return new (t || BarChartModule)(); };\nBarChartModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: BarChartModule });\nBarChartModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[ChartCommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BarChartModule, [{\n type: NgModule,\n args: [{\n imports: [ChartCommonModule],\n declarations: [\n BarComponent,\n BarHorizontalComponent,\n BarHorizontal2DComponent,\n BarHorizontalNormalizedComponent,\n BarHorizontalStackedComponent,\n BarVerticalComponent,\n BarVertical2DComponent,\n BarVerticalNormalizedComponent,\n BarVerticalStackedComponent,\n BarLabelComponent,\n SeriesHorizontal,\n SeriesVerticalComponent\n ],\n exports: [\n BarComponent,\n BarHorizontalComponent,\n BarHorizontal2DComponent,\n BarHorizontalNormalizedComponent,\n BarHorizontalStackedComponent,\n BarVerticalComponent,\n BarVertical2DComponent,\n BarVerticalNormalizedComponent,\n BarVerticalStackedComponent,\n BarLabelComponent,\n SeriesHorizontal,\n SeriesVerticalComponent\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(BarChartModule, { declarations: [BarComponent, BarHorizontalComponent, BarHorizontal2DComponent, BarHorizontalNormalizedComponent, BarHorizontalStackedComponent, BarVerticalComponent, BarVertical2DComponent, BarVerticalNormalizedComponent, BarVerticalStackedComponent, BarLabelComponent, SeriesHorizontal, SeriesVerticalComponent], imports: [ChartCommonModule], exports: [BarComponent, BarHorizontalComponent, BarHorizontal2DComponent, BarHorizontalNormalizedComponent, BarHorizontalStackedComponent, BarVerticalComponent, BarVertical2DComponent, BarVerticalNormalizedComponent, BarVerticalStackedComponent, BarLabelComponent, SeriesHorizontal, SeriesVerticalComponent] }); })();\n\nfunction getDomain(values, scaleType, autoScale, minVal, maxVal) {\n let domain = [];\n if (scaleType === 'linear') {\n values = values.map(v => Number(v));\n if (!autoScale) {\n values.push(0);\n }\n }\n if (scaleType === 'time' || scaleType === 'linear') {\n const min = minVal ? minVal : Math.min(...values);\n const max = maxVal ? maxVal : Math.max(...values);\n domain = [min, max];\n }\n else {\n domain = values;\n }\n return domain;\n}\nfunction getScale(domain, range, scaleType, roundDomains) {\n let scale;\n if (scaleType === 'time') {\n scale = scaleTime().range(range).domain(domain);\n }\n else if (scaleType === 'linear') {\n scale = scaleLinear().range(range).domain(domain);\n if (roundDomains) {\n scale = scale.nice();\n }\n }\n else if (scaleType === 'ordinal') {\n scale = scalePoint().range([range[0], range[1]]).domain(domain);\n }\n return scale;\n}\n\nclass BubbleChartComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.showGridLines = true;\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = 'right';\n this.xAxis = true;\n this.yAxis = true;\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.roundDomains = false;\n this.maxRadius = 10;\n this.minRadius = 3;\n this.schemeType = 'ordinal';\n this.tooltipDisabled = false;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.scaleType = 'linear';\n this.margin = [10, 20, 10, 20];\n this.bubblePadding = [0, 0, 0, 0];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.activeEntries = [];\n }\n update() {\n super.update();\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n this.seriesDomain = this.results.map(d => d.name);\n this.rDomain = this.getRDomain();\n this.xDomain = this.getXDomain();\n this.yDomain = this.getYDomain();\n this.transform = `translate(${this.dims.xOffset},${this.margin[0]})`;\n const colorDomain = this.schemeType === 'ordinal' ? this.seriesDomain : this.rDomain;\n this.colors = new ColorHelper(this.scheme, this.schemeType, colorDomain, this.customColors);\n this.data = this.results;\n this.minRadius = Math.max(this.minRadius, 1);\n this.maxRadius = Math.max(this.maxRadius, 1);\n this.rScale = this.getRScale(this.rDomain, [this.minRadius, this.maxRadius]);\n this.bubblePadding = [0, 0, 0, 0];\n this.setScales();\n this.bubblePadding = this.getBubblePadding();\n this.setScales();\n this.legendOptions = this.getLegendOptions();\n this.clipPathId = 'clip' + id().toString();\n this.clipPath = `url(#${this.clipPathId})`;\n }\n hideCircles() {\n this.deactivateAll();\n }\n onClick(data, series) {\n if (series) {\n data.series = series.name;\n }\n this.select.emit(data);\n }\n getBubblePadding() {\n let yMin = 0;\n let xMin = 0;\n let yMax = this.dims.height;\n let xMax = this.dims.width;\n for (const s of this.data) {\n for (const d of s.series) {\n const r = this.rScale(d.r);\n const cx = this.xScaleType === 'linear' ? this.xScale(Number(d.x)) : this.xScale(d.x);\n const cy = this.yScaleType === 'linear' ? this.yScale(Number(d.y)) : this.yScale(d.y);\n xMin = Math.max(r - cx, xMin);\n yMin = Math.max(r - cy, yMin);\n yMax = Math.max(cy + r, yMax);\n xMax = Math.max(cx + r, xMax);\n }\n }\n xMax = Math.max(xMax - this.dims.width, 0);\n yMax = Math.max(yMax - this.dims.height, 0);\n return [yMin, xMax, yMax, xMin];\n }\n setScales() {\n let width = this.dims.width;\n if (this.xScaleMin === undefined && this.xScaleMax === undefined) {\n width = width - this.bubblePadding[1];\n }\n let height = this.dims.height;\n if (this.yScaleMin === undefined && this.yScaleMax === undefined) {\n height = height - this.bubblePadding[2];\n }\n this.xScale = this.getXScale(this.xDomain, width);\n this.yScale = this.getYScale(this.yDomain, height);\n }\n getYScale(domain, height) {\n return getScale(domain, [height, this.bubblePadding[0]], this.yScaleType, this.roundDomains);\n }\n getXScale(domain, width) {\n return getScale(domain, [this.bubblePadding[3], width], this.xScaleType, this.roundDomains);\n }\n getRScale(domain, range) {\n const scale = scaleLinear().range(range).domain(domain);\n return this.roundDomains ? scale.nice() : scale;\n }\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType,\n colors: undefined,\n domain: [],\n position: this.legendPosition,\n title: undefined\n };\n if (opts.scaleType === 'ordinal') {\n opts.domain = this.seriesDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n }\n else {\n opts.domain = this.rDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n getXDomain() {\n const values = [];\n for (const results of this.results) {\n for (const d of results.series) {\n if (!values.includes(d.x)) {\n values.push(d.x);\n }\n }\n }\n this.xScaleType = getScaleType(values);\n return getDomain(values, this.xScaleType, this.autoScale, this.xScaleMin, this.xScaleMax);\n }\n getYDomain() {\n const values = [];\n for (const results of this.results) {\n for (const d of results.series) {\n if (!values.includes(d.y)) {\n values.push(d.y);\n }\n }\n }\n this.yScaleType = getScaleType(values);\n return getDomain(values, this.yScaleType, this.autoScale, this.yScaleMin, this.yScaleMax);\n }\n getRDomain() {\n let min = Infinity;\n let max = -Infinity;\n for (const results of this.results) {\n for (const d of results.series) {\n const value = Number(d.r) || 1;\n min = Math.min(min, value);\n max = Math.max(max, value);\n }\n }\n return [min, max];\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onActivate(item) {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name;\n });\n if (idx > -1) {\n return;\n }\n this.activeEntries = [item, ...this.activeEntries];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(item) {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name;\n });\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n deactivateAll() {\n this.activeEntries = [...this.activeEntries];\n for (const entry of this.activeEntries) {\n this.deactivate.emit({ value: entry, entries: [] });\n }\n this.activeEntries = [];\n }\n trackBy(index, item) {\n return item.name;\n }\n}\nBubbleChartComponent.ɵfac = /*@__PURE__*/ function () { let ɵBubbleChartComponent_BaseFactory; return function BubbleChartComponent_Factory(t) { return (ɵBubbleChartComponent_BaseFactory || (ɵBubbleChartComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(BubbleChartComponent)))(t || BubbleChartComponent); }; }();\nBubbleChartComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: BubbleChartComponent, selectors: [[\"ngx-charts-bubble-chart\"]], contentQueries: function BubbleChartComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n } }, hostBindings: function BubbleChartComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"mouseleave\", function BubbleChartComponent_mouseleave_HostBindingHandler() { return ctx.hideCircles(); });\n } }, inputs: { showGridLines: \"showGridLines\", legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", xAxis: \"xAxis\", yAxis: \"yAxis\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", roundDomains: \"roundDomains\", maxRadius: \"maxRadius\", minRadius: \"minRadius\", schemeType: \"schemeType\", tooltipDisabled: \"tooltipDisabled\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", autoScale: \"autoScale\", xScaleMin: \"xScaleMin\", xScaleMax: \"xScaleMax\", yScaleMin: \"yScaleMin\", yScaleMax: \"yScaleMax\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 10, vars: 20, consts: [[3, \"view\", \"showLegend\", \"activeEntries\", \"legendOptions\", \"animations\", \"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"], [1, \"bubble-chart\", \"chart\"], [\"ngx-charts-x-axis\", \"\", 3, \"showGridLines\", \"dims\", \"xScale\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-y-axis\", \"\", 3, \"showGridLines\", \"yScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [\"x\", \"0\", \"y\", \"0\", 1, \"bubble-chart-area\", 2, \"fill\", \"rgb(255, 0, 0)\", \"opacity\", \"0\", \"cursor\", \"auto\", 3, \"mouseenter\"], [4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"ngx-charts-x-axis\", \"\", 3, \"showGridLines\", \"dims\", \"xScale\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-y-axis\", \"\", 3, \"showGridLines\", \"yScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-bubble-series\", \"\", 3, \"xScale\", \"yScale\", \"rScale\", \"xScaleType\", \"yScaleType\", \"xAxisLabel\", \"yAxisLabel\", \"colors\", \"data\", \"activeEntries\", \"tooltipDisabled\", \"tooltipTemplate\", \"select\", \"activate\", \"deactivate\"]], template: function BubbleChartComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n ɵngcc0.ɵɵlistener(\"legendLabelClick\", function BubbleChartComponent_Template_ngx_charts_chart_legendLabelClick_0_listener($event) { return ctx.onClick($event); })(\"legendLabelActivate\", function BubbleChartComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener($event) { return ctx.onActivate($event); })(\"legendLabelDeactivate\", function BubbleChartComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener($event) { return ctx.onDeactivate($event); });\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(1, \"defs\")(2, \"clipPath\");\n ɵngcc0.ɵɵelement(3, \"rect\");\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵelementStart(4, \"g\", 1);\n ɵngcc0.ɵɵtemplate(5, BubbleChartComponent__svg_g_5_Template, 1, 10, \"g\", 2);\n ɵngcc0.ɵɵtemplate(6, BubbleChartComponent__svg_g_6_Template, 1, 9, \"g\", 3);\n ɵngcc0.ɵɵelementStart(7, \"rect\", 4);\n ɵngcc0.ɵɵlistener(\"mouseenter\", function BubbleChartComponent_Template__svg_rect_mouseenter_7_listener() { return ctx.deactivateAll(); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(8, \"g\");\n ɵngcc0.ɵɵtemplate(9, BubbleChartComponent__svg_g_9_Template, 2, 13, \"g\", 5);\n ɵngcc0.ɵɵelementEnd()()();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(17, _c23, ctx.width, ctx.height))(\"showLegend\", ctx.legend)(\"activeEntries\", ctx.activeEntries)(\"legendOptions\", ctx.legendOptions)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵattribute(\"id\", ctx.clipPathId);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"width\", ctx.dims.width + 10)(\"height\", ctx.dims.height + 10)(\"transform\", \"translate(-5, -5)\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.xAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.yAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"width\", ctx.dims.width)(\"height\", ctx.dims.height);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"clip-path\", ctx.clipPath);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.data)(\"ngForTrackBy\", ctx.trackBy);\n } }, directives: function () { return [ChartComponent, ɵngcc1.NgIf, XAxisComponent, YAxisComponent, ɵngcc1.NgForOf, BubbleSeriesComponent]; }, styles: [_c24], encapsulation: 2, data: { animation: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1\n }),\n animate(500, style({\n opacity: 0\n }))\n ])\n ])\n ] }, changeDetection: 0 });\nBubbleChartComponent.propDecorators = {\n showGridLines: [{ type: Input }],\n legend: [{ type: Input }],\n legendTitle: [{ type: Input }],\n legendPosition: [{ type: Input }],\n xAxis: [{ type: Input }],\n yAxis: [{ type: Input }],\n showXAxisLabel: [{ type: Input }],\n showYAxisLabel: [{ type: Input }],\n xAxisLabel: [{ type: Input }],\n yAxisLabel: [{ type: Input }],\n trimXAxisTicks: [{ type: Input }],\n trimYAxisTicks: [{ type: Input }],\n rotateXAxisTicks: [{ type: Input }],\n maxXAxisTickLength: [{ type: Input }],\n maxYAxisTickLength: [{ type: Input }],\n xAxisTickFormatting: [{ type: Input }],\n yAxisTickFormatting: [{ type: Input }],\n xAxisTicks: [{ type: Input }],\n yAxisTicks: [{ type: Input }],\n roundDomains: [{ type: Input }],\n maxRadius: [{ type: Input }],\n minRadius: [{ type: Input }],\n autoScale: [{ type: Input }],\n schemeType: [{ type: Input }],\n tooltipDisabled: [{ type: Input }],\n xScaleMin: [{ type: Input }],\n xScaleMax: [{ type: Input }],\n yScaleMin: [{ type: Input }],\n yScaleMax: [{ type: Input }],\n activate: [{ type: Output }],\n deactivate: [{ type: Output }],\n tooltipTemplate: [{ type: ContentChild, args: ['tooltipTemplate',] }],\n hideCircles: [{ type: HostListener, args: ['mouseleave',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BubbleChartComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-charts-bubble-chart',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1\n }),\n animate(500, style({\n opacity: 0\n }))\n ])\n ])\n ],\n styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:none}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{opacity:.2;transition:opacity .1s ease-in-out}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{fill:none;stroke:#ddd;stroke-width:1}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-dasharray:5;stroke-dashoffset:5;stroke-width:1}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill:#000;fill-opacity:.05}.ngx-charts .gridline-path-dotted{fill:none;stroke:#ddd;stroke-dasharray:1,20;stroke-dashoffset:3;stroke-width:1}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"]\n }]\n }], null, { showGridLines: [{\n type: Input\n }], legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], maxRadius: [{\n type: Input\n }], minRadius: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], hideCircles: [{\n type: HostListener,\n args: ['mouseleave']\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], autoScale: [{\n type: Input\n }], xScaleMin: [{\n type: Input\n }], xScaleMax: [{\n type: Input\n }], yScaleMin: [{\n type: Input\n }], yScaleMax: [{\n type: Input\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] }); })();\n\nclass BubbleSeriesComponent {\n constructor() {\n this.tooltipDisabled = false;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.circles = this.getCircles();\n }\n getCircles() {\n const seriesName = this.data.name;\n return this.data.series\n .map((d, i) => {\n if (typeof d.y !== 'undefined' && typeof d.x !== 'undefined') {\n const y = d.y;\n const x = d.x;\n const r = d.r;\n const radius = this.rScale(r || 1);\n const tooltipLabel = formatLabel(d.name);\n const cx = this.xScaleType === 'linear' ? this.xScale(Number(x)) : this.xScale(x);\n const cy = this.yScaleType === 'linear' ? this.yScale(Number(y)) : this.yScale(y);\n const color = this.colors.scaleType === 'linear' ? this.colors.getColor(r) : this.colors.getColor(seriesName);\n const isActive = !this.activeEntries.length ? true : this.isActive({ name: seriesName });\n const opacity = isActive ? 1 : 0.3;\n const data = Object.assign({}, d, {\n series: seriesName,\n name: d.name,\n value: d.y,\n x: d.x,\n radius: d.r\n });\n return {\n data,\n x,\n y,\n r,\n classNames: [`circle-data-${i}`],\n value: y,\n label: x,\n cx,\n cy,\n radius,\n tooltipLabel,\n color,\n opacity,\n seriesName,\n isActive,\n transform: `translate(${cx},${cy})`\n };\n }\n })\n .filter(circle => circle !== undefined);\n }\n getTooltipText(circle) {\n const hasRadius = typeof circle.r !== 'undefined';\n const hasTooltipLabel = circle.tooltipLabel && circle.tooltipLabel.length;\n const hasSeriesName = circle.seriesName && circle.seriesName.length;\n const radiusValue = hasRadius ? formatLabel(circle.r) : '';\n const xAxisLabel = this.xAxisLabel && this.xAxisLabel !== '' ? `${this.xAxisLabel}:` : '';\n const yAxisLabel = this.yAxisLabel && this.yAxisLabel !== '' ? `${this.yAxisLabel}:` : '';\n const x = formatLabel(circle.x);\n const y = formatLabel(circle.y);\n const name = hasSeriesName && hasTooltipLabel\n ? `${circle.seriesName} • ${circle.tooltipLabel}`\n : circle.seriesName + circle.tooltipLabel;\n const tooltipTitle = hasSeriesName || hasTooltipLabel ? `${escapeLabel(name)}` : '';\n return `\n ${tooltipTitle}\n \n ${escapeLabel(x)}
    \n ${escapeLabel(y)}\n
    \n \n ${escapeLabel(radiusValue)}\n \n `;\n }\n onClick(data) {\n this.select.emit(data);\n }\n isActive(entry) {\n if (!this.activeEntries)\n return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name;\n });\n return item !== undefined;\n }\n isVisible(circle) {\n if (this.activeEntries.length > 0) {\n return this.isActive({ name: circle.seriesName });\n }\n return circle.opacity !== 0;\n }\n activateCircle(circle) {\n circle.barVisible = true;\n this.activate.emit({ name: this.data.name });\n }\n deactivateCircle(circle) {\n circle.barVisible = false;\n this.deactivate.emit({ name: this.data.name });\n }\n trackBy(index, circle) {\n return `${circle.data.series} ${circle.data.name}`;\n }\n}\nBubbleSeriesComponent.ɵfac = function BubbleSeriesComponent_Factory(t) { return new (t || BubbleSeriesComponent)(); };\nBubbleSeriesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: BubbleSeriesComponent, selectors: [[\"g\", \"ngx-charts-bubble-series\", \"\"]], inputs: { tooltipDisabled: \"tooltipDisabled\", data: \"data\", xScale: \"xScale\", yScale: \"yScale\", rScale: \"rScale\", xScaleType: \"xScaleType\", yScaleType: \"yScaleType\", colors: \"colors\", visibleValue: \"visibleValue\", activeEntries: \"activeEntries\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", tooltipTemplate: \"tooltipTemplate\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c30, decls: 1, vars: 2, consts: [[4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"ngx-charts-circle\", \"\", \"ngx-tooltip\", \"\", 1, \"circle\", 3, \"cx\", \"cy\", \"r\", \"fill\", \"pointerEvents\", \"data\", \"classNames\", \"tooltipDisabled\", \"tooltipPlacement\", \"tooltipType\", \"tooltipTitle\", \"tooltipTemplate\", \"tooltipContext\", \"select\", \"activate\", \"deactivate\"]], template: function BubbleSeriesComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, BubbleSeriesComponent__svg_g_0_Template, 3, 19, \"g\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.circles)(\"ngForTrackBy\", ctx.trackBy);\n } }, directives: [ɵngcc1.NgForOf, CircleComponent, TooltipDirective], encapsulation: 2, data: { animation: [\n trigger('animationState', [\n transition(':enter', [\n style({\n opacity: 0,\n transform: 'scale(0)'\n }),\n animate(250, style({ opacity: 1, transform: 'scale(1)' }))\n ])\n ])\n ] }, changeDetection: 0 });\nBubbleSeriesComponent.propDecorators = {\n data: [{ type: Input }],\n xScale: [{ type: Input }],\n yScale: [{ type: Input }],\n rScale: [{ type: Input }],\n xScaleType: [{ type: Input }],\n yScaleType: [{ type: Input }],\n colors: [{ type: Input }],\n visibleValue: [{ type: Input }],\n activeEntries: [{ type: Input }],\n xAxisLabel: [{ type: Input }],\n yAxisLabel: [{ type: Input }],\n tooltipDisabled: [{ type: Input }],\n tooltipTemplate: [{ type: Input }],\n select: [{ type: Output }],\n activate: [{ type: Output }],\n deactivate: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BubbleSeriesComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-bubble-series]',\n template: `\n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('animationState', [\n transition(':enter', [\n style({\n opacity: 0,\n transform: 'scale(0)'\n }),\n animate(250, style({ opacity: 1, transform: 'scale(1)' }))\n ])\n ])\n ]\n }]\n }], function () { return []; }, { tooltipDisabled: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], data: [{\n type: Input\n }], xScale: [{\n type: Input\n }], yScale: [{\n type: Input\n }], rScale: [{\n type: Input\n }], xScaleType: [{\n type: Input\n }], yScaleType: [{\n type: Input\n }], colors: [{\n type: Input\n }], visibleValue: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }] }); })();\n\nclass BubbleChartModule {\n}\nBubbleChartModule.ɵfac = function BubbleChartModule_Factory(t) { return new (t || BubbleChartModule)(); };\nBubbleChartModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: BubbleChartModule });\nBubbleChartModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[ChartCommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BubbleChartModule, [{\n type: NgModule,\n args: [{\n imports: [ChartCommonModule],\n declarations: [BubbleChartComponent, BubbleSeriesComponent],\n exports: [BubbleChartComponent, BubbleSeriesComponent]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(BubbleChartModule, { declarations: [BubbleChartComponent, BubbleSeriesComponent], imports: [ChartCommonModule], exports: [BubbleChartComponent, BubbleSeriesComponent] }); })();\n\nclass HeatMapCellComponent {\n constructor(element) {\n this.gradient = false;\n this.animations = true;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.element = element.nativeElement;\n }\n ngOnChanges(changes) {\n this.transform = `translate(${this.x} , ${this.y})`;\n this.startOpacity = 0.3;\n this.gradientId = 'grad' + id().toString();\n this.gradientUrl = `url(#${this.gradientId})`;\n this.gradientStops = this.getGradientStops();\n if (this.animations) {\n this.loadAnimation();\n }\n }\n getGradientStops() {\n return [\n {\n offset: 0,\n color: this.fill,\n opacity: this.startOpacity\n },\n {\n offset: 100,\n color: this.fill,\n opacity: 1\n }\n ];\n }\n loadAnimation() {\n const node = select(this.element).select('.cell');\n node.attr('opacity', 0);\n this.animateToCurrentForm();\n }\n animateToCurrentForm() {\n const node = select(this.element).select('.cell');\n node.transition().duration(750).attr('opacity', 1);\n }\n onClick() {\n this.select.emit(this.data);\n }\n onMouseEnter() {\n this.activate.emit(this.data);\n }\n onMouseLeave() {\n this.deactivate.emit(this.data);\n }\n}\nHeatMapCellComponent.ɵfac = function HeatMapCellComponent_Factory(t) { return new (t || HeatMapCellComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nHeatMapCellComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: HeatMapCellComponent, selectors: [[\"g\", \"ngx-charts-heat-map-cell\", \"\"]], hostBindings: function HeatMapCellComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"mouseenter\", function HeatMapCellComponent_mouseenter_HostBindingHandler() { return ctx.onMouseEnter(); })(\"mouseleave\", function HeatMapCellComponent_mouseleave_HostBindingHandler() { return ctx.onMouseLeave(); });\n } }, inputs: { gradient: \"gradient\", animations: \"animations\", fill: \"fill\", x: \"x\", y: \"y\", width: \"width\", height: \"height\", data: \"data\", label: \"label\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c31, decls: 3, vars: 5, consts: [[1, \"cell\"], [4, \"ngIf\"], [\"rx\", \"3\", 1, \"cell\", 2, \"cursor\", \"pointer\", 3, \"click\"], [\"ngx-charts-svg-linear-gradient\", \"\", \"orientation\", \"vertical\", 3, \"name\", \"stops\"]], template: function HeatMapCellComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 0);\n ɵngcc0.ɵɵtemplate(1, HeatMapCellComponent__svg_defs_1_Template, 2, 2, \"defs\", 1);\n ɵngcc0.ɵɵelementStart(2, \"rect\", 2);\n ɵngcc0.ɵɵlistener(\"click\", function HeatMapCellComponent_Template__svg_rect_click_2_listener() { return ctx.onClick(); });\n ɵngcc0.ɵɵelementEnd()();\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.gradient);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"fill\", ctx.gradient ? ctx.gradientUrl : ctx.fill)(\"width\", ctx.width)(\"height\", ctx.height);\n } }, directives: [ɵngcc1.NgIf, SvgLinearGradientComponent], encapsulation: 2, changeDetection: 0 });\nHeatMapCellComponent.ctorParameters = () => [\n { type: ElementRef }\n];\nHeatMapCellComponent.propDecorators = {\n fill: [{ type: Input }],\n x: [{ type: Input }],\n y: [{ type: Input }],\n width: [{ type: Input }],\n height: [{ type: Input }],\n data: [{ type: Input }],\n label: [{ type: Input }],\n gradient: [{ type: Input }],\n animations: [{ type: Input }],\n select: [{ type: Output }],\n activate: [{ type: Output }],\n deactivate: [{ type: Output }],\n onMouseEnter: [{ type: HostListener, args: ['mouseenter',] }],\n onMouseLeave: [{ type: HostListener, args: ['mouseleave',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(HeatMapCellComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-heat-map-cell]',\n template: `\n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { gradient: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], onMouseEnter: [{\n type: HostListener,\n args: ['mouseenter']\n }], onMouseLeave: [{\n type: HostListener,\n args: ['mouseleave']\n }], fill: [{\n type: Input\n }], x: [{\n type: Input\n }], y: [{\n type: Input\n }], width: [{\n type: Input\n }], height: [{\n type: Input\n }], data: [{\n type: Input\n }], label: [{\n type: Input\n }] }); })();\n\nclass HeatCellSeriesComponent {\n constructor() {\n this.tooltipDisabled = false;\n this.animations = true;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n }\n ngOnInit() {\n if (!this.tooltipText) {\n this.tooltipText = this.getTooltipText;\n }\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.cells = this.getCells();\n }\n getCells() {\n const cells = [];\n this.data.map(row => {\n row.series.map(cell => {\n const value = cell.value;\n cell.series = row.name;\n cells.push({\n row,\n cell,\n x: this.xScale(row.name),\n y: this.yScale(cell.name),\n width: this.xScale.bandwidth(),\n height: this.yScale.bandwidth(),\n fill: this.colors.getColor(value),\n data: value,\n label: formatLabel(cell.name),\n series: row.name\n });\n });\n });\n return cells;\n }\n getTooltipText({ label, data, series }) {\n return `\n ${escapeLabel(series)} • ${escapeLabel(label)}\n ${data.toLocaleString()}\n `;\n }\n trackBy(index, item) {\n return item.tooltipText;\n }\n onClick(data) {\n this.select.emit(data);\n }\n}\nHeatCellSeriesComponent.ɵfac = function HeatCellSeriesComponent_Factory(t) { return new (t || HeatCellSeriesComponent)(); };\nHeatCellSeriesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: HeatCellSeriesComponent, selectors: [[\"g\", \"ngx-charts-heat-map-cell-series\", \"\"]], inputs: { tooltipDisabled: \"tooltipDisabled\", animations: \"animations\", tooltipText: \"tooltipText\", data: \"data\", colors: \"colors\", xScale: \"xScale\", yScale: \"yScale\", gradient: \"gradient\", tooltipTemplate: \"tooltipTemplate\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c32, decls: 1, vars: 2, consts: [[\"ngx-charts-heat-map-cell\", \"\", \"ngx-tooltip\", \"\", 3, \"x\", \"y\", \"width\", \"height\", \"fill\", \"data\", \"gradient\", \"animations\", \"tooltipDisabled\", \"tooltipPlacement\", \"tooltipType\", \"tooltipTitle\", \"tooltipTemplate\", \"tooltipContext\", \"select\", \"activate\", \"deactivate\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"ngx-charts-heat-map-cell\", \"\", \"ngx-tooltip\", \"\", 3, \"x\", \"y\", \"width\", \"height\", \"fill\", \"data\", \"gradient\", \"animations\", \"tooltipDisabled\", \"tooltipPlacement\", \"tooltipType\", \"tooltipTitle\", \"tooltipTemplate\", \"tooltipContext\", \"select\", \"activate\", \"deactivate\"]], template: function HeatCellSeriesComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, HeatCellSeriesComponent__svg_g_0_Template, 1, 18, \"g\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.cells)(\"ngForTrackBy\", ctx.trackBy);\n } }, directives: [ɵngcc1.NgForOf, HeatMapCellComponent, TooltipDirective], encapsulation: 2, changeDetection: 0 });\nHeatCellSeriesComponent.propDecorators = {\n data: [{ type: Input }],\n colors: [{ type: Input }],\n xScale: [{ type: Input }],\n yScale: [{ type: Input }],\n gradient: [{ type: Input }],\n tooltipDisabled: [{ type: Input }],\n tooltipText: [{ type: Input }],\n tooltipTemplate: [{ type: Input }],\n animations: [{ type: Input }],\n select: [{ type: Output }],\n activate: [{ type: Output }],\n deactivate: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(HeatCellSeriesComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-heat-map-cell-series]',\n template: `\n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return []; }, { tooltipDisabled: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], tooltipText: [{\n type: Input\n }], data: [{\n type: Input\n }], colors: [{\n type: Input\n }], xScale: [{\n type: Input\n }], yScale: [{\n type: Input\n }], gradient: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }] }); })();\n\nclass HeatMapComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legendTitle = 'Legend';\n this.legendPosition = 'right';\n this.innerPadding = 8;\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.tooltipDisabled = false;\n this.activeEntries = [];\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.scaleType = 'linear';\n }\n update() {\n super.update();\n this.formatDates();\n this.xDomain = this.getXDomain();\n this.yDomain = this.getYDomain();\n this.valueDomain = this.getValueDomain();\n this.scaleType = getScaleType(this.valueDomain, false);\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.scaleType,\n legendPosition: this.legendPosition\n });\n if (this.scaleType === 'linear') {\n let min = this.min;\n let max = this.max;\n if (!this.min) {\n min = Math.min(0, ...this.valueDomain);\n }\n if (!this.max) {\n max = Math.max(...this.valueDomain);\n }\n this.valueDomain = [min, max];\n }\n this.xScale = this.getXScale();\n this.yScale = this.getYScale();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n this.rects = this.getRects();\n }\n getXDomain() {\n const domain = [];\n for (const group of this.results) {\n if (!domain.includes(group.name)) {\n domain.push(group.name);\n }\n }\n return domain;\n }\n getYDomain() {\n const domain = [];\n for (const group of this.results) {\n for (const d of group.series) {\n if (!domain.includes(d.name)) {\n domain.push(d.name);\n }\n }\n }\n return domain;\n }\n getValueDomain() {\n const domain = [];\n for (const group of this.results) {\n for (const d of group.series) {\n if (!domain.includes(d.value)) {\n domain.push(d.value);\n }\n }\n }\n return domain;\n }\n /**\n * Converts the input to gap paddingInner in fraction\n * Supports the following inputs:\n * Numbers: 8\n * Strings: \"8\", \"8px\", \"8%\"\n * Arrays: [8,2], \"8,2\", \"[8,2]\"\n * Mixed: [8,\"2%\"], [\"8px\",\"2%\"], \"8,2%\", \"[8,2%]\"\n *\n * @memberOf HeatMapComponent\n */\n getDimension(value, index = 0, N, L) {\n if (typeof value === 'string') {\n value = value\n .replace('[', '')\n .replace(']', '')\n .replace('px', '')\n // tslint:disable-next-line: quotemark\n .replace(\"'\", '');\n if (value.includes(',')) {\n value = value.split(',');\n }\n }\n if (Array.isArray(value) && typeof index === 'number') {\n return this.getDimension(value[index], null, N, L);\n }\n if (typeof value === 'string' && value.includes('%')) {\n return +value.replace('%', '') / 100;\n }\n return N / (L / +value + 1);\n }\n getXScale() {\n const f = this.getDimension(this.innerPadding, 0, this.xDomain.length, this.dims.width);\n return scaleBand().rangeRound([0, this.dims.width]).domain(this.xDomain).paddingInner(f);\n }\n getYScale() {\n const f = this.getDimension(this.innerPadding, 1, this.yDomain.length, this.dims.height);\n return scaleBand().rangeRound([this.dims.height, 0]).domain(this.yDomain).paddingInner(f);\n }\n getRects() {\n const rects = [];\n this.xDomain.map(xVal => {\n this.yDomain.map(yVal => {\n rects.push({\n x: this.xScale(xVal),\n y: this.yScale(yVal),\n rx: 3,\n width: this.xScale.bandwidth(),\n height: this.yScale.bandwidth(),\n fill: 'rgba(200,200,200,0.03)'\n });\n });\n });\n return rects;\n }\n onClick(data) {\n this.select.emit(data);\n }\n setColors() {\n this.colors = new ColorHelper(this.scheme, this.scaleType, this.valueDomain);\n }\n getLegendOptions() {\n return {\n scaleType: this.scaleType,\n domain: this.valueDomain,\n colors: this.scaleType === 'ordinal' ? this.colors : this.colors.scale,\n title: this.scaleType === 'ordinal' ? this.legendTitle : undefined,\n position: this.legendPosition\n };\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onActivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n const items = this.results\n .map(g => g.series)\n .flat()\n .filter(i => {\n if (fromLegend) {\n return i.label === item.name;\n }\n else {\n return i.name === item.name && i.series === item.series;\n }\n });\n this.activeEntries = [...items];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(event, group, fromLegend = false) {\n const item = Object.assign({}, event);\n if (group) {\n item.series = group.name;\n }\n this.activeEntries = this.activeEntries.filter(i => {\n if (fromLegend) {\n return i.label !== item.name;\n }\n else {\n return !(i.name === item.name && i.series === item.series);\n }\n });\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n}\nHeatMapComponent.ɵfac = /*@__PURE__*/ function () { let ɵHeatMapComponent_BaseFactory; return function HeatMapComponent_Factory(t) { return (ɵHeatMapComponent_BaseFactory || (ɵHeatMapComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(HeatMapComponent)))(t || HeatMapComponent); }; }();\nHeatMapComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: HeatMapComponent, selectors: [[\"ngx-charts-heat-map\"]], contentQueries: function HeatMapComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n } }, inputs: { legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", innerPadding: \"innerPadding\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", tooltipDisabled: \"tooltipDisabled\", activeEntries: \"activeEntries\", legend: \"legend\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", gradient: \"gradient\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", tooltipText: \"tooltipText\", min: \"min\", max: \"max\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 6, vars: 20, consts: [[3, \"view\", \"showLegend\", \"animations\", \"legendOptions\", \"legendLabelClick\"], [1, \"heat-map\", \"chart\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [4, \"ngFor\", \"ngForOf\"], [\"ngx-charts-heat-map-cell-series\", \"\", 3, \"xScale\", \"yScale\", \"colors\", \"data\", \"gradient\", \"animations\", \"tooltipDisabled\", \"tooltipTemplate\", \"tooltipText\", \"select\", \"activate\", \"deactivate\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"]], template: function HeatMapComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n ɵngcc0.ɵɵlistener(\"legendLabelClick\", function HeatMapComponent_Template_ngx_charts_chart_legendLabelClick_0_listener($event) { return ctx.onClick($event); });\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(1, \"g\", 1);\n ɵngcc0.ɵɵtemplate(2, HeatMapComponent__svg_g_2_Template, 1, 9, \"g\", 2);\n ɵngcc0.ɵɵtemplate(3, HeatMapComponent__svg_g_3_Template, 1, 8, \"g\", 3);\n ɵngcc0.ɵɵtemplate(4, HeatMapComponent__svg_rect_4_Template, 1, 6, \"rect\", 4);\n ɵngcc0.ɵɵelementStart(5, \"g\", 5);\n ɵngcc0.ɵɵlistener(\"select\", function HeatMapComponent_Template__svg_g_select_5_listener($event) { return ctx.onClick($event); })(\"activate\", function HeatMapComponent_Template__svg_g_activate_5_listener($event) { return ctx.onActivate($event, undefined); })(\"deactivate\", function HeatMapComponent_Template__svg_g_deactivate_5_listener($event) { return ctx.onDeactivate($event, undefined); });\n ɵngcc0.ɵɵelementEnd()()();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(17, _c23, ctx.width, ctx.height))(\"showLegend\", ctx.legend)(\"animations\", ctx.animations)(\"legendOptions\", ctx.legendOptions);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.xAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.yAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.rects);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"xScale\", ctx.xScale)(\"yScale\", ctx.yScale)(\"colors\", ctx.colors)(\"data\", ctx.results)(\"gradient\", ctx.gradient)(\"animations\", ctx.animations)(\"tooltipDisabled\", ctx.tooltipDisabled)(\"tooltipTemplate\", ctx.tooltipTemplate)(\"tooltipText\", ctx.tooltipText);\n } }, directives: [ChartComponent, ɵngcc1.NgIf, XAxisComponent, YAxisComponent, ɵngcc1.NgForOf, HeatCellSeriesComponent], styles: [_c24], encapsulation: 2, changeDetection: 0 });\nHeatMapComponent.propDecorators = {\n legend: [{ type: Input }],\n legendTitle: [{ type: Input }],\n legendPosition: [{ type: Input }],\n xAxis: [{ type: Input }],\n yAxis: [{ type: Input }],\n showXAxisLabel: [{ type: Input }],\n showYAxisLabel: [{ type: Input }],\n xAxisLabel: [{ type: Input }],\n yAxisLabel: [{ type: Input }],\n gradient: [{ type: Input }],\n innerPadding: [{ type: Input }],\n trimXAxisTicks: [{ type: Input }],\n trimYAxisTicks: [{ type: Input }],\n rotateXAxisTicks: [{ type: Input }],\n maxXAxisTickLength: [{ type: Input }],\n maxYAxisTickLength: [{ type: Input }],\n xAxisTickFormatting: [{ type: Input }],\n yAxisTickFormatting: [{ type: Input }],\n xAxisTicks: [{ type: Input }],\n yAxisTicks: [{ type: Input }],\n tooltipDisabled: [{ type: Input }],\n tooltipText: [{ type: Input }],\n min: [{ type: Input }],\n max: [{ type: Input }],\n activeEntries: [{ type: Input }],\n activate: [{ type: Output }],\n deactivate: [{ type: Output }],\n tooltipTemplate: [{ type: ContentChild, args: ['tooltipTemplate',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(HeatMapComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-charts-heat-map',\n template: `\n \n \n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:none}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{opacity:.2;transition:opacity .1s ease-in-out}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{fill:none;stroke:#ddd;stroke-width:1}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-dasharray:5;stroke-dashoffset:5;stroke-width:1}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill:#000;fill-opacity:.05}.ngx-charts .gridline-path-dotted{fill:none;stroke:#ddd;stroke-dasharray:1,20;stroke-dashoffset:3;stroke-width:1}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"]\n }]\n }], null, { legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], innerPadding: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], legend: [{\n type: Input\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], gradient: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], tooltipText: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] }); })();\n\nclass HeatMapModule {\n}\nHeatMapModule.ɵfac = function HeatMapModule_Factory(t) { return new (t || HeatMapModule)(); };\nHeatMapModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: HeatMapModule });\nHeatMapModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[ChartCommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(HeatMapModule, [{\n type: NgModule,\n args: [{\n imports: [ChartCommonModule],\n declarations: [HeatMapCellComponent, HeatCellSeriesComponent, HeatMapComponent],\n exports: [HeatMapCellComponent, HeatCellSeriesComponent, HeatMapComponent]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(HeatMapModule, { declarations: [HeatMapCellComponent, HeatCellSeriesComponent, HeatMapComponent], imports: [ChartCommonModule], exports: [HeatMapCellComponent, HeatCellSeriesComponent, HeatMapComponent] }); })();\n\nclass LineComponent {\n constructor(element) {\n this.element = element;\n this.fill = 'none';\n this.animations = true;\n this.select = new EventEmitter();\n this.initialized = false;\n }\n ngOnChanges(changes) {\n if (!this.initialized) {\n this.initialized = true;\n this.initialPath = this.path;\n }\n else {\n this.updatePathEl();\n }\n }\n updatePathEl() {\n const node = select(this.element.nativeElement).select('.line');\n if (this.animations) {\n node.transition().duration(750).attr('d', this.path);\n }\n else {\n node.attr('d', this.path);\n }\n }\n}\nLineComponent.ɵfac = function LineComponent_Factory(t) { return new (t || LineComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nLineComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: LineComponent, selectors: [[\"g\", \"ngx-charts-line\", \"\"]], inputs: { fill: \"fill\", animations: \"animations\", path: \"path\", stroke: \"stroke\", data: \"data\" }, outputs: { select: \"select\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c34, decls: 1, vars: 4, consts: [[\"stroke-width\", \"1.5px\", 1, \"line\"]], template: function LineComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"path\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"@animationState\", \"active\");\n ɵngcc0.ɵɵattribute(\"d\", ctx.initialPath)(\"fill\", ctx.fill)(\"stroke\", ctx.stroke);\n } }, encapsulation: 2, data: { animation: [\n trigger('animationState', [\n transition(':enter', [\n style({\n strokeDasharray: 2000,\n strokeDashoffset: 2000\n }),\n animate(1000, style({\n strokeDashoffset: 0\n }))\n ])\n ])\n ] }, changeDetection: 0 });\nLineComponent.ctorParameters = () => [\n { type: ElementRef }\n];\nLineComponent.propDecorators = {\n path: [{ type: Input }],\n stroke: [{ type: Input }],\n data: [{ type: Input }],\n fill: [{ type: Input }],\n animations: [{ type: Input }],\n select: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LineComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-line]',\n template: `\n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('animationState', [\n transition(':enter', [\n style({\n strokeDasharray: 2000,\n strokeDashoffset: 2000\n }),\n animate(1000, style({\n strokeDashoffset: 0\n }))\n ])\n ])\n ]\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { fill: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }], path: [{\n type: Input\n }], stroke: [{\n type: Input\n }], data: [{\n type: Input\n }] }); })();\n\nclass LineChartComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legendTitle = 'Legend';\n this.legendPosition = 'right';\n this.showGridLines = true;\n this.curve = curveLinear;\n this.activeEntries = [];\n this.trimXAxisTicks = true;\n this.trimYAxisTicks = true;\n this.rotateXAxisTicks = true;\n this.maxXAxisTickLength = 16;\n this.maxYAxisTickLength = 16;\n this.roundDomains = false;\n this.tooltipDisabled = false;\n this.showRefLines = false;\n this.showRefLabels = true;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n this.timelineHeight = 50;\n this.timelinePadding = 10;\n }\n update() {\n super.update();\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n if (this.timeline) {\n this.dims.height -= this.timelineHeight + this.margin[2] + this.timelinePadding;\n }\n this.xDomain = this.getXDomain();\n if (this.filteredDomain) {\n this.xDomain = this.filteredDomain;\n }\n this.yDomain = this.getYDomain();\n this.seriesDomain = this.getSeriesDomain();\n this.xScale = this.getXScale(this.xDomain, this.dims.width);\n this.yScale = this.getYScale(this.yDomain, this.dims.height);\n this.updateTimeline();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n this.clipPathId = 'clip' + id().toString();\n this.clipPath = `url(#${this.clipPathId})`;\n }\n updateTimeline() {\n if (this.timeline) {\n this.timelineWidth = this.dims.width;\n this.timelineXDomain = this.getXDomain();\n this.timelineXScale = this.getXScale(this.timelineXDomain, this.timelineWidth);\n this.timelineYScale = this.getYScale(this.yDomain, this.timelineHeight);\n this.timelineTransform = `translate(${this.dims.xOffset}, ${-this.margin[2]})`;\n }\n }\n getXDomain() {\n let values = getUniqueXDomainValues(this.results);\n this.scaleType = getScaleType(values);\n let domain = [];\n if (this.scaleType === 'linear') {\n values = values.map(v => Number(v));\n }\n let min;\n let max;\n if (this.scaleType === 'time' || this.scaleType === 'linear') {\n min = this.xScaleMin ? this.xScaleMin : Math.min(...values);\n max = this.xScaleMax ? this.xScaleMax : Math.max(...values);\n }\n if (this.scaleType === 'time') {\n domain = [new Date(min), new Date(max)];\n this.xSet = [...values].sort((a, b) => {\n const aDate = a.getTime();\n const bDate = b.getTime();\n if (aDate > bDate)\n return 1;\n if (bDate > aDate)\n return -1;\n return 0;\n });\n }\n else if (this.scaleType === 'linear') {\n domain = [min, max];\n // Use compare function to sort numbers numerically\n this.xSet = [...values].sort((a, b) => a - b);\n }\n else {\n domain = values;\n this.xSet = values;\n }\n return domain;\n }\n getYDomain() {\n const domain = [];\n for (const results of this.results) {\n for (const d of results.series) {\n if (domain.indexOf(d.value) < 0) {\n domain.push(d.value);\n }\n if (d.min !== undefined) {\n this.hasRange = true;\n if (domain.indexOf(d.min) < 0) {\n domain.push(d.min);\n }\n }\n if (d.max !== undefined) {\n this.hasRange = true;\n if (domain.indexOf(d.max) < 0) {\n domain.push(d.max);\n }\n }\n }\n }\n const values = [...domain];\n if (!this.autoScale) {\n values.push(0);\n }\n const min = this.yScaleMin ? this.yScaleMin : Math.min(...values);\n const max = this.yScaleMax ? this.yScaleMax : Math.max(...values);\n return [min, max];\n }\n getSeriesDomain() {\n return this.results.map(d => d.name);\n }\n getXScale(domain, width) {\n let scale;\n if (this.scaleType === 'time') {\n scale = scaleTime().range([0, width]).domain(domain);\n }\n else if (this.scaleType === 'linear') {\n scale = scaleLinear().range([0, width]).domain(domain);\n if (this.roundDomains) {\n scale = scale.nice();\n }\n }\n else if (this.scaleType === 'ordinal') {\n scale = scalePoint().range([0, width]).padding(0.1).domain(domain);\n }\n return scale;\n }\n getYScale(domain, height) {\n const scale = scaleLinear().range([height, 0]).domain(domain);\n return this.roundDomains ? scale.nice() : scale;\n }\n updateDomain(domain) {\n this.filteredDomain = domain;\n this.xDomain = this.filteredDomain;\n this.xScale = this.getXScale(this.xDomain, this.dims.width);\n }\n updateHoveredVertical(item) {\n this.hoveredVertical = item.value;\n this.deactivateAll();\n }\n hideCircles() {\n this.hoveredVertical = null;\n this.deactivateAll();\n }\n onClick(data) {\n this.select.emit(data);\n }\n trackBy(index, item) {\n return item.name;\n }\n setColors() {\n let domain;\n if (this.schemeType === 'ordinal') {\n domain = this.seriesDomain;\n }\n else {\n domain = this.yDomain;\n }\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n getLegendOptions() {\n const opts = {\n scaleType: this.schemeType,\n colors: undefined,\n domain: [],\n title: undefined,\n position: this.legendPosition\n };\n if (opts.scaleType === 'ordinal') {\n opts.domain = this.seriesDomain;\n opts.colors = this.colors;\n opts.title = this.legendTitle;\n }\n else {\n opts.domain = this.yDomain;\n opts.colors = this.colors.scale;\n }\n return opts;\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onActivate(item) {\n this.deactivateAll();\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n if (idx > -1) {\n return;\n }\n this.activeEntries = [item];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(item) {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n deactivateAll() {\n this.activeEntries = [...this.activeEntries];\n for (const entry of this.activeEntries) {\n this.deactivate.emit({ value: entry, entries: [] });\n }\n this.activeEntries = [];\n }\n}\nLineChartComponent.ɵfac = /*@__PURE__*/ function () { let ɵLineChartComponent_BaseFactory; return function LineChartComponent_Factory(t) { return (ɵLineChartComponent_BaseFactory || (ɵLineChartComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(LineChartComponent)))(t || LineChartComponent); }; }();\nLineChartComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: LineChartComponent, selectors: [[\"ngx-charts-line-chart\"]], contentQueries: function LineChartComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, _c22, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.seriesTooltipTemplate = _t.first);\n } }, hostBindings: function LineChartComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"mouseleave\", function LineChartComponent_mouseleave_HostBindingHandler() { return ctx.hideCircles(); });\n } }, inputs: { legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", showGridLines: \"showGridLines\", curve: \"curve\", activeEntries: \"activeEntries\", trimXAxisTicks: \"trimXAxisTicks\", trimYAxisTicks: \"trimYAxisTicks\", rotateXAxisTicks: \"rotateXAxisTicks\", maxXAxisTickLength: \"maxXAxisTickLength\", maxYAxisTickLength: \"maxYAxisTickLength\", roundDomains: \"roundDomains\", tooltipDisabled: \"tooltipDisabled\", showRefLines: \"showRefLines\", showRefLabels: \"showRefLabels\", legend: \"legend\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", autoScale: \"autoScale\", timeline: \"timeline\", gradient: \"gradient\", schemeType: \"schemeType\", rangeFillOpacity: \"rangeFillOpacity\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\", xAxisTicks: \"xAxisTicks\", yAxisTicks: \"yAxisTicks\", referenceLines: \"referenceLines\", xScaleMin: \"xScaleMin\", xScaleMax: \"xScaleMax\", yScaleMin: \"yScaleMin\", yScaleMax: \"yScaleMax\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 11, vars: 20, consts: [[3, \"view\", \"showLegend\", \"legendOptions\", \"activeEntries\", \"animations\", \"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"], [1, \"line-chart\", \"chart\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"referenceLines\", \"showRefLines\", \"showRefLabels\", \"dimensionsChanged\", 4, \"ngIf\"], [4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [3, \"mouseleave\", 4, \"ngIf\"], [\"ngx-charts-timeline\", \"\", 3, \"results\", \"view\", \"height\", \"scheme\", \"customColors\", \"scaleType\", \"legend\", \"onDomainChange\", 4, \"ngIf\"], [\"ngx-charts-x-axis\", \"\", 3, \"xScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"rotateTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"dimensionsChanged\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"ticks\", \"referenceLines\", \"showRefLines\", \"showRefLabels\", \"dimensionsChanged\"], [\"ngx-charts-line-series\", \"\", 3, \"xScale\", \"yScale\", \"colors\", \"data\", \"activeEntries\", \"scaleType\", \"curve\", \"rangeFillOpacity\", \"hasRange\", \"animations\"], [3, \"mouseleave\"], [\"ngx-charts-tooltip-area\", \"\", 3, \"dims\", \"xSet\", \"xScale\", \"yScale\", \"results\", \"colors\", \"tooltipDisabled\", \"tooltipTemplate\", \"hover\"], [4, \"ngFor\", \"ngForOf\"], [\"ngx-charts-circle-series\", \"\", 3, \"xScale\", \"yScale\", \"colors\", \"data\", \"scaleType\", \"visibleValue\", \"activeEntries\", \"tooltipDisabled\", \"tooltipTemplate\", \"select\", \"activate\", \"deactivate\"], [\"ngx-charts-timeline\", \"\", 3, \"results\", \"view\", \"height\", \"scheme\", \"customColors\", \"scaleType\", \"legend\", \"onDomainChange\"], [\"ngx-charts-line-series\", \"\", 3, \"xScale\", \"yScale\", \"colors\", \"data\", \"scaleType\", \"curve\", \"hasRange\", \"animations\"]], template: function LineChartComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n ɵngcc0.ɵɵlistener(\"legendLabelClick\", function LineChartComponent_Template_ngx_charts_chart_legendLabelClick_0_listener($event) { return ctx.onClick($event); })(\"legendLabelActivate\", function LineChartComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener($event) { return ctx.onActivate($event); })(\"legendLabelDeactivate\", function LineChartComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener($event) { return ctx.onDeactivate($event); });\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(1, \"defs\")(2, \"clipPath\");\n ɵngcc0.ɵɵelement(3, \"rect\");\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵelementStart(4, \"g\", 1);\n ɵngcc0.ɵɵtemplate(5, LineChartComponent__svg_g_5_Template, 1, 10, \"g\", 2);\n ɵngcc0.ɵɵtemplate(6, LineChartComponent__svg_g_6_Template, 1, 12, \"g\", 3);\n ɵngcc0.ɵɵelementStart(7, \"g\");\n ɵngcc0.ɵɵtemplate(8, LineChartComponent__svg_g_8_Template, 2, 11, \"g\", 4);\n ɵngcc0.ɵɵtemplate(9, LineChartComponent__svg_g_9_Template, 3, 9, \"g\", 5);\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵtemplate(10, LineChartComponent__svg_g_10_Template, 2, 13, \"g\", 6);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(17, _c23, ctx.width, ctx.height))(\"showLegend\", ctx.legend)(\"legendOptions\", ctx.legendOptions)(\"activeEntries\", ctx.activeEntries)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵattribute(\"id\", ctx.clipPathId);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"width\", ctx.dims.width + 10)(\"height\", ctx.dims.height + 10)(\"transform\", \"translate(-5, -5)\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.xAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.yAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"clip-path\", ctx.clipPath);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.results)(\"ngForTrackBy\", ctx.trackBy);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.tooltipDisabled);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.timeline && ctx.scaleType != \"ordinal\");\n } }, directives: function () { return [ChartComponent, ɵngcc1.NgIf, XAxisComponent, YAxisComponent, ɵngcc1.NgForOf, LineSeriesComponent, TooltipArea, CircleSeriesComponent, Timeline]; }, styles: [_c24], encapsulation: 2, data: { animation: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1\n }),\n animate(500, style({\n opacity: 0\n }))\n ])\n ])\n ] }, changeDetection: 0 });\nLineChartComponent.propDecorators = {\n legend: [{ type: Input }],\n legendTitle: [{ type: Input }],\n legendPosition: [{ type: Input }],\n xAxis: [{ type: Input }],\n yAxis: [{ type: Input }],\n showXAxisLabel: [{ type: Input }],\n showYAxisLabel: [{ type: Input }],\n xAxisLabel: [{ type: Input }],\n yAxisLabel: [{ type: Input }],\n autoScale: [{ type: Input }],\n timeline: [{ type: Input }],\n gradient: [{ type: Input }],\n showGridLines: [{ type: Input }],\n curve: [{ type: Input }],\n activeEntries: [{ type: Input }],\n schemeType: [{ type: Input }],\n rangeFillOpacity: [{ type: Input }],\n trimXAxisTicks: [{ type: Input }],\n trimYAxisTicks: [{ type: Input }],\n rotateXAxisTicks: [{ type: Input }],\n maxXAxisTickLength: [{ type: Input }],\n maxYAxisTickLength: [{ type: Input }],\n xAxisTickFormatting: [{ type: Input }],\n yAxisTickFormatting: [{ type: Input }],\n xAxisTicks: [{ type: Input }],\n yAxisTicks: [{ type: Input }],\n roundDomains: [{ type: Input }],\n tooltipDisabled: [{ type: Input }],\n showRefLines: [{ type: Input }],\n referenceLines: [{ type: Input }],\n showRefLabels: [{ type: Input }],\n xScaleMin: [{ type: Input }],\n xScaleMax: [{ type: Input }],\n yScaleMin: [{ type: Input }],\n yScaleMax: [{ type: Input }],\n activate: [{ type: Output }],\n deactivate: [{ type: Output }],\n tooltipTemplate: [{ type: ContentChild, args: ['tooltipTemplate',] }],\n seriesTooltipTemplate: [{ type: ContentChild, args: ['seriesTooltipTemplate',] }],\n hideCircles: [{ type: HostListener, args: ['mouseleave',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LineChartComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-charts-line-chart',\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 \n \n \n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1\n }),\n animate(500, style({\n opacity: 0\n }))\n ])\n ])\n ],\n styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:none}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{opacity:.2;transition:opacity .1s ease-in-out}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{fill:none;stroke:#ddd;stroke-width:1}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-dasharray:5;stroke-dashoffset:5;stroke-width:1}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill:#000;fill-opacity:.05}.ngx-charts .gridline-path-dotted{fill:none;stroke:#ddd;stroke-dasharray:1,20;stroke-dashoffset:3;stroke-width:1}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\"]\n }]\n }], null, { legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], curve: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], trimXAxisTicks: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], rotateXAxisTicks: [{\n type: Input\n }], maxXAxisTickLength: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], showRefLines: [{\n type: Input\n }], showRefLabels: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], hideCircles: [{\n type: HostListener,\n args: ['mouseleave']\n }], legend: [{\n type: Input\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], autoScale: [{\n type: Input\n }], timeline: [{\n type: Input\n }], gradient: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], rangeFillOpacity: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], xAxisTicks: [{\n type: Input\n }], yAxisTicks: [{\n type: Input\n }], referenceLines: [{\n type: Input\n }], xScaleMin: [{\n type: Input\n }], xScaleMax: [{\n type: Input\n }], yScaleMin: [{\n type: Input\n }], yScaleMax: [{\n type: Input\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }], seriesTooltipTemplate: [{\n type: ContentChild,\n args: ['seriesTooltipTemplate']\n }] }); })();\n\nclass LineSeriesComponent {\n constructor() {\n this.animations = true;\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.updateGradients();\n const data = this.sortData(this.data.series);\n const lineGen = this.getLineGenerator();\n this.path = lineGen(data) || '';\n const areaGen = this.getAreaGenerator();\n this.areaPath = areaGen(data) || '';\n if (this.hasRange) {\n const range = this.getRangeGenerator();\n this.outerPath = range(data) || '';\n }\n if (this.hasGradient) {\n this.stroke = this.gradientUrl;\n const values = this.data.series.map(d => d.value);\n const max = Math.max(...values);\n const min = Math.min(...values);\n if (max === min) {\n this.stroke = this.colors.getColor(max);\n }\n }\n else {\n this.stroke = this.colors.getColor(this.data.name);\n }\n }\n getLineGenerator() {\n return line()\n .x(d => {\n const label = d.name;\n let value;\n if (this.scaleType === 'time') {\n value = this.xScale(label);\n }\n else if (this.scaleType === 'linear') {\n value = this.xScale(Number(label));\n }\n else {\n value = this.xScale(label);\n }\n return value;\n })\n .y(d => this.yScale(d.value))\n .curve(this.curve);\n }\n getRangeGenerator() {\n return area()\n .x(d => {\n const label = d.name;\n let value;\n if (this.scaleType === 'time') {\n value = this.xScale(label);\n }\n else if (this.scaleType === 'linear') {\n value = this.xScale(Number(label));\n }\n else {\n value = this.xScale(label);\n }\n return value;\n })\n .y0(d => this.yScale(typeof d.min === 'number' ? d.min : d.value))\n .y1(d => this.yScale(typeof d.max === 'number' ? d.max : d.value))\n .curve(this.curve);\n }\n getAreaGenerator() {\n const xProperty = d => {\n const label = d.name;\n return this.xScale(label);\n };\n return area()\n .x(xProperty)\n .y0(() => this.yScale.range()[0])\n .y1(d => this.yScale(d.value))\n .curve(this.curve);\n }\n sortData(data) {\n if (this.scaleType === 'linear') {\n data = sortLinear(data, 'name');\n }\n else if (this.scaleType === 'time') {\n data = sortByTime(data, 'name');\n }\n else {\n data = sortByDomain(data, 'name', 'asc', this.xScale.domain());\n }\n return data;\n }\n updateGradients() {\n if (this.colors.scaleType === 'linear') {\n this.hasGradient = true;\n this.gradientId = 'grad' + id().toString();\n this.gradientUrl = `url(#${this.gradientId})`;\n const values = this.data.series.map(d => d.value);\n const max = Math.max(...values);\n const min = Math.min(...values);\n this.gradientStops = this.colors.getLinearGradientStops(max, min);\n this.areaGradientStops = this.colors.getLinearGradientStops(max);\n }\n else {\n this.hasGradient = false;\n this.gradientStops = undefined;\n this.areaGradientStops = undefined;\n }\n }\n isActive(entry) {\n if (!this.activeEntries)\n return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name;\n });\n return item !== undefined;\n }\n isInactive(entry) {\n if (!this.activeEntries || this.activeEntries.length === 0)\n return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name;\n });\n return item === undefined;\n }\n}\nLineSeriesComponent.ɵfac = function LineSeriesComponent_Factory(t) { return new (t || LineSeriesComponent)(); };\nLineSeriesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: LineSeriesComponent, selectors: [[\"g\", \"ngx-charts-line-series\", \"\"]], inputs: { animations: \"animations\", data: \"data\", xScale: \"xScale\", yScale: \"yScale\", colors: \"colors\", scaleType: \"scaleType\", curve: \"curve\", activeEntries: \"activeEntries\", rangeFillOpacity: \"rangeFillOpacity\", hasRange: \"hasRange\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c35, decls: 6, vars: 22, consts: [[\"ngx-charts-svg-linear-gradient\", \"\", \"orientation\", \"vertical\", 3, \"name\", \"stops\", 4, \"ngIf\"], [\"ngx-charts-area\", \"\", 1, \"line-highlight\", 3, \"data\", \"path\", \"fill\", \"opacity\", \"startOpacity\", \"gradient\", \"stops\", \"animations\"], [\"ngx-charts-line\", \"\", 1, \"line-series\", 3, \"data\", \"path\", \"stroke\", \"animations\"], [\"ngx-charts-area\", \"\", \"class\", \"line-series-range\", 3, \"data\", \"path\", \"fill\", \"active\", \"inactive\", \"opacity\", \"animations\", 4, \"ngIf\"], [\"ngx-charts-svg-linear-gradient\", \"\", \"orientation\", \"vertical\", 3, \"name\", \"stops\"], [\"ngx-charts-area\", \"\", 1, \"line-series-range\", 3, \"data\", \"path\", \"fill\", \"opacity\", \"animations\"]], template: function LineSeriesComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\")(1, \"defs\");\n ɵngcc0.ɵɵtemplate(2, LineSeriesComponent__svg_g_2_Template, 1, 2, \"g\", 0);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelement(3, \"g\", 1)(4, \"g\", 2);\n ɵngcc0.ɵɵtemplate(5, LineSeriesComponent__svg_g_5_Template, 1, 9, \"g\", 3);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.hasGradient);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"active\", ctx.isActive(ctx.data))(\"inactive\", ctx.isInactive(ctx.data));\n ɵngcc0.ɵɵproperty(\"data\", ctx.data)(\"path\", ctx.areaPath)(\"fill\", ctx.hasGradient ? ctx.gradientUrl : ctx.colors.getColor(ctx.data.name))(\"opacity\", 0.25)(\"startOpacity\", 0)(\"gradient\", true)(\"stops\", ctx.areaGradientStops)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"active\", ctx.isActive(ctx.data))(\"inactive\", ctx.isInactive(ctx.data));\n ɵngcc0.ɵɵproperty(\"data\", ctx.data)(\"path\", ctx.path)(\"stroke\", ctx.stroke)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.hasRange);\n } }, directives: [ɵngcc1.NgIf, SvgLinearGradientComponent, AreaComponent, LineComponent], encapsulation: 2, changeDetection: 0 });\nLineSeriesComponent.propDecorators = {\n data: [{ type: Input }],\n xScale: [{ type: Input }],\n yScale: [{ type: Input }],\n colors: [{ type: Input }],\n scaleType: [{ type: Input }],\n curve: [{ type: Input }],\n activeEntries: [{ type: Input }],\n rangeFillOpacity: [{ type: Input }],\n hasRange: [{ type: Input }],\n animations: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LineSeriesComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-line-series]',\n template: `\n \n \n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return []; }, { animations: [{\n type: Input\n }], data: [{\n type: Input\n }], xScale: [{\n type: Input\n }], yScale: [{\n type: Input\n }], colors: [{\n type: Input\n }], scaleType: [{\n type: Input\n }], curve: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], rangeFillOpacity: [{\n type: Input\n }], hasRange: [{\n type: Input\n }] }); })();\n\nclass LineChartModule {\n}\nLineChartModule.ɵfac = function LineChartModule_Factory(t) { return new (t || LineChartModule)(); };\nLineChartModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: LineChartModule });\nLineChartModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[ChartCommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LineChartModule, [{\n type: NgModule,\n args: [{\n imports: [ChartCommonModule],\n declarations: [LineComponent, LineChartComponent, LineSeriesComponent],\n exports: [LineComponent, LineChartComponent, LineSeriesComponent]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(LineChartModule, { declarations: [LineComponent, LineChartComponent, LineSeriesComponent], imports: [ChartCommonModule], exports: [LineComponent, LineChartComponent, LineSeriesComponent] }); })();\n\nfunction isDate(value) {\n return toString.call(value) === '[object Date]';\n}\nfunction isNumber(value) {\n return typeof value === 'number';\n}\n\nconst twoPI = 2 * Math.PI;\nclass PolarChartComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legendTitle = 'Legend';\n this.legendPosition = 'right';\n this.showGridLines = true;\n this.curve = curveCardinalClosed;\n this.activeEntries = [];\n this.rangeFillOpacity = 0.15;\n this.trimYAxisTicks = true;\n this.maxYAxisTickLength = 16;\n this.roundDomains = false;\n this.tooltipDisabled = false;\n this.showSeriesOnHover = true;\n this.gradient = false;\n this.yAxisMinScale = 0;\n this.labelTrim = true;\n this.labelTrimSize = 10;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [10, 20, 10, 20];\n this.xAxisHeight = 0;\n this.yAxisWidth = 0;\n }\n update() {\n super.update();\n this.setDims();\n this.setScales();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n this.setTicks();\n }\n setDims() {\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showXAxis: this.xAxis,\n showYAxis: this.yAxis,\n xAxisHeight: this.xAxisHeight,\n yAxisWidth: this.yAxisWidth,\n showXLabel: this.showXAxisLabel,\n showYLabel: this.showYAxisLabel,\n showLegend: this.legend,\n legendType: this.schemeType,\n legendPosition: this.legendPosition\n });\n const halfWidth = Math.floor(this.dims.width / 2);\n const halfHeight = Math.floor(this.dims.height / 2);\n const outerRadius = (this.outerRadius = Math.min(halfHeight / 1.5, halfWidth / 1.5));\n const yOffset = Math.max(0, halfHeight - outerRadius);\n this.yAxisDims = Object.assign(Object.assign({}, this.dims), { width: halfWidth });\n this.transform = `translate(${this.dims.xOffset}, ${this.margin[0]})`;\n this.transformYAxis = `translate(0, ${yOffset})`;\n this.labelOffset = this.dims.height + 40;\n this.transformPlot = `translate(${halfWidth}, ${halfHeight})`;\n }\n setScales() {\n const xValues = this.getXValues();\n this.scaleType = getScaleType(xValues);\n this.xDomain = this.filteredDomain || this.getXDomain(xValues);\n this.yDomain = this.getYDomain();\n this.seriesDomain = this.getSeriesDomain();\n this.xScale = this.getXScale(this.xDomain, twoPI);\n this.yScale = this.getYScale(this.yDomain, this.outerRadius);\n this.yAxisScale = this.getYScale(this.yDomain.reverse(), this.outerRadius);\n }\n setTicks() {\n let tickFormat;\n if (this.xAxisTickFormatting) {\n tickFormat = this.xAxisTickFormatting;\n }\n else if (this.xScale.tickFormat) {\n tickFormat = this.xScale.tickFormat.apply(this.xScale, [5]);\n }\n else {\n tickFormat = d => {\n if (isDate(d)) {\n return d.toLocaleDateString();\n }\n return d.toLocaleString();\n };\n }\n const outerRadius = this.outerRadius;\n const s = 1.1;\n this.thetaTicks = this.xDomain.map(d => {\n const startAngle = this.xScale(d);\n const dd = s * outerRadius * (startAngle > Math.PI ? -1 : 1);\n const label = tickFormat(d);\n const startPos = [outerRadius * Math.sin(startAngle), -outerRadius * Math.cos(startAngle)];\n const pos = [dd, s * startPos[1]];\n return {\n innerRadius: 0,\n outerRadius,\n startAngle,\n endAngle: startAngle,\n value: outerRadius,\n label,\n startPos,\n pos\n };\n });\n const minDistance = 10;\n /* from pie chart, abstract out -*/\n for (let i = 0; i < this.thetaTicks.length - 1; i++) {\n const a = this.thetaTicks[i];\n for (let j = i + 1; j < this.thetaTicks.length; j++) {\n const b = this.thetaTicks[j];\n // if they're on the same side\n if (b.pos[0] * a.pos[0] > 0) {\n // if they're overlapping\n const o = minDistance - Math.abs(b.pos[1] - a.pos[1]);\n if (o > 0) {\n // push the second up or down\n b.pos[1] += Math.sign(b.pos[0]) * o;\n }\n }\n }\n }\n this.radiusTicks = this.yAxisScale.ticks(Math.floor(this.dims.height / 50)).map(d => this.yScale(d));\n }\n getXValues() {\n const values = [];\n for (const results of this.results) {\n for (const d of results.series) {\n if (!values.includes(d.name)) {\n values.push(d.name);\n }\n }\n }\n return values;\n }\n getXDomain(values = this.getXValues()) {\n if (this.scaleType === 'time') {\n const min = Math.min(...values);\n const max = Math.max(...values);\n return [min, max];\n }\n else if (this.scaleType === 'linear') {\n values = values.map(v => Number(v));\n const min = Math.min(...values);\n const max = Math.max(...values);\n return [min, max];\n }\n return values;\n }\n getYValues() {\n const domain = [];\n for (const results of this.results) {\n for (const d of results.series) {\n if (domain.indexOf(d.value) < 0) {\n domain.push(d.value);\n }\n if (d.min !== undefined) {\n if (domain.indexOf(d.min) < 0) {\n domain.push(d.min);\n }\n }\n if (d.max !== undefined) {\n if (domain.indexOf(d.max) < 0) {\n domain.push(d.max);\n }\n }\n }\n }\n return domain;\n }\n getYDomain(domain = this.getYValues()) {\n let min = Math.min(...domain);\n const max = Math.max(this.yAxisMinScale, ...domain);\n min = Math.max(0, min);\n if (!this.autoScale) {\n min = Math.min(0, min);\n }\n return [min, max];\n }\n getSeriesDomain() {\n return this.results.map(d => d.name);\n }\n getXScale(domain, width) {\n switch (this.scaleType) {\n case 'time':\n return scaleTime().range([0, width]).domain(domain);\n case 'linear':\n const scale = scaleLinear().range([0, width]).domain(domain);\n return this.roundDomains ? scale.nice() : scale;\n default:\n return scalePoint()\n .range([0, width - twoPI / domain.length])\n .padding(0)\n .domain(domain);\n }\n }\n getYScale(domain, height) {\n const scale = scaleLinear().range([0, height]).domain(domain);\n return this.roundDomains ? scale.nice() : scale;\n }\n onClick(data, series) {\n if (series) {\n data.series = series.name;\n }\n this.select.emit(data);\n }\n setColors() {\n const domain = this.schemeType === 'ordinal' ? this.seriesDomain : this.yDomain.reverse();\n this.colors = new ColorHelper(this.scheme, this.schemeType, domain, this.customColors);\n }\n getLegendOptions() {\n if (this.schemeType === 'ordinal') {\n return {\n scaleType: this.schemeType,\n colors: this.colors,\n domain: this.seriesDomain,\n title: this.legendTitle,\n position: this.legendPosition\n };\n }\n return {\n scaleType: this.schemeType,\n colors: this.colors.scale,\n domain: this.yDomain,\n title: undefined,\n position: this.legendPosition\n };\n }\n updateYAxisWidth({ width }) {\n this.yAxisWidth = width;\n this.update();\n }\n updateXAxisHeight({ height }) {\n this.xAxisHeight = height;\n this.update();\n }\n onActivate(item) {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n if (idx > -1) {\n return;\n }\n this.activeEntries = this.showSeriesOnHover ? [item, ...this.activeEntries] : this.activeEntries;\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(item) {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n deactivateAll() {\n this.activeEntries = [...this.activeEntries];\n for (const entry of this.activeEntries) {\n this.deactivate.emit({ value: entry, entries: [] });\n }\n this.activeEntries = [];\n }\n trackBy(index, item) {\n return item.name;\n }\n}\nPolarChartComponent.ɵfac = /*@__PURE__*/ function () { let ɵPolarChartComponent_BaseFactory; return function PolarChartComponent_Factory(t) { return (ɵPolarChartComponent_BaseFactory || (ɵPolarChartComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(PolarChartComponent)))(t || PolarChartComponent); }; }();\nPolarChartComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: PolarChartComponent, selectors: [[\"ngx-charts-polar-chart\"]], contentQueries: function PolarChartComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n } }, inputs: { legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", showGridLines: \"showGridLines\", curve: \"curve\", activeEntries: \"activeEntries\", rangeFillOpacity: \"rangeFillOpacity\", trimYAxisTicks: \"trimYAxisTicks\", maxYAxisTickLength: \"maxYAxisTickLength\", roundDomains: \"roundDomains\", tooltipDisabled: \"tooltipDisabled\", showSeriesOnHover: \"showSeriesOnHover\", gradient: \"gradient\", yAxisMinScale: \"yAxisMinScale\", labelTrim: \"labelTrim\", labelTrimSize: \"labelTrimSize\", legend: \"legend\", xAxis: \"xAxis\", yAxis: \"yAxis\", showXAxisLabel: \"showXAxisLabel\", showYAxisLabel: \"showYAxisLabel\", xAxisLabel: \"xAxisLabel\", yAxisLabel: \"yAxisLabel\", autoScale: \"autoScale\", schemeType: \"schemeType\", xAxisTickFormatting: \"xAxisTickFormatting\", yAxisTickFormatting: \"yAxisTickFormatting\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 10, vars: 18, consts: [[3, \"view\", \"showLegend\", \"legendOptions\", \"activeEntries\", \"animations\", \"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"], [1, \"polar-chart\", \"chart\"], [\"cx\", \"0\", \"cy\", \"0\", 1, \"polar-chart-background\"], [4, \"ngIf\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"dimensionsChanged\", 4, \"ngIf\"], [\"ngx-charts-axis-label\", \"\", 3, \"label\", \"offset\", \"orient\", \"height\", \"width\", 4, \"ngIf\"], [4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"class\", \"gridline-path radial-gridline-path\", \"cx\", \"0\", \"cy\", \"0\", 4, \"ngFor\", \"ngForOf\"], [\"cx\", \"0\", \"cy\", \"0\", 1, \"gridline-path\", \"radial-gridline-path\"], [\"ngx-charts-pie-label\", \"\", 3, \"data\", \"radius\", \"label\", \"max\", \"value\", \"explodeSlices\", \"animations\", \"labelTrim\", \"labelTrimSize\", 4, \"ngFor\", \"ngForOf\"], [\"ngx-charts-pie-label\", \"\", 3, \"data\", \"radius\", \"label\", \"max\", \"value\", \"explodeSlices\", \"animations\", \"labelTrim\", \"labelTrimSize\"], [\"ngx-charts-y-axis\", \"\", 3, \"yScale\", \"dims\", \"showGridLines\", \"showLabel\", \"labelText\", \"trimTicks\", \"maxTickLength\", \"tickFormatting\", \"dimensionsChanged\"], [\"ngx-charts-axis-label\", \"\", 3, \"label\", \"offset\", \"orient\", \"height\", \"width\"], [\"ngx-charts-polar-series\", \"\", 3, \"gradient\", \"xScale\", \"yScale\", \"colors\", \"data\", \"activeEntries\", \"scaleType\", \"curve\", \"rangeFillOpacity\", \"animations\", \"tooltipDisabled\", \"tooltipTemplate\", \"select\", \"activate\", \"deactivate\"]], template: function PolarChartComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n ɵngcc0.ɵɵlistener(\"legendLabelClick\", function PolarChartComponent_Template_ngx_charts_chart_legendLabelClick_0_listener($event) { return ctx.onClick($event); })(\"legendLabelActivate\", function PolarChartComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener($event) { return ctx.onActivate($event); })(\"legendLabelDeactivate\", function PolarChartComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener($event) { return ctx.onDeactivate($event); });\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(1, \"g\", 1)(2, \"g\");\n ɵngcc0.ɵɵelement(3, \"circle\", 2);\n ɵngcc0.ɵɵtemplate(4, PolarChartComponent__svg_g_4_Template, 2, 1, \"g\", 3);\n ɵngcc0.ɵɵtemplate(5, PolarChartComponent__svg_g_5_Template, 2, 1, \"g\", 3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(6, PolarChartComponent__svg_g_6_Template, 1, 9, \"g\", 4);\n ɵngcc0.ɵɵtemplate(7, PolarChartComponent__svg_g_7_Template, 1, 5, \"g\", 5);\n ɵngcc0.ɵɵelementStart(8, \"g\");\n ɵngcc0.ɵɵtemplate(9, PolarChartComponent__svg_g_9_Template, 2, 13, \"g\", 6);\n ɵngcc0.ɵɵelementEnd()()();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(15, _c23, ctx.width, ctx.height))(\"showLegend\", ctx.legend)(\"legendOptions\", ctx.legendOptions)(\"activeEntries\", ctx.activeEntries)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.transformPlot);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"r\", ctx.outerRadius);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showGridLines);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.xAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.yAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.xAxis && ctx.showXAxisLabel);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.transformPlot);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.results)(\"ngForTrackBy\", ctx.trackBy);\n } }, directives: function () { return [ChartComponent, ɵngcc1.NgIf, ɵngcc1.NgForOf, PieLabelComponent, YAxisComponent, AxisLabelComponent, PolarSeriesComponent]; }, styles: [_c24, _c39, \".polar-chart .polar-chart-background{fill:none}.polar-chart .radial-gridline-path{fill:none;stroke-dasharray:10 10}.polar-chart .pie-label-line{stroke:#2f3646}.polar-charts-series .polar-series-area,.polar-series-path{pointer-events:none}\"], encapsulation: 2, data: { animation: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1\n }),\n animate(500, style({\n opacity: 0\n }))\n ])\n ])\n ] }, changeDetection: 0 });\nPolarChartComponent.propDecorators = {\n legend: [{ type: Input }],\n legendTitle: [{ type: Input }],\n legendPosition: [{ type: Input }],\n xAxis: [{ type: Input }],\n yAxis: [{ type: Input }],\n showXAxisLabel: [{ type: Input }],\n showYAxisLabel: [{ type: Input }],\n xAxisLabel: [{ type: Input }],\n yAxisLabel: [{ type: Input }],\n autoScale: [{ type: Input }],\n showGridLines: [{ type: Input }],\n curve: [{ type: Input }],\n activeEntries: [{ type: Input }],\n schemeType: [{ type: Input }],\n rangeFillOpacity: [{ type: Input }],\n trimYAxisTicks: [{ type: Input }],\n maxYAxisTickLength: [{ type: Input }],\n xAxisTickFormatting: [{ type: Input }],\n yAxisTickFormatting: [{ type: Input }],\n roundDomains: [{ type: Input }],\n tooltipDisabled: [{ type: Input }],\n showSeriesOnHover: [{ type: Input }],\n gradient: [{ type: Input }],\n yAxisMinScale: [{ type: Input }],\n labelTrim: [{ type: Input }],\n labelTrimSize: [{ type: Input }],\n activate: [{ type: Output }],\n deactivate: [{ type: Output }],\n tooltipTemplate: [{ type: ContentChild, args: ['tooltipTemplate',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PolarChartComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-charts-polar-chart',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('animationState', [\n transition(':leave', [\n style({\n opacity: 1\n }),\n animate(500, style({\n opacity: 0\n }))\n ])\n ])\n ],\n styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:none}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{opacity:.2;transition:opacity .1s ease-in-out}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{fill:none;stroke:#ddd;stroke-width:1}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-dasharray:5;stroke-dashoffset:5;stroke-width:1}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill:#000;fill-opacity:.05}.ngx-charts .gridline-path-dotted{fill:none;stroke:#ddd;stroke-dasharray:1,20;stroke-dashoffset:3;stroke-width:1}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\", \".pie-label{font-size:11px}.pie-label.animation{-webkit-animation:fadeIn .75s ease-in;animation:fadeIn .75s ease-in}@-webkit-keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.pie-label-line{stroke-dasharray:100%}.pie-label-line.animation{-webkit-animation:drawOut 3s linear;animation:drawOut 3s linear;transition:d .75s}@-webkit-keyframes drawOut{0%{stroke-dashoffset:100%}to{stroke-dashoffset:0}}@keyframes drawOut{0%{stroke-dashoffset:100%}to{stroke-dashoffset:0}}\", \".polar-chart .polar-chart-background{fill:none}.polar-chart .radial-gridline-path{fill:none;stroke-dasharray:10 10}.polar-chart .pie-label-line{stroke:#2f3646}.polar-charts-series .polar-series-area,.polar-series-path{pointer-events:none}\"]\n }]\n }], null, { legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], showGridLines: [{\n type: Input\n }], curve: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], rangeFillOpacity: [{\n type: Input\n }], trimYAxisTicks: [{\n type: Input\n }], maxYAxisTickLength: [{\n type: Input\n }], roundDomains: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], showSeriesOnHover: [{\n type: Input\n }], gradient: [{\n type: Input\n }], yAxisMinScale: [{\n type: Input\n }], labelTrim: [{\n type: Input\n }], labelTrimSize: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], legend: [{\n type: Input\n }], xAxis: [{\n type: Input\n }], yAxis: [{\n type: Input\n }], showXAxisLabel: [{\n type: Input\n }], showYAxisLabel: [{\n type: Input\n }], xAxisLabel: [{\n type: Input\n }], yAxisLabel: [{\n type: Input\n }], autoScale: [{\n type: Input\n }], schemeType: [{\n type: Input\n }], xAxisTickFormatting: [{\n type: Input\n }], yAxisTickFormatting: [{\n type: Input\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] }); })();\n\nclass PolarSeriesComponent {\n constructor() {\n this.tooltipDisabled = false;\n this.gradient = false;\n this.animations = true;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.circleRadius = 3;\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.updateGradients();\n const line = this.getLineGenerator();\n const data = this.sortData(this.data.series);\n const seriesName = this.data.name;\n const linearScaleType = this.colors.scaleType === 'linear';\n const min = this.yScale.domain()[0];\n this.seriesColor = this.colors.getColor(linearScaleType ? min : seriesName);\n this.path = line(data) || '';\n this.circles = data.map(d => {\n const a = this.getAngle(d);\n const r = this.getRadius(d);\n const value = d.value;\n const color = this.colors.getColor(linearScaleType ? Math.abs(value) : seriesName);\n const cData = Object.assign({}, d, {\n series: seriesName,\n value,\n name: d.name\n });\n return {\n data: cData,\n cx: r * Math.sin(a),\n cy: -r * Math.cos(a),\n value,\n color,\n label: d.name\n };\n });\n this.active = this.isActive(this.data);\n this.inactive = this.isInactive(this.data);\n this.tooltipText = this.tooltipText || (c => this.defaultTooltipText(c));\n }\n getAngle(d) {\n const label = d.name;\n if (this.scaleType === 'time') {\n return this.xScale(label);\n }\n else if (this.scaleType === 'linear') {\n return this.xScale(Number(label));\n }\n return this.xScale(label);\n }\n getRadius(d) {\n return this.yScale(d.value);\n }\n getLineGenerator() {\n return lineRadial()\n .angle(d => this.getAngle(d))\n .radius(d => this.getRadius(d))\n .curve(this.curve);\n }\n sortData(data) {\n if (this.scaleType === 'linear') {\n return sortLinear(data, 'name');\n }\n else if (this.scaleType === 'time') {\n return sortByTime(data, 'name');\n }\n return sortByDomain(data, 'name', 'asc', this.xScale.domain());\n }\n isActive(entry) {\n if (!this.activeEntries)\n return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name;\n });\n return item !== undefined;\n }\n isInactive(entry) {\n if (!this.activeEntries || this.activeEntries.length === 0)\n return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name;\n });\n return item === undefined;\n }\n defaultTooltipText({ label, value }) {\n return `\n ${escapeLabel(this.data.name)} • ${escapeLabel(label)}\n ${value.toLocaleString()}\n `;\n }\n updateGradients() {\n this.hasGradient = this.gradient || this.colors.scaleType === 'linear';\n if (!this.hasGradient) {\n return;\n }\n this.gradientId = 'grad' + id().toString();\n this.gradientUrl = `url(#${this.gradientId})`;\n if (this.colors.scaleType === 'linear') {\n const values = this.data.series.map(d => d.value);\n const max = Math.max(...values);\n const min = Math.min(...values);\n this.gradientStops = this.colors.getLinearGradientStops(max, min);\n }\n else {\n this.gradientStops = undefined;\n }\n }\n}\nPolarSeriesComponent.ɵfac = function PolarSeriesComponent_Factory(t) { return new (t || PolarSeriesComponent)(); };\nPolarSeriesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: PolarSeriesComponent, selectors: [[\"g\", \"ngx-charts-polar-series\", \"\"]], inputs: { tooltipDisabled: \"tooltipDisabled\", gradient: \"gradient\", animations: \"animations\", tooltipText: \"tooltipText\", name: \"name\", data: \"data\", xScale: \"xScale\", yScale: \"yScale\", colors: \"colors\", scaleType: \"scaleType\", curve: \"curve\", activeEntries: \"activeEntries\", rangeFillOpacity: \"rangeFillOpacity\", tooltipTemplate: \"tooltipTemplate\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c36, decls: 5, vars: 11, consts: [[1, \"polar-charts-series\"], [\"ngx-charts-svg-radial-gradient\", \"\", \"orientation\", \"vertical\", 3, \"color\", \"name\", \"startOpacity\", \"endOpacity\", \"stops\", 4, \"ngIf\"], [\"ngx-charts-line\", \"\", 1, \"polar-series-path\", 3, \"path\", \"stroke\", \"fill\", \"animations\"], [\"ngx-charts-circle\", \"\", \"class\", \"circle\", \"ngx-tooltip\", \"\", \"tooltipType\", \"tooltip\", 3, \"cx\", \"cy\", \"r\", \"fill\", \"opacity\", \"tooltipDisabled\", \"tooltipPlacement\", \"tooltipTitle\", \"tooltipTemplate\", \"tooltipContext\", \"select\", \"activate\", \"deactivate\", 4, \"ngFor\", \"ngForOf\"], [\"ngx-charts-svg-radial-gradient\", \"\", \"orientation\", \"vertical\", 3, \"color\", \"name\", \"startOpacity\", \"endOpacity\", \"stops\"], [\"ngx-charts-circle\", \"\", \"ngx-tooltip\", \"\", \"tooltipType\", \"tooltip\", 1, \"circle\", 3, \"cx\", \"cy\", \"r\", \"fill\", \"tooltipDisabled\", \"tooltipPlacement\", \"tooltipTitle\", \"tooltipTemplate\", \"tooltipContext\", \"select\", \"activate\", \"deactivate\"]], template: function PolarSeriesComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 0)(1, \"defs\");\n ɵngcc0.ɵɵtemplate(2, PolarSeriesComponent__svg_g_2_Template, 1, 5, \"g\", 1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelement(3, \"g\", 2);\n ɵngcc0.ɵɵtemplate(4, PolarSeriesComponent__svg_g_4_Template, 1, 11, \"g\", 3);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.hasGradient);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"active\", ctx.active)(\"inactive\", ctx.inactive);\n ɵngcc0.ɵɵproperty(\"path\", ctx.path)(\"stroke\", ctx.hasGradient ? ctx.gradientUrl : ctx.seriesColor)(\"fill\", ctx.hasGradient ? ctx.gradientUrl : ctx.seriesColor)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵattribute(\"fill-opacity\", ctx.rangeFillOpacity);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.circles);\n } }, directives: [ɵngcc1.NgIf, SvgRadialGradientComponent, LineComponent, ɵngcc1.NgForOf, CircleComponent, TooltipDirective], encapsulation: 2, changeDetection: 0 });\nPolarSeriesComponent.propDecorators = {\n name: [{ type: Input }],\n data: [{ type: Input }],\n xScale: [{ type: Input }],\n yScale: [{ type: Input }],\n colors: [{ type: Input }],\n scaleType: [{ type: Input }],\n curve: [{ type: Input }],\n activeEntries: [{ type: Input }],\n rangeFillOpacity: [{ type: Input }],\n tooltipDisabled: [{ type: Input }],\n tooltipText: [{ type: Input }],\n gradient: [{ type: Input }],\n tooltipTemplate: [{ type: Input }],\n animations: [{ type: Input }],\n select: [{ type: Output }],\n activate: [{ type: Output }],\n deactivate: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PolarSeriesComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-polar-series]',\n template: `\n \n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return []; }, { tooltipDisabled: [{\n type: Input\n }], gradient: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], tooltipText: [{\n type: Input\n }], name: [{\n type: Input\n }], data: [{\n type: Input\n }], xScale: [{\n type: Input\n }], yScale: [{\n type: Input\n }], colors: [{\n type: Input\n }], scaleType: [{\n type: Input\n }], curve: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], rangeFillOpacity: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }] }); })();\n\nclass AdvancedPieChartComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.activeEntries = [];\n this.tooltipDisabled = false;\n this.label = 'Total';\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [20, 20, 20, 20];\n }\n update() {\n super.update();\n this.dims = calculateViewDimensions({\n width: (this.width * 4) / 12.0,\n height: this.height,\n margins: this.margin\n });\n this.formatDates();\n this.domain = this.getDomain();\n this.setColors();\n const xOffset = this.dims.width / 2;\n const yOffset = this.margin[0] + this.dims.height / 2;\n this.legendWidth = this.width - this.dims.width - this.margin[1];\n this.outerRadius = Math.min(this.dims.width, this.dims.height) / 2.5;\n this.innerRadius = this.outerRadius * 0.75;\n this.transform = `translate(${xOffset} , ${yOffset})`;\n }\n getDomain() {\n return this.results.map(d => d.label);\n }\n onClick(data) {\n this.select.emit(data);\n }\n setColors() {\n this.colors = new ColorHelper(this.scheme, 'ordinal', this.domain, this.customColors);\n }\n onActivate(item, fromLegend = false) {\n item = this.results.find(d => {\n if (fromLegend) {\n return d.label === item.name;\n }\n else {\n return d.name === item.name;\n }\n });\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value && d.series === item.series;\n });\n if (idx > -1) {\n return;\n }\n this.activeEntries = [item, ...this.activeEntries];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(item, fromLegend = false) {\n item = this.results.find(d => {\n if (fromLegend) {\n return d.label === item.name;\n }\n else {\n return d.name === item.name;\n }\n });\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value && d.series === item.series;\n });\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n}\nAdvancedPieChartComponent.ɵfac = /*@__PURE__*/ function () { let ɵAdvancedPieChartComponent_BaseFactory; return function AdvancedPieChartComponent_Factory(t) { return (ɵAdvancedPieChartComponent_BaseFactory || (ɵAdvancedPieChartComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(AdvancedPieChartComponent)))(t || AdvancedPieChartComponent); }; }();\nAdvancedPieChartComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: AdvancedPieChartComponent, selectors: [[\"ngx-charts-advanced-pie-chart\"]], contentQueries: function AdvancedPieChartComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n } }, inputs: { activeEntries: \"activeEntries\", tooltipDisabled: \"tooltipDisabled\", label: \"label\", gradient: \"gradient\", tooltipText: \"tooltipText\", valueFormatting: \"valueFormatting\", nameFormatting: \"nameFormatting\", percentageFormatting: \"percentageFormatting\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 7, vars: 37, consts: [[1, \"advanced-pie\", \"chart\"], [3, \"view\", \"showLegend\", \"animations\"], [1, \"pie\", \"chart\"], [\"ngx-charts-pie-series\", \"\", 3, \"colors\", \"series\", \"innerRadius\", \"activeEntries\", \"outerRadius\", \"gradient\", \"tooltipDisabled\", \"tooltipTemplate\", \"tooltipText\", \"animations\", \"select\", \"activate\", \"deactivate\"], [1, \"advanced-pie-legend-wrapper\"], [3, \"data\", \"colors\", \"width\", \"label\", \"animations\", \"valueFormatting\", \"labelFormatting\", \"percentageFormatting\", \"select\", \"activate\", \"deactivate\"]], template: function AdvancedPieChartComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\")(1, \"div\", 0)(2, \"ngx-charts-chart\", 1);\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(3, \"g\", 2)(4, \"g\", 3);\n ɵngcc0.ɵɵlistener(\"select\", function AdvancedPieChartComponent_Template__svg_g_select_4_listener($event) { return ctx.onClick($event); })(\"activate\", function AdvancedPieChartComponent_Template__svg_g_activate_4_listener($event) { return ctx.onActivate($event); })(\"deactivate\", function AdvancedPieChartComponent_Template__svg_g_deactivate_4_listener($event) { return ctx.onDeactivate($event); });\n ɵngcc0.ɵɵelementEnd()()()();\n ɵngcc0.ɵɵnamespaceHTML();\n ɵngcc0.ɵɵelementStart(5, \"div\", 4)(6, \"ngx-charts-advanced-legend\", 5);\n ɵngcc0.ɵɵlistener(\"select\", function AdvancedPieChartComponent_Template_ngx_charts_advanced_legend_select_6_listener($event) { return ctx.onClick($event); })(\"activate\", function AdvancedPieChartComponent_Template_ngx_charts_advanced_legend_activate_6_listener($event) { return ctx.onActivate($event, true); })(\"deactivate\", function AdvancedPieChartComponent_Template_ngx_charts_advanced_legend_deactivate_6_listener($event) { return ctx.onDeactivate($event, true); });\n ɵngcc0.ɵɵelementEnd()()();\n } if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"width\", ctx.width, \"px\")(\"height\", ctx.height, \"px\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"width\", ctx.dims.width, \"px\")(\"height\", ctx.dims.height, \"px\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(34, _c23, ctx.width, ctx.height))(\"showLegend\", false)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"colors\", ctx.colors)(\"series\", ctx.results)(\"innerRadius\", ctx.innerRadius)(\"activeEntries\", ctx.activeEntries)(\"outerRadius\", ctx.outerRadius)(\"gradient\", ctx.gradient)(\"tooltipDisabled\", ctx.tooltipDisabled)(\"tooltipTemplate\", ctx.tooltipTemplate)(\"tooltipText\", ctx.tooltipText)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"width\", ctx.width - ctx.dims.width, \"px\")(\"height\", ctx.height, \"px\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"data\", ctx.results)(\"colors\", ctx.colors)(\"width\", ctx.width - ctx.dims.width - ctx.margin[1])(\"label\", ctx.label)(\"animations\", ctx.animations)(\"valueFormatting\", ctx.valueFormatting)(\"labelFormatting\", ctx.nameFormatting)(\"percentageFormatting\", ctx.percentageFormatting);\n } }, directives: function () { return [ChartComponent, PieSeriesComponent, AdvancedLegendComponent]; }, styles: [_c24, \".advanced-pie{float:left}.advanced-pie,.advanced-pie-legend-wrapper{display:inline-block}\"], encapsulation: 2, changeDetection: 0 });\nAdvancedPieChartComponent.propDecorators = {\n gradient: [{ type: Input }],\n activeEntries: [{ type: Input }],\n tooltipDisabled: [{ type: Input }],\n tooltipText: [{ type: Input }],\n label: [{ type: Input }],\n activate: [{ type: Output }],\n deactivate: [{ type: Output }],\n tooltipTemplate: [{ type: ContentChild, args: ['tooltipTemplate',] }],\n valueFormatting: [{ type: Input }],\n nameFormatting: [{ type: Input }],\n percentageFormatting: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AdvancedPieChartComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-charts-advanced-pie-chart',\n template: `\n
    \n
    \n \n \n \n \n \n
    \n
    \n \n \n
    \n
    \n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:none}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{opacity:.2;transition:opacity .1s ease-in-out}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{fill:none;stroke:#ddd;stroke-width:1}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-dasharray:5;stroke-dashoffset:5;stroke-width:1}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill:#000;fill-opacity:.05}.ngx-charts .gridline-path-dotted{fill:none;stroke:#ddd;stroke-dasharray:1,20;stroke-dashoffset:3;stroke-width:1}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\", \".advanced-pie{float:left}.advanced-pie,.advanced-pie-legend-wrapper{display:inline-block}\"]\n }]\n }], null, { activeEntries: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], label: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], gradient: [{\n type: Input\n }], tooltipText: [{\n type: Input\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }], valueFormatting: [{\n type: Input\n }], nameFormatting: [{\n type: Input\n }], percentageFormatting: [{\n type: Input\n }] }); })();\n\nclass PieLabelComponent {\n constructor(platformId) {\n this.platformId = platformId;\n this.animations = true;\n this.labelTrim = true;\n this.labelTrimSize = 10;\n this.trimLabel = trimLabel;\n }\n ngOnChanges(changes) {\n this.setTransforms();\n this.update();\n }\n setTransforms() {\n if (isPlatformServer(this.platformId)) {\n this.styleTransform = `translate3d(${this.textX}px,${this.textY}px, 0)`;\n this.attrTransform = `translate(${this.textX},${this.textY})`;\n this.textTransition = !this.animations ? null : 'transform 0.75s';\n }\n else {\n const isIE = /(edge|msie|trident)/i.test(navigator.userAgent);\n this.styleTransform = isIE ? null : `translate3d(${this.textX}px,${this.textY}px, 0)`;\n this.attrTransform = !isIE ? null : `translate(${this.textX},${this.textY})`;\n this.textTransition = isIE || !this.animations ? null : 'transform 0.75s';\n }\n }\n update() {\n let startRadius = this.radius;\n if (this.explodeSlices) {\n startRadius = (this.radius * this.value) / this.max;\n }\n const innerArc = arc().innerRadius(startRadius).outerRadius(startRadius);\n // Calculate innerPos then scale outer position to match label position\n const innerPos = innerArc.centroid(this.data);\n let scale = this.data.pos[1] / innerPos[1];\n if (this.data.pos[1] === 0 || innerPos[1] === 0) {\n scale = 1;\n }\n const outerPos = [scale * innerPos[0], scale * innerPos[1]];\n this.line = `M${innerPos}L${outerPos}L${this.data.pos}`;\n }\n get textX() {\n return this.data.pos[0];\n }\n get textY() {\n return this.data.pos[1];\n }\n textAnchor() {\n return this.midAngle(this.data) < Math.PI ? 'start' : 'end';\n }\n midAngle(d) {\n return d.startAngle + (d.endAngle - d.startAngle) / 2;\n }\n}\nPieLabelComponent.ɵfac = function PieLabelComponent_Factory(t) { return new (t || PieLabelComponent)(ɵngcc0.ɵɵdirectiveInject(PLATFORM_ID)); };\nPieLabelComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: PieLabelComponent, selectors: [[\"g\", \"ngx-charts-pie-label\", \"\"]], inputs: { animations: \"animations\", labelTrim: \"labelTrim\", labelTrimSize: \"labelTrimSize\", data: \"data\", radius: \"radius\", label: \"label\", color: \"color\", max: \"max\", value: \"value\", explodeSlices: \"explodeSlices\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c37, decls: 6, vars: 17, consts: [[\"dy\", \".35em\", 1, \"pie-label\"], [\"fill\", \"none\", 1, \"pie-label-line\", \"line\"]], template: function PieLabelComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"title\");\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(2, \"g\")(3, \"text\", 0);\n ɵngcc0.ɵɵtext(4);\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵelement(5, \"path\", 1);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx.label);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"transform\", ctx.styleTransform)(\"transition\", ctx.textTransition);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.attrTransform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"text-anchor\", ctx.textAnchor())(\"shape-rendering\", \"crispEdges\");\n ɵngcc0.ɵɵclassProp(\"animation\", ctx.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx.labelTrim ? ctx.trimLabel(ctx.label, ctx.labelTrimSize) : ctx.label, \" \");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"animation\", ctx.animations);\n ɵngcc0.ɵɵattribute(\"d\", ctx.line)(\"stroke\", ctx.color);\n } }, encapsulation: 2, changeDetection: 0 });\nPieLabelComponent.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }\n];\nPieLabelComponent.propDecorators = {\n data: [{ type: Input }],\n radius: [{ type: Input }],\n label: [{ type: Input }],\n color: [{ type: Input }],\n max: [{ type: Input }],\n value: [{ type: Input }],\n explodeSlices: [{ type: Input }],\n animations: [{ type: Input }],\n labelTrim: [{ type: Input }],\n labelTrimSize: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PieLabelComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-pie-label]',\n template: `\n {{ label }}\n \n \n {{ labelTrim ? trimLabel(label, labelTrimSize) : label }}\n \n \n
    \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; }, { animations: [{\n type: Input\n }], labelTrim: [{\n type: Input\n }], labelTrimSize: [{\n type: Input\n }], data: [{\n type: Input\n }], radius: [{\n type: Input\n }], label: [{\n type: Input\n }], color: [{\n type: Input\n }], max: [{\n type: Input\n }], value: [{\n type: Input\n }], explodeSlices: [{\n type: Input\n }] }); })();\n\nclass PieArcComponent {\n constructor(element) {\n this.startAngle = 0;\n this.endAngle = Math.PI * 2;\n this.cornerRadius = 0;\n this.explodeSlices = false;\n this.gradient = false;\n this.animate = true;\n this.pointerEvents = true;\n this.isActive = false;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.dblclick = new EventEmitter();\n this.initialized = false;\n this.element = element.nativeElement;\n }\n ngOnChanges(changes) {\n this.update();\n }\n getGradient() {\n return this.gradient ? this.gradientFill : this.fill;\n }\n getPointerEvents() {\n return this.pointerEvents ? 'auto' : 'none';\n }\n update() {\n const calc = this.calculateArc();\n this.startOpacity = 0.5;\n this.radialGradientId = 'linearGrad' + id().toString();\n this.gradientFill = `url(#${this.radialGradientId})`;\n if (this.animate) {\n if (this.initialized) {\n this.updateAnimation();\n }\n else {\n this.loadAnimation();\n this.initialized = true;\n }\n }\n else {\n this.path = calc.startAngle(this.startAngle).endAngle(this.endAngle)();\n }\n }\n calculateArc() {\n let outerRadius = this.outerRadius;\n if (this.explodeSlices && this.innerRadius === 0) {\n outerRadius = (this.outerRadius * this.value) / this.max;\n }\n return arc().innerRadius(this.innerRadius).outerRadius(outerRadius).cornerRadius(this.cornerRadius);\n }\n loadAnimation() {\n const node = select(this.element)\n .selectAll('.arc')\n .data([{ startAngle: this.startAngle, endAngle: this.endAngle }]);\n const calc = this.calculateArc();\n node\n .transition()\n .attrTween('d', function (d) {\n this._current = this._current || d;\n const copyOfD = Object.assign({}, d);\n copyOfD.endAngle = copyOfD.startAngle;\n const interpolater = interpolate(copyOfD, copyOfD);\n this._current = interpolater(0);\n return function (t) {\n return calc(interpolater(t));\n };\n })\n .transition()\n .duration(750)\n .attrTween('d', function (d) {\n this._current = this._current || d;\n const interpolater = interpolate(this._current, d);\n this._current = interpolater(0);\n return function (t) {\n return calc(interpolater(t));\n };\n });\n }\n updateAnimation() {\n const node = select(this.element)\n .selectAll('.arc')\n .data([{ startAngle: this.startAngle, endAngle: this.endAngle }]);\n const calc = this.calculateArc();\n node\n .transition()\n .duration(750)\n .attrTween('d', function (d) {\n this._current = this._current || d;\n const interpolater = interpolate(this._current, d);\n this._current = interpolater(0);\n return function (t) {\n return calc(interpolater(t));\n };\n });\n }\n onClick() {\n clearTimeout(this._timeout);\n this._timeout = setTimeout(() => this.select.emit(this.data), 200);\n }\n onDblClick(event) {\n event.preventDefault();\n event.stopPropagation();\n clearTimeout(this._timeout);\n this.dblclick.emit({\n data: this.data,\n nativeEvent: event\n });\n }\n}\nPieArcComponent.ɵfac = function PieArcComponent_Factory(t) { return new (t || PieArcComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nPieArcComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: PieArcComponent, selectors: [[\"g\", \"ngx-charts-pie-arc\", \"\"]], inputs: { startAngle: \"startAngle\", endAngle: \"endAngle\", cornerRadius: \"cornerRadius\", explodeSlices: \"explodeSlices\", gradient: \"gradient\", animate: \"animate\", pointerEvents: \"pointerEvents\", isActive: \"isActive\", fill: \"fill\", innerRadius: \"innerRadius\", outerRadius: \"outerRadius\", value: \"value\", max: \"max\", data: \"data\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\", dblclick: \"dblclick\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c38, decls: 3, vars: 7, consts: [[1, \"arc-group\"], [4, \"ngIf\"], [1, \"arc\", 3, \"click\", \"dblclick\", \"mouseenter\", \"mouseleave\"], [\"ngx-charts-svg-radial-gradient\", \"\", \"orientation\", \"vertical\", 3, \"color\", \"name\", \"startOpacity\"]], template: function PieArcComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 0);\n ɵngcc0.ɵɵtemplate(1, PieArcComponent__svg_defs_1_Template, 2, 3, \"defs\", 1);\n ɵngcc0.ɵɵelementStart(2, \"path\", 2);\n ɵngcc0.ɵɵlistener(\"click\", function PieArcComponent_Template__svg_path_click_2_listener() { return ctx.onClick(); })(\"dblclick\", function PieArcComponent_Template__svg_path_dblclick_2_listener($event) { return ctx.onDblClick($event); })(\"mouseenter\", function PieArcComponent_Template__svg_path_mouseenter_2_listener() { return ctx.activate.emit(ctx.data); })(\"mouseleave\", function PieArcComponent_Template__svg_path_mouseleave_2_listener() { return ctx.deactivate.emit(ctx.data); });\n ɵngcc0.ɵɵelementEnd()();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.gradient);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"pointer-events\", ctx.getPointerEvents());\n ɵngcc0.ɵɵclassProp(\"active\", ctx.isActive);\n ɵngcc0.ɵɵattribute(\"d\", ctx.path)(\"fill\", ctx.getGradient());\n } }, directives: [ɵngcc1.NgIf, SvgRadialGradientComponent], encapsulation: 2, changeDetection: 0 });\nPieArcComponent.ctorParameters = () => [\n { type: ElementRef }\n];\nPieArcComponent.propDecorators = {\n fill: [{ type: Input }],\n startAngle: [{ type: Input }],\n endAngle: [{ type: Input }],\n innerRadius: [{ type: Input }],\n outerRadius: [{ type: Input }],\n cornerRadius: [{ type: Input }],\n value: [{ type: Input }],\n max: [{ type: Input }],\n data: [{ type: Input }],\n explodeSlices: [{ type: Input }],\n gradient: [{ type: Input }],\n animate: [{ type: Input }],\n pointerEvents: [{ type: Input }],\n isActive: [{ type: Input }],\n select: [{ type: Output }],\n activate: [{ type: Output }],\n deactivate: [{ type: Output }],\n dblclick: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PieArcComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-pie-arc]',\n template: `\n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { startAngle: [{\n type: Input\n }], endAngle: [{\n type: Input\n }], cornerRadius: [{\n type: Input\n }], explodeSlices: [{\n type: Input\n }], gradient: [{\n type: Input\n }], animate: [{\n type: Input\n }], pointerEvents: [{\n type: Input\n }], isActive: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], dblclick: [{\n type: Output\n }], fill: [{\n type: Input\n }], innerRadius: [{\n type: Input\n }], outerRadius: [{\n type: Input\n }], value: [{\n type: Input\n }], max: [{\n type: Input\n }], data: [{\n type: Input\n }] }); })();\n\nclass PieChartComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.labels = false;\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = 'right';\n this.explodeSlices = false;\n this.doughnut = false;\n this.arcWidth = 0.25;\n this.activeEntries = [];\n this.tooltipDisabled = false;\n this.trimLabels = true;\n this.maxLabelLength = 10;\n this.dblclick = new EventEmitter();\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n }\n update() {\n super.update();\n if (this.labels && this.hasNoOptionalMarginsSet()) {\n this.margins = [30, 80, 30, 80];\n }\n else if (!this.labels && this.hasNoOptionalMarginsSet()) {\n // default value for margins\n this.margins = [20, 20, 20, 20];\n }\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margins,\n showLegend: this.legend,\n legendPosition: this.legendPosition\n });\n this.formatDates();\n const xOffset = this.margins[3] + this.dims.width / 2;\n const yOffset = this.margins[0] + this.dims.height / 2;\n this.translation = `translate(${xOffset}, ${yOffset})`;\n this.outerRadius = Math.min(this.dims.width, this.dims.height);\n if (this.labels) {\n // make room for labels\n this.outerRadius /= 3;\n }\n else {\n this.outerRadius /= 2;\n }\n this.innerRadius = 0;\n if (this.doughnut) {\n this.innerRadius = this.outerRadius * (1 - this.arcWidth);\n }\n this.domain = this.getDomain();\n // sort data according to domain\n this.data = this.results.sort((a, b) => {\n return this.domain.indexOf(a.name) - this.domain.indexOf(b.name);\n });\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n }\n getDomain() {\n return this.results.map(d => d.label);\n }\n onClick(data) {\n this.select.emit(data);\n }\n setColors() {\n this.colors = new ColorHelper(this.scheme, 'ordinal', this.domain, this.customColors);\n }\n getLegendOptions() {\n return {\n scaleType: 'ordinal',\n domain: this.domain,\n colors: this.colors,\n title: this.legendTitle,\n position: this.legendPosition\n };\n }\n onActivate(item, fromLegend = false) {\n item = this.results.find(d => {\n if (fromLegend) {\n return d.label === item.name;\n }\n else {\n return d.name === item.name;\n }\n });\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value && d.series === item.series;\n });\n if (idx > -1) {\n return;\n }\n this.activeEntries = [item, ...this.activeEntries];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(item, fromLegend = false) {\n item = this.results.find(d => {\n if (fromLegend) {\n return d.label === item.name;\n }\n else {\n return d.name === item.name;\n }\n });\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value && d.series === item.series;\n });\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n hasNoOptionalMarginsSet() {\n return !this.margins || this.margins.length <= 0;\n }\n}\nPieChartComponent.ɵfac = /*@__PURE__*/ function () { let ɵPieChartComponent_BaseFactory; return function PieChartComponent_Factory(t) { return (ɵPieChartComponent_BaseFactory || (ɵPieChartComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(PieChartComponent)))(t || PieChartComponent); }; }();\nPieChartComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: PieChartComponent, selectors: [[\"ngx-charts-pie-chart\"]], contentQueries: function PieChartComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n } }, inputs: { labels: \"labels\", legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", explodeSlices: \"explodeSlices\", doughnut: \"doughnut\", arcWidth: \"arcWidth\", activeEntries: \"activeEntries\", tooltipDisabled: \"tooltipDisabled\", trimLabels: \"trimLabels\", maxLabelLength: \"maxLabelLength\", margins: \"margins\", gradient: \"gradient\", labelFormatting: \"labelFormatting\", tooltipText: \"tooltipText\" }, outputs: { dblclick: \"dblclick\", select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 3, vars: 24, consts: [[3, \"view\", \"showLegend\", \"legendOptions\", \"activeEntries\", \"animations\", \"legendLabelActivate\", \"legendLabelDeactivate\", \"legendLabelClick\"], [1, \"pie-chart\", \"chart\"], [\"ngx-charts-pie-series\", \"\", 3, \"colors\", \"series\", \"showLabels\", \"labelFormatting\", \"trimLabels\", \"maxLabelLength\", \"activeEntries\", \"innerRadius\", \"outerRadius\", \"explodeSlices\", \"gradient\", \"animations\", \"tooltipDisabled\", \"tooltipTemplate\", \"tooltipText\", \"dblclick\", \"select\", \"activate\", \"deactivate\"]], template: function PieChartComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n ɵngcc0.ɵɵlistener(\"legendLabelActivate\", function PieChartComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener($event) { return ctx.onActivate($event, true); })(\"legendLabelDeactivate\", function PieChartComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener($event) { return ctx.onDeactivate($event, true); })(\"legendLabelClick\", function PieChartComponent_Template_ngx_charts_chart_legendLabelClick_0_listener($event) { return ctx.onClick($event); });\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(1, \"g\", 1)(2, \"g\", 2);\n ɵngcc0.ɵɵlistener(\"dblclick\", function PieChartComponent_Template__svg_g_dblclick_2_listener($event) { return ctx.dblclick.emit($event); })(\"select\", function PieChartComponent_Template__svg_g_select_2_listener($event) { return ctx.onClick($event); })(\"activate\", function PieChartComponent_Template__svg_g_activate_2_listener($event) { return ctx.onActivate($event); })(\"deactivate\", function PieChartComponent_Template__svg_g_deactivate_2_listener($event) { return ctx.onDeactivate($event); });\n ɵngcc0.ɵɵelementEnd()()();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(21, _c23, ctx.width, ctx.height))(\"showLegend\", ctx.legend)(\"legendOptions\", ctx.legendOptions)(\"activeEntries\", ctx.activeEntries)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.translation);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"colors\", ctx.colors)(\"series\", ctx.data)(\"showLabels\", ctx.labels)(\"labelFormatting\", ctx.labelFormatting)(\"trimLabels\", ctx.trimLabels)(\"maxLabelLength\", ctx.maxLabelLength)(\"activeEntries\", ctx.activeEntries)(\"innerRadius\", ctx.innerRadius)(\"outerRadius\", ctx.outerRadius)(\"explodeSlices\", ctx.explodeSlices)(\"gradient\", ctx.gradient)(\"animations\", ctx.animations)(\"tooltipDisabled\", ctx.tooltipDisabled)(\"tooltipTemplate\", ctx.tooltipTemplate)(\"tooltipText\", ctx.tooltipText);\n } }, directives: function () { return [ChartComponent, PieSeriesComponent]; }, styles: [_c24, _c39], encapsulation: 2, changeDetection: 0 });\nPieChartComponent.propDecorators = {\n labels: [{ type: Input }],\n legend: [{ type: Input }],\n legendTitle: [{ type: Input }],\n legendPosition: [{ type: Input }],\n explodeSlices: [{ type: Input }],\n doughnut: [{ type: Input }],\n arcWidth: [{ type: Input }],\n gradient: [{ type: Input }],\n activeEntries: [{ type: Input }],\n tooltipDisabled: [{ type: Input }],\n labelFormatting: [{ type: Input }],\n trimLabels: [{ type: Input }],\n maxLabelLength: [{ type: Input }],\n tooltipText: [{ type: Input }],\n dblclick: [{ type: Output }],\n margins: [{ type: Input }],\n select: [{ type: Output }],\n activate: [{ type: Output }],\n deactivate: [{ type: Output }],\n tooltipTemplate: [{ type: ContentChild, args: ['tooltipTemplate',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PieChartComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-charts-pie-chart',\n template: `\n \n \n \n \n \n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:none}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{opacity:.2;transition:opacity .1s ease-in-out}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{fill:none;stroke:#ddd;stroke-width:1}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-dasharray:5;stroke-dashoffset:5;stroke-width:1}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill:#000;fill-opacity:.05}.ngx-charts .gridline-path-dotted{fill:none;stroke:#ddd;stroke-dasharray:1,20;stroke-dashoffset:3;stroke-width:1}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\", \".pie-label{font-size:11px}.pie-label.animation{-webkit-animation:fadeIn .75s ease-in;animation:fadeIn .75s ease-in}@-webkit-keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.pie-label-line{stroke-dasharray:100%}.pie-label-line.animation{-webkit-animation:drawOut 3s linear;animation:drawOut 3s linear;transition:d .75s}@-webkit-keyframes drawOut{0%{stroke-dashoffset:100%}to{stroke-dashoffset:0}}@keyframes drawOut{0%{stroke-dashoffset:100%}to{stroke-dashoffset:0}}\"]\n }]\n }], null, { labels: [{\n type: Input\n }], legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], explodeSlices: [{\n type: Input\n }], doughnut: [{\n type: Input\n }], arcWidth: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], trimLabels: [{\n type: Input\n }], maxLabelLength: [{\n type: Input\n }], dblclick: [{\n type: Output\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], margins: [{\n type: Input\n }], gradient: [{\n type: Input\n }], labelFormatting: [{\n type: Input\n }], tooltipText: [{\n type: Input\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] }); })();\n\nfunction gridSize(dims, len, minWidth) {\n let rows = 1;\n let cols = len;\n const width = dims.width;\n if (width > minWidth) {\n while (width / cols < minWidth) {\n rows += 1;\n cols = Math.ceil(len / rows);\n }\n }\n return [cols, rows];\n}\nfunction gridLayout(dims, data, minWidth, designatedTotal) {\n const xScale = scaleBand();\n const yScale = scaleBand();\n const width = dims.width;\n const height = dims.height;\n const [columns, rows] = gridSize(dims, data.length, minWidth);\n const xDomain = [];\n const yDomain = [];\n for (let i = 0; i < rows; i++) {\n yDomain.push(i);\n }\n for (let i = 0; i < columns; i++) {\n xDomain.push(i);\n }\n xScale.domain(xDomain);\n yScale.domain(yDomain);\n xScale.rangeRound([0, width], 0.1);\n yScale.rangeRound([0, height], 0.1);\n const res = [];\n const total = designatedTotal ? designatedTotal : getTotal(data);\n const cardWidth = xScale.bandwidth();\n const cardHeight = yScale.bandwidth();\n for (let i = 0; i < data.length; i++) {\n res[i] = {};\n res[i].data = {\n name: data[i] ? data[i].name : '',\n value: data[i] ? data[i].value : undefined,\n extra: data[i] ? data[i].extra : undefined,\n label: data[i] ? data[i].label : ''\n };\n res[i].x = xScale(i % columns);\n res[i].y = yScale(Math.floor(i / columns));\n res[i].width = cardWidth;\n res[i].height = cardHeight;\n res[i].data.percent = total > 0 ? res[i].data.value / total : 0;\n res[i].data.total = total;\n }\n return res;\n}\nfunction getTotal(results) {\n return results.map(d => (d ? d.value : 0)).reduce((sum, val) => sum + val, 0);\n}\n\nclass PieGridComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.tooltipDisabled = false;\n this.label = 'Total';\n this.minWidth = 150;\n this.activeEntries = [];\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.margin = [20, 20, 20, 20];\n }\n update() {\n super.update();\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin\n });\n this.formatDates();\n this.domain = this.getDomain();\n this.data = gridLayout(this.dims, this.results, this.minWidth, this.designatedTotal);\n this.transform = `translate(${this.margin[3]} , ${this.margin[0]})`;\n this.series = this.getSeries();\n this.setColors();\n this.tooltipText = this.tooltipText || this.defaultTooltipText;\n }\n defaultTooltipText({ data }) {\n const label = trimLabel(formatLabel(data.name));\n const val = data.value.toLocaleString();\n return `\n ${label}\n ${val}\n `;\n }\n getDomain() {\n return this.results.map(d => d.label);\n }\n getSeries() {\n const total = this.designatedTotal ? this.designatedTotal : this.getTotal();\n return this.data.map(d => {\n const baselineLabelHeight = 20;\n const padding = 10;\n const name = d.data.name;\n const label = formatLabel(name);\n const value = d.data.value;\n const radius = min([d.width - padding, d.height - baselineLabelHeight]) / 2 - 5;\n const innerRadius = radius * 0.9;\n let count = 0;\n const colors = () => {\n count += 1;\n if (count === 1) {\n return 'rgba(100,100,100,0.3)';\n }\n else {\n return this.colorScale.getColor(label);\n }\n };\n const xPos = d.x + (d.width - padding) / 2;\n const yPos = d.y + (d.height - baselineLabelHeight) / 2;\n return {\n transform: `translate(${xPos}, ${yPos})`,\n colors,\n innerRadius,\n outerRadius: radius,\n name,\n label: trimLabel(label),\n total: value,\n value,\n percent: format('.1%')(d.data.percent),\n data: [\n d,\n {\n data: {\n other: true,\n value: total - value,\n name: d.data.name\n }\n }\n ]\n };\n });\n }\n getTotal() {\n return this.results.map(d => d.value).reduce((sum, d) => sum + d, 0);\n }\n onClick(data) {\n this.select.emit(data);\n }\n setColors() {\n this.colorScale = new ColorHelper(this.scheme, 'ordinal', this.domain, this.customColors);\n }\n onActivate(item, fromLegend = false) {\n item = this.results.find(d => {\n if (fromLegend) {\n return d.label === item.name;\n }\n else {\n return d.name === item.name;\n }\n });\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value && d.series === item.series;\n });\n if (idx > -1) {\n return;\n }\n this.activeEntries = [item, ...this.activeEntries];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(item, fromLegend = false) {\n item = this.results.find(d => {\n if (fromLegend) {\n return d.label === item.name;\n }\n else {\n return d.name === item.name;\n }\n });\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value && d.series === item.series;\n });\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n}\nPieGridComponent.ɵfac = /*@__PURE__*/ function () { let ɵPieGridComponent_BaseFactory; return function PieGridComponent_Factory(t) { return (ɵPieGridComponent_BaseFactory || (ɵPieGridComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(PieGridComponent)))(t || PieGridComponent); }; }();\nPieGridComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: PieGridComponent, selectors: [[\"ngx-charts-pie-grid\"]], contentQueries: function PieGridComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n } }, inputs: { tooltipDisabled: \"tooltipDisabled\", label: \"label\", minWidth: \"minWidth\", activeEntries: \"activeEntries\", tooltipText: \"tooltipText\", designatedTotal: \"designatedTotal\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 3, vars: 8, consts: [[3, \"view\", \"showLegend\", \"animations\"], [1, \"pie-grid\", \"chart\"], [\"class\", \"pie-grid-item\", 4, \"ngFor\", \"ngForOf\"], [1, \"pie-grid-item\"], [\"ngx-charts-pie-grid-series\", \"\", \"ngx-tooltip\", \"\", 3, \"colors\", \"data\", \"innerRadius\", \"outerRadius\", \"animations\", \"tooltipDisabled\", \"tooltipPlacement\", \"tooltipType\", \"tooltipTitle\", \"tooltipTemplate\", \"tooltipContext\", \"select\", \"activate\", \"deactivate\"], [\"class\", \"label percent-label\", \"dy\", \"-0.5em\", \"x\", \"0\", \"y\", \"5\", \"ngx-charts-count-up\", \"\", \"text-anchor\", \"middle\", 3, \"countTo\", \"countSuffix\", 4, \"ngIf\"], [\"class\", \"label percent-label\", \"dy\", \"-0.5em\", \"x\", \"0\", \"y\", \"5\", \"text-anchor\", \"middle\", 4, \"ngIf\"], [\"dy\", \"0.5em\", \"x\", \"0\", \"y\", \"5\", \"text-anchor\", \"middle\", 1, \"label\"], [\"class\", \"label\", \"dy\", \"1.23em\", \"x\", \"0\", \"text-anchor\", \"middle\", \"ngx-charts-count-up\", \"\", 3, \"countTo\", \"countPrefix\", 4, \"ngIf\"], [\"class\", \"label\", \"dy\", \"1.23em\", \"x\", \"0\", \"text-anchor\", \"middle\", 4, \"ngIf\"], [\"dy\", \"-0.5em\", \"x\", \"0\", \"y\", \"5\", \"ngx-charts-count-up\", \"\", \"text-anchor\", \"middle\", 1, \"label\", \"percent-label\", 3, \"countTo\", \"countSuffix\"], [\"dy\", \"-0.5em\", \"x\", \"0\", \"y\", \"5\", \"text-anchor\", \"middle\", 1, \"label\", \"percent-label\"], [\"dy\", \"1.23em\", \"x\", \"0\", \"text-anchor\", \"middle\", \"ngx-charts-count-up\", \"\", 1, \"label\", 3, \"countTo\", \"countPrefix\"], [\"dy\", \"1.23em\", \"x\", \"0\", \"text-anchor\", \"middle\", 1, \"label\"]], template: function PieGridComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(1, \"g\", 1);\n ɵngcc0.ɵɵtemplate(2, PieGridComponent__svg_g_2_Template, 8, 19, \"g\", 2);\n ɵngcc0.ɵɵelementEnd()();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(5, _c23, ctx.width, ctx.height))(\"showLegend\", false)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.series);\n } }, directives: function () { return [ChartComponent, ɵngcc1.NgForOf, PieGridSeriesComponent, TooltipDirective, ɵngcc1.NgIf, CountUpDirective]; }, styles: [_c24, \".pie-grid .arc1{opacity:.4}.pie-grid .percent-label{font-size:16px;font-weight:400}\"], encapsulation: 2, changeDetection: 0 });\nPieGridComponent.propDecorators = {\n designatedTotal: [{ type: Input }],\n tooltipDisabled: [{ type: Input }],\n tooltipText: [{ type: Input }],\n label: [{ type: Input }],\n minWidth: [{ type: Input }],\n activeEntries: [{ type: Input }],\n activate: [{ type: Output }],\n deactivate: [{ type: Output }],\n tooltipTemplate: [{ type: ContentChild, args: ['tooltipTemplate',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PieGridComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-charts-pie-grid',\n template: `\n \n \n \n \n \n \n {{ series.percent.toLocaleString() }}\n \n \n {{ series.label }}\n \n \n \n {{ label }}: {{ series.total.toLocaleString() }}\n \n \n \n \n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:none}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{opacity:.2;transition:opacity .1s ease-in-out}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{fill:none;stroke:#ddd;stroke-width:1}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-dasharray:5;stroke-dashoffset:5;stroke-width:1}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill:#000;fill-opacity:.05}.ngx-charts .gridline-path-dotted{fill:none;stroke:#ddd;stroke-dasharray:1,20;stroke-dashoffset:3;stroke-width:1}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\", \".pie-grid .arc1{opacity:.4}.pie-grid .percent-label{font-size:16px;font-weight:400}\"]\n }]\n }], null, { tooltipDisabled: [{\n type: Input\n }], label: [{\n type: Input\n }], minWidth: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], tooltipText: [{\n type: Input\n }], designatedTotal: [{\n type: Input\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] }); })();\n\nclass PieGridSeriesComponent {\n constructor(element) {\n this.innerRadius = 70;\n this.outerRadius = 80;\n this.animations = true;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.element = element.nativeElement;\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.layout = pie()\n .value(d => d.data.value)\n .sort(null);\n this.arcs = this.getArcs();\n }\n getArcs() {\n return this.layout(this.data).map((arc, index) => {\n const label = arc.data.data.name;\n const other = arc.data.data.other;\n if (index === 0) {\n arc.startAngle = 0;\n }\n const color = this.colors(label);\n return {\n data: arc.data.data,\n class: 'arc ' + 'arc' + index,\n fill: color,\n startAngle: other ? 0 : arc.startAngle,\n endAngle: arc.endAngle,\n animate: this.animations && !other,\n pointerEvents: !other\n };\n });\n }\n onClick(data) {\n this.select.emit(this.data[0].data);\n }\n trackBy(index, item) {\n return item.data.name;\n }\n label(arc) {\n return arc.data.name;\n }\n color(arc) {\n return this.colors(this.label(arc));\n }\n}\nPieGridSeriesComponent.ɵfac = function PieGridSeriesComponent_Factory(t) { return new (t || PieGridSeriesComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nPieGridSeriesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: PieGridSeriesComponent, selectors: [[\"g\", \"ngx-charts-pie-grid-series\", \"\"]], inputs: { innerRadius: \"innerRadius\", outerRadius: \"outerRadius\", animations: \"animations\", colors: \"colors\", data: \"data\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c41, decls: 2, vars: 2, consts: [[1, \"pie-grid-arcs\"], [\"ngx-charts-pie-arc\", \"\", 3, \"startAngle\", \"endAngle\", \"innerRadius\", \"outerRadius\", \"fill\", \"value\", \"data\", \"gradient\", \"pointerEvents\", \"animate\", \"select\", \"activate\", \"deactivate\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"ngx-charts-pie-arc\", \"\", 3, \"startAngle\", \"endAngle\", \"innerRadius\", \"outerRadius\", \"fill\", \"value\", \"data\", \"gradient\", \"pointerEvents\", \"animate\", \"select\", \"activate\", \"deactivate\"]], template: function PieGridSeriesComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 0);\n ɵngcc0.ɵɵtemplate(1, PieGridSeriesComponent__svg_g_1_Template, 1, 11, \"g\", 1);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.arcs)(\"ngForTrackBy\", ctx.trackBy);\n } }, directives: [ɵngcc1.NgForOf, PieArcComponent], encapsulation: 2, changeDetection: 0 });\nPieGridSeriesComponent.ctorParameters = () => [\n { type: ElementRef }\n];\nPieGridSeriesComponent.propDecorators = {\n colors: [{ type: Input }],\n data: [{ type: Input }],\n innerRadius: [{ type: Input }],\n outerRadius: [{ type: Input }],\n animations: [{ type: Input }],\n select: [{ type: Output }],\n activate: [{ type: Output }],\n deactivate: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PieGridSeriesComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-pie-grid-series]',\n template: `\n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { innerRadius: [{\n type: Input\n }], outerRadius: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], colors: [{\n type: Input\n }], data: [{\n type: Input\n }] }); })();\n\nclass PieSeriesComponent {\n constructor() {\n this.series = [];\n this.innerRadius = 60;\n this.outerRadius = 80;\n this.trimLabels = true;\n this.maxLabelLength = 10;\n this.tooltipDisabled = false;\n this.animations = true;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.dblclick = new EventEmitter();\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n const pieGenerator = pie()\n .value(d => d.value)\n .sort(null);\n const arcData = pieGenerator(this.series);\n this.max = max(arcData, d => {\n return d.value;\n });\n this.data = this.calculateLabelPositions(arcData);\n this.tooltipText = this.tooltipText || this.defaultTooltipText;\n }\n midAngle(d) {\n return d.startAngle + (d.endAngle - d.startAngle) / 2;\n }\n outerArc() {\n const factor = 1.5;\n return arc()\n .innerRadius(this.outerRadius * factor)\n .outerRadius(this.outerRadius * factor);\n }\n calculateLabelPositions(pieData) {\n const factor = 1.5;\n const minDistance = 10;\n const labelPositions = pieData;\n labelPositions.forEach(d => {\n d.pos = this.outerArc().centroid(d);\n d.pos[0] = factor * this.outerRadius * (this.midAngle(d) < Math.PI ? 1 : -1);\n });\n for (let i = 0; i < labelPositions.length - 1; i++) {\n const a = labelPositions[i];\n if (!this.labelVisible(a)) {\n continue;\n }\n for (let j = i + 1; j < labelPositions.length; j++) {\n const b = labelPositions[j];\n if (!this.labelVisible(b)) {\n continue;\n }\n // if they're on the same side\n if (b.pos[0] * a.pos[0] > 0) {\n // if they're overlapping\n const o = minDistance - Math.abs(b.pos[1] - a.pos[1]);\n if (o > 0) {\n // push the second up or down\n b.pos[1] += Math.sign(b.pos[0]) * o;\n }\n }\n }\n }\n return labelPositions;\n }\n labelVisible(myArc) {\n return this.showLabels && myArc.endAngle - myArc.startAngle > Math.PI / 30;\n }\n getTooltipTitle(a) {\n return this.tooltipTemplate ? undefined : this.tooltipText(a);\n }\n labelText(myArc) {\n if (this.labelFormatting) {\n return this.labelFormatting(myArc.data.name);\n }\n return this.label(myArc);\n }\n label(myArc) {\n return formatLabel(myArc.data.name);\n }\n defaultTooltipText(myArc) {\n const label = this.label(myArc);\n const val = formatLabel(myArc.data.value);\n return `\n ${escapeLabel(label)}\n ${val}\n `;\n }\n color(myArc) {\n return this.colors.getColor(this.label(myArc));\n }\n trackBy(index, item) {\n return item.data.name;\n }\n onClick(data) {\n this.select.emit(data);\n }\n isActive(entry) {\n if (!this.activeEntries)\n return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name && entry.series === d.series;\n });\n return item !== undefined;\n }\n}\nPieSeriesComponent.ɵfac = function PieSeriesComponent_Factory(t) { return new (t || PieSeriesComponent)(); };\nPieSeriesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: PieSeriesComponent, selectors: [[\"g\", \"ngx-charts-pie-series\", \"\"]], inputs: { series: \"series\", innerRadius: \"innerRadius\", outerRadius: \"outerRadius\", trimLabels: \"trimLabels\", maxLabelLength: \"maxLabelLength\", tooltipDisabled: \"tooltipDisabled\", animations: \"animations\", tooltipText: \"tooltipText\", colors: \"colors\", dims: \"dims\", explodeSlices: \"explodeSlices\", showLabels: \"showLabels\", gradient: \"gradient\", activeEntries: \"activeEntries\", labelFormatting: \"labelFormatting\", tooltipTemplate: \"tooltipTemplate\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\", dblclick: \"dblclick\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c42, decls: 1, vars: 2, consts: [[4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"ngx-charts-pie-label\", \"\", 3, \"data\", \"radius\", \"color\", \"label\", \"labelTrim\", \"labelTrimSize\", \"max\", \"value\", \"explodeSlices\", \"animations\", 4, \"ngIf\"], [\"ngx-charts-pie-arc\", \"\", \"ngx-tooltip\", \"\", 3, \"startAngle\", \"endAngle\", \"innerRadius\", \"outerRadius\", \"fill\", \"value\", \"gradient\", \"data\", \"max\", \"explodeSlices\", \"isActive\", \"animate\", \"tooltipDisabled\", \"tooltipPlacement\", \"tooltipType\", \"tooltipTitle\", \"tooltipTemplate\", \"tooltipContext\", \"select\", \"activate\", \"deactivate\", \"dblclick\"], [\"ngx-charts-pie-label\", \"\", 3, \"data\", \"radius\", \"color\", \"label\", \"labelTrim\", \"labelTrimSize\", \"max\", \"value\", \"explodeSlices\", \"animations\"]], template: function PieSeriesComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, PieSeriesComponent__svg_g_0_Template, 3, 19, \"g\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.data)(\"ngForTrackBy\", ctx.trackBy);\n } }, directives: [ɵngcc1.NgForOf, ɵngcc1.NgIf, PieLabelComponent, PieArcComponent, TooltipDirective], encapsulation: 2, changeDetection: 0 });\nPieSeriesComponent.propDecorators = {\n colors: [{ type: Input }],\n series: [{ type: Input }],\n dims: [{ type: Input }],\n innerRadius: [{ type: Input }],\n outerRadius: [{ type: Input }],\n explodeSlices: [{ type: Input }],\n showLabels: [{ type: Input }],\n gradient: [{ type: Input }],\n activeEntries: [{ type: Input }],\n labelFormatting: [{ type: Input }],\n trimLabels: [{ type: Input }],\n maxLabelLength: [{ type: Input }],\n tooltipText: [{ type: Input }],\n tooltipDisabled: [{ type: Input }],\n tooltipTemplate: [{ type: Input }],\n animations: [{ type: Input }],\n select: [{ type: Output }],\n activate: [{ type: Output }],\n deactivate: [{ type: Output }],\n dblclick: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PieSeriesComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-pie-series]',\n template: `\n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return []; }, { series: [{\n type: Input\n }], innerRadius: [{\n type: Input\n }], outerRadius: [{\n type: Input\n }], trimLabels: [{\n type: Input\n }], maxLabelLength: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], dblclick: [{\n type: Output\n }], tooltipText: [{\n type: Input\n }], colors: [{\n type: Input\n }], dims: [{\n type: Input\n }], explodeSlices: [{\n type: Input\n }], showLabels: [{\n type: Input\n }], gradient: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], labelFormatting: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }] }); })();\n\nclass PieChartModule {\n}\nPieChartModule.ɵfac = function PieChartModule_Factory(t) { return new (t || PieChartModule)(); };\nPieChartModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: PieChartModule });\nPieChartModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[ChartCommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PieChartModule, [{\n type: NgModule,\n args: [{\n imports: [ChartCommonModule],\n declarations: [\n AdvancedPieChartComponent,\n PieLabelComponent,\n PieArcComponent,\n PieChartComponent,\n PieGridComponent,\n PieGridSeriesComponent,\n PieSeriesComponent\n ],\n exports: [\n AdvancedPieChartComponent,\n PieLabelComponent,\n PieArcComponent,\n PieChartComponent,\n PieGridComponent,\n PieGridSeriesComponent,\n PieSeriesComponent\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(PieChartModule, { declarations: [AdvancedPieChartComponent, PieLabelComponent, PieArcComponent, PieChartComponent, PieGridComponent, PieGridSeriesComponent, PieSeriesComponent], imports: [ChartCommonModule], exports: [AdvancedPieChartComponent, PieLabelComponent, PieArcComponent, PieChartComponent, PieGridComponent, PieGridSeriesComponent, PieSeriesComponent] }); })();\n\nclass PolarChartModule {\n}\nPolarChartModule.ɵfac = function PolarChartModule_Factory(t) { return new (t || PolarChartModule)(); };\nPolarChartModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: PolarChartModule });\nPolarChartModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[ChartCommonModule, PieChartModule, LineChartModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(PolarChartModule, [{\n type: NgModule,\n args: [{\n imports: [ChartCommonModule, PieChartModule, LineChartModule],\n declarations: [PolarChartComponent, PolarSeriesComponent],\n exports: [PolarChartComponent, PolarSeriesComponent]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(PolarChartModule, { declarations: [PolarChartComponent, PolarSeriesComponent], imports: [ChartCommonModule, PieChartModule, LineChartModule], exports: [PolarChartComponent, PolarSeriesComponent] }); })();\n\nfunction calculateTextWidth(fontFamilyKey, text, defaultWidth = 8) {\n return text.split('').reduce((acc, curr) => {\n const width = fontFamilyKey[curr] || defaultWidth;\n return acc + width;\n }, 0);\n}\n\nconst VERDANA_FONT_WIDTHS_16_PX = {\n '0': 10,\n '1': 10,\n '2': 10,\n '3': 10,\n '4': 10,\n '5': 10,\n '6': 10,\n '7': 10,\n '8': 10,\n '9': 10,\n A: 11,\n B: 11,\n C: 11,\n D: 12,\n E: 10,\n F: 9,\n G: 12,\n H: 12,\n I: 7,\n J: 7,\n K: 11,\n L: 9,\n M: 13,\n N: 12,\n O: 13,\n P: 10,\n Q: 13,\n R: 11,\n S: 11,\n T: 10,\n U: 12,\n V: 11,\n W: 16,\n X: 11,\n Y: 10,\n Z: 11,\n a: 10,\n b: 10,\n c: 8,\n d: 10,\n e: 10,\n f: 6,\n g: 10,\n h: 10,\n i: 4,\n j: 6,\n k: 9,\n l: 4,\n m: 16,\n n: 10,\n o: 10,\n p: 10,\n q: 10,\n r: 7,\n s: 8,\n t: 6,\n u: 10,\n v: 9,\n w: 13,\n x: 9,\n y: 9,\n z: 8,\n '!': 6,\n '@': 16,\n '#': 13,\n $: 10,\n '%': 17,\n '^': 13,\n '&': 12,\n '*': 10,\n '(': 7,\n ')': 7,\n _: 10,\n '-': 7,\n '+': 13,\n '=': 13,\n ',': 6,\n '.': 6,\n '/': 7,\n \"'\": 4,\n ':': 7,\n '|': 7,\n '?': 9,\n ';': 7,\n '<': 13,\n '>': 13\n};\n\nclass CardComponent {\n constructor(element, cd, zone, platformId) {\n this.cd = cd;\n this.zone = zone;\n this.platformId = platformId;\n this.animations = true;\n this.select = new EventEmitter();\n this.value = '';\n this.textFontSize = 12;\n this.textTransform = '';\n this.initialized = false;\n this.bandHeight = 10;\n this.textPadding = [10, 20, 5, 20];\n this.labelFontSize = 15;\n this.element = element.nativeElement;\n }\n ngOnChanges(changes) {\n this.update();\n }\n ngOnInit() {\n if (isPlatformServer(this.platformId)) {\n this.scaleTextSSR();\n }\n }\n ngOnDestroy() {\n if (isPlatformBrowser(this.platformId)) {\n cancelAnimationFrame(this.animationReq);\n }\n }\n update() {\n this.zone.run(() => {\n const hasValue = this.data && typeof this.data.value !== 'undefined';\n const valueFormatting = this.valueFormatting || (card => card.value.toLocaleString());\n const labelFormatting = this.labelFormatting || (card => escapeLabel(trimLabel(card.label, 55)));\n this.transform = `translate(${this.x} , ${this.y})`;\n this.textWidth = Math.max(0, this.width) - this.textPadding[1] - this.textPadding[3];\n this.cardWidth = Math.max(0, this.width);\n this.cardHeight = Math.max(0, this.height);\n this.label = this.label ? this.label : this.data.name;\n const cardData = {\n label: this.label,\n data: this.data,\n value: this.data.value\n };\n this.formattedLabel = labelFormatting(cardData);\n this.transformBand = `translate(0 , ${this.cardHeight - this.bandHeight})`;\n const value = hasValue ? valueFormatting(cardData) : '';\n this.value = this.paddedValue(value);\n this.setPadding();\n this.bandPath = roundedRect(0, 0, this.cardWidth, this.bandHeight, 3, [false, false, true, true]);\n setTimeout(() => {\n if (isPlatformBrowser(this.platformId)) {\n this.scaleText();\n }\n this.value = value;\n if (hasValue && !this.initialized) {\n setTimeout(() => this.startCount(), 20);\n }\n }, 8);\n });\n }\n paddedValue(value) {\n if (this.medianSize && this.medianSize > value.length) {\n value += '\\u2007'.repeat(this.medianSize - value.length);\n }\n return value;\n }\n startCount() {\n if (!this.initialized && this.animations) {\n cancelAnimationFrame(this.animationReq);\n const val = this.data.value;\n const decs = decimalChecker(val);\n const valueFormatting = this.valueFormatting || (card => card.value.toLocaleString());\n const callback = ({ value, finished }) => {\n this.zone.run(() => {\n value = finished ? val : value;\n this.value = valueFormatting({ label: this.label, data: this.data, value });\n if (!finished) {\n this.value = this.paddedValue(this.value);\n }\n this.cd.markForCheck();\n });\n };\n this.animationReq = count(0, val, decs, 1, callback);\n this.initialized = true;\n }\n }\n scaleText() {\n this.zone.run(() => {\n const { width, height } = this.textEl.nativeElement.getBoundingClientRect();\n if (width === 0 || height === 0) {\n return;\n }\n const textPadding = (this.textPadding[1] = this.textPadding[3] = this.cardWidth / 8);\n const availableWidth = this.cardWidth - 2 * textPadding;\n const availableHeight = this.cardHeight / 3;\n const resizeScale = Math.min(availableWidth / width, availableHeight / height);\n this.textFontSize = Math.floor(this.textFontSize * resizeScale);\n this.labelFontSize = Math.min(this.textFontSize, 15);\n this.setPadding();\n this.cd.markForCheck();\n });\n }\n scaleTextSSR() {\n const width = calculateTextWidth(VERDANA_FONT_WIDTHS_16_PX, this.value, 10);\n const height = 18;\n const textPadding = (this.textPadding[1] = this.textPadding[3] = this.cardWidth / 8);\n const availableWidth = this.cardWidth - 2 * textPadding;\n const availableHeight = this.cardHeight / 3;\n const resizeScale = Math.min(availableWidth / width, availableHeight / height);\n this.textFontSize = Math.floor(this.textFontSize * resizeScale);\n this.labelFontSize = Math.min(this.textFontSize, 15);\n this.setPadding();\n }\n setPadding() {\n this.textPadding[1] = this.textPadding[3] = this.cardWidth / 8;\n const padding = this.cardHeight / 2;\n this.textPadding[0] = padding - this.textFontSize - this.labelFontSize / 2;\n this.textPadding[2] = padding - this.labelFontSize;\n }\n onClick() {\n this.select.emit(this.data);\n }\n}\nCardComponent.ɵfac = function CardComponent_Factory(t) { return new (t || CardComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(PLATFORM_ID)); };\nCardComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CardComponent, selectors: [[\"g\", \"ngx-charts-card\", \"\"]], viewQuery: function CardComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c43, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.textEl = _t.first);\n } }, inputs: { animations: \"animations\", label: \"label\", color: \"color\", bandColor: \"bandColor\", textColor: \"textColor\", x: \"x\", y: \"y\", width: \"width\", height: \"height\", data: \"data\", medianSize: \"medianSize\", valueFormatting: \"valueFormatting\", labelFormatting: \"labelFormatting\" }, outputs: { select: \"select\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c44, decls: 10, vars: 25, consts: [[1, \"cell\", 3, \"click\"], [\"rx\", \"3\", \"ry\", \"3\", 1, \"card\"], [\"class\", \"card-band\", \"stroke\", \"none\", 4, \"ngIf\"], [\"x\", \"5\", \"alignment-baseline\", \"hanging\", 1, \"trimmed-label\"], [3, \"innerHTML\"], [\"text-anchor\", \"start\", \"alignment-baseline\", \"hanging\", 1, \"value-text\"], [\"textEl\", \"\"], [\"stroke\", \"none\", 1, \"card-band\"]], template: function CardComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\", 0);\n ɵngcc0.ɵɵlistener(\"click\", function CardComponent_Template__svg_g_click_0_listener() { return ctx.onClick(); });\n ɵngcc0.ɵɵelement(1, \"rect\", 1);\n ɵngcc0.ɵɵtemplate(2, CardComponent__svg_path_2_Template, 1, 3, \"path\", 2);\n ɵngcc0.ɵɵelementStart(3, \"title\");\n ɵngcc0.ɵɵtext(4);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(5, \"foreignObject\", 3);\n ɵngcc0.ɵɵnamespaceHTML();\n ɵngcc0.ɵɵelement(6, \"p\", 4);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(7, \"text\", 5, 6);\n ɵngcc0.ɵɵtext(9);\n ɵngcc0.ɵɵelementEnd()();\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"fill\", ctx.color);\n ɵngcc0.ɵɵattribute(\"width\", ctx.cardWidth)(\"height\", ctx.cardHeight);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.bandColor && ctx.bandColor !== ctx.color);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(ctx.label);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"x\", ctx.textPadding[3])(\"y\", ctx.cardHeight - ctx.textPadding[2])(\"width\", ctx.textWidth)(\"height\", ctx.labelFontSize + ctx.textPadding[2]);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"color\", ctx.textColor)(\"font-size\", ctx.labelFontSize, \"px\")(\"line-height\", ctx.labelFontSize, \"px\");\n ɵngcc0.ɵɵproperty(\"innerHTML\", ctx.formattedLabel, ɵngcc0.ɵɵsanitizeHtml);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"fill\", ctx.textColor)(\"font-size\", ctx.textFontSize, \"pt\");\n ɵngcc0.ɵɵattribute(\"x\", ctx.textPadding[3])(\"y\", ctx.textPadding[0]);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx.value, \" \");\n } }, directives: [ɵngcc1.NgIf], encapsulation: 2, changeDetection: 0 });\nCardComponent.ctorParameters = () => [\n { type: ElementRef },\n { type: ChangeDetectorRef },\n { type: NgZone },\n { type: undefined, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }\n];\nCardComponent.propDecorators = {\n color: [{ type: Input }],\n bandColor: [{ type: Input }],\n textColor: [{ type: Input }],\n x: [{ type: Input }],\n y: [{ type: Input }],\n width: [{ type: Input }],\n height: [{ type: Input }],\n label: [{ type: Input }],\n data: [{ type: Input }],\n medianSize: [{ type: Input }],\n valueFormatting: [{ type: Input }],\n labelFormatting: [{ type: Input }],\n animations: [{ type: Input }],\n select: [{ type: Output }],\n textEl: [{ type: ViewChild, args: ['textEl', { static: false },] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CardComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-card]',\n template: `\n \n \n \n {{ label }}\n \n \n \n \n \n {{ value }}\n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; }, { animations: [{\n type: Input\n }], select: [{\n type: Output\n }], label: [{\n type: Input\n }], color: [{\n type: Input\n }], bandColor: [{\n type: Input\n }], textColor: [{\n type: Input\n }], x: [{\n type: Input\n }], y: [{\n type: Input\n }], width: [{\n type: Input\n }], height: [{\n type: Input\n }], data: [{\n type: Input\n }], medianSize: [{\n type: Input\n }], valueFormatting: [{\n type: Input\n }], labelFormatting: [{\n type: Input\n }], textEl: [{\n type: ViewChild,\n args: ['textEl', { static: false }]\n }] }); })();\n\n/**\n * Converts a hex to RGB\n *\n * @export\n */\nfunction hexToRgb(value) {\n // deprecated, use d3.color()\n return rgb(value);\n}\n/**\n * Accepts a color (string) and returns a inverted hex color (string)\n * http://stackoverflow.com/questions/9600295/automatically-change-text-color-to-assure-readability\n *\n * @export\n */\nfunction invertColor(value) {\n const color = rgb(value);\n const { r, g, b, opacity } = color;\n if (opacity === 0) {\n return color.toString();\n }\n const yiq = (r * 299 + g * 587 + b * 114) / 1000;\n const depth = yiq >= 128 ? -0.8 : 0.8;\n return shadeRGBColor(color, depth);\n}\n/**\n * Given a rgb, it will darken/lighten\n * http://stackoverflow.com/questions/5560248/programmatically-lighten-or-darken-a-hex-color-or-rgb-and-blend-colors\n *\n * @export\n * @param \\{ r, g, b }\n */\nfunction shadeRGBColor({ r, g, b }, percent) {\n const t = percent < 0 ? 0 : 255;\n const p = percent < 0 ? percent * -1 : percent;\n r = Math.round((t - r) * p) + r;\n g = Math.round((t - g) * p) + g;\n b = Math.round((t - b) * p) + b;\n return `rgb(${r}, ${g}, ${b})`;\n}\n\nclass CardSeriesComponent {\n constructor() {\n this.innerPadding = 15;\n this.emptyColor = 'rgba(0, 0, 0, 0)';\n this.animations = true;\n this.select = new EventEmitter();\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n if (this.data.length > 2) {\n const valueFormatting = this.valueFormatting || (card => card.value.toLocaleString());\n const sortedLengths = this.data\n .map(d => {\n const hasValue = d && d.data && typeof d.data.value !== 'undefined' && d.data.value !== null;\n return hasValue\n ? valueFormatting({\n data: d.data,\n label: d ? d.data.name : '',\n value: d && d.data ? d.data.value : ''\n }).length\n : 0;\n })\n .sort((a, b) => b - a);\n const idx = Math.ceil(this.data.length / 2);\n this.medianSize = sortedLengths[idx];\n }\n const cards = this.getCards();\n this.cards = cards.filter(d => d.data.value !== null);\n this.emptySlots = cards.filter(d => d.data.value === null);\n }\n getCards() {\n const yPadding = typeof this.innerPadding === 'number' ? this.innerPadding : this.innerPadding[0] + this.innerPadding[2];\n const xPadding = typeof this.innerPadding === 'number' ? this.innerPadding : this.innerPadding[1] + this.innerPadding[3];\n return this.data.map((d, index) => {\n let label = d.data.name;\n if (label && label.constructor.name === 'Date') {\n label = label.toLocaleDateString();\n }\n else {\n label = label ? label.toLocaleString() : label;\n }\n const value = d.data.value;\n const valueColor = label ? this.colors.getColor(label) : this.emptyColor;\n const color = this.cardColor || valueColor || '#000';\n return {\n x: d.x,\n y: d.y,\n width: d.width - xPadding,\n height: d.height - yPadding,\n color,\n bandColor: this.bandColor || valueColor,\n textColor: this.textColor || invertColor(color),\n label,\n data: d.data,\n tooltipText: `${label}: ${value}`\n };\n });\n }\n trackBy(index, card) {\n return card.label;\n }\n onClick(data) {\n this.select.emit(data);\n }\n}\nCardSeriesComponent.ɵfac = function CardSeriesComponent_Factory(t) { return new (t || CardSeriesComponent)(); };\nCardSeriesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CardSeriesComponent, selectors: [[\"g\", \"ngx-charts-card-series\", \"\"]], inputs: { innerPadding: \"innerPadding\", emptyColor: \"emptyColor\", animations: \"animations\", data: \"data\", slots: \"slots\", dims: \"dims\", colors: \"colors\", cardColor: \"cardColor\", bandColor: \"bandColor\", textColor: \"textColor\", valueFormatting: \"valueFormatting\", labelFormatting: \"labelFormatting\" }, outputs: { select: \"select\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c45, decls: 2, vars: 4, consts: [[\"class\", \"card-empty\", \"rx\", \"3\", \"ry\", \"3\", 3, \"fill\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"ngx-charts-card\", \"\", 3, \"x\", \"y\", \"width\", \"height\", \"color\", \"bandColor\", \"textColor\", \"data\", \"label\", \"medianSize\", \"valueFormatting\", \"labelFormatting\", \"animations\", \"select\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"rx\", \"3\", \"ry\", \"3\", 1, \"card-empty\"], [\"ngx-charts-card\", \"\", 3, \"x\", \"y\", \"width\", \"height\", \"color\", \"bandColor\", \"textColor\", \"data\", \"label\", \"medianSize\", \"valueFormatting\", \"labelFormatting\", \"animations\", \"select\"]], template: function CardSeriesComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, CardSeriesComponent__svg_rect_0_Template, 1, 6, \"rect\", 0);\n ɵngcc0.ɵɵtemplate(1, CardSeriesComponent__svg_g_1_Template, 1, 13, \"g\", 1);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.emptySlots)(\"ngForTrackBy\", ctx.trackBy);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.cards)(\"ngForTrackBy\", ctx.trackBy);\n } }, directives: [ɵngcc1.NgForOf, CardComponent], encapsulation: 2, changeDetection: 0 });\nCardSeriesComponent.propDecorators = {\n data: [{ type: Input }],\n slots: [{ type: Input }],\n dims: [{ type: Input }],\n colors: [{ type: Input }],\n innerPadding: [{ type: Input }],\n cardColor: [{ type: Input }],\n bandColor: [{ type: Input }],\n emptyColor: [{ type: Input }],\n textColor: [{ type: Input }],\n valueFormatting: [{ type: Input }],\n labelFormatting: [{ type: Input }],\n animations: [{ type: Input }],\n select: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CardSeriesComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-card-series]',\n template: `\n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return []; }, { innerPadding: [{\n type: Input\n }], emptyColor: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }], data: [{\n type: Input\n }], slots: [{\n type: Input\n }], dims: [{\n type: Input\n }], colors: [{\n type: Input\n }], cardColor: [{\n type: Input\n }], bandColor: [{\n type: Input\n }], textColor: [{\n type: Input\n }], valueFormatting: [{\n type: Input\n }], labelFormatting: [{\n type: Input\n }] }); })();\n\nclass NumberCardComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.emptyColor = 'rgba(0, 0, 0, 0)';\n this.innerPadding = 15;\n this.margin = [10, 10, 10, 10];\n }\n get clickable() {\n return !!this.select.observers.length;\n }\n update() {\n super.update();\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin\n });\n this.formatDates();\n this.domain = this.getDomain();\n this.setColors();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n const size = gridSize(this.dims, this.results.length, 150);\n const N = size[0] * size[1];\n const data = this.results.slice();\n while (data.length < N) {\n data.push({ value: null });\n }\n this.data = gridLayout(this.dims, data, 150, this.designatedTotal);\n }\n getDomain() {\n return this.results.map(d => d.label);\n }\n onClick(data) {\n this.select.emit(data);\n }\n setColors() {\n this.colors = new ColorHelper(this.scheme, 'ordinal', this.domain, this.customColors);\n }\n}\nNumberCardComponent.ɵfac = /*@__PURE__*/ function () { let ɵNumberCardComponent_BaseFactory; return function NumberCardComponent_Factory(t) { return (ɵNumberCardComponent_BaseFactory || (ɵNumberCardComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NumberCardComponent)))(t || NumberCardComponent); }; }();\nNumberCardComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NumberCardComponent, selectors: [[\"ngx-charts-number-card\"]], inputs: { emptyColor: \"emptyColor\", innerPadding: \"innerPadding\", cardColor: \"cardColor\", bandColor: \"bandColor\", textColor: \"textColor\", valueFormatting: \"valueFormatting\", labelFormatting: \"labelFormatting\", designatedTotal: \"designatedTotal\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 3, vars: 20, consts: [[3, \"view\", \"showLegend\", \"animations\"], [1, \"number-card\", \"chart\"], [\"ngx-charts-card-series\", \"\", 3, \"colors\", \"cardColor\", \"bandColor\", \"textColor\", \"emptyColor\", \"data\", \"dims\", \"innerPadding\", \"valueFormatting\", \"labelFormatting\", \"animations\", \"select\"]], template: function NumberCardComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(1, \"g\", 1)(2, \"g\", 2);\n ɵngcc0.ɵɵlistener(\"select\", function NumberCardComponent_Template__svg_g_select_2_listener($event) { return ctx.onClick($event); });\n ɵngcc0.ɵɵelementEnd()()();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(17, _c23, ctx.width, ctx.height))(\"showLegend\", false)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"clickable\", ctx.clickable);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"colors\", ctx.colors)(\"cardColor\", ctx.cardColor)(\"bandColor\", ctx.bandColor)(\"textColor\", ctx.textColor)(\"emptyColor\", ctx.emptyColor)(\"data\", ctx.data)(\"dims\", ctx.dims)(\"innerPadding\", ctx.innerPadding)(\"valueFormatting\", ctx.valueFormatting)(\"labelFormatting\", ctx.labelFormatting)(\"animations\", ctx.animations);\n } }, directives: [ChartComponent, CardSeriesComponent], styles: [_c24, \"ngx-charts-number-card .cell .trimmed-label{font-size:12px;line-height:1em;overflow:hidden;pointer-events:none;text-align:left}ngx-charts-number-card .cell .trimmed-label p{margin:0;overflow:hidden;padding:0;text-overflow:ellipsis;white-space:nowrap;width:100%}ngx-charts-number-card .cell .value-text{pointer-events:none}ngx-charts-number-card .number-card.clickable .cell .card,ngx-charts-number-card .number-card.clickable .cell .card-band{cursor:pointer}\"], encapsulation: 2, changeDetection: 0 });\nNumberCardComponent.propDecorators = {\n cardColor: [{ type: Input }],\n bandColor: [{ type: Input }],\n emptyColor: [{ type: Input }],\n innerPadding: [{ type: Input }],\n textColor: [{ type: Input }],\n valueFormatting: [{ type: Input }],\n labelFormatting: [{ type: Input }],\n designatedTotal: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NumberCardComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-charts-number-card',\n template: `\n \n \n \n \n \n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:none}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{opacity:.2;transition:opacity .1s ease-in-out}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{fill:none;stroke:#ddd;stroke-width:1}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-dasharray:5;stroke-dashoffset:5;stroke-width:1}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill:#000;fill-opacity:.05}.ngx-charts .gridline-path-dotted{fill:none;stroke:#ddd;stroke-dasharray:1,20;stroke-dashoffset:3;stroke-width:1}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\", \"ngx-charts-number-card .cell .trimmed-label{font-size:12px;line-height:1em;overflow:hidden;pointer-events:none;text-align:left}ngx-charts-number-card .cell .trimmed-label p{margin:0;overflow:hidden;padding:0;text-overflow:ellipsis;white-space:nowrap;width:100%}ngx-charts-number-card .cell .value-text{pointer-events:none}ngx-charts-number-card .number-card.clickable .cell .card,ngx-charts-number-card .number-card.clickable .cell .card-band{cursor:pointer}\"]\n }]\n }], null, { emptyColor: [{\n type: Input\n }], innerPadding: [{\n type: Input\n }], cardColor: [{\n type: Input\n }], bandColor: [{\n type: Input\n }], textColor: [{\n type: Input\n }], valueFormatting: [{\n type: Input\n }], labelFormatting: [{\n type: Input\n }], designatedTotal: [{\n type: Input\n }] }); })();\n\nclass NumberCardModule {\n}\nNumberCardModule.ɵfac = function NumberCardModule_Factory(t) { return new (t || NumberCardModule)(); };\nNumberCardModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NumberCardModule });\nNumberCardModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[ChartCommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NumberCardModule, [{\n type: NgModule,\n args: [{\n imports: [ChartCommonModule],\n declarations: [CardComponent, CardSeriesComponent, NumberCardComponent],\n exports: [CardComponent, CardSeriesComponent, NumberCardComponent]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NumberCardModule, { declarations: [CardComponent, CardSeriesComponent, NumberCardComponent], imports: [ChartCommonModule], exports: [CardComponent, CardSeriesComponent, NumberCardComponent] }); })();\n\nclass TreeMapCellComponent {\n constructor(element) {\n this.gradient = false;\n this.animations = true;\n this.select = new EventEmitter();\n this.initialized = false;\n this.element = element.nativeElement;\n }\n ngOnChanges() {\n this.update();\n this.valueFormatting = this.valueFormatting || (value => value.toLocaleString());\n const labelFormatting = this.labelFormatting || (cell => escapeLabel(trimLabel(cell.label, 55)));\n const cellData = {\n data: this.data,\n label: this.label,\n value: this.value\n };\n this.formattedValue = this.valueFormatting(cellData.value);\n this.formattedLabel = labelFormatting(cellData);\n this.gradientId = 'grad' + id().toString();\n this.gradientUrl = `url(#${this.gradientId})`;\n this.gradientStops = this.getGradientStops();\n }\n update() {\n if (this.initialized) {\n this.animateToCurrentForm();\n }\n else {\n if (this.animations) {\n this.loadAnimation();\n }\n this.initialized = true;\n }\n }\n loadAnimation() {\n const node = select(this.element).select('.cell');\n node.attr('opacity', 0).attr('x', this.x).attr('y', this.y);\n this.animateToCurrentForm();\n }\n getTextColor() {\n return invertColor(this.fill);\n }\n animateToCurrentForm() {\n const node = select(this.element).select('.cell');\n if (this.animations) {\n node\n .transition()\n .duration(750)\n .attr('opacity', 1)\n .attr('x', this.x)\n .attr('y', this.y)\n .attr('width', this.width)\n .attr('height', this.height);\n }\n else {\n node.attr('opacity', 1).attr('x', this.x).attr('y', this.y).attr('width', this.width).attr('height', this.height);\n }\n }\n onClick() {\n this.select.emit(this.data);\n }\n getGradientStops() {\n return [\n {\n offset: 0,\n color: this.fill,\n opacity: 0.3\n },\n {\n offset: 100,\n color: this.fill,\n opacity: 1\n }\n ];\n }\n}\nTreeMapCellComponent.ɵfac = function TreeMapCellComponent_Factory(t) { return new (t || TreeMapCellComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nTreeMapCellComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: TreeMapCellComponent, selectors: [[\"g\", \"ngx-charts-tree-map-cell\", \"\"]], inputs: { gradient: \"gradient\", animations: \"animations\", valueFormatting: \"valueFormatting\", data: \"data\", fill: \"fill\", x: \"x\", y: \"y\", width: \"width\", height: \"height\", label: \"label\", value: \"value\", valueType: \"valueType\", labelFormatting: \"labelFormatting\" }, outputs: { select: \"select\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c46, decls: 4, vars: 9, consts: [[4, \"ngIf\"], [1, \"cell\", 3, \"click\"], [\"class\", \"treemap-label\", 3, \"pointer-events\", 4, \"ngIf\"], [\"ngx-charts-svg-linear-gradient\", \"\", \"orientation\", \"vertical\", 3, \"name\", \"stops\"], [1, \"treemap-label\"], [1, \"treemap-label\", 3, \"innerHTML\"], [\"class\", \"treemap-val\", \"ngx-charts-count-up\", \"\", 3, \"countTo\", \"valueFormatting\", 4, \"ngIf\"], [\"class\", \"treemap-val\", 4, \"ngIf\"], [\"ngx-charts-count-up\", \"\", 1, \"treemap-val\", 3, \"countTo\", \"valueFormatting\"], [1, \"treemap-val\"]], template: function TreeMapCellComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵtemplate(1, TreeMapCellComponent__svg_defs_1_Template, 2, 2, \"defs\", 0);\n ɵngcc0.ɵɵelementStart(2, \"rect\", 1);\n ɵngcc0.ɵɵlistener(\"click\", function TreeMapCellComponent_Template__svg_rect_click_2_listener() { return ctx.onClick(); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, TreeMapCellComponent__svg_foreignObject_3_Template, 6, 15, \"foreignObject\", 2);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.gradient);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"cursor\", \"pointer\");\n ɵngcc0.ɵɵattribute(\"fill\", ctx.gradient ? ctx.gradientUrl : ctx.fill)(\"width\", ctx.width)(\"height\", ctx.height)(\"x\", ctx.x)(\"y\", ctx.y);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.width >= 70 && ctx.height >= 35);\n } }, directives: [ɵngcc1.NgIf, SvgLinearGradientComponent, CountUpDirective], encapsulation: 2, changeDetection: 0 });\nTreeMapCellComponent.ctorParameters = () => [\n { type: ElementRef }\n];\nTreeMapCellComponent.propDecorators = {\n data: [{ type: Input }],\n fill: [{ type: Input }],\n x: [{ type: Input }],\n y: [{ type: Input }],\n width: [{ type: Input }],\n height: [{ type: Input }],\n label: [{ type: Input }],\n value: [{ type: Input }],\n valueType: [{ type: Input }],\n valueFormatting: [{ type: Input }],\n labelFormatting: [{ type: Input }],\n gradient: [{ type: Input }],\n animations: [{ type: Input }],\n select: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TreeMapCellComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-tree-map-cell]',\n template: `\n \n \n \n \n \n = 70 && height >= 35\"\n [attr.x]=\"x\"\n [attr.y]=\"y\"\n [attr.width]=\"width\"\n [attr.height]=\"height\"\n class=\"treemap-label\"\n [style.pointer-events]=\"'none'\"\n >\n \n \n \n \n \n \n {{ formattedValue }}\n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { gradient: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }], valueFormatting: [{\n type: Input\n }], data: [{\n type: Input\n }], fill: [{\n type: Input\n }], x: [{\n type: Input\n }], y: [{\n type: Input\n }], width: [{\n type: Input\n }], height: [{\n type: Input\n }], label: [{\n type: Input\n }], value: [{\n type: Input\n }], valueType: [{\n type: Input\n }], labelFormatting: [{\n type: Input\n }] }); })();\n\nclass TreeMapCellSeriesComponent {\n constructor() {\n this.gradient = false;\n this.tooltipDisabled = false;\n this.animations = true;\n this.select = new EventEmitter();\n }\n ngOnChanges(changes) {\n this.cells = this.getCells();\n }\n getCells() {\n return this.data.children\n .filter(d => {\n return d.depth === 1;\n })\n .map((d, index) => {\n const label = d.id;\n return {\n data: d.data,\n x: d.x0,\n y: d.y0,\n width: d.x1 - d.x0,\n height: d.y1 - d.y0,\n fill: this.colors.getColor(label),\n label,\n value: d.value,\n valueType: d.valueType\n };\n });\n }\n getTooltipText({ label, value }) {\n return `\n ${escapeLabel(label)}\n ${value.toLocaleString()}\n `;\n }\n onClick(data) {\n this.select.emit(data);\n }\n trackBy(index, item) {\n return item.label;\n }\n}\nTreeMapCellSeriesComponent.ɵfac = function TreeMapCellSeriesComponent_Factory(t) { return new (t || TreeMapCellSeriesComponent)(); };\nTreeMapCellSeriesComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: TreeMapCellSeriesComponent, selectors: [[\"g\", \"ngx-charts-tree-map-cell-series\", \"\"]], inputs: { gradient: \"gradient\", tooltipDisabled: \"tooltipDisabled\", animations: \"animations\", data: \"data\", dims: \"dims\", colors: \"colors\", valueFormatting: \"valueFormatting\", labelFormatting: \"labelFormatting\", tooltipTemplate: \"tooltipTemplate\" }, outputs: { select: \"select\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c47, decls: 1, vars: 2, consts: [[\"ngx-charts-tree-map-cell\", \"\", \"ngx-tooltip\", \"\", 3, \"data\", \"x\", \"y\", \"width\", \"height\", \"fill\", \"label\", \"value\", \"valueType\", \"valueFormatting\", \"labelFormatting\", \"gradient\", \"animations\", \"tooltipDisabled\", \"tooltipPlacement\", \"tooltipType\", \"tooltipTitle\", \"tooltipTemplate\", \"tooltipContext\", \"select\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"ngx-charts-tree-map-cell\", \"\", \"ngx-tooltip\", \"\", 3, \"data\", \"x\", \"y\", \"width\", \"height\", \"fill\", \"label\", \"value\", \"valueType\", \"valueFormatting\", \"labelFormatting\", \"gradient\", \"animations\", \"tooltipDisabled\", \"tooltipPlacement\", \"tooltipType\", \"tooltipTitle\", \"tooltipTemplate\", \"tooltipContext\", \"select\"]], template: function TreeMapCellSeriesComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, TreeMapCellSeriesComponent__svg_g_0_Template, 1, 19, \"g\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.cells)(\"ngForTrackBy\", ctx.trackBy);\n } }, directives: [ɵngcc1.NgForOf, TreeMapCellComponent, TooltipDirective], encapsulation: 2, changeDetection: 0 });\nTreeMapCellSeriesComponent.propDecorators = {\n data: [{ type: Input }],\n dims: [{ type: Input }],\n colors: [{ type: Input }],\n valueFormatting: [{ type: Input }],\n labelFormatting: [{ type: Input }],\n gradient: [{ type: Input }],\n tooltipDisabled: [{ type: Input }],\n tooltipTemplate: [{ type: Input }],\n animations: [{ type: Input }],\n select: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TreeMapCellSeriesComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-tree-map-cell-series]',\n template: `\n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return []; }, { gradient: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }], data: [{\n type: Input\n }], dims: [{\n type: Input\n }], colors: [{\n type: Input\n }], valueFormatting: [{\n type: Input\n }], labelFormatting: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }] }); })();\n\nclass TreeMapComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.tooltipDisabled = false;\n this.gradient = false;\n this.select = new EventEmitter();\n this.margin = [10, 10, 10, 10];\n }\n update() {\n super.update();\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin\n });\n this.domain = this.getDomain();\n this.treemap = treemap().size([this.dims.width, this.dims.height]);\n const rootNode = {\n name: 'root',\n value: 0,\n isRoot: true\n };\n const root = stratify()\n .id(d => {\n let label = d.name;\n if (label.constructor.name === 'Date') {\n label = label.toLocaleDateString();\n }\n else {\n label = label.toLocaleString();\n }\n return label;\n })\n .parentId(d => (d.isRoot ? null : 'root'))([rootNode, ...this.results])\n .sum(d => d.value);\n this.data = this.treemap(root);\n this.setColors();\n this.transform = `translate(${this.dims.xOffset} , ${this.margin[0]})`;\n }\n getDomain() {\n return this.results.map(d => d.name);\n }\n onClick(data) {\n this.select.emit(data);\n }\n setColors() {\n this.colors = new ColorHelper(this.scheme, 'ordinal', this.domain, this.customColors);\n }\n}\nTreeMapComponent.ɵfac = /*@__PURE__*/ function () { let ɵTreeMapComponent_BaseFactory; return function TreeMapComponent_Factory(t) { return (ɵTreeMapComponent_BaseFactory || (ɵTreeMapComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(TreeMapComponent)))(t || TreeMapComponent); }; }();\nTreeMapComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: TreeMapComponent, selectors: [[\"ngx-charts-tree-map\"]], contentQueries: function TreeMapComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n } }, inputs: { tooltipDisabled: \"tooltipDisabled\", gradient: \"gradient\", results: \"results\", valueFormatting: \"valueFormatting\", labelFormatting: \"labelFormatting\" }, outputs: { select: \"select\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 3, vars: 16, consts: [[3, \"view\", \"showLegend\", \"animations\"], [1, \"tree-map\", \"chart\"], [\"ngx-charts-tree-map-cell-series\", \"\", 3, \"colors\", \"data\", \"dims\", \"tooltipDisabled\", \"tooltipTemplate\", \"valueFormatting\", \"labelFormatting\", \"gradient\", \"animations\", \"select\"]], template: function TreeMapComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(1, \"g\", 1)(2, \"g\", 2);\n ɵngcc0.ɵɵlistener(\"select\", function TreeMapComponent_Template__svg_g_select_2_listener($event) { return ctx.onClick($event); });\n ɵngcc0.ɵɵelementEnd()()();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(13, _c23, ctx.width, ctx.height))(\"showLegend\", false)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"colors\", ctx.colors)(\"data\", ctx.data)(\"dims\", ctx.dims)(\"tooltipDisabled\", ctx.tooltipDisabled)(\"tooltipTemplate\", ctx.tooltipTemplate)(\"valueFormatting\", ctx.valueFormatting)(\"labelFormatting\", ctx.labelFormatting)(\"gradient\", ctx.gradient)(\"animations\", ctx.animations);\n } }, directives: [ChartComponent, TreeMapCellSeriesComponent], styles: [\".tree-map .treemap-val{display:inline-block;font-size:1.3em;padding-top:5px}.tree-map .treemap-label p{display:table-cell;line-height:1.2em;text-align:center;vertical-align:middle}\"], encapsulation: 2, changeDetection: 0 });\nTreeMapComponent.propDecorators = {\n results: [{ type: Input }],\n tooltipDisabled: [{ type: Input }],\n valueFormatting: [{ type: Input }],\n labelFormatting: [{ type: Input }],\n gradient: [{ type: Input }],\n select: [{ type: Output }],\n tooltipTemplate: [{ type: ContentChild, args: ['tooltipTemplate',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TreeMapComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-charts-tree-map',\n template: `\n \n \n \n \n \n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: [\".tree-map .treemap-val{display:inline-block;font-size:1.3em;padding-top:5px}.tree-map .treemap-label p{display:table-cell;line-height:1.2em;text-align:center;vertical-align:middle}\"]\n }]\n }], null, { tooltipDisabled: [{\n type: Input\n }], gradient: [{\n type: Input\n }], select: [{\n type: Output\n }], results: [{\n type: Input\n }], valueFormatting: [{\n type: Input\n }], labelFormatting: [{\n type: Input\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }] }); })();\n\nclass TreeMapModule {\n}\nTreeMapModule.ɵfac = function TreeMapModule_Factory(t) { return new (t || TreeMapModule)(); };\nTreeMapModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: TreeMapModule });\nTreeMapModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[ChartCommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(TreeMapModule, [{\n type: NgModule,\n args: [{\n imports: [ChartCommonModule],\n declarations: [TreeMapCellComponent, TreeMapCellSeriesComponent, TreeMapComponent],\n exports: [TreeMapCellComponent, TreeMapCellSeriesComponent, TreeMapComponent]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(TreeMapModule, { declarations: [TreeMapCellComponent, TreeMapCellSeriesComponent, TreeMapComponent], imports: [ChartCommonModule], exports: [TreeMapCellComponent, TreeMapCellSeriesComponent, TreeMapComponent] }); })();\n\nclass LinearGaugeComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.min = 0;\n this.max = 100;\n this.value = 0;\n this.margin = [10, 20, 10, 20];\n this.valueResizeScale = 1;\n this.unitsResizeScale = 1;\n this.valueTextTransform = '';\n this.valueTranslate = '';\n this.unitsTextTransform = '';\n this.unitsTranslate = '';\n }\n ngAfterViewInit() {\n super.ngAfterViewInit();\n if (isPlatformBrowser(this.platformId)) {\n setTimeout(() => {\n this.scaleText('value');\n this.scaleText('units');\n });\n }\n }\n update() {\n super.update();\n this.hasPreviousValue = this.previousValue !== undefined;\n this.max = Math.max(this.max, this.value);\n this.min = Math.min(this.min, this.value);\n if (this.hasPreviousValue) {\n this.max = Math.max(this.max, this.previousValue);\n this.min = Math.min(this.min, this.previousValue);\n }\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin\n });\n this.valueDomain = this.getValueDomain();\n this.valueScale = this.getValueScale();\n this.displayValue = this.getDisplayValue();\n this.setColors();\n const xOffset = this.margin[3] + this.dims.width / 2;\n const yOffset = this.margin[0] + this.dims.height / 2;\n this.transform = `translate(${xOffset}, ${yOffset})`;\n this.transformLine = `translate(${this.margin[3] + this.valueScale(this.previousValue)}, ${yOffset})`;\n this.valueTranslate = `translate(0, -15)`;\n this.unitsTranslate = `translate(0, 15)`;\n if (isPlatformServer(this.platformId)) {\n this.scaleTextSSR('value');\n this.scaleTextSSR('units');\n }\n else {\n setTimeout(() => this.scaleText('value'), 50);\n setTimeout(() => this.scaleText('units'), 50);\n }\n }\n getValueDomain() {\n return [this.min, this.max];\n }\n getValueScale() {\n return scaleLinear().range([0, this.dims.width]).domain(this.valueDomain);\n }\n getDisplayValue() {\n if (this.valueFormatting) {\n return this.valueFormatting(this.value);\n }\n return this.value.toLocaleString();\n }\n scaleText(element, repeat = true) {\n let el;\n let resizeScale;\n if (element === 'value') {\n el = this.valueTextEl;\n resizeScale = this.valueResizeScale;\n }\n else {\n el = this.unitsTextEl;\n resizeScale = this.unitsResizeScale;\n }\n const { width, height } = el.nativeElement.getBoundingClientRect();\n if (width === 0 || height === 0)\n return;\n const oldScale = resizeScale;\n const availableWidth = this.dims.width;\n const availableHeight = Math.max(this.dims.height / 2 - 15, 0);\n const resizeScaleWidth = Math.floor((availableWidth / (width / resizeScale)) * 100) / 100;\n const resizeScaleHeight = Math.floor((availableHeight / (height / resizeScale)) * 100) / 100;\n resizeScale = Math.min(resizeScaleHeight, resizeScaleWidth);\n if (resizeScale !== oldScale) {\n if (element === 'value') {\n this.valueResizeScale = resizeScale;\n this.valueTextTransform = `scale(${resizeScale}, ${resizeScale})`;\n }\n else {\n this.unitsResizeScale = resizeScale;\n this.unitsTextTransform = `scale(${resizeScale}, ${resizeScale})`;\n }\n this.cd.markForCheck();\n if (repeat && isPlatformBrowser(this.platformId)) {\n setTimeout(() => {\n this.scaleText(element, false);\n }, 50);\n }\n }\n }\n scaleTextSSR(element) {\n let resizeScale = 1;\n const value = element === 'value' ? this.displayValue : this.units;\n const width = calculateTextWidth(VERDANA_FONT_WIDTHS_16_PX, value, 10);\n const height = 25;\n const availableWidth = this.dims.width;\n const availableHeight = Math.max(this.dims.height / 2 - 15, 0);\n const resizeScaleWidth = Math.floor((availableWidth / (width / resizeScale)) * 100) / 100;\n const resizeScaleHeight = Math.floor((availableHeight / (height / resizeScale)) * 100) / 100;\n resizeScale = Math.min(resizeScaleHeight, resizeScaleWidth);\n if (element === 'value') {\n this.valueResizeScale = resizeScale;\n this.valueTextTransform = `scale(${resizeScale}, ${resizeScale})`;\n }\n else {\n this.unitsResizeScale = resizeScale;\n this.unitsTextTransform = `scale(${resizeScale}, ${resizeScale})`;\n }\n this.cd.markForCheck();\n }\n onClick() {\n this.select.emit({\n name: 'Value',\n value: this.value\n });\n }\n setColors() {\n this.colors = new ColorHelper(this.scheme, 'ordinal', [this.value], this.customColors);\n }\n}\nLinearGaugeComponent.ɵfac = /*@__PURE__*/ function () { let ɵLinearGaugeComponent_BaseFactory; return function LinearGaugeComponent_Factory(t) { return (ɵLinearGaugeComponent_BaseFactory || (ɵLinearGaugeComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(LinearGaugeComponent)))(t || LinearGaugeComponent); }; }();\nLinearGaugeComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: LinearGaugeComponent, selectors: [[\"ngx-charts-linear-gauge\"]], viewQuery: function LinearGaugeComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c48, 5);\n ɵngcc0.ɵɵviewQuery(_c49, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.valueTextEl = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.unitsTextEl = _t.first);\n } }, inputs: { min: \"min\", max: \"max\", value: \"value\", units: \"units\", previousValue: \"previousValue\", valueFormatting: \"valueFormatting\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 15, vars: 38, consts: [[3, \"view\", \"showLegend\", \"animations\", \"click\"], [1, \"linear-gauge\", \"chart\"], [\"ngx-charts-bar\", \"\", 1, \"background-bar\", 3, \"width\", \"height\", \"x\", \"y\", \"data\", \"orientation\", \"roundEdges\", \"animations\"], [\"ngx-charts-bar\", \"\", 3, \"width\", \"height\", \"x\", \"y\", \"fill\", \"data\", \"orientation\", \"roundEdges\", \"animations\"], [\"x1\", \"0\", \"y1\", \"5\", \"x2\", \"0\", \"y2\", \"15\", 4, \"ngIf\"], [\"x1\", \"0\", \"y1\", \"-5\", \"x2\", \"0\", \"y2\", \"-15\", 4, \"ngIf\"], [\"alignment-baseline\", \"after-edge\", 1, \"value\"], [\"valueTextEl\", \"\"], [\"alignment-baseline\", \"before-edge\", 1, \"units\"], [\"unitsTextEl\", \"\"], [\"x1\", \"0\", \"y1\", \"5\", \"x2\", \"0\", \"y2\", \"15\"], [\"x1\", \"0\", \"y1\", \"-5\", \"x2\", \"0\", \"y2\", \"-15\"]], template: function LinearGaugeComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n ɵngcc0.ɵɵlistener(\"click\", function LinearGaugeComponent_Template_ngx_charts_chart_click_0_listener() { return ctx.onClick(); });\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(1, \"g\", 1);\n ɵngcc0.ɵɵelement(2, \"g\", 2)(3, \"g\", 3);\n ɵngcc0.ɵɵtemplate(4, LinearGaugeComponent__svg_line_4_Template, 1, 2, \"line\", 4);\n ɵngcc0.ɵɵtemplate(5, LinearGaugeComponent__svg_line_5_Template, 1, 2, \"line\", 5);\n ɵngcc0.ɵɵelementStart(6, \"g\")(7, \"g\")(8, \"text\", 6, 7);\n ɵngcc0.ɵɵtext(10);\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵelementStart(11, \"g\")(12, \"text\", 8, 9);\n ɵngcc0.ɵɵtext(14);\n ɵngcc0.ɵɵelementEnd()()()()();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(33, _c23, ctx.width, ctx.height))(\"showLegend\", false)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"width\", ctx.dims.width)(\"height\", 3)(\"x\", ctx.margin[3])(\"y\", ctx.dims.height / 2 + ctx.margin[0] - 2)(\"data\", ɵngcc0.ɵɵpureFunction0(36, _c50))(\"orientation\", \"horizontal\")(\"roundEdges\", true)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"width\", ctx.valueScale(ctx.value))(\"height\", 3)(\"x\", ctx.margin[3])(\"y\", ctx.dims.height / 2 + ctx.margin[0] - 2)(\"fill\", ctx.colors.getColor(ctx.units))(\"data\", ɵngcc0.ɵɵpureFunction0(37, _c50))(\"orientation\", \"horizontal\")(\"roundEdges\", true)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.hasPreviousValue);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.hasPreviousValue);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.valueTranslate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"text-anchor\", \"middle\");\n ɵngcc0.ɵɵattribute(\"transform\", ctx.valueTextTransform);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx.displayValue, \" \");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.unitsTranslate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"text-anchor\", \"middle\");\n ɵngcc0.ɵɵattribute(\"transform\", ctx.unitsTextTransform);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx.units, \" \");\n } }, directives: [ChartComponent, BarComponent, ɵngcc1.NgIf], styles: [_c24, \".linear-gauge{cursor:pointer}.linear-gauge .background-bar path{fill:rgba(0,0,0,.05)}.linear-gauge .units{fill:#666}\"], encapsulation: 2, changeDetection: 0 });\nLinearGaugeComponent.propDecorators = {\n min: [{ type: Input }],\n max: [{ type: Input }],\n value: [{ type: Input }],\n units: [{ type: Input }],\n previousValue: [{ type: Input }],\n valueFormatting: [{ type: Input }],\n valueTextEl: [{ type: ViewChild, args: ['valueTextEl',] }],\n unitsTextEl: [{ type: ViewChild, args: ['unitsTextEl',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LinearGaugeComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-charts-linear-gauge',\n template: `\n \n \n \n \n\n \n\n \n\n \n \n \n {{ displayValue }}\n \n \n\n \n \n {{ units }}\n \n \n \n \n \n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:none}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{opacity:.2;transition:opacity .1s ease-in-out}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{fill:none;stroke:#ddd;stroke-width:1}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-dasharray:5;stroke-dashoffset:5;stroke-width:1}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill:#000;fill-opacity:.05}.ngx-charts .gridline-path-dotted{fill:none;stroke:#ddd;stroke-dasharray:1,20;stroke-dashoffset:3;stroke-width:1}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\", \".linear-gauge{cursor:pointer}.linear-gauge .background-bar path{fill:rgba(0,0,0,.05)}.linear-gauge .units{fill:#666}\"]\n }]\n }], null, { min: [{\n type: Input\n }], max: [{\n type: Input\n }], value: [{\n type: Input\n }], units: [{\n type: Input\n }], previousValue: [{\n type: Input\n }], valueFormatting: [{\n type: Input\n }], valueTextEl: [{\n type: ViewChild,\n args: ['valueTextEl']\n }], unitsTextEl: [{\n type: ViewChild,\n args: ['unitsTextEl']\n }] }); })();\n\nclass GaugeComponent extends BaseChartComponent {\n constructor() {\n super(...arguments);\n this.legend = false;\n this.legendTitle = 'Legend';\n this.legendPosition = 'right';\n this.min = 0;\n this.max = 100;\n this.bigSegments = 10;\n this.smallSegments = 5;\n this.showAxis = true;\n this.startAngle = -120;\n this.angleSpan = 240;\n this.activeEntries = [];\n this.tooltipDisabled = false;\n this.showText = true;\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n this.resizeScale = 1;\n this.rotation = '';\n this.textTransform = 'scale(1, 1)';\n this.cornerRadius = 10;\n }\n ngAfterViewInit() {\n super.ngAfterViewInit();\n setTimeout(() => this.scaleText());\n }\n update() {\n super.update();\n if (!this.showAxis) {\n if (!this.margin) {\n this.margin = [10, 20, 10, 20];\n }\n }\n else {\n if (!this.margin) {\n this.margin = [60, 100, 60, 100];\n }\n }\n // make the starting angle positive\n if (this.startAngle < 0) {\n this.startAngle = (this.startAngle % 360) + 360;\n }\n this.angleSpan = Math.min(this.angleSpan, 360);\n this.dims = calculateViewDimensions({\n width: this.width,\n height: this.height,\n margins: this.margin,\n showLegend: this.legend,\n legendPosition: this.legendPosition\n });\n this.domain = this.getDomain();\n this.valueDomain = this.getValueDomain();\n this.valueScale = this.getValueScale();\n this.displayValue = this.getDisplayValue();\n this.outerRadius = Math.min(this.dims.width, this.dims.height) / 2;\n this.arcs = this.getArcs();\n this.setColors();\n this.legendOptions = this.getLegendOptions();\n const xOffset = this.margin[3] + this.dims.width / 2;\n const yOffset = this.margin[0] + this.dims.height / 2;\n this.transform = `translate(${xOffset}, ${yOffset})`;\n this.rotation = `rotate(${this.startAngle})`;\n setTimeout(() => this.scaleText(), 50);\n }\n getArcs() {\n const arcs = [];\n const availableRadius = this.outerRadius * 0.7;\n const radiusPerArc = Math.min(availableRadius / this.results.length, 10);\n const arcWidth = radiusPerArc * 0.7;\n this.textRadius = this.outerRadius - this.results.length * radiusPerArc;\n this.cornerRadius = Math.floor(arcWidth / 2);\n let i = 0;\n for (const d of this.results) {\n const outerRadius = this.outerRadius - i * radiusPerArc;\n const innerRadius = outerRadius - arcWidth;\n const backgroundArc = {\n endAngle: (this.angleSpan * Math.PI) / 180,\n innerRadius,\n outerRadius,\n data: {\n value: this.max,\n name: d.name\n }\n };\n const valueArc = {\n endAngle: (Math.min(this.valueScale(d.value), this.angleSpan) * Math.PI) / 180,\n innerRadius,\n outerRadius,\n data: {\n value: d.value,\n name: d.name\n }\n };\n const arc = {\n backgroundArc,\n valueArc\n };\n arcs.push(arc);\n i++;\n }\n return arcs;\n }\n getDomain() {\n return this.results.map(d => d.name);\n }\n getValueDomain() {\n const values = this.results.map(d => d.value);\n const dataMin = Math.min(...values);\n const dataMax = Math.max(...values);\n if (this.min !== undefined) {\n this.min = Math.min(this.min, dataMin);\n }\n else {\n this.min = dataMin;\n }\n if (this.max !== undefined) {\n this.max = Math.max(this.max, dataMax);\n }\n else {\n this.max = dataMax;\n }\n return [this.min, this.max];\n }\n getValueScale() {\n return scaleLinear().range([0, this.angleSpan]).nice().domain(this.valueDomain);\n }\n getDisplayValue() {\n const value = this.results.map(d => d.value).reduce((a, b) => a + b, 0);\n if (this.textValue && 0 !== this.textValue.length) {\n return this.textValue.toLocaleString();\n }\n if (this.valueFormatting) {\n return this.valueFormatting(value);\n }\n return value.toLocaleString();\n }\n scaleText(repeat = true) {\n if (!this.showText) {\n return;\n }\n const { width } = this.textEl.nativeElement.getBoundingClientRect();\n const oldScale = this.resizeScale;\n if (width === 0) {\n this.resizeScale = 1;\n }\n else {\n const availableSpace = this.textRadius;\n this.resizeScale = Math.floor((availableSpace / (width / this.resizeScale)) * 100) / 100;\n }\n if (this.resizeScale !== oldScale) {\n this.textTransform = `scale(${this.resizeScale}, ${this.resizeScale})`;\n this.cd.markForCheck();\n if (repeat) {\n setTimeout(() => this.scaleText(false), 50);\n }\n }\n }\n onClick(data) {\n this.select.emit(data);\n }\n getLegendOptions() {\n return {\n scaleType: 'ordinal',\n colors: this.colors,\n domain: this.domain,\n title: this.legendTitle,\n position: this.legendPosition\n };\n }\n setColors() {\n this.colors = new ColorHelper(this.scheme, 'ordinal', this.domain, this.customColors);\n }\n onActivate(item) {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n if (idx > -1) {\n return;\n }\n this.activeEntries = [item, ...this.activeEntries];\n this.activate.emit({ value: item, entries: this.activeEntries });\n }\n onDeactivate(item) {\n const idx = this.activeEntries.findIndex(d => {\n return d.name === item.name && d.value === item.value;\n });\n this.activeEntries.splice(idx, 1);\n this.activeEntries = [...this.activeEntries];\n this.deactivate.emit({ value: item, entries: this.activeEntries });\n }\n isActive(entry) {\n if (!this.activeEntries)\n return false;\n const item = this.activeEntries.find(d => {\n return entry.name === d.name && entry.series === d.series;\n });\n return item !== undefined;\n }\n trackBy(index, item) {\n return item.valueArc.data.name;\n }\n}\nGaugeComponent.ɵfac = /*@__PURE__*/ function () { let ɵGaugeComponent_BaseFactory; return function GaugeComponent_Factory(t) { return (ɵGaugeComponent_BaseFactory || (ɵGaugeComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(GaugeComponent)))(t || GaugeComponent); }; }();\nGaugeComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: GaugeComponent, selectors: [[\"ngx-charts-gauge\"]], contentQueries: function GaugeComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, _c21, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tooltipTemplate = _t.first);\n } }, viewQuery: function GaugeComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c43, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.textEl = _t.first);\n } }, inputs: { legend: \"legend\", legendTitle: \"legendTitle\", legendPosition: \"legendPosition\", min: \"min\", max: \"max\", bigSegments: \"bigSegments\", smallSegments: \"smallSegments\", showAxis: \"showAxis\", startAngle: \"startAngle\", angleSpan: \"angleSpan\", activeEntries: \"activeEntries\", tooltipDisabled: \"tooltipDisabled\", showText: \"showText\", margin: \"margin\", textValue: \"textValue\", units: \"units\", results: \"results\", axisTickFormatting: \"axisTickFormatting\", valueFormatting: \"valueFormatting\" }, outputs: { activate: \"activate\", deactivate: \"deactivate\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 5, vars: 13, consts: [[3, \"view\", \"showLegend\", \"legendOptions\", \"activeEntries\", \"animations\", \"legendLabelClick\", \"legendLabelActivate\", \"legendLabelDeactivate\"], [1, \"gauge\", \"chart\"], [4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"ngx-charts-gauge-axis\", \"\", 3, \"bigSegments\", \"smallSegments\", \"min\", \"max\", \"radius\", \"angleSpan\", \"valueScale\", \"startAngle\", \"tickFormatting\", 4, \"ngIf\"], [\"alignment-baseline\", \"central\", 3, \"textAnchor\", 4, \"ngIf\"], [\"ngx-charts-gauge-arc\", \"\", 3, \"backgroundArc\", \"valueArc\", \"cornerRadius\", \"colors\", \"isActive\", \"tooltipDisabled\", \"tooltipTemplate\", \"valueFormatting\", \"animations\", \"select\", \"activate\", \"deactivate\"], [\"ngx-charts-gauge-axis\", \"\", 3, \"bigSegments\", \"smallSegments\", \"min\", \"max\", \"radius\", \"angleSpan\", \"valueScale\", \"startAngle\", \"tickFormatting\"], [\"alignment-baseline\", \"central\"], [\"textEl\", \"\"], [\"x\", \"0\", \"dy\", \"0\"], [\"x\", \"0\", \"dy\", \"1.2em\"]], template: function GaugeComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ngx-charts-chart\", 0);\n ɵngcc0.ɵɵlistener(\"legendLabelClick\", function GaugeComponent_Template_ngx_charts_chart_legendLabelClick_0_listener($event) { return ctx.onClick($event); })(\"legendLabelActivate\", function GaugeComponent_Template_ngx_charts_chart_legendLabelActivate_0_listener($event) { return ctx.onActivate($event); })(\"legendLabelDeactivate\", function GaugeComponent_Template_ngx_charts_chart_legendLabelDeactivate_0_listener($event) { return ctx.onDeactivate($event); });\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(1, \"g\", 1);\n ɵngcc0.ɵɵtemplate(2, GaugeComponent__svg_g_2_Template, 2, 10, \"g\", 2);\n ɵngcc0.ɵɵtemplate(3, GaugeComponent__svg_g_3_Template, 1, 9, \"g\", 3);\n ɵngcc0.ɵɵtemplate(4, GaugeComponent__svg_text_4_Template, 6, 5, \"text\", 4);\n ɵngcc0.ɵɵelementEnd()();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"view\", ɵngcc0.ɵɵpureFunction2(10, _c23, ctx.width, ctx.height))(\"showLegend\", ctx.legend)(\"legendOptions\", ctx.legendOptions)(\"activeEntries\", ctx.activeEntries)(\"animations\", ctx.animations);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"transform\", ctx.transform);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.arcs)(\"ngForTrackBy\", ctx.trackBy);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showAxis);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showText);\n } }, directives: function () { return [ChartComponent, ɵngcc1.NgForOf, GaugeArcComponent, ɵngcc1.NgIf, GaugeAxisComponent]; }, styles: [_c24, \".gauge .background-arc path{fill:rgba(0,0,0,.05)}.gauge .gauge-tick path{stroke:#666}.gauge .gauge-tick text{fill:#666;font-size:12px;font-weight:700}.gauge .gauge-tick-large path{stroke-width:2px}.gauge .gauge-tick-small path{stroke-width:1px}\"], encapsulation: 2, changeDetection: 0 });\nGaugeComponent.propDecorators = {\n legend: [{ type: Input }],\n legendTitle: [{ type: Input }],\n legendPosition: [{ type: Input }],\n min: [{ type: Input }],\n max: [{ type: Input }],\n textValue: [{ type: Input }],\n units: [{ type: Input }],\n bigSegments: [{ type: Input }],\n smallSegments: [{ type: Input }],\n results: [{ type: Input }],\n showAxis: [{ type: Input }],\n startAngle: [{ type: Input }],\n angleSpan: [{ type: Input }],\n activeEntries: [{ type: Input }],\n axisTickFormatting: [{ type: Input }],\n tooltipDisabled: [{ type: Input }],\n valueFormatting: [{ type: Input }],\n showText: [{ type: Input }],\n margin: [{ type: Input }],\n activate: [{ type: Output }],\n deactivate: [{ type: Output }],\n tooltipTemplate: [{ type: ContentChild, args: ['tooltipTemplate',] }],\n textEl: [{ type: ViewChild, args: ['textEl',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GaugeComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-charts-gauge',\n template: `\n \n \n \n \n \n\n \n\n \n {{ displayValue }}\n {{ units }}\n \n \n \n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: [\".ngx-charts{float:left;overflow:visible}.ngx-charts .arc,.ngx-charts .bar,.ngx-charts .circle{cursor:pointer}.ngx-charts .arc.active,.ngx-charts .arc:hover,.ngx-charts .bar.active,.ngx-charts .bar:hover,.ngx-charts .card.active,.ngx-charts .card:hover,.ngx-charts .cell.active,.ngx-charts .cell:hover{opacity:.8;transition:opacity .1s ease-in-out}.ngx-charts .arc:focus,.ngx-charts .bar:focus,.ngx-charts .card:focus,.ngx-charts .cell:focus{outline:none}.ngx-charts .arc.hidden,.ngx-charts .bar.hidden,.ngx-charts .card.hidden,.ngx-charts .cell.hidden{display:none}.ngx-charts g:focus{outline:none}.ngx-charts .area-series.inactive,.ngx-charts .line-series-range.inactive,.ngx-charts .line-series.inactive,.ngx-charts .polar-series-area.inactive,.ngx-charts .polar-series-path.inactive{opacity:.2;transition:opacity .1s ease-in-out}.ngx-charts .line-highlight{display:none}.ngx-charts .line-highlight.active{display:block}.ngx-charts .area{opacity:.6}.ngx-charts .circle:hover{cursor:pointer}.ngx-charts .label{font-size:12px;font-weight:400}.ngx-charts .tooltip-anchor{fill:#000}.ngx-charts .gridline-path{fill:none;stroke:#ddd;stroke-width:1}.ngx-charts .refline-path{stroke:#a8b2c7;stroke-dasharray:5;stroke-dashoffset:5;stroke-width:1}.ngx-charts .refline-label{font-size:9px}.ngx-charts .reference-area{fill:#000;fill-opacity:.05}.ngx-charts .gridline-path-dotted{fill:none;stroke:#ddd;stroke-dasharray:1,20;stroke-dashoffset:3;stroke-width:1}.ngx-charts .grid-panel rect{fill:none}.ngx-charts .grid-panel.odd rect{fill:rgba(0,0,0,.05)}\", \".gauge .background-arc path{fill:rgba(0,0,0,.05)}.gauge .gauge-tick path{stroke:#666}.gauge .gauge-tick text{fill:#666;font-size:12px;font-weight:700}.gauge .gauge-tick-large path{stroke-width:2px}.gauge .gauge-tick-small path{stroke-width:1px}\"]\n }]\n }], null, { legend: [{\n type: Input\n }], legendTitle: [{\n type: Input\n }], legendPosition: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], bigSegments: [{\n type: Input\n }], smallSegments: [{\n type: Input\n }], showAxis: [{\n type: Input\n }], startAngle: [{\n type: Input\n }], angleSpan: [{\n type: Input\n }], activeEntries: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], showText: [{\n type: Input\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], margin: [{\n type: Input\n }], textValue: [{\n type: Input\n }], units: [{\n type: Input\n }], results: [{\n type: Input\n }], axisTickFormatting: [{\n type: Input\n }], valueFormatting: [{\n type: Input\n }], tooltipTemplate: [{\n type: ContentChild,\n args: ['tooltipTemplate']\n }], textEl: [{\n type: ViewChild,\n args: ['textEl']\n }] }); })();\n\nclass GaugeArcComponent {\n constructor() {\n this.isActive = false;\n this.tooltipDisabled = false;\n this.animations = true;\n this.select = new EventEmitter();\n this.activate = new EventEmitter();\n this.deactivate = new EventEmitter();\n }\n tooltipText(arc) {\n const label = formatLabel(arc.data.name);\n let val;\n if (this.valueFormatting) {\n val = this.valueFormatting(arc.data.value);\n }\n else {\n val = formatLabel(arc.data.value);\n }\n return `\n ${escapeLabel(label)}\n ${val}\n `;\n }\n}\nGaugeArcComponent.ɵfac = function GaugeArcComponent_Factory(t) { return new (t || GaugeArcComponent)(); };\nGaugeArcComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: GaugeArcComponent, selectors: [[\"g\", \"ngx-charts-gauge-arc\", \"\"]], inputs: { isActive: \"isActive\", tooltipDisabled: \"tooltipDisabled\", animations: \"animations\", backgroundArc: \"backgroundArc\", valueArc: \"valueArc\", cornerRadius: \"cornerRadius\", colors: \"colors\", valueFormatting: \"valueFormatting\", tooltipTemplate: \"tooltipTemplate\" }, outputs: { select: \"select\", activate: \"activate\", deactivate: \"deactivate\" }, attrs: _c51, decls: 2, vars: 23, consts: [[\"ngx-charts-pie-arc\", \"\", 1, \"background-arc\", 3, \"startAngle\", \"endAngle\", \"innerRadius\", \"outerRadius\", \"cornerRadius\", \"data\", \"animate\", \"pointerEvents\"], [\"ngx-charts-pie-arc\", \"\", \"ngx-tooltip\", \"\", 3, \"startAngle\", \"endAngle\", \"innerRadius\", \"outerRadius\", \"cornerRadius\", \"fill\", \"data\", \"animate\", \"isActive\", \"tooltipDisabled\", \"tooltipPlacement\", \"tooltipType\", \"tooltipTitle\", \"tooltipTemplate\", \"tooltipContext\", \"select\", \"activate\", \"deactivate\"]], template: function GaugeArcComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"g\", 0);\n ɵngcc0.ɵɵelementStart(1, \"g\", 1);\n ɵngcc0.ɵɵlistener(\"select\", function GaugeArcComponent_Template__svg_g_select_1_listener($event) { return ctx.select.emit($event); })(\"activate\", function GaugeArcComponent_Template__svg_g_activate_1_listener($event) { return ctx.activate.emit($event); })(\"deactivate\", function GaugeArcComponent_Template__svg_g_deactivate_1_listener($event) { return ctx.deactivate.emit($event); });\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"startAngle\", 0)(\"endAngle\", ctx.backgroundArc.endAngle)(\"innerRadius\", ctx.backgroundArc.innerRadius)(\"outerRadius\", ctx.backgroundArc.outerRadius)(\"cornerRadius\", ctx.cornerRadius)(\"data\", ctx.backgroundArc.data)(\"animate\", false)(\"pointerEvents\", false);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"startAngle\", 0)(\"endAngle\", ctx.valueArc.endAngle)(\"innerRadius\", ctx.valueArc.innerRadius)(\"outerRadius\", ctx.valueArc.outerRadius)(\"cornerRadius\", ctx.cornerRadius)(\"fill\", ctx.colors.getColor(ctx.valueArc.data.name))(\"data\", ctx.valueArc.data)(\"animate\", ctx.animations)(\"isActive\", ctx.isActive)(\"tooltipDisabled\", ctx.tooltipDisabled)(\"tooltipPlacement\", \"top\")(\"tooltipType\", \"tooltip\")(\"tooltipTitle\", ctx.tooltipTemplate ? undefined : ctx.tooltipText(ctx.valueArc))(\"tooltipTemplate\", ctx.tooltipTemplate)(\"tooltipContext\", ctx.valueArc.data);\n } }, directives: [PieArcComponent, TooltipDirective], encapsulation: 2, changeDetection: 0 });\nGaugeArcComponent.propDecorators = {\n backgroundArc: [{ type: Input }],\n valueArc: [{ type: Input }],\n cornerRadius: [{ type: Input }],\n colors: [{ type: Input }],\n isActive: [{ type: Input }],\n tooltipDisabled: [{ type: Input }],\n valueFormatting: [{ type: Input }],\n tooltipTemplate: [{ type: Input }],\n animations: [{ type: Input }],\n select: [{ type: Output }],\n activate: [{ type: Output }],\n deactivate: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GaugeArcComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-gauge-arc]',\n template: `\n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return []; }, { isActive: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], animations: [{\n type: Input\n }], select: [{\n type: Output\n }], activate: [{\n type: Output\n }], deactivate: [{\n type: Output\n }], backgroundArc: [{\n type: Input\n }], valueArc: [{\n type: Input\n }], cornerRadius: [{\n type: Input\n }], colors: [{\n type: Input\n }], valueFormatting: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }] }); })();\n\nclass GaugeAxisComponent {\n constructor() {\n this.rotate = '';\n }\n ngOnChanges(changes) {\n this.update();\n }\n update() {\n this.rotationAngle = -90 + this.startAngle;\n this.rotate = `rotate(${this.rotationAngle})`;\n this.ticks = this.getTicks();\n }\n getTicks() {\n const bigTickSegment = this.angleSpan / this.bigSegments;\n const smallTickSegment = bigTickSegment / this.smallSegments;\n const tickLength = 20;\n const ticks = {\n big: [],\n small: []\n };\n const startDistance = this.radius + 10;\n const textDist = startDistance + tickLength + 10;\n for (let i = 0; i <= this.bigSegments; i++) {\n const angleDeg = i * bigTickSegment;\n const angle = (angleDeg * Math.PI) / 180;\n const textAnchor = this.getTextAnchor(angleDeg);\n let skip = false;\n if (i === 0 && this.angleSpan === 360) {\n skip = true;\n }\n if (!skip) {\n let text = Number.parseFloat(this.valueScale.invert(angleDeg).toString()).toLocaleString();\n if (this.tickFormatting) {\n text = this.tickFormatting(text);\n }\n ticks.big.push({\n line: this.getTickPath(startDistance, tickLength, angle),\n textAnchor,\n text,\n textTransform: `\n translate(${textDist * Math.cos(angle)}, ${textDist * Math.sin(angle)}) rotate(${-this.rotationAngle})\n `\n });\n }\n if (i === this.bigSegments) {\n continue;\n }\n for (let j = 1; j <= this.smallSegments; j++) {\n const smallAngleDeg = angleDeg + j * smallTickSegment;\n const smallAngle = (smallAngleDeg * Math.PI) / 180;\n ticks.small.push({\n line: this.getTickPath(startDistance, tickLength / 2, smallAngle)\n });\n }\n }\n return ticks;\n }\n getTextAnchor(angle) {\n // [0, 45] = 'middle';\n // [46, 135] = 'start';\n // [136, 225] = 'middle';\n // [226, 315] = 'end';\n angle = (this.startAngle + angle) % 360;\n let textAnchor = 'middle';\n if (angle > 45 && angle <= 135) {\n textAnchor = 'start';\n }\n else if (angle > 225 && angle <= 315) {\n textAnchor = 'end';\n }\n return textAnchor;\n }\n getTickPath(startDistance, tickLength, angle) {\n const y1 = startDistance * Math.sin(angle);\n const y2 = (startDistance + tickLength) * Math.sin(angle);\n const x1 = startDistance * Math.cos(angle);\n const x2 = (startDistance + tickLength) * Math.cos(angle);\n const points = [\n { x: x1, y: y1 },\n { x: x2, y: y2 }\n ];\n const lineGenerator = line()\n .x(d => d.x)\n .y(d => d.y);\n return lineGenerator(points);\n }\n}\nGaugeAxisComponent.ɵfac = function GaugeAxisComponent_Factory(t) { return new (t || GaugeAxisComponent)(); };\nGaugeAxisComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: GaugeAxisComponent, selectors: [[\"g\", \"ngx-charts-gauge-axis\", \"\"]], inputs: { bigSegments: \"bigSegments\", smallSegments: \"smallSegments\", min: \"min\", max: \"max\", angleSpan: \"angleSpan\", startAngle: \"startAngle\", radius: \"radius\", valueScale: \"valueScale\", tickFormatting: \"tickFormatting\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c52, decls: 4, vars: 4, consts: [[\"class\", \"gauge-tick gauge-tick-large\", 4, \"ngFor\", \"ngForOf\"], [\"class\", \"gauge-tick gauge-tick-small\", 4, \"ngFor\", \"ngForOf\"], [1, \"gauge-tick\", \"gauge-tick-large\"], [\"alignment-baseline\", \"central\"], [1, \"gauge-tick\", \"gauge-tick-small\"]], template: function GaugeAxisComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"g\");\n ɵngcc0.ɵɵtemplate(1, GaugeAxisComponent__svg_g_1_Template, 2, 1, \"g\", 0);\n ɵngcc0.ɵɵtemplate(2, GaugeAxisComponent__svg_g_2_Template, 3, 4, \"g\", 0);\n ɵngcc0.ɵɵtemplate(3, GaugeAxisComponent__svg_g_3_Template, 2, 1, \"g\", 1);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"transform\", ctx.rotate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.ticks.big);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.ticks.big);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.ticks.small);\n } }, directives: [ɵngcc1.NgForOf], encapsulation: 2, changeDetection: 0 });\nGaugeAxisComponent.propDecorators = {\n bigSegments: [{ type: Input }],\n smallSegments: [{ type: Input }],\n min: [{ type: Input }],\n max: [{ type: Input }],\n angleSpan: [{ type: Input }],\n startAngle: [{ type: Input }],\n radius: [{ type: Input }],\n valueScale: [{ type: Input }],\n tickFormatting: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GaugeAxisComponent, [{\n type: Component,\n args: [{\n selector: 'g[ngx-charts-gauge-axis]',\n template: `\n \n \n \n \n \n \n {{ tick.text }}\n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return []; }, { bigSegments: [{\n type: Input\n }], smallSegments: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], angleSpan: [{\n type: Input\n }], startAngle: [{\n type: Input\n }], radius: [{\n type: Input\n }], valueScale: [{\n type: Input\n }], tickFormatting: [{\n type: Input\n }] }); })();\n\nclass GaugeModule {\n}\nGaugeModule.ɵfac = function GaugeModule_Factory(t) { return new (t || GaugeModule)(); };\nGaugeModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: GaugeModule });\nGaugeModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[ChartCommonModule, PieChartModule, BarChartModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GaugeModule, [{\n type: NgModule,\n args: [{\n imports: [ChartCommonModule, PieChartModule, BarChartModule],\n declarations: [LinearGaugeComponent, GaugeComponent, GaugeArcComponent, GaugeAxisComponent],\n exports: [LinearGaugeComponent, GaugeComponent, GaugeArcComponent, GaugeAxisComponent]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(GaugeModule, { declarations: [LinearGaugeComponent, GaugeComponent, GaugeArcComponent, GaugeAxisComponent], imports: [ChartCommonModule, PieChartModule, BarChartModule], exports: [LinearGaugeComponent, GaugeComponent, GaugeArcComponent, GaugeAxisComponent] }); })();\n\n// The export is needed here to generate a valid polyfills.metadata.json file\nfunction ngxChartsPolyfills() {\n // IE11 fix\n // Ref: https://github.com/swimlane/ngx-charts/issues/386\n if (typeof SVGElement !== 'undefined' && typeof SVGElement.prototype.contains === 'undefined') {\n SVGElement.prototype.contains = HTMLDivElement.prototype.contains;\n }\n}\n\nclass NgxChartsModule {\n constructor() {\n ngxChartsPolyfills();\n }\n}\nNgxChartsModule.ɵfac = function NgxChartsModule_Factory(t) { return new (t || NgxChartsModule)(); };\nNgxChartsModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgxChartsModule });\nNgxChartsModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [ChartCommonModule, AreaChartModule, BarChartModule, BubbleChartModule, HeatMapModule, LineChartModule, PolarChartModule, NumberCardModule, PieChartModule, TreeMapModule, GaugeModule] });\nNgxChartsModule.ctorParameters = () => [];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgxChartsModule, [{\n type: NgModule,\n args: [{\n exports: [\n ChartCommonModule,\n AreaChartModule,\n BarChartModule,\n BubbleChartModule,\n HeatMapModule,\n LineChartModule,\n PolarChartModule,\n NumberCardModule,\n PieChartModule,\n TreeMapModule,\n GaugeModule\n ]\n }]\n }], function () { return []; }, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgxChartsModule, { exports: [ChartCommonModule, AreaChartModule, BarChartModule, BubbleChartModule, HeatMapModule, LineChartModule, PolarChartModule, NumberCardModule, PieChartModule, TreeMapModule, GaugeModule] }); })();\n\nfunction tickFormat(fieldType, groupByType) {\n return function (label) {\n if (label === 'No Value' || label === 'Other') {\n return label;\n }\n if (fieldType === 'date' && groupByType === 'groupBy') {\n const formatter = timeFormat('MM/DD/YYYY');\n return formatter(label);\n }\n return label.toString();\n };\n}\n\n/*\n * Public API Surface of ngx-charts\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AdvancedLegendComponent, AdvancedPieChartComponent, AlignmentTypes, AreaChartComponent, AreaChartModule, AreaChartNormalizedComponent, AreaChartStackedComponent, AreaComponent, AreaSeriesComponent, AxesModule, AxisLabelComponent, BarChartModule, BarComponent, BarHorizontal2DComponent, BarHorizontalComponent, BarHorizontalNormalizedComponent, BarHorizontalStackedComponent, BarLabelComponent, BarVertical2DComponent, BarVerticalComponent, BarVerticalNormalizedComponent, BarVerticalStackedComponent, BaseChartComponent, BubbleChartComponent, BubbleChartModule, BubbleSeriesComponent, CardComponent, CardSeriesComponent, ChartCommonModule, ChartComponent, CircleComponent, CircleSeriesComponent, ColorHelper, CountUpDirective, D0Types, GaugeArcComponent, GaugeAxisComponent, GaugeComponent, GaugeModule, GridPanelComponent, GridPanelSeriesComponent, HeatCellSeriesComponent, HeatMapCellComponent, HeatMapComponent, HeatMapModule, LegendComponent, LegendEntryComponent, LineChartComponent, LineChartModule, LineComponent, LineSeriesComponent, LinearGaugeComponent, NgxChartsModule, NumberCardComponent, NumberCardModule, PieArcComponent, PieChartComponent, PieChartModule, PieGridComponent, PieGridSeriesComponent, PieLabelComponent, PieSeriesComponent, PlacementTypes, PolarChartComponent, PolarChartModule, PolarSeriesComponent, ScaleLegendComponent, SeriesHorizontal, SeriesVerticalComponent, ShowTypes, StyleTypes, SvgLinearGradientComponent, SvgRadialGradientComponent, Timeline, TooltipArea, TooltipContentComponent, TooltipDirective, TooltipModule, TooltipService, TreeMapCellComponent, TreeMapCellSeriesComponent, TreeMapComponent, TreeMapModule, VisibilityObserver, XAxisComponent, XAxisTicksComponent, YAxisComponent, YAxisTicksComponent, calculateViewDimensions, colorSets, count, decimalChecker, escapeLabel, formatLabel, getDomain, getScale, getScaleType, getUniqueXDomainValues, gridLayout, gridSize, hexToRgb, id, invertColor, reduceTicks, shadeRGBColor, sortByDomain, sortByTime, sortLinear, throttle, throttleable, tickFormat, trimLabel, InjectionRegisteryService as ɵa, InjectionService as ɵb };\n\n","import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport descending from \"./descending.js\";\nimport identity from \"./identity.js\";\nimport {tau} from \"./math.js\";\n\nexport default function() {\n var value = identity,\n sortValues = descending,\n sort = null,\n startAngle = constant(0),\n endAngle = constant(tau),\n padAngle = constant(0);\n\n function pie(data) {\n var i,\n n = (data = array(data)).length,\n j,\n k,\n sum = 0,\n index = new Array(n),\n arcs = new Array(n),\n a0 = +startAngle.apply(this, arguments),\n da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)),\n a1,\n p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n pa = p * (da < 0 ? -1 : 1),\n v;\n\n for (i = 0; i < n; ++i) {\n if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n sum += v;\n }\n }\n\n // Optionally sort the arcs by previously-computed values or by data.\n if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n // Compute the arcs! They are stored in the original data's order.\n for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n data: data[j],\n index: i,\n value: v,\n startAngle: a0,\n endAngle: a1,\n padAngle: p\n };\n }\n\n return arcs;\n }\n\n pie.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), pie) : value;\n };\n\n pie.sortValues = function(_) {\n return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n };\n\n pie.sort = function(_) {\n return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n };\n\n pie.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : startAngle;\n };\n\n pie.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : endAngle;\n };\n\n pie.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : padAngle;\n };\n\n return pie;\n}\n","export default function max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-error404',\n templateUrl: './error404.component.html',\n styleUrls: ['./error404.component.scss']\n})\nexport class Error404Component implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","

    \n error404 works!\n

    \n","import { Injectable } from '@angular/core';\nimport { Resolve } from '@angular/router';\nimport { Observable, combineLatest } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { DataService } from '../core/services/data.service';\nimport { Store } from '@ngrx/store';\nimport { AppState } from '../interfaces';\nimport { getOnline } from '../core/store/ui/ui.selectors';\nimport { LoggerService } from '../core/services/logger.service';\nimport { getUserType } from '../core/store/order/order.selectors';\nimport { UserType } from '../core/models/user';\n\n@Injectable()\nexport class OrderResolver implements Resolve {\n online: boolean;\n userType: UserType;\n\n constructor(private dataService: DataService, private store: Store, private logger: LoggerService) {\n combineLatest(this.store.select(getOnline), this.store.select(getUserType)).subscribe(([online, userType]) => {\n this.online = online;\n this.userType = userType;\n });\n }\n\n resolve(): Observable {\n if (this.online) {\n this.logger.log('resolve online');\n return this.dataService.getImmoPacks();\n } else {\n this.logger.log('resolve offline');\n return null;\n }\n }\n}\n","
    \n
    \n {{ isHainautOrNamurorNVN ? ('MDN-hainaut-namur-nvn.notary-services-page.title' | translate) : ('notary-services-page.title' | translate)}}\n
    \n

    {{ 'notary-services-page.intro' | translate }}

    \n
    \n
    \n
    \n \n \n \n

    {{ 'section-services.mdn.' + serv.id | translate }}

    \n \n
    \n
    \n\n","import { Component, OnInit } from '@angular/core';\nimport { projectID } from '../core/data/theme-config';\nimport { mdnServices } from '../core/data';\nimport { PosterRequestDialogComponent } from '../dialogs/poster-request-dialog/poster-request-dialog.component';\nimport { SignsRequestDialogComponent } from '../dialogs/signs-request-dialog/signs-request-dialog.component';\nimport { PaperRequestDialogComponent } from '../dialogs/paper-request-dialog/paper-request-dialog.component';\nimport { MatDialog } from '@angular/material/dialog';\n\n@Component({\n selector: 'app-notary-services',\n templateUrl: './notary-services.component.html',\n styleUrls: ['./notary-services.component.scss']\n})\nexport class NotaryServicesComponent implements OnInit {\n mdnServices =\n projectID === 'namur' || projectID === 'hainaut' || projectID === 'nvn' || projectID === 'liege' ? mdnServices : [];\n\n get isHainautOrNamurorNVN() {\n return projectID === 'namur' || projectID === 'hainaut' || projectID === 'nvn' || projectID === 'liege';\n }\n\n constructor(private dialog: MatDialog) {}\n\n ngOnInit() {}\n\n serviceImgUrl(fileName) {\n let url = 'assets/images/';\n\n url += fileName;\n url += '.svg';\n\n return url;\n }\n\n openDialog(id) {\n if (id === -101) {\n this.dialog.open(PosterRequestDialogComponent, {\n panelClass: ['poster-request-dialog', 'full-screen-dialog'],\n data: {\n dialog: this.dialog\n },\n disableClose: true\n });\n return;\n }\n if (id === -102) {\n this.dialog.open(SignsRequestDialogComponent, {\n panelClass: ['signs-request-dialog', 'full-screen-dialog'],\n data: {\n dialog: this.dialog\n },\n disableClose: true\n });\n return;\n }\n if (id === -103) {\n this.dialog.open(PaperRequestDialogComponent, {\n panelClass: ['paper-request-dialog', 'full-screen-dialog'],\n data: {\n dialog: this.dialog\n },\n disableClose: true\n });\n return;\n }\n }\n}\n","
    \n

    ID: {{ qrid }}

    \n

    Link: {{ link | json }}

    \n
    \n","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { Subscription } from 'rxjs/internal/Subscription';\nimport { HttpClient } from '@angular/common/http';\nimport { certiCoreBaseUrl } from 'src/environments/environment';\nimport { joinPaths } from '../core/utils/paths/join';\n\n@Component({\n selector: 'app-qr-code',\n templateUrl: './qr-code.component.html',\n styleUrls: ['./qr-code.component.scss']\n})\nexport class QrCodeComponent implements OnInit, OnDestroy {\n private routeSub: Subscription;\n private routeParamSub: Subscription;\n qrid: string;\n apiUrl = joinPaths(certiCoreBaseUrl, 'api/v1/misc/qr/url/');\n link?: string = null;\n\n constructor(private route: ActivatedRoute, private http: HttpClient) {}\n\n ngOnInit() {\n this.routeSub = this.route?.params.subscribe(params => {\n this.routeParamSub = this.route.queryParamMap.subscribe(qParams => {\n const link = qParams.get('link') ? qParams.get('link') : null;\n this.qrid = params['qrid'];\n this.http.get<{ url: string }>(this.apiUrl + `${this.qrid}?link=${link}`).subscribe(res => {\n this.link = res.url;\n window.location.href = this.link;\n });\n });\n });\n }\n\n ngOnDestroy() {\n // test unsubscribe is a function\n if(this.routeSub && this.routeSub?.unsubscribe) {\n this.routeSub.unsubscribe();\n }\n if(this.routeParamSub && this.routeParamSub?.unsubscribe) {\n this.routeParamSub.unsubscribe();\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Resolve, ActivatedRouteSnapshot } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { DataService } from '../core/services/data.service';\nimport { OrderInfoDTO } from '../core/models/OrderInfoDTO';\nimport { first } from 'rxjs/operators';\n\n@Injectable()\nexport class PublicShareResolver implements Resolve {\n constructor(private dataService: DataService) {}\n\n resolve(route: ActivatedRouteSnapshot): Observable {\n const id = route.paramMap.get('orderid');\n return this.dataService.publicOrderInfo(id).pipe(first());\n }\n}\n","export const LegalForm = [\n {\n name:\"Other\",\n value:\"Other\"\n },\n {\n name:\"SA\",\n value:\"SA\"\n },\n {\n name:\"SRL\",\n value:\"SRL\"\n },\n {\n name:\"SPRLU\",\n value:\"SPRLU\"\n },\n {\n name:\"SCRL\",\n value:\"SCRL\"\n },\n {\n name:\"SCRI\",\n value:\"SCRI\"\n },\n {\n name:\"SNC\",\n value:\"SNC\"\n },\n {\n name:\"SCS\",\n value:\"SCS\"\n },\n {\n name:\"SCA\",\n value:\"SCA\"\n },\n {\n name:\"ASBL\",\n value:\"ASBL\"\n },\n {\n name:\"AISBL\",\n value:\"AISBL\"\n },\n {\n name:\"GIE\",\n value:\"GIE\"\n },\n {\n name:\"PersonPhysic\",\n value:\"PersonPhysic\"\n },\n {\n name:\"SARL\",\n value:\"SARL\"\n },\n]\n\n\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-close-icon',\n template: `\n \n `,\n})\n\nexport class CloseIconComponent {}\n","
    \n

    {{ 'profile.editCompanyInfo' | translate }}

    \n \n \n \n
    \n
    \n
    \n {{ 'profile.companyName' | translate }}\n \n \n \n
    \n
    \n
    \n\n
    \n
    \n {{ 'profile.companyEmail' | translate }}\n \n \n \n
    \n
    \n {{ 'profile.form' | translate }}\n \n {{ 'profile.form' | translate }}\n \n \n {{ form.name }}\n \n \n \n
    \n
    \n\n
    \n
    \n {{ 'profile.companyWebsite' | translate }}\n \n \n \n
    \n
    \n {{ 'profile.companyTVA' | translate }}\n \n \n \n
    \n
    \n\n
    \n
    \n {{ 'profile.companyPhone' | translate }}\n \n \n \n
    \n
    \n {{ 'profile.companyGsm' | translate }}\n \n \n \n
    \n
    \n\n \n

    Merci de nous contacter au 02 880 21 71 pour modifier votre adresse email et numéro de tva.

    \n \n
    \n
    ","import { Component, OnInit, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms';\nimport { LegalForm } from '../../../core/enums/legalForm.enum';\nimport { DataService } from '../../../core/services/data.service';\n@Component({\n selector: 'app-profile-edit',\n templateUrl: './profile-edit.component.html',\n styleUrls: ['./profile-edit.component.scss']\n})\nexport class ProfileEditComponent implements OnInit {\n info: FormGroup;\n displayError = false;\n legalForm = LegalForm;\n errorContent = 'Erreur';\n constructor(private fb: FormBuilder,private dataService: DataService, @Inject(MAT_DIALOG_DATA) public data: any) {}\n\n ngOnInit(): void {\n this.info = this.fb.group({\n CommercialName: [this.data.profile.CommercialName,],\n Company: [this.data.profile.Company, ],\n Email: [this.data.profile.MainUser.Email, ],\n Website: [this.data.profile.Website, ],\n VatNumber: [this.data.profile.VatNumber, ],\n Tel: [this.data.profile.MainUser.TelNumber, ],\n LegalForm: [this.data.profile.LegalForm, ],\n Gsm: [this.data.profile.MainUser.PhoneNumber, ],\n });\n this.info.controls['Email'].disable();\n this.info.controls['VatNumber'].disable();\n }\n editInfo() {\n if (this.info.invalid) {\n this.displayError = true; // Show error message if the form is invalid\n return; // Prevent further execution if the form is invalid\n }\n \n this.displayError = false;\n const payload = [\n { op: 'replace', path: '/TelNumber', value: this.info.get('Tel').value },\n { op: 'replace', path: '/PhoneNumber', value: this.info.get('Gsm').value },\n { op: 'replace', path: '/CommercialName', value: this.info.get('CommercialName').value },\n { op: 'replace', path: '/LegalForm', value: this.info.get('LegalForm').value },\n { op: 'replace', path: '/Website', value: this.info.get('Website').value },\n ];\n \n this.dataService.editInfo(payload).subscribe({\n next: (data) => {\n if (data.status === 204) {\n this.dataService.getProfile(); // Refresh the profile data\n this.data.dialog.closeAll(); // Close the dialog\n }\n },\n error: () => {\n this.displayError = true; // Show error message if editInfo fails\n },\n });\n }\n}\n","
    \n \n {{ 'profile.nc' | translate }}\n \n
    \n {{ 'profile.companyDetails' | translate }} \n
    \n \n
    \n
    \n
    \n
    \n {{ 'profile.form' | translate }}\n
    {{ profile.LegalForm }}\n
    \n
    \n {{ 'profile.companyName' | translate }}
    \n {{ profile.CommercialName }} \n
    \n
    \n {{ 'profile.companyTVA' | translate }}
    \n {{ profile.VatNumber }} \n
    \n
    \n {{ 'profile.companyWebsite' | translate }}
    \n {{ profile.Website }}\n
    \n\n
    \n {{ 'profile.companyEmail' | translate }}
    \n {{ profile.MainUser.Email }}\n
    \n
    \n {{ 'profile.companyPhone' | translate }}
    \n {{ profile.MainUser.TelNumber }}\n
    \n
    \n {{ 'profile.companyGsm' | translate }}
    \n {{\n profile.MainUser.PhoneNumber\n }}\n
    \n
    \n
    \n","import { Component, OnInit, Input } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ProfileEditComponent } from '../profile-edit/profile-edit.component';\n@Component({\n selector: 'app-profile-pro-main',\n templateUrl: './profile-pro-main.component.html',\n styleUrls: ['./profile-pro-main.component.scss']\n})\nexport class ProfileProMainComponent implements OnInit {\n @Input() profile;\n constructor(public dialog: MatDialog) {}\n\n ngOnInit(): void {}\n editInfo() {\n this.dialog.open(ProfileEditComponent, {\n panelClass: ['full-screen-dialog'],\n data: { dialog: this.dialog, profile: this.profile }\n });\n }\n}\n","export const AdressType = [\n {\n name:\"HeadOffice\",\n value:0\n },\n {\n name:\"OperatingAddress\",\n value:1\n },\n {\n name:\"Other\",\n value:3\n }\n]\n","
    \n

    {{'profile.addNewAdress' | translate}}

    \n \n \n \n
    \n
    \n
    \n {{'profile.adressAutoFill' | translate}}\n \n
    \n \n
    \n
    \n
    \n
    \n\n
    \n
    \n {{'profile.adressType' | translate}}\n
    \n
    \n {{'profile.adressCity' | translate}}\n \n {{'profile.adressCity' | translate}}\n \n \n
    \n
    \n {{'profile.adressPostalCode' | translate}}\n \n {{'profile.adressPostalCode' | translate}}\n \n \n
    \n
    \n
    \n
    \n {{'profile.adressStreet' | translate}}\n \n {{'profile.adressStreet' | translate}}\n \n \n
    \n
    \n {{'profile.adressNumber' | translate}}\n \n {{'profile.adressNumber' | translate}}\n \n \n
    \n
    \n
    \n
    \n {{'profile.adressBoxNumber' | translate}}\n \n {{'profile.adressBoxNumber' | translate}}\n \n \n
    \n
    \n
    \n
    \n {{'profile.adressName' | translate}}\n \n {{'profile.adressName' | translate}}\n \n \n
    \n
    \n \n
    \n
    \n {{'profile.addressInvoice' | translate}}\n \n
    \n
    \n {{'profile.addressReport' | translate}}\n \n
    \n\n
    \n\n\n {{this.errorContent}}\n \n
    \n
    \n\n","import { Component, OnInit, Input } from '@angular/core';\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms';\nimport { AdressType } from '../../../core/enums/adress-type.enum';\nimport { DataService } from '../../../core/services/data.service';\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { Inject } from '@angular/core';\n@Component({\n selector: 'app-add-adress-dialog',\n templateUrl: './add-adress-dialog.component.html',\n styleUrls: ['./add-adress-dialog.component.scss']\n})\nexport class AddAdressDialogComponent implements OnInit {\n newAdress: FormGroup;\n displayError = false;\n errorContent = 'Veuillez bien remplir le formulaire';\n errorCreation = 'Un problème est survenu , réessayer';\n adressType = AdressType;\n myModel = true;\n myModel2 = true;\n constructor(\n private fb: FormBuilder,\n private dataService: DataService,\n @Inject(MAT_DIALOG_DATA) public data: any\n ) {}\n\n ngOnInit(): void {\n this.newAdress = this.fb.group({\n Country: ['Belgium'],\n City: ['', [Validators.required]],\n PostalCode: ['', [Validators.required]],\n Street: ['', [Validators.required]],\n Num: ['', [Validators.required]],\n Name: ['', [Validators.required]],\n NotReceiveInvoice: [false, [Validators.required]],\n NotReceiveReport: [false, [Validators.required]],\n Type: [0, [Validators.required]],\n Latitude: ['', [Validators.required]],\n Longitude: ['', [Validators.required]],\n AppartementNumber: [''],\n BoxNumber: ['']\n });\n }\n autoComplete(adress) {\n if (!adress || !adress.address_components) {\n console.error('Invalid address data:', adress);\n return;\n }\n \n adress.address_components.forEach(element => {\n element.types.forEach(y => {\n if (y.includes('street_number')) {\n this.newAdress.controls['Num'].setValue(element.long_name);\n } else if (y.includes('route')) {\n this.newAdress.controls['Street'].setValue(element.long_name);\n } else if (y.includes('administrative_area_level_1')) {\n this.newAdress.controls['City'].setValue(element.long_name);\n } else if (y.includes('country')) {\n this.newAdress.controls['Country'].setValue(element.long_name);\n } else if (y.includes('postal_code')) {\n this.newAdress.controls['PostalCode'].setValue(element.long_name);\n }\n });\n });\n this.newAdress.controls['Latitude'].setValue(adress.geometry.location.lat());\n this.newAdress.controls['Longitude'].setValue(adress.geometry.location.lng()); \n }\n sendNewAdress() {\n const notReceiveInvoice = this.newAdress.get('NotReceiveInvoice').value || false;\n const notReceiveReport = this.newAdress.get('NotReceiveReport').value || false;\n \n if (this.newAdress.status === 'VALID') {\n this.myModel = !notReceiveInvoice;\n this.myModel2 = !notReceiveReport;\n \n this.newAdress.patchValue({\n NotReceiveInvoice: !notReceiveInvoice,\n NotReceiveReport: !notReceiveReport\n });\n \n this.dataService.createAdress(this.newAdress.value).subscribe(data => {\n if ((data.status = 204)) {\n this.data.dialog.closeAll();\n this.dataService.getProfile();\n }\n });\n } else {\n this.displayError = true;\n }\n }\n}\n","import { Component, OnInit , Inject } from '@angular/core';\nimport {MAT_DIALOG_DATA} from '@angular/material/dialog';\nimport { DataService } from '../../../core/services/data.service';\n\n@Component({\n selector: 'app-delete-adress',\n templateUrl: './delete-adress.component.html',\n styleUrls: ['./delete-adress.component.scss']\n})\nexport class DeleteAdressComponent implements OnInit {\n\n constructor(@Inject(MAT_DIALOG_DATA) public data: any,private dataService: DataService) { }\n\n ngOnInit(): void {\n }\n deleteAdress(id){\n this.dataService.deleteAdress(id).subscribe(data => {\n this.dataService.getProfile();\n })\n this.data.dialog.closeAll()\n\n }\n annuler(){\n this.data.dialog.closeAll()\n }\n\n}\n","
    \n

    {{'profile.deleteAddress' | translate}}

    \n \n \n \n

    {{'profile.deleteAddressConfirm' | translate}}

    \n\n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    ","
    \n

    {{'profile.editAdress' | translate}}

    \n \n \n \n \n \n
    \n {{'profile.adressType' | translate}}\n \n {{'profile.adressType' | translate}}\n \n \n {{ 'profile.type'+type.name | translate }}\n \n \n \n\n\n
    \n
    \n {{'profile.adressCity' | translate}}\n \n {{'profile.adressCity' | translate}}\n \n \n
    \n
    \n {{'profile.adressPostalCode' | translate}}\n \n {{'profile.adressPostalCode' | translate}}\n \n \n
    \n
    \n
    \n
    \n {{'profile.adressStreet' | translate}}\n \n {{'profile.adressStreet' | translate}}\n \n \n
    \n
    \n {{'profile.adressNumber' | translate}}\n \n {{'profile.adressNumber' | translate}}\n \n \n
    \n
    \n\n {{'profile.adressBoxNumber' | translate}}\n \n {{'profile.adressBoxNumber' | translate}}\n \n \n {{'profile.adressName' | translate}}\n\n \n {{'profile.adressName' | translate}}\n \n \n
    \n
    \n {{'profile.addressReport' | translate}}\n \n
    \n
    \n {{'profile.addressInvoice' | translate}}\n \n
    \n
    \n\n {{this.errorContent}}\n
    \n \n
    \n
    \n
    \n\n","import { Component, OnInit, Input } from '@angular/core';\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms';\nimport { AdressType } from '../../../core/enums/adress-type.enum';\nimport { DataService } from '../../../core/services/data.service';\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { Inject } from '@angular/core';\n\n@Component({\n selector: 'app-edit-adress-dialog',\n templateUrl: './edit-adress-dialog.component.html',\n styleUrls: ['./edit-adress-dialog.component.scss']\n})\nexport class EditAdressDialogComponent implements OnInit {\n newAdress: FormGroup;\n displayError = false;\n errorContent = 'Veuillez bien remplir le formulaire';\n errorCreation = 'Un problème est survenu , réessayer';\n adressType = AdressType;\n constructor(\n private fb: FormBuilder,\n private dataService: DataService,\n @Inject(MAT_DIALOG_DATA) public data: any\n ) {}\n\n ngOnInit(): void {\n this.newAdress = this.fb.group({\n Country: [this.data.adress.Country],\n City: [this.data.adress.City],\n PostalCode: [this.data.adress.PostalCode],\n Street: [this.data.adress.Street],\n Num: [this.data.adress.Number],\n Name: [this.data.adress.Name, [Validators.required]],\n NotReceiveInvoice: [!this.data.adress.NotReceiveInvoice, [Validators.required]],\n NotReceiveReport: [!this.data.adress.NotReceiveReport, [Validators.required]],\n Type: [this.data.adress.Type],\n // Latitude: [''],\n // Longitude: [''],\n AppartementNumber: [this.data.adress.ApartmentNumber],\n BoxNumber: [this.data.adress.BoxNumber],\n });\n this.newAdress.controls['City'].disable();\n this.newAdress.controls['PostalCode'].disable();\n this.newAdress.controls['Street'].disable();\n this.newAdress.controls['Num'].disable();\n this.newAdress.controls['BoxNumber'].disable();\n }\n editAdress() {\n this.newAdress.controls['NotReceiveInvoice'].setValue(!this.newAdress.controls['NotReceiveInvoice'].value);\n this.newAdress.controls['NotReceiveReport'].setValue(!this.newAdress.controls['NotReceiveReport'].value);\n const toPatch = [\n { 'op': 'replace', 'path': '/Name', 'value': this.newAdress.get('Name').value },\n { 'op': 'replace', 'path': '/Type', 'value': this.newAdress.get('Type').value },\n { 'op': 'replace', 'path': '/NotReceiveInvoice', 'value': this.newAdress.get('NotReceiveInvoice').value },\n { 'op': 'replace', 'path': '/NotReceiveReport', 'value': this.newAdress.get('NotReceiveReport').value },\n ];\n this.dataService.editAdress(toPatch, this.data.id).subscribe(data => {\n if ((data.status = 204)) {\n this.dataService.getProfile();\n this.data.dialog.closeAll();\n\n } else {\n this.data.dialog.closeAll();\n }\n });\n }\n}\n","
    \n
    \n {{'profile.yourAdresses' | translate}}\n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n

    {{'profile.mainAdress' | translate}}

    \n
    \n

    {{ profile?.MainAddress.Name ? profile?.MainAddress.Name : profile?.MainUser.Name }}

    \n
    \n
    \n
    \n
    \n
    \n {{ profile?.MainAddress.Street + ' ' + profile?.MainAddress.Number }}\n
    \n
    \n {{ profile?.MainAddress.City + ' , ' + profile?.MainAddress.PostalCode }}\n
    \n
    \n {{ profile?.MainAddress.Country }}\n
    \n
    \n
    \n
    \n {{'profile.addressReport' | translate}}\n \n \n \n \n \n\n \n \n\n\n \n
    \n
    \n {{'profile.addressInvoice' | translate}}\n \n \n \n \n \n\n \n \n\n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n {{ adress.Name }}\n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n {{ adress.Street + ' ' + adress.Number }}\n
    \n
    \n {{ adress.City + ' , ' + adress.PostalCode }} \n
    \n
    \n {{ adress.Country }}\n
    \n
    \n
    \n
    \n {{'profile.addressReport' | translate}}\n \n \n \n\n \n \n \n \n \n
    \n
    \n {{'profile.addressInvoice' | translate}}\n \n \n \n \n \n\n \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n","import { Component, OnInit, Input } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { AddAdressDialogComponent } from \"../add-adress-dialog/add-adress-dialog.component\"\nimport { DataService } from '../../../core/services/data.service';\nimport { DeleteAdressComponent } from '../delete-adress/delete-adress.component'\nimport { EditAdressDialogComponent } from '../edit-adress-dialog/edit-adress-dialog.component'\n\n@Component({\n selector: 'app-add-adresses',\n templateUrl: './add-adresses.component.html',\n styleUrls: ['./add-adresses.component.scss']\n})\nexport class AddAdressesComponent implements OnInit {\n constructor(public dialog: MatDialog, private dataService: DataService) { }\n @Input() profile;\n ngOnInit(): void {\n }\n\n ngOnChanges(): void {\n if (!this.profile) {\n this.profile = {\n MainAddress: {},\n Addresses: [],\n };\n }\n }\n\n addNewAdress() {\n if (!this.profile) return; // Ensure profile data exists\n this.dialog.open(AddAdressDialogComponent, {\n panelClass: ['full-screen-dialog'],\n data: { dialog: this.dialog },\n });\n }\n\n editAdress(adress, id) {\n if (!adress || !id) return; // Guard against missing data\n this.dialog.open(EditAdressDialogComponent, {\n panelClass: ['full-screen-dialog'],\n data: { dialog: this.dialog, profile: this.profile, adress, id },\n });\n }\n\n deleteAdress(id) {\n if (!id) return; // Ensure ID is valid\n this.dialog.open(DeleteAdressComponent, {\n panelClass: ['full-screen-dialog'],\n data: { dialog: this.dialog, id },\n });\n }\n}\n","export const FunctionType = [\n {\n name : \"Manager\",\n value : 0\n },\n {\n name : \"Member\",\n value : 2\n },\n {\n name : \"Planning\",\n value : 3\n },\n {\n name : \"Accounting\",\n value : 4\n },\n {\n name : \"MainContact\",\n value : 5\n }\n ]\n","\nexport const TitleType = [\n { text : \"Monsieur\", value : \"Monsieur\"},\n { text : \"Madame\", value : \"Madame\" },\n { text : \"Mademoiselle\", value : \"Mademoiselle\" },\n { text : \"Madame et Monsieur\", value : \"Madame et Monsieur\" },\n { text : \"Messieurs\", value : \"Messieurs\" },\n { text : \"Mesdames\", value : \"Mesdames\" },\n { text : \"Mesdemoiselles\", value : \"Mesdemoiselles\" },\n { text : \"Professeur\", value : \"Professeur\" },\n { text : \"Docteur\", value : \"Docteur\" },\n { text : \"Maître\", value : \"Maître\" },\n { text : \"Administration provisoire\", value : \"Administration provisoire\"},\n { text : \"Indivision\", value : \"Indivision\" },\n { text : \"Succession\", value : \"Succession\" },\n { text : \"Veuve\", value : \"Veuve\" },\n { text : \"Veuf\", value : \"Veuf\" }\n]\n","
    \n

    {{'profile.addNewContact' | translate}}

    \n \n \n \n \n
    \n {{'profile.title' | translate}}\n
    \n \n {{'profile.title' | translate}}\n \n \n {{'profile.title'+type.text | translate }}\n \n \n \n
    \n {{'profile.function' | translate}}\n
    \n \n {{'profile.function' | translate}}\n \n \n {{ 'profile.fonction'+function.name | translate }}\n \n \n \n
    \n\n
    \n
    \n {{'profile.name' | translate}}\n
    \n \n \n \n
    \n
    \n
    \n {{'profile.firstname' | translate}}\n
    \n \n \n \n
    \n
    \n
    \n\n
    \n
    \n {{'profile.gsm' | translate}}\n
    \n \n \n \n
    \n
    \n
    \n {{'profile.phone' | translate}}\n
    \n \n \n \n
    \n
    \n
    \n {{'profile.email' | translate}}\n
    \n \n \n \n
    \n
    \n
    \n {{ 'profile.contactNotifOrder' | translate }}\n \n >\n
    \n
    \n {{ 'profile.contactNotifAll' | translate }}\n \n
    \n
    \n Veuillez bien remplir le\n formulaire\n
    \n \n
    \n
    \n
    ","import { Component, OnInit, Inject } from '@angular/core';\nimport { FormGroup, FormBuilder, Validators, FormControl } from '@angular/forms';\nimport { FunctionType } from '../../../core/enums/function-type.enum'\nimport { TitleType } from '../../../core/enums/title.enum'\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { DataService } from '../../../core/services/data.service';\n\n@Component({\n selector: 'app-add-contact-dialog',\n templateUrl: './add-contact-dialog.component.html',\n styleUrls: ['./add-contact-dialog.component.scss']\n})\nexport class AddContactDialogComponent implements OnInit {\n newContact: FormGroup;\n functionType = FunctionType;\n titleType = TitleType;\n displayError = false;\n myModel = true;\n myModel2 = true;\n constructor(private fb: FormBuilder, private dataService: DataService, @Inject(MAT_DIALOG_DATA) public data: any) { }\n\n ngOnInit(): void {\n this.newContact = this.fb.group({\n Function: [0, [Validators.required]],\n Title: ['', [Validators.required]],\n Name: ['', [Validators.required]],\n FirstName: ['', [Validators.required]],\n TelNumber: ['', [Validators.required]],\n PhoneNumber: ['', [Validators.required]],\n Email: ['', [Validators.required, Validators.email],],\n UnsubscribedOrderInformations: [false],\n UnsubscribedEmailReports: [false],\n });\n }\n addNewContact() {\n if (this.newContact.status !== 'VALID') {\n this.displayError = true;\n } else {\n this.newContact.get('UnsubscribedOrderInformations').setValue(\n !this.newContact.get('UnsubscribedOrderInformations').value\n );\n this.newContact.get('UnsubscribedEmailReports').setValue(\n !this.newContact.get('UnsubscribedEmailReports').value\n );\n this.displayError = false;\n this.dataService.createContact(this.newContact.value).subscribe((data) => {\n if (data.status === 204) {\n this.data.dialog.closeAll();\n this.dataService.getProfile();\n }\n });\n }\n }\n\n}\n\n","import { Component, OnInit , Inject } from '@angular/core';\nimport {MAT_DIALOG_DATA} from '@angular/material/dialog';\nimport { DataService } from '../../../core/services/data.service';\n@Component({\n selector: 'app-delete-contact',\n templateUrl: './delete-contact.component.html',\n styleUrls: ['./delete-contact.component.scss']\n})\nexport class DeleteContactComponent implements OnInit {\n\n constructor(@Inject(MAT_DIALOG_DATA) public data: any,private dataService: DataService) { }\n\n ngOnInit(): void {\n }\n deleteContact(id){\n this.dataService.deleteContact(id).subscribe(data =>\n this.dataService.getProfile())\n this.data.dialog.closeAll()\n\n }\n annuler(){\n this.data.dialog.closeAll()\n }\n}\n","
    \n

    {{'profile.deleteContact' | translate}}

    \n \n \n \n

    {{'profile.deleteContactConfirm' | translate}}

    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    ","
    \n

    {{'profile.editContact' | translate}}

    \n \n \n \n \n
    \n {{'profile.title' | translate}}\n
    \n \n {{'profile.title' | translate}}\n \n \n {{'profile.title'+type.text | translate }}\n \n \n \n
    \n {{'profile.function' | translate}}\n
    \n \n {{'profile.function' | translate}}\n \n \n {{ 'profile.fonction'+function.name | translate }}\n \n \n \n
    \n\n
    \n
    \n {{'profile.name' | translate}}\n
    \n \n \n \n
    \n
    \n
    \n {{'profile.firstname' | translate}}\n
    \n \n \n \n
    \n
    \n
    \n
    \n
    \n {{'profile.gsm' | translate}}\n
    \n \n \n \n
    \n
    \n
    \n {{'profile.phone' | translate}}\n
    \n \n \n \n
    \n
    \n
    \n {{'profile.email' | translate}}\n
    \n \n \n\n \n \n
    \n
    \n
    \n {{ 'profile.contactNotifOrder' | translate }}\n \n
    \n
    \n {{ 'profile.contactNotifAll' | translate }}\n \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n","import { Component, OnInit, Inject } from '@angular/core';\nimport { FormGroup, FormBuilder, Validators, FormControl } from '@angular/forms';\nimport { FunctionType } from '../../../core/enums/function-type.enum'\nimport { TitleType } from '../../../core/enums/title.enum'\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { DataService } from '../../../core/services/data.service';\n@Component({\n selector: 'app-edit-contact-dialog',\n templateUrl: './edit-contact-dialog.component.html',\n styleUrls: ['./edit-contact-dialog.component.scss']\n})\nexport class EditContactDialogComponent implements OnInit {\n newContact: FormGroup;\n functionType = FunctionType;\n titleType = TitleType;\n displayError = false;\n constructor(private fb: FormBuilder, private dataService: DataService, @Inject(MAT_DIALOG_DATA) public data: any) { }\n\n ngOnInit(): void {\n this.newContact = this.fb?.group({\n Function: [this?.data?.contact.Function,],\n Title: [this?.data?.contact.Title,],\n Name: [this?.data?.contact.Name,],\n FirstName: [this?.data?.contact.FirstName,],\n TelNumber: [this?.data?.contact.TelNumber,],\n PhoneNumber: [this?.data?.contact.PhoneNumber,],\n Email: [this.data?.contact?.Email, [Validators.required, Validators.email],],\n UnsubscribedOrderInformations: [!this.data?.contact?.UnsubscribedOrderInformations,],\n UnsubscribedEmailReports: [!this.data?.contact?.UnsubscribedEmailReports,],\n });\n\n }\n editContact() {\n if (this?.newContact?.invalid) {\n this.displayError = true; // Show the error message if the form is invalid\n return; // Stop further execution\n }\n\n this.newContact?.get('UnsubscribedOrderInformations').setValue(!this.newContact?.get('UnsubscribedOrderInformations').value)\n this.newContact?.get('UnsubscribedEmailReports').setValue(!this.newContact?.get('UnsubscribedEmailReports').value)\n this.displayError = false;\n let toPatch = [];\n if (this.data.mainContact) {\n toPatch = [\n { \"op\": \"replace\", \"path\": \"/Title\", \"value\": this.newContact?.get('Title').value },\n { \"op\": \"replace\", \"path\": \"/Name\", \"value\": this.newContact?.get('Name').value },\n { \"op\": \"replace\", \"path\": \"/FirstName\", \"value\": this.newContact?.get('FirstName').value },\n { \"op\": \"replace\", \"path\": \"/TelNumber\", \"value\": this.newContact?.get('TelNumber').value },\n { \"op\": \"replace\", \"path\": \"/PhoneNumber\", \"value\": this.newContact?.get('PhoneNumber').value },\n { \"op\": \"replace\", \"path\": \"/UnsubscribedOrderInformations\", \"value\": this.newContact?.get('UnsubscribedOrderInformations').value },\n { \"op\": \"replace\", \"path\": \"/UnsubscribedEmailReports\", \"value\": this.newContact?.get('UnsubscribedEmailReports').value }\n ]\n } else {\n toPatch = [\n { \"op\": \"replace\", \"path\": \"/Title\", \"value\": this.newContact?.get('Title').value },\n { \"op\": \"replace\", \"path\": \"/Name\", \"value\": this.newContact?.get('Name').value },\n { \"op\": \"replace\", \"path\": \"/FirstName\", \"value\": this.newContact?.get('FirstName').value },\n { \"op\": \"replace\", \"path\": \"/TelNumber\", \"value\": this.newContact?.get('TelNumber').value },\n { \"op\": \"replace\", \"path\": \"/PhoneNumber\", \"value\": this.newContact?.get('PhoneNumber').value },\n { \"op\": \"replace\", \"path\": \"/Function\", \"value\": this.newContact?.get('Function').value },\n { \"op\": \"replace\", \"path\": \"/Email\", \"value\": this.newContact?.get('Email').value },\n { \"op\": \"replace\", \"path\": \"/UnsubscribedOrderInformations\", \"value\": this.newContact?.get('UnsubscribedOrderInformations').value },\n { \"op\": \"replace\", \"path\": \"/UnsubscribedEmailReports\", \"value\": this.newContact?.get('UnsubscribedEmailReports').value }\n ]\n }\n\n this.dataService?.editContact(toPatch, this.data.id)?.subscribe(data => {\n if ((data?.status == 204)) {\n this.dataService?.getProfile();\n this.data.dialog?.closeAll();\n\n }\n else {\n this.data.dialog?.closeAll();\n }\n })\n }\n}\n\n\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'app-notif-order-icon',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n `,\n styleUrls: [],\n})\nexport class NotifOrderIconComponent {\n @Input() width = '20';\n @Input() height = '20';\n @Input() svgClass = 'col-3';\n @Input() customClass: string | string[] = '';\n @Input() hide = false; // This will control the visibility\n}","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'app-notif-all-icon',\n template: `\n \n \n \n \n \n \n \n \n \n \n \n \n `,\n styles: []\n})\n\nexport class NotifAllIconComponent { \n @Input() width = '20';\n @Input() height = '20';\n @Input() svgClass = 'col-3';\n @Input() customClass: string | string[] = '';\n @Input() hide = false; // This will control the visibility\n}","import { Component, Output, EventEmitter } from '@angular/core';\n\n@Component({\n selector: 'app-edit-icon',\n template: `\n \n \n \n `,\n styles: [],\n})\nexport class EditIconComponent {\n @Output() editClick = new EventEmitter();\n\n onEditClick(): void {\n this.editClick.emit();\n }\n}","
    \n
    \n {{ 'profile.contactList' | translate }}\n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n

    {{ 'profile.mainContact' | translate }}

    \n
    \n {{ profile.MainUser.Title }}\n
    \n
    \n \n {{profile.MainUser.FirstName ? profile.MainUser.FirstName +' '+ profile.MainUser.Name :\n profile.MainUser.Name}}\n \n \n
    \n
    \n
    \n
    \n
    \n {{ profile.MainUser.Email }}\n
    \n
    \n {{ profile.MainUser.PhoneNumber ?\n profile.MainUser.PhoneNumber : profile.MainUser.TelNumber }}\n
    \n
    \n
    \n
    \n {{ 'profile.contactNotifOrder' | translate }}\n \n
    \n
    \n {{ 'profile.contactNotifAll' | translate }}\n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n {{'profile.title'+contact.Title | translate }}\n
    \n
    \n
    \n \n {{contact.FirstName ? contact.FirstName +' '+ contact.Name : contact.Name}}\n \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n {{ contact.Email }}\n
    \n
    \n {{ contact.PhoneNumber ? contact.PhoneNumber:\n contact.TelNumber }}\n
    \n
    \n \n {{ 'profile.' + functionType[contact.Function] | translate }}\n \n
    \n
    \n\n
    \n
    \n {{ 'profile.contactNotifOrder' | translate }}\n \n
    \n\n
    \n {{ 'profile.contactNotifAll' | translate }}\n \n
    \n
    \n
    \n
    \n
    \n
    ","import { Component, OnInit , Input } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { AddContactDialogComponent} from '../add-contact-dialog/add-contact-dialog.component'\nimport { DataService } from '../../../core/services/data.service';\nimport {FunctionType} from '../../../core/enums/function-type.enum'\nimport {DeleteContactComponent} from '../delete-contact/delete-contact.component'\nimport {EditContactDialogComponent} from '../edit-contact-dialog/edit-contact-dialog.component'\n@Component({\n selector: 'app-profile-pro-contacts',\n templateUrl: './profile-pro-contacts.component.html',\n styleUrls: ['./profile-pro-contacts.component.scss']\n})\nexport class ProfileProContactsComponent implements OnInit {\n @Input() profile;\n functionType= ['Manager','','Member','Planning','Accounting','MainContact'];\n constructor( public dialog: MatDialog,private dataService: DataService) { }\n\n ngOnInit(): void {\n }\n addContact(){\n this.dialog.open(AddContactDialogComponent, {\n panelClass: ['full-screen-dialog'],\n data: { dialog: this.dialog }\n });\n }\n editContact(mainContact , contact , id){\n this.dialog.open(EditContactDialogComponent, {\n panelClass: ['full-screen-dialog'],\n data: { dialog: this.dialog , profile : this.profile , mainContact: mainContact, contact : contact , id:id }\n });\n }\n popDelete(id){\n this.dialog.open(DeleteContactComponent, {\n panelClass: ['full-screen-dialog'],\n data: { dialog: this.dialog , profile : this.profile , id: id, dataService : this.dataService }\n });\n }\n deleteContact(id){\n this.dataService.deleteContact(id).subscribe()\n }\n\n}\n","import { Component, OnInit } from '@angular/core';\nimport { FormGroup, FormBuilder, Validators , FormControl } from '@angular/forms';\nimport { DataService } from '../../../core/services/data.service';\nimport {MatSnackBar , MatSnackBarConfig} from '@angular/material/snack-bar';\nimport { TranslateService } from '@ngx-translate/core';\nimport { catchError } from 'rxjs/operators';\nimport { of } from 'rxjs';\n\n@Component({\n selector: 'app-profile-password',\n templateUrl: './profile-password.component.html',\n styleUrls: ['./profile-password.component.scss']\n})\nexport class ProfilePasswordComponent implements OnInit {\n newPassword: FormGroup;\n constructor(\n private fb: FormBuilder,\n private dataService: DataService,\n private _snackBar: MatSnackBar,\n private translate: TranslateService\n ) { }\n\n ngOnInit(): void {\n this.newPassword = this.fb.group({\n oldpassword: ['', [Validators.required]],\n newpassword: ['', [Validators.required]],\n confirmNewpassword: ['', [Validators.required]],\n });\n }\n\n confirmPass() {\n if (this.newPassword.value.newpassword !== this.newPassword.value.confirmNewpassword) {\n this.translate.get('profile.passwordsNotMatching').subscribe((res: string) => {\n const config = new MatSnackBarConfig();\n config.panelClass = ['redError'];\n config.duration=500000\n this.openSnackBar(res,'redError');\n });\n } else {\n const toSend = {\n OldPassword : this.newPassword.value.oldpassword,\n NewPassword: this.newPassword.value.newpassword\n };\n this.dataService.editPassword(toSend).pipe(catchError((err) => {\n return of({status: 400});\n })).subscribe((data: any) => {\n // this.error = data.status;\n if (data.status !== 204) {\n this.translate.get('profile.couldntEdit').subscribe((res: string) => {\n this.openSnackBar(res,'redError');\n });\n } else {\n this.translate.get('profile.success').subscribe((res: string) => {\n this.openSnackBar(res,'greenSuccess');\n });\n }\n });\n }\n }\n openSnackBar(message,cssClass) {\n this._snackBar.open(message, undefined ,{\n duration: 4000,\n panelClass: [cssClass]\n});\n }\n\n}\n","
    \n
    \n {{'profile.password' | translate}}\n
    \n\n \n
    \n
    \n
    \n {{'profile.passwordActual' | translate}}\n
    \n \n
    \n
    \n
    \n {{'profile.newpassword' | translate}}\n
    \n \n
    \n
    \n
    \n {{'profile.confirmNewPassword' | translate}}\n
    \n \n
    \n
    \n
    \n
    \n","import { Component, OnInit , Inject } from '@angular/core';\nimport {MAT_DIALOG_DATA} from '@angular/material/dialog';\n@Component({\n selector: 'app-profile-upgrade-status',\n templateUrl: './profile-upgrade-status.component.html',\n styleUrls: ['./profile-upgrade-status.component.scss']\n})\nexport class ProfileUpgradeStatusComponent implements OnInit {\n\n constructor(@Inject(MAT_DIALOG_DATA) public data: any) { }\n\n ngOnInit(): void {\n\n }\n\n}\n","
    \n

    Ajoutez une nouvelle adresse

    \n \n \n \n

    Vous etes sur le point d'upgrade votre statut bronze vers le statut gold

    \n \n
    ","
    \n
    \n {{'profile.status' | translate}}\n
    \n
    \n
    \n
    \n \n \n \n \n

    {{'profile.silverStatus' | translate}}

    \n

    Economisez jusqu'a 100eu

    \n

    a partir de 1 commande/mois

    \n \n
    \n
    \n
    \n
    \n \n \n \n \n\n

    STATUT GOLD

    \n

    Economisez jusqu'a 130eu

    \n

    a partir de 10 commandes/mois

    \n \n \n
    \n
    \n \n
    \n
    \n","import { Component, OnInit, Input } from '@angular/core';\nimport { PricingPlans } from '../../../core/enums/pricing-plan.enum';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ProfileUpgradeStatusComponent } from '../profile-upgrade-status/profile-upgrade-status.component';\nimport { Router, NavigationStart } from '@angular/router';\n@Component({\n selector: 'app-profile-status',\n templateUrl: './profile-status.component.html',\n styleUrls: ['./profile-status.component.scss']\n})\nexport class ProfileStatusComponent implements OnInit {\n @Input() profile;\n PricingPlans = PricingPlans;\n statusPlans;\n constructor(public dialog: MatDialog, private router: Router) {}\n\n ngOnInit(): void {\n this.statusPlans = Object.values(this.PricingPlans);\n }\n upgrade() {\n this.dialog.open(ProfileUpgradeStatusComponent, {\n panelClass: ['full-screen-dialog'],\n data: { dialog: this.dialog }\n });\n }\n toComission() {\n this.router.navigate(['/comissions']);\n }\n}\n","
    \n \n \n \n \n \n
    \n","import { Component, OnInit, EventEmitter, Input } from '@angular/core';\nimport { PricingPlans } from '../../../core/enums/pricing-plan.enum';\nimport { Regions } from '../../../core/enums/region.enum';\nimport { estatesName } from '../../../core/data/estates';\n@Component({\n selector: 'app-profile-pro',\n templateUrl: './profile-pro.component.html',\n styleUrls: ['./profile-pro.component.scss']\n})\nexport class ProfileProComponent implements OnInit {\n @Input() profile;\n Regions = Regions;\n PricingPlans = PricingPlans;\n statusPlans;\n estatesType = estatesName;\n constructor() { }\n\n ngOnInit(): void {\n this.statusPlans = Object.values(this.PricingPlans);\n }\n\n}\n","
    \n \n
    \n","import { Component, OnInit } from '@angular/core';\nimport { BehaviorSubject, of } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { DataService } from '../../../core/services/data.service';\n\n@Component({\n selector: 'app-profile',\n templateUrl: './profile.component.html',\n styleUrls: ['./profile.component.scss']\n})\nexport class ProfileComponent implements OnInit {\n profile$: BehaviorSubject = new BehaviorSubject(null); // Initialize with null for safety.\n\n constructor(private dataService: DataService) {}\n\n ngOnInit(): void {\n this.dataService.getProfile().pipe(\n catchError((error) => {\n console.error('Error fetching profile:', error);\n return of(null); // Emit null or handle as needed.\n })\n ).subscribe(); // Ensures the method is called, even if subscription isn't needed directly.\n this.profile$ = this.dataService.profile$;\n }\n}","\n \n \n \n Listing de tous les notaires\n \n \n
    \n
    \n
    Prénom
    \n
    Nom de famille
    \n
    Utilisateur
    \n
    Commandes totales
    \n
    Voir toutes les stats
    \n
    \n
    \n
    David
    \n
    Souery
    \n
    \n \n \n \n \n \n \n \n \n Actif\n \n
    \n
    50
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n
    \n
    \n
    David
    \n
    Souery
    \n
    \n \n \n \n \n \n \n \n \n Inactif\n \n
    \n
    14
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n
    \n
    \n
    David
    \n
    Souery
    \n
    \n \n \n \n \n \n \n \n \n Actif\n \n
    \n
    50
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n
    \n
    \n
    David
    \n
    Souery
    \n
    \n \n \n \n \n \n \n \n \n Inactif\n \n
    \n
    14
    \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 \n \n Listing de tous les notaires\n \n \n \n \n
    \n
    \n
    \n
    \n
    \n

    David Souery

    \n

    \n \n \n \n \n \n \n \n \n \n Utilisateur actif

    \n \n
    \n
    \n

    Nombre de commandes total

    \n

    50

    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n

    David Souery

    \n

    \n \n \n \n \n \n \n \n \n \n Utilisateur actif

    \n \n
    \n
    \n

    Nombre de commandes total

    \n

    50

    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n

    David Souery

    \n

    \n \n \n \n \n \n \n \n \n \n Utilisateur actif

    \n \n
    \n
    \n

    Nombre de commandes total

    \n

    46

    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n

    David Souery

    \n

    \n \n \n \n \n \n \n \n \n \n Utilisateur inactif

    \n \n
    \n
    \n

    Nombre de commandes total

    \n

    41

    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n

    David Souery

    \n

    \n \n \n \n \n \n \n \n \n \n Utilisateur actif

    \n \n
    \n
    \n

    Nombre de commandes total

    \n

    50

    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n\n","import { Component, Input } from '@angular/core';\nimport { Router } from '@angular/router';\n@Component({\n selector: 'app-all-notaires',\n templateUrl: './all-notaires.component.html',\n styleUrls: ['./all-notaires.component.scss']\n})\nexport class AllNotairesComponent {\n @Input() activeFilter;\n constructor(private router: Router) { }\n\n toggleStats(){\n this.router.navigate(['/stats']);\n }\n\n}\n","\n \n \n \n Listing de tous les notaires\n \n \n
    \n
    \n
    Prénom
    \n
    Nom de famille
    \n
    Utilisateur
    \n
    Commandes totales
    \n
    Voir toutes les stats
    \n
    \n
    \n
    David
    \n
    Souery
    \n
    \n \n \n \n \n \n \n \n \n Actif\n \n
    \n
    50
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n
    \n
    \n
    David
    \n
    Souery
    \n
    \n \n \n \n \n \n \n \n \n Actif\n \n
    \n
    50
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n
    \n
    \n
    David
    \n
    Souery
    \n
    \n \n \n \n \n \n \n \n \n Actif\n \n
    \n
    50
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n
    \n
    \n
    David
    \n
    Souery
    \n
    \n \n \n \n \n \n \n \n \n Actif\n \n
    \n
    50
    \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 \n \n Listing de tous les notaires\n \n \n \n \n
    \n
    \n
    \n
    \n
    \n

    David Souery

    \n

    \n \n \n \n \n \n \n \n \n \n Utilisateur actif

    \n \n
    \n
    \n

    Nombre de commandes total

    \n

    50

    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n

    David Souery

    \n

    \n \n \n \n \n \n \n \n \n \n Utilisateur actif

    \n \n
    \n
    \n

    Nombre de commandes total

    \n

    50

    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n

    David Souery

    \n

    \n \n \n \n \n \n \n \n \n \n Utilisateur actif

    \n \n
    \n
    \n

    Nombre de commandes total

    \n

    46

    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n

    David Souery

    \n

    \n \n \n \n \n \n \n \n \n \n Utilisateur actif

    \n \n
    \n
    \n

    Nombre de commandes total

    \n

    46

    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n\n","import { Component, OnInit , Input } from '@angular/core';\n\n@Component({\n selector: 'app-actifs-notaires',\n templateUrl: './actifs-notaires.component.html',\n styleUrls: ['./actifs-notaires.component.scss']\n})\nexport class ActifsNotairesComponent implements OnInit {\n @Input() activeFilter;\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","\n \n \n \n Listing de tous les notaires\n \n \n
    \n
    \n
    Prénom
    \n
    Nom de famille
    \n
    Utilisateur
    \n
    Commandes totales
    \n
    Voir toutes les stats
    \n
    \n
    \n
    David
    \n
    Souery
    \n
    \n \n \n \n \n \n \n \n \n Inactif\n \n
    \n
    14
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n
    \n
    \n
    David
    \n
    Souery
    \n
    \n \n \n \n \n \n \n \n \n Inactif\n \n
    \n
    14
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n
    \n
    \n
    David
    \n
    Souery
    \n
    \n \n \n \n \n \n \n \n \n Inactif\n \n
    \n
    14
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n
    \n
    \n
    David
    \n
    Souery
    \n
    \n \n \n \n \n \n \n \n \n Inactif\n \n
    \n
    14
    \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 \n \n Listing de tous les notaires\n \n \n \n \n
    \n
    \n
    \n
    \n
    \n

    David Souery

    \n

    \n \n \n \n \n \n \n \n \n \n Utilisateur inactif

    \n \n
    \n
    \n

    Nombre de commandes total

    \n

    41

    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n

    David Souery

    \n

    \n \n \n \n \n \n \n \n \n \n Utilisateur inactif

    \n \n
    \n
    \n

    Nombre de commandes total

    \n

    22

    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n

    David Souery

    \n

    \n \n \n \n \n \n \n \n \n \n Utilisateur inactif

    \n \n
    \n
    \n

    Nombre de commandes total

    \n

    44

    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n

    David Souery

    \n

    \n \n \n \n \n \n \n \n \n \n Utilisateur inactif

    \n \n
    \n
    \n

    Nombre de commandes total

    \n

    33

    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n

    David Souery

    \n

    \n \n \n \n \n \n \n \n \n \n Utilisateur inactif

    \n \n
    \n
    \n

    Nombre de commandes total

    \n

    12

    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n\n","import { Component, OnInit , Input } from '@angular/core';\n\n@Component({\n selector: 'app-inactifs-notaires',\n templateUrl: './inactifs-notaires.component.html',\n styleUrls: ['./inactifs-notaires.component.scss']\n})\nexport class InactifsNotairesComponent implements OnInit {\n @Input() activeFilter;\n constructor() { }\n\n ngOnInit(): void {\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 \n \n \n\n","import { Component, ViewChild, ElementRef , OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-listing-notaire',\n templateUrl: './listing-notaire.component.html',\n styleUrls: ['./listing-notaire.component.scss']\n})\nexport class ListingNotaireComponent implements OnInit {\n @ViewChild('all', { static: true }) all: ElementRef;\n @ViewChild('actifs', { static: true }) actifs: ElementRef;\n @ViewChild('inactifs', { static: true }) inactifs: ElementRef;\n @ViewChild('segmented', { static: true }) segmented: ElementRef;\n @ViewChild('table', { static: true }) table: ElementRef;\n activeTab='all';\n activeFilter='table';\n constructor() { }\n\n ngOnInit(): void {\n }\n setTab(arg){\n if(arg!==this.activeTab){\n if(arg==\"inactifs\" ){\n this[this.activeTab].nativeElement.classList.remove('tab-active')\n this[this.activeTab].nativeElement.classList.remove('green')\n this.activeTab= arg;\n this[arg].nativeElement.classList.add('tab-active');\n }else{\n this[this.activeTab].nativeElement.classList.remove('tab-active')\n this[this.activeTab].nativeElement.classList.remove('green')\n this.activeTab= arg;\n this[arg].nativeElement.classList.add('tab-active');\n this[arg].nativeElement.classList.add('green');\n }\n }\n }\n setFilter(arg){\n if(arg!==this.activeFilter){\n this[this.activeFilter].nativeElement.classList.remove('filter-active')\n this[this.activeFilter].nativeElement.classList.add('filter-not-active')\n this.activeFilter= arg;\n this[arg].nativeElement.classList.add('filter-active');\n this[arg].nativeElement.classList.remove('filter-not-active');\n }\n }\n\n}\n","import { Component, ViewChild, ElementRef, Input } from '@angular/core';\n\n@Component({\n selector: 'app-comissions-info',\n templateUrl: './comissions-info.component.html',\n styleUrls: ['./comissions-info.component.scss']\n})\nexport class ComissionsInfoComponent {\n @ViewChild('alert', { static: true }) alert: ElementRef;\n @Input() comissions;\n\n closeAlert() {\n const alert: HTMLDivElement = this.alert.nativeElement;\n alert.parentElement.removeChild(alert);\n }\n}\n","
    \n \n \n\n
    \n
      \n
    • \n {{ 'comission.info1' | translate }}\n
    • \n
    • \n {{ 'comission.info2' | translate }}\n
    • \n
    • \n {{ 'comission.info3' | translate }}\n
    • \n
    • \n {{ 'comission.info4' | translate }}\n
    • \n
    • \n {{ 'comission.info5' | translate }}\n
    • \n
    • \n {{ 'comission.info6' | translate }}\n
    • \n
    • \n {{ 'comission.info7' | translate }}\n
    • \n
    • \n {{ 'comission.info8' | translate }}\n
    • \n
    \n
    \n
    \n
    \n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-print-icon',\n template: `\n \n \n \n `,\n styles: []\n})\nexport class PrintIconComponent {}","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'app-filter-icons',\n template: `\n
    \n \n \n \n \n \n
    \n \n
    \n \n \n \n \n \n
    \n \n `,\n styles: [\n `\n .filter {\n cursor: pointer;\n display: inline-block;\n }\n\n .filter-active {\n border: 2px solid #2e7df1;\n border-radius: 5px;\n }\n\n .filter-not-active {\n opacity: 0.6;\n }\n\n .alignSvg {\n vertical-align: middle;\n }\n `\n ]\n})\nexport class FilterIconsComponent {\n @Input('activeFilter') activeFilter: 'segmented' | 'table';\n\n @Output('setFilter') setFilterEvent = new EventEmitter<'segmented' | 'table'>();\n\n setFilter(filter: 'segmented' | 'table') {\n this.setFilterEvent.emit(filter);\n }\n}\n","\n \n \n {{ 'profile.totalAmountUnpaid' | translate }}. \n \n TVAC {{ this.comissions.TotalUnpaid }},00 €\n \n \n
    \n
    \n
    \n {{ 'comission.client' | translate }}\n
    \n
    \n {{ 'comission.adress' | translate }}\n
    \n
    \n {{ 'comission.facture' | translate }}\n
    \n
    \n {{ 'comission.infoSup' | translate }}\n
    \n
    \n {{ 'comission.notPaid' | translate }}\n
    \n
    \n {{ 'comission.see' | translate }}\n
    \n
    \n
    \n
    \n {{ comm.Customer }}\n
    \n
    \n {{ comm.Address }}\n
    \n
    \n {{ 'comission.facture' | translate }}
    \n {{ comm.InvoiceNumber }}\n
    \n
    \n {{ 'comission.valid' | translate }}\n \n \n \n \n \n \n \n \n \n \n {{ 'comission.notvalid' | translate }}\n
    \n
    \n € {{ comm.UnpaidAmount }}\n
    \n \n
    \n
    \n
    \n
    \n\n\n \n \n {{ 'profile.totalAmountUnpaid' | translate }}. \n \n TVAC {{ this.comissions.TotalUnpaid }},00 €\n \n \n
    \n
    \n
    \n
    \n \n \n {{ commi.Customer }} \n
    \n
    \n
    \n \n \n {{ commi.Address }} \n
    \n
    \n
    \n \n \n \n {{ 'comission.infoSup' | translate }}
    \n
    \n\n \n \n \n \n \n \n \n \n \n {{ 'comission.valid' | translate }}\n \n {{\n 'comission.notvalid' | translate\n }}\n
    \n
    \n
    \n \n \n \n \n \n \n \n {{ 'comission.facture' | translate }} {{ commi.InvoiceNumber }}
    \n
    {{ commi.UnpaidAmount }}€
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n","import { BreakpointObserver, type BreakpointState } from '@angular/cdk/layout';\nimport { Component, OnInit, Input, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'app-comissions-unpaid',\n templateUrl: './comissions-unpaid.component.html',\n styleUrls: ['./comissions-unpaid.component.scss'],\n encapsulation: ViewEncapsulation.ShadowDom\n})\nexport class ComissionsUnpaidComponent implements OnInit {\n @Input() activeFilter;\n @Input() comissions;\n isBpLarge = true;\n constructor(private breakpointObserver: BreakpointObserver) {}\n\n ngOnInit(): void {\n this.breakpointObserver.observe(['(min-width: 992px)']).subscribe((state: BreakpointState) => {\n this.isBpLarge = state.matches;\n });\n }\n ngOnChanges() {}\n}\n","
    \n \n \n \n \n {{ 'profile.totalAmounCurrent' | translate }}.\n \n \n TVAC {{ this.comissions?.TotalCommissions }},00 €\n \n \n
    \n
    0\">\n
    \n
    \n {{ 'comission.client' | translate }}\n
    \n
    \n {{ 'comission.adress' | translate }}\n
    \n
    \n {{ 'comission.facture' | translate }}\n
    \n
    \n {{ 'comission.notAvailable' | translate }}\n
    \n
    \n {{ 'comission.available' | translate }}\n
    \n
    \n {{ 'comission.see' | translate }}\n
    \n
    \n
    \n
    \n
    \n {{ commi.Customer }}\n
    \n
    \n {{ commi.Address }}\n
    \n
    \n {{ 'comission.facture' | translate }}
    \n {{ commi.InvoiceNumber }}\n
    \n
    \n Avis de paiement
    \n {{ commi.InvoiceNumber }}\n
    \n
    \n € {{ commi.Amount }}\n
    \n
    \n € {{ commi.Amount }}\n
    \n \n
    \n
    \n
    \n
    \n \n \n \n {{ 'profile.totalAmounCurrent' | translate }}. \n \n TVAC {{ this.comissions?.TotalCommissions }},00 €\n \n \n
    \n
    \n
    \n
    \n \n \n \n \n {{ commi.Customer }} \n
    \n
    \n
    \n \n \n \n \n {{ commi.Address }} \n
    \n
    \n
    \n \n \n \n {{ 'comission.available' | translate }}
    \n {{ 'comission.notAvailable' | translate }}
    \n
    \n {{ commi.Amount }}€ \n
    \n
    \n {{ commi.Amount }}€ \n
    \n
    \n
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{ 'comission.facture' | translate }}
    \n {{ commi.InvoiceNumber }}\n
    \n \n {{ 'comission.avis' | translate }}
    \n {{ commi.InvoiceNumber }}\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n","import { BreakpointObserver, type BreakpointState } from '@angular/cdk/layout';\nimport { Component, OnInit, Input, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'app-comissions-current',\n templateUrl: './comissions-current.component.html',\n styleUrls: ['./comissions-current.component.scss'],\n encapsulation: ViewEncapsulation.ShadowDom\n})\nexport class ComissionsCurrentComponent implements OnInit {\n @Input() activeFilter;\n @Input() comissions;\n isBpLarge = true;\n constructor(private breakpointObserver: BreakpointObserver) {}\n\n ngOnInit(): void {\n this.breakpointObserver.observe(['(min-width: 992px)']).subscribe((state: BreakpointState) => {\n this.isBpLarge = state.matches;\n });\n }\n}\n","
    \n \n
    \n \n
    \n \n {{ 'comission.facturer' | translate }}\n {{\n comissions.TotalCommissions - comissions.TotalUnpaid < 0\n ? '0'\n : (comissions.TotalCommissions - comissions.TotalUnpaid | number: '1.2-2')\n }}€\n \n
    \n
    \n
    \n \n
    \n
    \n\n\n\n","import { BreakpointObserver, type BreakpointState } from '@angular/cdk/layout';\nimport { Component, ViewChild, ElementRef, OnInit, Input, Renderer2, ViewEncapsulation } from '@angular/core';\n\nconst CSS_CLASSES = {\n tabActive: 'tab-active',\n tabGreen: 'green',\n filterActive: 'filter-active',\n filterNotActive: 'filter-not-active',\n};\n\n@Component({\n selector: 'app-comissions-dashboard',\n templateUrl: './comissions-dashboard.component.html',\n styleUrls: ['./comissions-dashboard.component.scss'],\n encapsulation: ViewEncapsulation.ShadowDom\n})\nexport class ComissionsDashboardComponent implements OnInit {\n @ViewChild('unPaid', { static: true }) unPaid: ElementRef;\n @ViewChild('comission', { static: true }) comission: ElementRef;\n @ViewChild('segmented', { static: true }) segmented: ElementRef;\n @ViewChild('table', { static: true }) table: ElementRef;\n\n @Input() comissions: any;\n\n activeTab: string = 'unPaid';\n activeFilter: string = 'table';\n isBpLarge = true;\n\n constructor(private renderer: Renderer2, private breakpointObserver: BreakpointObserver) {}\n\n ngOnInit(): void {\n this.breakpointObserver.observe(['(min-width: 992px)']).subscribe((state: BreakpointState) => {\n this.isBpLarge = state.matches;\n });\n }\n\n setTab(tab: string): void {\n if (tab !== this.activeTab) {\n const previousTab = this[this.activeTab].nativeElement;\n this.renderer.removeClass(previousTab, CSS_CLASSES.tabActive);\n this.renderer.removeClass(previousTab, CSS_CLASSES.tabGreen);\n\n this.activeTab = tab;\n\n const newTab = this[tab].nativeElement;\n this.renderer.addClass(newTab, CSS_CLASSES.tabActive);\n if (tab !== 'unPaid') {\n this.renderer.addClass(newTab, CSS_CLASSES.tabGreen);\n }\n }\n }\n\n setFilter(filter: string): void {\n if (filter !== this.activeFilter) {\n const previousFilter = this[this.activeFilter]?.nativeElement;\n const newFilter = this[filter]?.nativeElement;\n \n if (previousFilter) {\n this.renderer.removeClass(previousFilter, CSS_CLASSES.filterActive);\n this.renderer.addClass(previousFilter, CSS_CLASSES.filterNotActive);\n }\n \n this.activeFilter = filter;\n \n if (newFilter) {\n this.renderer.addClass(newFilter, CSS_CLASSES.filterActive);\n this.renderer.removeClass(newFilter, CSS_CLASSES.filterNotActive);\n }\n }\n }\n\n print(): void {\n const css = '@page { size: landscape; }';\n const head = document.head || document.getElementsByTagName('head')[0];\n const style = document.createElement('style');\n\n style.type = 'text/css';\n style.media = 'print';\n style.appendChild(document.createTextNode(css));\n head.appendChild(style);\n\n this.setTab('comission');\n setTimeout(() => {\n const email = (document.querySelector('.btn-connected') as HTMLElement)?.textContent || '';\n const titleDiv = document.getElementById('commisionTitle');\n if (titleDiv) {\n titleDiv.textContent = `${titleDiv.textContent} (${email})`;\n }\n window.print();\n }, 2000);\n }\n}\n","
    \n \n \n \n
    \n","import { Component, ViewChild, ElementRef, OnInit } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { DataService } from '../../../core/services/data.service';\n\n@Component({\n selector: 'app-profile-comissions',\n templateUrl: './profile-comissions.component.html',\n styleUrls: ['./profile-comissions.component.scss']\n})\nexport class ProfileComissionsComponent implements OnInit {\n @ViewChild('alert', { static: true }) alert: ElementRef;\n comissions$: BehaviorSubject;\n constructor(private dataService: DataService) {}\n\n ngOnInit(): void {\n this.dataService.getComissions();\n this.comissions$ = this.dataService.comissions$;\n }\n closeAlert() {\n this.alert.nativeElement.classList.remove('show');\n }\n}\n","
    \n
    \n
    \n

    {{stats.ConsumerName}}

    \n
    \n \n \n \n \n \n \n \n \n \n {{ 'stats.actif' | translate }}
    {{stats.last12Year}} {{ 'stats.actif2' | translate }}
    \n {{stats.last12Year}} {{ 'stats.actif2' | translate }} \n
    \n
    \n
    \n {{stats.OrderAmount}} \n {{ 'stats.orderNumber' | translate }}
    {{'stats.orderNumber2'| translate }}
    \n
    \n
    \n
    \n","import { Component, OnInit, Input } from '@angular/core';\n\n@Component({\n selector: 'app-stats-main',\n templateUrl: './stats-main.component.html',\n styleUrls: ['./stats-main.component.scss']\n})\nexport class StatsMainComponent implements OnInit {\n @Input() stats;\n isActive = false;\n constructor() {}\n\n ngOnInit(): void {\n let date = new Date();\n let year = date.getFullYear();\n let month = date.getMonth() + 1;\n let array = [];\n let first = this.stats.MonthlyStatistics[0];\n let loop = first.Month;\n for (let index = first.Year; index <= year; index++) {\n for (let j = loop; j <= 12; j++) {\n let found = this.stats.MonthlyStatistics.find(element => element.Month == j && element.Year == index);\n if (found) {\n array.push({\n name: found.Month + '/' + index,\n value: found.OrderAmount\n });\n } else {\n array.push({\n name: j + '/' + index,\n value: 0\n });\n }\n }\n loop = 1;\n }\n\n array = array.slice(0, month + -12);\n let total = 0;\n if (array.length >= 12) {\n array.slice(Math.max(array.length - 12, 0)).forEach(element => {\n total += element.value;\n });\n if (total / 12 > 1) {\n this.isActive = true;\n this.stats.last12Year = total;\n } else {\n this.stats.last12Year = total;\n this.isActive = false;\n }\n } else {\n array.forEach(element => {\n total += element.value;\n });\n if (total / array.length > 1) {\n this.stats.last12Year = total;\n this.isActive = true;\n } else {\n this.stats.last12Year = total;\n this.isActive = false;\n }\n }\n }\n}\n","
    \n
    \n \n
    \n\n 540 ? containerRef.offsetWidth -40 : containerRef.offsetWidth-25,450]\"\n [results]=\"data\"\n [xAxis]=\"xAxis\"\n [yAxis]=\"true\"\n [scheme]=\"colorScheme\"\n >\n \n
    \n
    \n
    \n\n
    \n
    \n \n
    \n 540 ? true : false\"\n [doughnut]=\"false\"\n [explodeSlices]=\"false\"\n class=\"col-12 speCol\"\n [trimLabels]=\"containerRef.offsetWidth > 656 ? false : true\">\n \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n \n
    \n\n \n {{\" \"+product.value+\" \" + product.name}}\n \n \n {{this.getPourcentage(product.value) |number : '1.0-1'}}%\n \n
    \n
    \n
    \n
    \n
    \n
    \n","import { Component, ViewChild, ElementRef, OnInit, Input } from '@angular/core';\n@Component({\n selector: 'app-stats-graph',\n templateUrl: './stats-graph.component.html',\n styleUrls: ['./stats-graph.component.scss']\n})\nexport class StatsGraphComponent implements OnInit {\n @Input() stats;\n @Input() language;\n @ViewChild('sixMonth', { static: true }) sixMonth: ElementRef;\n @ViewChild('year', { static: true }) year: ElementRef;\n @ViewChild('all', { static: true }) all: ElementRef;\n @ViewChild('monthType', { static: false }) monthType: ElementRef;\n @ViewChild('sixMonthType', { static: false }) sixMonthType: ElementRef;\n @ViewChild('yearType', { static: true }) yearType: ElementRef;\n @ViewChild('allType', { static: true }) allType: ElementRef;\n @ViewChild('containerRef', { static: true }) containerRef: ElementRef;\n view: any[] = [1100, 300];\n view2: any[] = [400, 300];\n activeTab = 'sixMonth';\n activeTabType = 'monthType';\n xAxis: boolean = true;\n colorScheme = {\n domain: ['#5AA454']\n };\n typeOrdersData = [];\n typeOrderColor = {\n domain: [\n '#9AC356',\n '#E96136',\n '#FFB946',\n '#AAAAAA',\n '#537D8D',\n '#372248',\n '#30BCED',\n '#C2E812',\n '#01172F',\n '#4C212A'\n ]\n };\n monthTypeData = [];\n sixMonthTypeData = [];\n yearTypeData = [];\n allTypeData = [];\n totalMonth = 0;\n totalSixMonth = 0;\n totalYear = 0;\n totalAll = 0;\n sixMonthData = [\n {\n name: 'commandes éffectuées',\n series: []\n }\n ];\n yearData = [\n {\n name: 'Commandes éffectuées',\n series: []\n }\n ];\n allData = [\n {\n name: 'Commandes éffectuées',\n series: []\n }\n ];\n\n data;\n\n ngOnInit(): void {\n this.getStats();\n }\n getStats() {\n const date = new Date();\n let month = date.getMonth() + 1;\n const year = date.getFullYear();\n let array = [];\n this.stats.MonthlyStatistics.forEach(element => {\n if (month < 6) {\n if (element.Year === year && element.Month <= month) {\n array.push(element);\n }\n if (element.Year === year - 1 && element.Month > 6 + month) {\n array.push(element);\n }\n } else if (element.Year === year && element.Month > month - 6 && element.Month <= month) {\n array.push(element);\n }\n });\n if (month < 6) {\n for (let index = 6 + month + 1; index <= 12; index++) {\n const found = array.find(element => element.Month === index);\n if (found) {\n this.sixMonthData[0].series.push({\n name: this.getMonthName(found.Month),\n value: found.OrderAmount,\n products: found.Products\n });\n } else {\n this.sixMonthData[0].series.push({\n name: this.getMonthName(index),\n value: 0,\n products: []\n });\n }\n }\n for (let index = 1; index <= month; index++) {\n const found = array.find(element => element.Month == index);\n if (found) {\n this.sixMonthData[0].series.push({\n name: this.getMonthName(found.Month),\n value: found.OrderAmount,\n products: found.Products\n });\n } else {\n this.sixMonthData[0].series.push({\n name: this.getMonthName(index),\n value: 0,\n products: []\n });\n }\n }\n } else {\n for (let index = month - 6 + 1; index <= month; index++) {\n const found = array.find(element => element.Month == index);\n if (found) {\n this.sixMonthData[0].series.push({\n name: this.getMonthName(found.Month),\n value: found.OrderAmount,\n products: found.Products\n });\n } else {\n this.sixMonthData[0].series.push({\n name: this.getMonthName(index),\n value: 0,\n products: []\n });\n }\n }\n }\n\n this.data = this.sixMonthData;\n //this year\n array = [];\n this.stats.MonthlyStatistics.forEach(element => {\n if (element.Year === year && element.Month <= month) {\n array.push(element);\n } else if (element.Year === year - 1 && element.Month > month) {\n array.push(element);\n }\n });\n for (let index = month + 1; index <= 12; index++) {\n const found = array.find(element => element.Month == index && element.Year === year - 1);\n if (found) {\n this.yearData[0].series.push({\n name: this.getMonthName(found.Month),\n value: found.OrderAmount,\n products: found.Products\n });\n } else {\n this.yearData[0].series.push({\n name: this.getMonthName(index),\n value: 0,\n products: []\n });\n }\n }\n for (let index = 1; index <= month; index++) {\n const found = array.find(element => element.Month == index && element.Year == year);\n if (found) {\n this.yearData[0].series.push({\n name: this.getMonthName(found.Month),\n value: found.OrderAmount,\n products: found.Products\n });\n } else {\n this.yearData[0].series.push({\n name: this.getMonthName(index),\n value: 0,\n products: []\n });\n }\n }\n // ALL data\n const first = this.stats.MonthlyStatistics[0];\n let loop = first.Month;\n for (let index = first.Year; index <= year; index++) {\n for (let j = loop; j <= 12; j++) {\n const found = this.stats.MonthlyStatistics.find(element => element.Month == j && element.Year == index);\n if (found) {\n this.allData[0].series.push({\n name: this.getMonthName(found.Month) + ' ' + index,\n value: found.OrderAmount\n });\n } else {\n this.allData[0].series.push({\n name: this.getMonthName(j) + ' ' + index,\n value: 0\n });\n }\n }\n loop = 1;\n }\n //this.allData[0].series = this.allData[0].series.slice(0, month + -12);\n\n //typeOrders\n //thisMonth\n let found = this.stats.MonthlyStatistics.find(element => element.Year == year && element.Month == month);\n if (found) {\n found.Products.forEach(element => {\n this.monthTypeData.push({\n name: element.Label,\n value: element.Amount\n });\n this.totalMonth += element.Amount;\n });\n }\n this.monthTypeData.sort((a, b) => (a.value < b.value ? 1 : -1));\n this.typeOrdersData = this.monthTypeData;\n //6months\n this.sixMonthData[0].series.forEach(element => {\n if (element.products) {\n element.products.forEach(element => {\n if (!this.sixMonthTypeData.some(el => el.name === element.Label)) {\n this.sixMonthTypeData.push({\n name: element.Label,\n value: element.Amount\n });\n this.totalSixMonth += element.Amount;\n } else {\n let index = this.sixMonthTypeData.findIndex(x => x.name === element.Label);\n this.sixMonthTypeData[index].value += element.Amount;\n this.totalSixMonth += element.Amount;\n }\n });\n }\n });\n this.sixMonthTypeData.sort((a, b) => (a.value < b.value ? 1 : -1));\n //if thismonthTypeData empty set 6monthTypeData\n if (this.monthTypeData.length == 0) {\n this.typeOrdersData = this.sixMonthTypeData;\n this.activeTabType = 'sixMonthType';\n }\n\n //last year\n this.yearData[0].series.forEach(element => {\n if (element.products) {\n element.products.forEach(element => {\n if (!this.yearTypeData.some(el => el.name === element.Label)) {\n this.yearTypeData.push({\n name: element.Label,\n value: element.Amount\n });\n this.totalYear += element.Amount;\n } else {\n let index = this.yearTypeData.findIndex(x => x.name === element.Label);\n this.yearTypeData[index].value += element.Amount;\n this.totalYear += element.Amount;\n }\n });\n }\n });\n this.yearTypeData.sort((a, b) => (a.value < b.value ? 1 : -1));\n //entire period\n this.stats.MonthlyStatistics.forEach(element => {\n element.Products.forEach(element => {\n if (!this.allTypeData.some(el => el.name === element.Label)) {\n this.allTypeData.push({\n name: element.Label,\n value: element.Amount\n });\n this.totalAll += element.Amount;\n } else {\n let index = this.allTypeData.findIndex(x => x.name === element.Label);\n this.allTypeData[index].value += element.Amount;\n this.totalAll += element.Amount;\n }\n });\n });\n this.allTypeData.sort((a, b) => (a.value < b.value ? 1 : -1));\n }\n //toRefactor\n getPourcentage(product) {\n if (this.typeOrdersData == this.monthTypeData) {\n return (product / this.totalMonth) * 100;\n }\n if (this.typeOrdersData == this.sixMonthTypeData) {\n return (product / this.totalSixMonth) * 100;\n }\n if (this.typeOrdersData == this.yearTypeData) {\n return (product / this.totalYear) * 100;\n }\n if (this.typeOrdersData == this.allTypeData) {\n return (product / this.totalAll) * 100;\n }\n }\n\n setTab(param, data) {\n if (param !== this.activeTab) {\n if (param == 'all' && data[0].series.length > 20) {\n this.xAxis = true;\n } else {\n this.xAxis = true;\n }\n this[this.activeTab].nativeElement.classList.remove('active');\n this.activeTab = param;\n this[param].nativeElement.classList.add('active');\n this.data = data;\n }\n }\n setTabType(param, data) {\n if (param !== this.activeTabType) {\n this[this.activeTabType].nativeElement.classList.remove('active');\n this.activeTabType = param;\n this[param].nativeElement.classList.add('active');\n this.typeOrdersData = data;\n }\n }\n\n getMonthName(monthId) {\n if (this.language == 'fr') {\n switch (monthId) {\n case 1:\n return 'Janvier';\n break;\n case 2:\n return 'Fevrier';\n case 3:\n return 'Mars';\n case 4:\n return 'Avril';\n case 5:\n return 'Mai';\n case 6:\n return 'Juin';\n case 7:\n return 'Juillet';\n case 8:\n return 'Aout';\n case 9:\n return 'Septembre';\n case 10:\n return 'Octobre';\n case 11:\n return 'Novembre';\n case 12:\n return 'Decembre';\n }\n } else {\n switch (monthId) {\n case 1:\n return 'Januari';\n case 2:\n return 'Februari';\n case 3:\n return 'Maart';\n case 4:\n return 'April';\n case 5:\n return 'Mei';\n case 6:\n return 'Juni';\n case 7:\n return 'Juli';\n case 8:\n return 'Augustus';\n case 9:\n return 'September';\n case 10:\n return 'Oktober';\n case 11:\n return 'November';\n case 12:\n return 'December';\n }\n }\n }\n}\n","
    \n \n \n
    \n","import { Component, OnInit, Input } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { DataService } from '../../../core/services/data.service';\n@Component({\n selector: 'app-stats',\n templateUrl: './stats.component.html',\n styleUrls: ['./stats.component.scss']\n})\nexport class StatsComponent implements OnInit {\n stats$: BehaviorSubject;\n constructor(private dataService: DataService) { }\n language = \"\"\n\n\n ngOnInit(): void {\n this.dataService.getStats();\n this.stats$ = this.dataService.stats$\n this.language = this.dataService.getLangue()\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, Router } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { Store } from '@ngrx/store';\nimport { getIsLoggedIn } from '../../store/order/order.selectors';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthGuard implements CanActivate {\n constructor(private store: Store, private router: Router) {}\n\n canActivate(route: ActivatedRouteSnapshot): Observable | Promise | boolean {\n if (route.queryParams.u) return true; // Bypass auth guard if login via userid\n\n return this.store.select(getIsLoggedIn).pipe(\n map(isLoggedIn => {\n if (!isLoggedIn) {\n this.router.navigateByUrl(\n `/?login=true&login-redirect-url=${encodeURIComponent(location.pathname + location.search)}`\n );\n return false;\n }\n return true;\n })\n );\n }\n}\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { OrderSteppersComponent } from './order-steppers/order-steppers.component';\nimport { Error404Component } from './error404/error404.component';\nimport { OrderResolver } from './order-steppers/order-resolver.service';\nimport { NotaryServicesComponent } from './notary-services/notary-services.component';\nimport { QrCodeComponent } from './qr-code/qr-code.component';\nimport { PublicShareResolver } from './public-share/public-share-resolver.service';\nimport { ProfileComponent } from './client-space/profile/profile/profile.component';\nimport { ListingNotaireComponent } from './client-space/listing-notaire-stats/listing-notaire/listing-notaire.component';\nimport { ProfileComissionsComponent } from './client-space/comissions/profile-comissions/profile-comissions.component';\nimport { StatsComponent } from './client-space/listing-notaire-stats/stats/stats.component';\nimport { AuthGuard } from './core/guards';\n\nconst routes: Routes = [\n { path: '', component: OrderSteppersComponent, resolve: { prices: OrderResolver } },\n { path: 'notary-services', component: NotaryServicesComponent },\n { path: 'profile', component: ProfileComponent, canActivate: [AuthGuard] },\n { path: 'listing', component: ListingNotaireComponent },\n { path: 'stats', component: StatsComponent, canActivate: [AuthGuard] },\n {\n path: 'public/:orderid',\n resolve: { order: PublicShareResolver },\n loadChildren: () => import('./public-share/public-share.module').then(m => m.PublicShareModule)\n },\n {\n path: 'checkout',\n loadChildren: () => import('./checkout/checkout.module').then(m => m.CheckoutModule),\n canActivate: [AuthGuard]\n },\n {\n path: 'customer',\n loadChildren: () => import('./client-space/client-space.module').then(m => m.ClientSpaceModule),\n canActivate: [AuthGuard]\n },\n {\n path: 'site',\n loadChildren: () => import('./website/website.module').then(m => m.WebsiteModule)\n },\n { path: 'qr/:qrid', component: QrCodeComponent },\n { path: 'error', component: Error404Component },\n { path: 'comissions', component: ProfileComissionsComponent, canActivate: [AuthGuard] },\n { path: '**', redirectTo: '/' }\n];\n\n@NgModule({\n declarations: [],\n imports: [\n RouterModule.forRoot(routes, {\n scrollPositionRestoration: 'enabled',\n anchorScrolling: 'enabled',\n relativeLinkResolution: 'legacy'\n })\n ],\n exports: [RouterModule],\n providers: [OrderResolver, PublicShareResolver]\n})\nexport class AppRoutingModule {}\n","import { map, switchMap, mapTo } from 'rxjs/operators';\nimport { Observable, of, merge, fromEvent } from 'rxjs';\nimport { Injectable } from '@angular/core';\nimport { Effect, Actions, ofType } from '@ngrx/effects';\nimport { Action } from '@ngrx/store';\n\nimport { ActionTypes, SetOnline } from './../store/ui/';\n\n@Injectable()\nexport class UIEffects {\n constructor(private actions$: Actions) {}\n\n @Effect()\n startOnlineOfflineCheck$: Observable = this.actions$.pipe(\n ofType(ActionTypes.StartOnlineOfflineCheck),\n switchMap(() => {\n return merge(\n of(navigator.onLine),\n fromEvent(window, 'online').pipe(mapTo(true)),\n fromEvent(window, 'offline').pipe(mapTo(false))\n );\n }),\n map(isOnline => {\n return new SetOnline(isOnline);\n })\n );\n}\n","import { Injectable } from '@angular/core';\nimport { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest, HttpResponse } from '@angular/common/http';\nimport { Observable, throwError, of } from 'rxjs';\nimport { tap, retryWhen, concatMap, delay } from 'rxjs/operators';\nimport { SpinnerOverlayService } from './spinner-overlay.service';\nimport { LoggerService } from '../services/logger.service';\n@Injectable({\n providedIn: 'root'\n})\nexport class LoaderInterceptorService implements HttpInterceptor {\n MIN_LOADING_TIME = 500;\n RETRY = 2;\n\n constructor(private loaderService: SpinnerOverlayService, private logger: LoggerService) {}\n intercept(req: HttpRequest, next: HttpHandler): Observable> {\n const urlPath = req.url.toLowerCase();\n if (urlPath.includes('auth/refreshtoken')) {\n return next.handle(req);\n }\n\n const start = Date.now();\n this.showLoader();\n return next.handle(req).pipe(\n tap((event: HttpEvent) => {\n if (event instanceof HttpResponse) {\n const end = Date.now();\n const diff = end - start;\n this.logger.log('http load time', diff);\n if (diff > this.MIN_LOADING_TIME) {\n this.onEnd();\n } else {\n setTimeout(() => this.onEnd(), this.MIN_LOADING_TIME - diff);\n }\n }\n }),\n retryWhen(errors =>\n errors.pipe(\n concatMap((error, count) => {\n if (\n count < this.RETRY &&\n (error.status === 503 || error.status === 504 || error.status === 400 || error.status === 0)\n ) {\n this.logger.log('🚑🚑🚑 retrying ' + count);\n return of(error.status);\n }\n this.onEnd();\n return throwError(error);\n }),\n delay(3000)\n )\n )\n );\n }\n private onEnd(): void {\n this.hideLoader();\n }\n private showLoader(): void {\n this.loaderService.show();\n }\n private hideLoader(): void {\n this.loaderService.hide();\n }\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { Subject } from '../Subject';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function retryWhen(notifier) {\n return operate((source, subscriber) => {\n let innerSub;\n let syncResub = false;\n let errors$;\n const subscribeForRetryWhen = () => {\n innerSub = source.subscribe(createOperatorSubscriber(subscriber, undefined, undefined, (err) => {\n if (!errors$) {\n errors$ = new Subject();\n innerFrom(notifier(errors$)).subscribe(createOperatorSubscriber(subscriber, () => innerSub ? subscribeForRetryWhen() : (syncResub = true)));\n }\n if (errors$) {\n errors$.next(err);\n }\n }));\n if (syncResub) {\n innerSub.unsubscribe();\n innerSub = null;\n syncResub = false;\n subscribeForRetryWhen();\n }\n };\n subscribeForRetryWhen();\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 CODE IS GENERATED - DO NOT MODIFY.\nconst u = undefined;\nfunction plural(val) {\n const n = val, i = Math.floor(Math.abs(val)), v = val.toString().replace(/^[^.]*\\.?/, '').length, e = parseInt(val.toString().replace(/^[^e]*(e([-+]?\\d+))?/, '$2')) || 0;\n if (i === 0 || i === 1)\n return 1;\n if (e === 0 && (!(i === 0) && (i % 1000000 === 0 && v === 0)) || !(e >= 0 && e <= 5))\n return 4;\n return 5;\n}\nexport default [\"fr\", [[\"AM\", \"PM\"], u, u], u, [[\"D\", \"L\", \"M\", \"M\", \"J\", \"V\", \"S\"], [\"dim.\", \"lun.\", \"mar.\", \"mer.\", \"jeu.\", \"ven.\", \"sam.\"], [\"dimanche\", \"lundi\", \"mardi\", \"mercredi\", \"jeudi\", \"vendredi\", \"samedi\"], [\"di\", \"lu\", \"ma\", \"me\", \"je\", \"ve\", \"sa\"]], u, [[\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"], [\"janv.\", \"févr.\", \"mars\", \"avr.\", \"mai\", \"juin\", \"juil.\", \"août\", \"sept.\", \"oct.\", \"nov.\", \"déc.\"], [\"janvier\", \"février\", \"mars\", \"avril\", \"mai\", \"juin\", \"juillet\", \"août\", \"septembre\", \"octobre\", \"novembre\", \"décembre\"]], u, [[\"av. J.-C.\", \"ap. J.-C.\"], u, [\"avant Jésus-Christ\", \"après Jésus-Christ\"]], 1, [6, 0], [\"dd/MM/y\", \"d MMM y\", \"d MMMM y\", \"EEEE d MMMM y\"], [\"HH:mm\", \"HH:mm:ss\", \"HH:mm:ss z\", \"HH:mm:ss zzzz\"], [\"{1} {0}\", \"{1}, {0}\", \"{1} 'à' {0}\", u], [\",\", \" \", \";\", \"%\", \"+\", \"-\", \"E\", \"×\", \"‰\", \"∞\", \"NaN\", \":\"], [\"#,##0.###\", \"#,##0 %\", \"#,##0.00 ¤\", \"#E0\"], \"EUR\", \"€\", \"euro\", { \"ARS\": [\"$AR\", \"$\"], \"AUD\": [\"$AU\", \"$\"], \"BEF\": [\"FB\"], \"BMD\": [\"$BM\", \"$\"], \"BND\": [\"$BN\", \"$\"], \"BZD\": [\"$BZ\", \"$\"], \"CAD\": [\"$CA\", \"$\"], \"CLP\": [\"$CL\", \"$\"], \"CNY\": [u, \"¥\"], \"COP\": [\"$CO\", \"$\"], \"CYP\": [\"£CY\"], \"EGP\": [u, \"£E\"], \"FJD\": [\"$FJ\", \"$\"], \"FKP\": [\"£FK\", \"£\"], \"FRF\": [\"F\"], \"GBP\": [\"£GB\", \"£\"], \"GIP\": [\"£GI\", \"£\"], \"HKD\": [u, \"$\"], \"IEP\": [\"£IE\"], \"ILP\": [\"£IL\"], \"ITL\": [\"₤IT\"], \"JPY\": [u, \"¥\"], \"KMF\": [u, \"FC\"], \"LBP\": [\"£LB\", \"£L\"], \"MTP\": [\"£MT\"], \"MXN\": [\"$MX\", \"$\"], \"NAD\": [\"$NA\", \"$\"], \"NIO\": [u, \"$C\"], \"NZD\": [\"$NZ\", \"$\"], \"PHP\": [u, \"₱\"], \"RHD\": [\"$RH\"], \"RON\": [u, \"L\"], \"RWF\": [u, \"FR\"], \"SBD\": [\"$SB\", \"$\"], \"SGD\": [\"$SG\", \"$\"], \"SRD\": [\"$SR\", \"$\"], \"TOP\": [u, \"$T\"], \"TTD\": [\"$TT\", \"$\"], \"TWD\": [u, \"NT$\"], \"USD\": [\"$US\", \"$\"], \"UYU\": [\"$UY\", \"$\"], \"WST\": [\"$WS\"], \"XCD\": [u, \"$\"], \"XPF\": [\"FCFP\"], \"ZMW\": [u, \"Kw\"] }, \"ltr\", plural];\n","import { HttpInterceptor, HttpHandler, HttpEvent, HttpRequest } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\n\nimport { Observable } from 'rxjs';\nimport { filter, switchMap } from 'rxjs/operators';\nimport { certiCoreBaseUrl } from 'src/environments/environment';\nimport { AppState } from 'src/app/interfaces';\nimport { Store } from '@ngrx/store';\nimport { getToken } from '../store/order/order.selectors';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthenticationInterceptor implements HttpInterceptor {\n constructor(private store: Store) {}\n\n intercept(req: HttpRequest, next: HttpHandler): Observable> {\n const urlPath = req.url.toLowerCase();\n\n /** Does not require token */\n if (\n !urlPath.startsWith(certiCoreBaseUrl) ||\n (urlPath.startsWith(certiCoreBaseUrl) && urlPath.includes('auth/login')) ||\n (urlPath.startsWith(certiCoreBaseUrl) && urlPath.includes('auth/forgotpassword'))\n ) {\n return next.handle(req);\n }\n\n\n return this.store.select(getToken).pipe(\n filter(token => !!token),\n switchMap(token => {\n const clonedRequest = req.clone({\n setHeaders: {\n Authorization: `Bearer ${token}`,\n 'Content-Type': 'application/json'\n }\n });\n return next.handle(clonedRequest);\n })\n ) ?? next.handle(req);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PrintIconComponent } from './print-icon/print-icon.component';\nimport { FilterIconsComponent } from './filter-icons/filter-icons.component';\nimport { InfoIconComponent } from './info-icon/info-icon-component';\nimport { CloseIconComponent } from './close-icon/close-icon.component';\nimport { NotifOrderIconComponent } from './notif-order-icon/notif-order-icon.component';\nimport { NotifAllIconComponent } from './notif-all-icon/notif-all-icon.component';\nimport { EditIconComponent } from './edit-icon/edit-icon.component';\n\n@NgModule({\n declarations: [PrintIconComponent, FilterIconsComponent,\n InfoIconComponent, CloseIconComponent, NotifOrderIconComponent, \n NotifAllIconComponent, EditIconComponent], // Declare the components\n imports: [CommonModule],\n exports: [PrintIconComponent, FilterIconsComponent,\n InfoIconComponent, CloseIconComponent, NotifOrderIconComponent, \n NotifAllIconComponent, EditIconComponent] // Export for use in other modules\n})\nexport class IconsModule { }","import { BrowserModule } from '@angular/platform-browser';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { NgModule, ErrorHandler, LOCALE_ID } from '@angular/core';\nimport { StoreDevtoolsModule } from '@ngrx/store-devtools';\nimport { NgxMaskModule, IConfig } from 'ngx-mask';\nimport { FormsModule } from '@angular/forms';\nimport { AppComponent } from './app.component';\nimport { EffectsModule } from '@ngrx/effects';\nimport { environment } from '../environments/environment';\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { OrderEffects } from './core/effects/order.effects';\nimport { reducers, metaReducers } from './app.reducers';\nimport { ServiceWorkerModule } from '@angular/service-worker';\nimport { SharedModule } from './shared/shared.module';\nimport { Step1Component } from './step1/step1.component';\nimport { Step2Component } from './step2/step2.component';\nimport { Step3Component } from './step3/step3.component';\nimport { Step4Component } from './step4/step4.component';\nimport { StoreModule } from '@ngrx/store';\nimport { PackSelectedComponent } from './snackbars/pack-selected/pack-selected.component';\nimport { NgxChartsModule } from '@swimlane/ngx-charts';\n\nimport { CongratsDialogComponent } from './dialogs/congrats-dialog/congrats-dialog.component';\nimport { AppRoutingModule } from './app-routing.module';\nimport { OrderSteppersComponent } from './order-steppers/order-steppers.component';\nimport { Error404Component } from './error404/error404.component';\nimport { UIEffects } from './core/effects/ui.effects';\n\nimport { SpecificRequestDialogComponent } from './dialogs/specific-request-dialog/specific-request-dialog.component';\nimport { LoaderInterceptorService } from './core/spinner-overlay/loader-interceptor.service';\n\nimport localeFr from '@angular/common/locales/fr';\nimport { registerLocaleData } from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport { AgencyWelcomeComponent } from './dialogs/agency-welcome/agency-welcome.component';\nimport { SummaryConfirmDialogComponent } from './dialogs/summary-confirm-dialog/summary-confirm-dialog.component';\nimport { DefaultDialogComponent } from './dialogs/default-dialog/default-dialog.component';\nimport { LoginDialogComponent } from './dialogs/login-dialog/login-dialog.component';\nimport { AuditRequestDialogComponent } from './dialogs/audit-request-dialog/audit-request-dialog.component';\nimport { PrintRequestDialogComponent } from './dialogs/print-request-dialog/print-request-dialog.component';\nimport { VisitRequestDialogComponent } from './dialogs/visit-request-dialog/visit-request-dialog.component';\nimport { PosterRequestDialogComponent } from './dialogs/poster-request-dialog/poster-request-dialog.component';\nimport { SignsRequestDialogComponent } from './dialogs/signs-request-dialog/signs-request-dialog.component';\nimport { PaperRequestDialogComponent } from './dialogs/paper-request-dialog/paper-request-dialog.component';\nimport { ServicesChoiceDialogComponent } from './dialogs/services-choice-dialog/services-choice-dialog.component';\nimport { PrintFullpressRequestDialogComponent } from './dialogs/print-fullpress-request-dialog/print-fullpress-request-dialog.component';\nimport { NotaryServicesComponent } from './notary-services/notary-services.component';\nimport { PanelXlRequestDialogComponent } from './dialogs/panel-xl-request-dialog/panel-xl-request-dialog.component';\nimport { SpecificPrintRequestDialogComponent } from './dialogs/specific-print-request-dialog/specific-print-request-dialog.component';\nimport { CustomRequestDialogComponent } from './dialogs/custom-request-dialog/custom-request-dialog.component';\nimport { VenteTypeInfoComponent } from './components/vente-type-info/vente-type-info.component';\nimport { ServicesDetailsDialogComponent } from './dialogs/services-details-dialog/services-details-dialog.component';\nimport { SplitInvoiceComponent } from './components/split-invoice/split-invoice.component';\nimport { StepMoneyResultComponent } from './components/step-money-result/step-money-result.component';\nimport { UrgenceProComponent } from './components/urgence-pro/urgence-pro.component';\nimport { DescUrbaCheckboxComponent } from './components/desc-urba-checkbox/desc-urba-checkbox.component';\nimport { BannerComponent } from './components/banner/banner.component';\nimport { GlobalMessageComponent } from './dialogs/global-message/global-message.component';\nimport { PreparePebComponent } from './dialogs/prepare-peb/prepare-peb.component';\nimport { PrepareElecComponent } from './dialogs/prepare-elec/prepare-elec.component';\nimport { PrepareCiterneComponent } from './dialogs/prepare-citerne/prepare-citerne.component';\nimport { PrepareGazComponent } from './dialogs/prepare-gaz/prepare-gaz.component';\nimport { PrepareImmoComponent } from './dialogs/prepare-immo/prepare-immo.component';\nimport { DraftDialogComponent } from './dialogs/draft-dialog/draft-dialog.component';\nimport { QrCodeComponent } from './qr-code/qr-code.component';\nimport { FeedbackDialogComponent } from './dialogs/feedback-dialog/feedback-dialog.component';\nimport { AngularFireModule } from '@angular/fire/compat';\nimport { AngularFirestoreModule } from '@angular/fire/compat/firestore';\nimport { AngularFireAuthModule } from '@angular/fire/compat/auth';\nimport { AuthenticationInterceptor } from './core/interceptors/authentication.interceptor';\nimport { ActPaymentConfirmDialogComponent } from './dialogs/act-payment-confirm-dialog/act-payment-confirm-dialog.component';\nimport { CommitmentConfirmDialogComponent } from './dialogs/commitment-confirm-dialog/commitment-confirm-dialog.component';\nimport { InvitePaymentDialogComponent } from './dialogs/invite-payment-dialog/invite-payment-dialog.component';\nimport { PanelRequestDialogComponent } from './dialogs/panel-request-dialog/panel-request-dialog.component';\nimport { ProfileComponent } from './client-space/profile/profile/profile.component';\nimport { ProfileProComponent } from './client-space/profile/profile-pro/profile-pro.component';\nimport { AddAdressesComponent } from './client-space/profile/add-adresses/add-adresses.component';\nimport { AddContactComponent } from './client-space/profile/add-contact/add-contact.component';\nimport { ProfileProMainComponent } from './client-space/profile/profile-pro-main/profile-pro-main.component';\nimport { ProfileProContactsComponent } from './client-space/profile/profile-pro-contacts/profile-pro-contacts.component';\nimport { AddContactDialogComponent } from './client-space/profile/add-contact-dialog/add-contact-dialog.component';\nimport { AddAdressDialogComponent } from './client-space/profile/add-adress-dialog/add-adress-dialog.component';\nimport { ProfileEditComponent } from './client-space/profile/profile-edit/profile-edit.component';\nimport { ProfileStatusComponent } from './client-space/profile/profile-status/profile-status.component';\nimport { ProfileUpgradeStatusComponent } from './client-space/profile/profile-upgrade-status/profile-upgrade-status.component';\nimport { DeleteContactComponent } from './client-space/profile/delete-contact/delete-contact.component';\nimport { DeleteAdressComponent } from './client-space/profile/delete-adress/delete-adress.component';\nimport { ProfileOthersComponent } from './client-space/profile/profile-others/profile-others.component';\nimport { ProfilePasswordComponent } from './client-space/profile/profile-password/profile-password.component';\nimport { ProfileComissionsComponent } from './client-space/comissions/profile-comissions/profile-comissions.component';\nimport { ComissionsInfoComponent } from './client-space/comissions/comissions-info/comissions-info.component';\nimport { ComissionsDashboardComponent } from './client-space/comissions/comissions-dashboard/comissions-dashboard.component';\nimport { ComissionsUnpaidComponent } from './client-space/comissions/comissions-unpaid/comissions-unpaid.component';\nimport { ComissionsCurrentComponent } from './client-space/comissions/comissions-current/comissions-current.component';\nimport { ListingNotaireComponent } from './client-space/listing-notaire-stats/listing-notaire/listing-notaire.component';\nimport { AllNotairesComponent } from './client-space/listing-notaire-stats/all-notaires/all-notaires.component';\nimport { ActifsNotairesComponent } from './client-space/listing-notaire-stats/actifs-notaires/actifs-notaires.component';\nimport { InactifsNotairesComponent } from './client-space/listing-notaire-stats/inactifs-notaires/inactifs-notaires.component';\nimport { StatsComponent } from './client-space/listing-notaire-stats/stats/stats.component';\nimport { EditAdressDialogComponent } from './client-space/profile/edit-adress-dialog/edit-adress-dialog.component';\nimport { EditContactDialogComponent } from './client-space/profile/edit-contact-dialog/edit-contact-dialog.component';\nimport { Ng2TelInputModule } from 'ng2-tel-input';\nimport { PlainteDialogComponent } from './dialogs/plainte-dialog/plainte-dialog.component';\nimport { MessageDialogComponent } from './dialogs/message-dialog/message-dialog.component';\nimport { StatsGraphComponent } from './client-space/listing-notaire-stats/stats-graph/stats-graph.component';\nimport { StatsMainComponent } from './client-space/listing-notaire-stats/stats-main/stats-main.component';\nimport { VisitZyvaRequestDialogComponent } from './dialogs/visit-zyva-request-dialog/visit-zyva-request-dialog.component';\nimport { BillingInfo } from './step4/billing-info/billing-info.component';\nimport { IconsModule } from './client-space/icons/icons.module';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport {\n faAngleRight,\n faArrowLeft,\n faArrowRight,\n faBriefcase,\n faCalendarAlt,\n faCheck,\n faCheckCircle,\n faCircle,\n faClock,\n faCog,\n faComments,\n faCreditCard,\n faDownload,\n faExclamation,\n faExclamationTriangle,\n faExternalLinkAlt,\n faEye,\n faFileImage,\n faFileInvoice,\n faFileUpload,\n faHourglass,\n faInfoCircle,\n faPen,\n faPlus,\n faPowerOff,\n faQuestionCircle,\n faReceipt,\n faSearch,\n faShareAlt,\n faTags,\n faThumbsDown,\n faThumbsUp,\n faTimes,\n faTrash,\n faUndo,\n faUpload,\n faUser\n} from '@fortawesome/free-solid-svg-icons';\nimport { faClipboardCheck } from '@fortawesome/free-solid-svg-icons';\nimport { faHome, faPhone } from '@fortawesome/free-solid-svg-icons';\nimport { faCalculator } from '@fortawesome/free-solid-svg-icons';\nimport { FaIconLibrary } from '@fortawesome/angular-fontawesome';\nimport { faShippingFast, faAngleDown } from '@fortawesome/free-solid-svg-icons';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { NotaireLandingComponent } from './order-steppers/notaire-landing/notaire-landing-dialog';\n\nregisterLocaleData(localeFr);\n\nif (environment.production) {\n}\n\n@NgModule({\n declarations: [\n AppComponent,\n OrderSteppersComponent,\n Step1Component,\n Step2Component,\n Step3Component,\n Step4Component,\n PackSelectedComponent,\n CongratsDialogComponent,\n LoginDialogComponent,\n Error404Component,\n SpecificRequestDialogComponent,\n AgencyWelcomeComponent,\n SummaryConfirmDialogComponent,\n DefaultDialogComponent,\n AuditRequestDialogComponent,\n PrintRequestDialogComponent,\n VisitRequestDialogComponent,\n PosterRequestDialogComponent,\n PanelRequestDialogComponent,\n SignsRequestDialogComponent,\n PaperRequestDialogComponent,\n ServicesChoiceDialogComponent,\n PrintFullpressRequestDialogComponent,\n NotaryServicesComponent,\n PanelXlRequestDialogComponent,\n SpecificPrintRequestDialogComponent,\n CustomRequestDialogComponent,\n VenteTypeInfoComponent,\n ServicesDetailsDialogComponent,\n SplitInvoiceComponent,\n StepMoneyResultComponent,\n UrgenceProComponent,\n DescUrbaCheckboxComponent,\n GlobalMessageComponent,\n PreparePebComponent,\n PrepareElecComponent,\n PrepareGazComponent,\n PrepareImmoComponent,\n PrepareCiterneComponent,\n DraftDialogComponent,\n QrCodeComponent,\n FeedbackDialogComponent,\n ActPaymentConfirmDialogComponent,\n CommitmentConfirmDialogComponent,\n InvitePaymentDialogComponent,\n ProfileComponent,\n ProfileProComponent,\n AddAdressesComponent,\n AddContactComponent,\n ProfileProMainComponent,\n ProfileProContactsComponent,\n AddContactDialogComponent,\n AddAdressDialogComponent,\n ProfileEditComponent,\n ProfileStatusComponent,\n ProfileUpgradeStatusComponent,\n DeleteContactComponent,\n DeleteAdressComponent,\n ProfileOthersComponent,\n ProfilePasswordComponent,\n ProfileComissionsComponent,\n ComissionsInfoComponent,\n ComissionsDashboardComponent,\n ComissionsUnpaidComponent,\n ComissionsCurrentComponent,\n ListingNotaireComponent,\n AllNotairesComponent,\n ActifsNotairesComponent,\n InactifsNotairesComponent,\n StatsComponent,\n EditAdressDialogComponent,\n EditContactDialogComponent,\n PlainteDialogComponent,\n MessageDialogComponent,\n StatsGraphComponent,\n StatsMainComponent,\n VisitZyvaRequestDialogComponent,\n BannerComponent,\n BillingInfo,\n NotaireLandingComponent\n ],\n imports: [\n MatFormFieldModule,\n MatInputModule,\n MatIconModule,\n IconsModule,\n BrowserAnimationsModule,\n BrowserModule,\n CommonModule,\n EffectsModule.forRoot([OrderEffects, UIEffects]),\n HttpClientModule,\n FormsModule,\n SharedModule,\n NgxChartsModule,\n ServiceWorkerModule.register('ngsw-worker.js', {\n enabled: environment.production,\n registrationStrategy: 'registerImmediately'\n }),\n StoreModule.forRoot(reducers, {\n metaReducers,\n runtimeChecks: {\n strictStateImmutability: true,\n strictActionImmutability: true\n }\n }),\n StoreDevtoolsModule.instrument({}),\n AngularFireModule.initializeApp(environment.firebase),\n AngularFirestoreModule,\n AngularFireAuthModule,\n AppRoutingModule,\n NgxMaskModule.forRoot(),\n Ng2TelInputModule\n ],\n providers: [\n { provide: LOCALE_ID, useValue: 'fr' },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: AuthenticationInterceptor,\n multi: true\n },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: LoaderInterceptorService,\n multi: true\n },\n { provide: ErrorHandler, useClass: ErrorHandler }\n ],\n bootstrap: [AppComponent]\n})\nexport class AppModule {\n constructor(library: FaIconLibrary) {\n // Add only the specific icon to the library\n library.addIcons(\n faQuestionCircle,\n faClipboardCheck,\n faHome,\n faCalculator,\n faShippingFast,\n faPhone,\n faAngleDown,\n faUser,\n faBriefcase,\n faReceipt,\n faCog,\n faTags,\n faPowerOff,\n faCheck,\n faThumbsUp,\n faCheckCircle,\n faInfoCircle,\n faArrowLeft,\n faArrowRight,\n faAngleRight,\n faCalendarAlt,\n faTimes,\n faUpload,\n faExclamation,\n faCircle,\n faSearch,\n faUndo,\n faComments,\n faExclamationTriangle,\n faCreditCard,\n faDownload,\n faThumbsDown,\n faEye,\n faPen,\n faShareAlt,\n faInfoCircle,\n faExternalLinkAlt,\n faHourglass,\n faClock,\n faTrash,\n faFileImage,\n faPlus,\n faFileInvoice,\n faFileUpload,\n faFileInvoice\n );\n }\n}\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .catch(err => console.log(err));\n","import { _getProvider, getApp, _registerComponent, registerVersion } from '@firebase/app';\nimport { Component } from '@firebase/component';\nimport { Deferred, ErrorFactory, isIndexedDBAvailable, uuidv4, getGlobal, base64, issuedAtTime, calculateBackoffMillis, getModularInstance } from '@firebase/util';\nimport { Logger } from '@firebase/logger';\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst APP_CHECK_STATES = new Map();\r\nconst DEFAULT_STATE = {\r\n activated: false,\r\n tokenObservers: []\r\n};\r\nconst DEBUG_STATE = {\r\n initialized: false,\r\n enabled: false\r\n};\r\n/**\r\n * Gets a reference to the state object.\r\n */\r\nfunction getStateReference(app) {\r\n return APP_CHECK_STATES.get(app) || Object.assign({}, DEFAULT_STATE);\r\n}\r\n/**\r\n * Set once on initialization. The map should hold the same reference to the\r\n * same object until this entry is deleted.\r\n */\r\nfunction setInitialState(app, state) {\r\n APP_CHECK_STATES.set(app, state);\r\n return APP_CHECK_STATES.get(app);\r\n}\r\nfunction getDebugState() {\r\n return DEBUG_STATE;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst BASE_ENDPOINT = 'https://content-firebaseappcheck.googleapis.com/v1';\r\nconst EXCHANGE_RECAPTCHA_TOKEN_METHOD = 'exchangeRecaptchaV3Token';\r\nconst EXCHANGE_RECAPTCHA_ENTERPRISE_TOKEN_METHOD = 'exchangeRecaptchaEnterpriseToken';\r\nconst EXCHANGE_DEBUG_TOKEN_METHOD = 'exchangeDebugToken';\r\nconst TOKEN_REFRESH_TIME = {\r\n /**\r\n * The offset time before token natural expiration to run the refresh.\r\n * This is currently 5 minutes.\r\n */\r\n OFFSET_DURATION: 5 * 60 * 1000,\r\n /**\r\n * This is the first retrial wait after an error. This is currently\r\n * 30 seconds.\r\n */\r\n RETRIAL_MIN_WAIT: 30 * 1000,\r\n /**\r\n * This is the maximum retrial wait, currently 16 minutes.\r\n */\r\n RETRIAL_MAX_WAIT: 16 * 60 * 1000\r\n};\r\n/**\r\n * One day in millis, for certain error code backoffs.\r\n */\r\nconst ONE_DAY = 24 * 60 * 60 * 1000;\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Port from auth proactiverefresh.js\r\n *\r\n */\r\n// TODO: move it to @firebase/util?\r\n// TODO: allow to config whether refresh should happen in the background\r\nclass Refresher {\r\n constructor(operation, retryPolicy, getWaitDuration, lowerBound, upperBound) {\r\n this.operation = operation;\r\n this.retryPolicy = retryPolicy;\r\n this.getWaitDuration = getWaitDuration;\r\n this.lowerBound = lowerBound;\r\n this.upperBound = upperBound;\r\n this.pending = null;\r\n this.nextErrorWaitInterval = lowerBound;\r\n if (lowerBound > upperBound) {\r\n throw new Error('Proactive refresh lower bound greater than upper bound!');\r\n }\r\n }\r\n start() {\r\n this.nextErrorWaitInterval = this.lowerBound;\r\n this.process(true).catch(() => {\r\n /* we don't care about the result */\r\n });\r\n }\r\n stop() {\r\n if (this.pending) {\r\n this.pending.reject('cancelled');\r\n this.pending = null;\r\n }\r\n }\r\n isRunning() {\r\n return !!this.pending;\r\n }\r\n async process(hasSucceeded) {\r\n this.stop();\r\n try {\r\n this.pending = new Deferred();\r\n await sleep(this.getNextRun(hasSucceeded));\r\n // Why do we resolve a promise, then immediate wait for it?\r\n // We do it to make the promise chain cancellable.\r\n // We can call stop() which rejects the promise before the following line execute, which makes\r\n // the code jump to the catch block.\r\n // TODO: unit test this\r\n this.pending.resolve();\r\n await this.pending.promise;\r\n this.pending = new Deferred();\r\n await this.operation();\r\n this.pending.resolve();\r\n await this.pending.promise;\r\n this.process(true).catch(() => {\r\n /* we don't care about the result */\r\n });\r\n }\r\n catch (error) {\r\n if (this.retryPolicy(error)) {\r\n this.process(false).catch(() => {\r\n /* we don't care about the result */\r\n });\r\n }\r\n else {\r\n this.stop();\r\n }\r\n }\r\n }\r\n getNextRun(hasSucceeded) {\r\n if (hasSucceeded) {\r\n // If last operation succeeded, reset next error wait interval and return\r\n // the default wait duration.\r\n this.nextErrorWaitInterval = this.lowerBound;\r\n // Return typical wait duration interval after a successful operation.\r\n return this.getWaitDuration();\r\n }\r\n else {\r\n // Get next error wait interval.\r\n const currentErrorWaitInterval = this.nextErrorWaitInterval;\r\n // Double interval for next consecutive error.\r\n this.nextErrorWaitInterval *= 2;\r\n // Make sure next wait interval does not exceed the maximum upper bound.\r\n if (this.nextErrorWaitInterval > this.upperBound) {\r\n this.nextErrorWaitInterval = this.upperBound;\r\n }\r\n return currentErrorWaitInterval;\r\n }\r\n }\r\n}\r\nfunction sleep(ms) {\r\n return new Promise(resolve => {\r\n setTimeout(resolve, ms);\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst ERRORS = {\r\n [\"already-initialized\" /* AppCheckError.ALREADY_INITIALIZED */]: 'You have already called initializeAppCheck() for FirebaseApp {$appName} with ' +\r\n 'different options. To avoid this error, call initializeAppCheck() with the ' +\r\n 'same options as when it was originally called. This will return the ' +\r\n 'already initialized instance.',\r\n [\"use-before-activation\" /* AppCheckError.USE_BEFORE_ACTIVATION */]: 'App Check is being used before initializeAppCheck() is called for FirebaseApp {$appName}. ' +\r\n 'Call initializeAppCheck() before instantiating other Firebase services.',\r\n [\"fetch-network-error\" /* AppCheckError.FETCH_NETWORK_ERROR */]: 'Fetch failed to connect to a network. Check Internet connection. ' +\r\n 'Original error: {$originalErrorMessage}.',\r\n [\"fetch-parse-error\" /* AppCheckError.FETCH_PARSE_ERROR */]: 'Fetch client could not parse response.' +\r\n ' Original error: {$originalErrorMessage}.',\r\n [\"fetch-status-error\" /* AppCheckError.FETCH_STATUS_ERROR */]: 'Fetch server returned an HTTP error status. HTTP status: {$httpStatus}.',\r\n [\"storage-open\" /* AppCheckError.STORAGE_OPEN */]: 'Error thrown when opening storage. Original error: {$originalErrorMessage}.',\r\n [\"storage-get\" /* AppCheckError.STORAGE_GET */]: 'Error thrown when reading from storage. Original error: {$originalErrorMessage}.',\r\n [\"storage-set\" /* AppCheckError.STORAGE_WRITE */]: 'Error thrown when writing to storage. Original error: {$originalErrorMessage}.',\r\n [\"recaptcha-error\" /* AppCheckError.RECAPTCHA_ERROR */]: 'ReCAPTCHA error.',\r\n [\"throttled\" /* AppCheckError.THROTTLED */]: `Requests throttled due to {$httpStatus} error. Attempts allowed again after {$time}`\r\n};\r\nconst ERROR_FACTORY = new ErrorFactory('appCheck', 'AppCheck', ERRORS);\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction getRecaptcha(isEnterprise = false) {\r\n var _a;\r\n if (isEnterprise) {\r\n return (_a = self.grecaptcha) === null || _a === void 0 ? void 0 : _a.enterprise;\r\n }\r\n return self.grecaptcha;\r\n}\r\nfunction ensureActivated(app) {\r\n if (!getStateReference(app).activated) {\r\n throw ERROR_FACTORY.create(\"use-before-activation\" /* AppCheckError.USE_BEFORE_ACTIVATION */, {\r\n appName: app.name\r\n });\r\n }\r\n}\r\nfunction getDurationString(durationInMillis) {\r\n const totalSeconds = Math.round(durationInMillis / 1000);\r\n const days = Math.floor(totalSeconds / (3600 * 24));\r\n const hours = Math.floor((totalSeconds - days * 3600 * 24) / 3600);\r\n const minutes = Math.floor((totalSeconds - days * 3600 * 24 - hours * 3600) / 60);\r\n const seconds = totalSeconds - days * 3600 * 24 - hours * 3600 - minutes * 60;\r\n let result = '';\r\n if (days) {\r\n result += pad(days) + 'd:';\r\n }\r\n if (hours) {\r\n result += pad(hours) + 'h:';\r\n }\r\n result += pad(minutes) + 'm:' + pad(seconds) + 's';\r\n return result;\r\n}\r\nfunction pad(value) {\r\n if (value === 0) {\r\n return '00';\r\n }\r\n return value >= 10 ? value.toString() : '0' + value;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function exchangeToken({ url, body }, heartbeatServiceProvider) {\r\n const headers = {\r\n 'Content-Type': 'application/json'\r\n };\r\n // If heartbeat service exists, add heartbeat header string to the header.\r\n const heartbeatService = heartbeatServiceProvider.getImmediate({\r\n optional: true\r\n });\r\n if (heartbeatService) {\r\n const heartbeatsHeader = await heartbeatService.getHeartbeatsHeader();\r\n if (heartbeatsHeader) {\r\n headers['X-Firebase-Client'] = heartbeatsHeader;\r\n }\r\n }\r\n const options = {\r\n method: 'POST',\r\n body: JSON.stringify(body),\r\n headers\r\n };\r\n let response;\r\n try {\r\n response = await fetch(url, options);\r\n }\r\n catch (originalError) {\r\n throw ERROR_FACTORY.create(\"fetch-network-error\" /* AppCheckError.FETCH_NETWORK_ERROR */, {\r\n originalErrorMessage: originalError === null || originalError === void 0 ? void 0 : originalError.message\r\n });\r\n }\r\n if (response.status !== 200) {\r\n throw ERROR_FACTORY.create(\"fetch-status-error\" /* AppCheckError.FETCH_STATUS_ERROR */, {\r\n httpStatus: response.status\r\n });\r\n }\r\n let responseBody;\r\n try {\r\n // JSON parsing throws SyntaxError if the response body isn't a JSON string.\r\n responseBody = await response.json();\r\n }\r\n catch (originalError) {\r\n throw ERROR_FACTORY.create(\"fetch-parse-error\" /* AppCheckError.FETCH_PARSE_ERROR */, {\r\n originalErrorMessage: originalError === null || originalError === void 0 ? void 0 : originalError.message\r\n });\r\n }\r\n // Protobuf duration format.\r\n // https://developers.google.com/protocol-buffers/docs/reference/java/com/google/protobuf/Duration\r\n const match = responseBody.ttl.match(/^([\\d.]+)(s)$/);\r\n if (!match || !match[2] || isNaN(Number(match[1]))) {\r\n throw ERROR_FACTORY.create(\"fetch-parse-error\" /* AppCheckError.FETCH_PARSE_ERROR */, {\r\n originalErrorMessage: `ttl field (timeToLive) is not in standard Protobuf Duration ` +\r\n `format: ${responseBody.ttl}`\r\n });\r\n }\r\n const timeToLiveAsNumber = Number(match[1]) * 1000;\r\n const now = Date.now();\r\n return {\r\n token: responseBody.token,\r\n expireTimeMillis: now + timeToLiveAsNumber,\r\n issuedAtTimeMillis: now\r\n };\r\n}\r\nfunction getExchangeRecaptchaV3TokenRequest(app, reCAPTCHAToken) {\r\n const { projectId, appId, apiKey } = app.options;\r\n return {\r\n url: `${BASE_ENDPOINT}/projects/${projectId}/apps/${appId}:${EXCHANGE_RECAPTCHA_TOKEN_METHOD}?key=${apiKey}`,\r\n body: {\r\n 'recaptcha_v3_token': reCAPTCHAToken\r\n }\r\n };\r\n}\r\nfunction getExchangeRecaptchaEnterpriseTokenRequest(app, reCAPTCHAToken) {\r\n const { projectId, appId, apiKey } = app.options;\r\n return {\r\n url: `${BASE_ENDPOINT}/projects/${projectId}/apps/${appId}:${EXCHANGE_RECAPTCHA_ENTERPRISE_TOKEN_METHOD}?key=${apiKey}`,\r\n body: {\r\n 'recaptcha_enterprise_token': reCAPTCHAToken\r\n }\r\n };\r\n}\r\nfunction getExchangeDebugTokenRequest(app, debugToken) {\r\n const { projectId, appId, apiKey } = app.options;\r\n return {\r\n url: `${BASE_ENDPOINT}/projects/${projectId}/apps/${appId}:${EXCHANGE_DEBUG_TOKEN_METHOD}?key=${apiKey}`,\r\n body: {\r\n // eslint-disable-next-line\r\n debug_token: debugToken\r\n }\r\n };\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst DB_NAME = 'firebase-app-check-database';\r\nconst DB_VERSION = 1;\r\nconst STORE_NAME = 'firebase-app-check-store';\r\nconst DEBUG_TOKEN_KEY = 'debug-token';\r\nlet dbPromise = null;\r\nfunction getDBPromise() {\r\n if (dbPromise) {\r\n return dbPromise;\r\n }\r\n dbPromise = new Promise((resolve, reject) => {\r\n try {\r\n const request = indexedDB.open(DB_NAME, DB_VERSION);\r\n request.onsuccess = event => {\r\n resolve(event.target.result);\r\n };\r\n request.onerror = event => {\r\n var _a;\r\n reject(ERROR_FACTORY.create(\"storage-open\" /* AppCheckError.STORAGE_OPEN */, {\r\n originalErrorMessage: (_a = event.target.error) === null || _a === void 0 ? void 0 : _a.message\r\n }));\r\n };\r\n request.onupgradeneeded = event => {\r\n const db = event.target.result;\r\n // We don't use 'break' in this switch statement, the fall-through\r\n // behavior is what we want, because if there are multiple versions between\r\n // the old version and the current version, we want ALL the migrations\r\n // that correspond to those versions to run, not only the last one.\r\n // eslint-disable-next-line default-case\r\n switch (event.oldVersion) {\r\n case 0:\r\n db.createObjectStore(STORE_NAME, {\r\n keyPath: 'compositeKey'\r\n });\r\n }\r\n };\r\n }\r\n catch (e) {\r\n reject(ERROR_FACTORY.create(\"storage-open\" /* AppCheckError.STORAGE_OPEN */, {\r\n originalErrorMessage: e === null || e === void 0 ? void 0 : e.message\r\n }));\r\n }\r\n });\r\n return dbPromise;\r\n}\r\nfunction readTokenFromIndexedDB(app) {\r\n return read(computeKey(app));\r\n}\r\nfunction writeTokenToIndexedDB(app, token) {\r\n return write(computeKey(app), token);\r\n}\r\nfunction writeDebugTokenToIndexedDB(token) {\r\n return write(DEBUG_TOKEN_KEY, token);\r\n}\r\nfunction readDebugTokenFromIndexedDB() {\r\n return read(DEBUG_TOKEN_KEY);\r\n}\r\nasync function write(key, value) {\r\n const db = await getDBPromise();\r\n const transaction = db.transaction(STORE_NAME, 'readwrite');\r\n const store = transaction.objectStore(STORE_NAME);\r\n const request = store.put({\r\n compositeKey: key,\r\n value\r\n });\r\n return new Promise((resolve, reject) => {\r\n request.onsuccess = _event => {\r\n resolve();\r\n };\r\n transaction.onerror = event => {\r\n var _a;\r\n reject(ERROR_FACTORY.create(\"storage-set\" /* AppCheckError.STORAGE_WRITE */, {\r\n originalErrorMessage: (_a = event.target.error) === null || _a === void 0 ? void 0 : _a.message\r\n }));\r\n };\r\n });\r\n}\r\nasync function read(key) {\r\n const db = await getDBPromise();\r\n const transaction = db.transaction(STORE_NAME, 'readonly');\r\n const store = transaction.objectStore(STORE_NAME);\r\n const request = store.get(key);\r\n return new Promise((resolve, reject) => {\r\n request.onsuccess = event => {\r\n const result = event.target.result;\r\n if (result) {\r\n resolve(result.value);\r\n }\r\n else {\r\n resolve(undefined);\r\n }\r\n };\r\n transaction.onerror = event => {\r\n var _a;\r\n reject(ERROR_FACTORY.create(\"storage-get\" /* AppCheckError.STORAGE_GET */, {\r\n originalErrorMessage: (_a = event.target.error) === null || _a === void 0 ? void 0 : _a.message\r\n }));\r\n };\r\n });\r\n}\r\nfunction computeKey(app) {\r\n return `${app.options.appId}-${app.name}`;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst logger = new Logger('@firebase/app-check');\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Always resolves. In case of an error reading from indexeddb, resolve with undefined\r\n */\r\nasync function readTokenFromStorage(app) {\r\n if (isIndexedDBAvailable()) {\r\n let token = undefined;\r\n try {\r\n token = await readTokenFromIndexedDB(app);\r\n }\r\n catch (e) {\r\n // swallow the error and return undefined\r\n logger.warn(`Failed to read token from IndexedDB. Error: ${e}`);\r\n }\r\n return token;\r\n }\r\n return undefined;\r\n}\r\n/**\r\n * Always resolves. In case of an error writing to indexeddb, print a warning and resolve the promise\r\n */\r\nfunction writeTokenToStorage(app, token) {\r\n if (isIndexedDBAvailable()) {\r\n return writeTokenToIndexedDB(app, token).catch(e => {\r\n // swallow the error and resolve the promise\r\n logger.warn(`Failed to write token to IndexedDB. Error: ${e}`);\r\n });\r\n }\r\n return Promise.resolve();\r\n}\r\nasync function readOrCreateDebugTokenFromStorage() {\r\n /**\r\n * Theoretically race condition can happen if we read, then write in 2 separate transactions.\r\n * But it won't happen here, because this function will be called exactly once.\r\n */\r\n let existingDebugToken = undefined;\r\n try {\r\n existingDebugToken = await readDebugTokenFromIndexedDB();\r\n }\r\n catch (_e) {\r\n // failed to read from indexeddb. We assume there is no existing debug token, and generate a new one.\r\n }\r\n if (!existingDebugToken) {\r\n // create a new debug token\r\n const newToken = uuidv4();\r\n // We don't need to block on writing to indexeddb\r\n // In case persistence failed, a new debug token will be generated everytime the page is refreshed.\r\n // It renders the debug token useless because you have to manually register(whitelist) the new token in the firebase console again and again.\r\n // If you see this error trying to use debug token, it probably means you are using a browser that doesn't support indexeddb.\r\n // You should switch to a different browser that supports indexeddb\r\n writeDebugTokenToIndexedDB(newToken).catch(e => logger.warn(`Failed to persist debug token to IndexedDB. Error: ${e}`));\r\n return newToken;\r\n }\r\n else {\r\n return existingDebugToken;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction isDebugMode() {\r\n const debugState = getDebugState();\r\n return debugState.enabled;\r\n}\r\nasync function getDebugToken() {\r\n const state = getDebugState();\r\n if (state.enabled && state.token) {\r\n return state.token.promise;\r\n }\r\n else {\r\n // should not happen!\r\n throw Error(`\n Can't get debug token in production mode.\n `);\r\n }\r\n}\r\nfunction initializeDebugMode() {\r\n const globals = getGlobal();\r\n const debugState = getDebugState();\r\n // Set to true if this function has been called, whether or not\r\n // it enabled debug mode.\r\n debugState.initialized = true;\r\n if (typeof globals.FIREBASE_APPCHECK_DEBUG_TOKEN !== 'string' &&\r\n globals.FIREBASE_APPCHECK_DEBUG_TOKEN !== true) {\r\n return;\r\n }\r\n debugState.enabled = true;\r\n const deferredToken = new Deferred();\r\n debugState.token = deferredToken;\r\n if (typeof globals.FIREBASE_APPCHECK_DEBUG_TOKEN === 'string') {\r\n deferredToken.resolve(globals.FIREBASE_APPCHECK_DEBUG_TOKEN);\r\n }\r\n else {\r\n deferredToken.resolve(readOrCreateDebugTokenFromStorage());\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// Initial hardcoded value agreed upon across platforms for initial launch.\r\n// Format left open for possible dynamic error values and other fields in the future.\r\nconst defaultTokenErrorData = { error: 'UNKNOWN_ERROR' };\r\n/**\r\n * Stringify and base64 encode token error data.\r\n *\r\n * @param tokenError Error data, currently hardcoded.\r\n */\r\nfunction formatDummyToken(tokenErrorData) {\r\n return base64.encodeString(JSON.stringify(tokenErrorData), \r\n /* webSafe= */ false);\r\n}\r\n/**\r\n * This function always resolves.\r\n * The result will contain an error field if there is any error.\r\n * In case there is an error, the token field in the result will be populated with a dummy value\r\n */\r\nasync function getToken$2(appCheck, forceRefresh = false) {\r\n const app = appCheck.app;\r\n ensureActivated(app);\r\n const state = getStateReference(app);\r\n /**\r\n * First check if there is a token in memory from a previous `getToken()` call.\r\n */\r\n let token = state.token;\r\n let error = undefined;\r\n /**\r\n * If an invalid token was found in memory, clear token from\r\n * memory and unset the local variable `token`.\r\n */\r\n if (token && !isValid(token)) {\r\n state.token = undefined;\r\n token = undefined;\r\n }\r\n /**\r\n * If there is no valid token in memory, try to load token from indexedDB.\r\n */\r\n if (!token) {\r\n // cachedTokenPromise contains the token found in IndexedDB or undefined if not found.\r\n const cachedToken = await state.cachedTokenPromise;\r\n if (cachedToken) {\r\n if (isValid(cachedToken)) {\r\n token = cachedToken;\r\n }\r\n else {\r\n // If there was an invalid token in the indexedDB cache, clear it.\r\n await writeTokenToStorage(app, undefined);\r\n }\r\n }\r\n }\r\n // Return the cached token (from either memory or indexedDB) if it's valid\r\n if (!forceRefresh && token && isValid(token)) {\r\n return {\r\n token: token.token\r\n };\r\n }\r\n // Only set to true if this `getToken()` call is making the actual\r\n // REST call to the exchange endpoint, versus waiting for an already\r\n // in-flight call (see debug and regular exchange endpoint paths below)\r\n let shouldCallListeners = false;\r\n /**\r\n * DEBUG MODE\r\n * If debug mode is set, and there is no cached token, fetch a new App\r\n * Check token using the debug token, and return it directly.\r\n */\r\n if (isDebugMode()) {\r\n // Avoid making another call to the exchange endpoint if one is in flight.\r\n if (!state.exchangeTokenPromise) {\r\n state.exchangeTokenPromise = exchangeToken(getExchangeDebugTokenRequest(app, await getDebugToken()), appCheck.heartbeatServiceProvider).finally(() => {\r\n // Clear promise when settled - either resolved or rejected.\r\n state.exchangeTokenPromise = undefined;\r\n });\r\n shouldCallListeners = true;\r\n }\r\n const tokenFromDebugExchange = await state.exchangeTokenPromise;\r\n // Write debug token to indexedDB.\r\n await writeTokenToStorage(app, tokenFromDebugExchange);\r\n // Write debug token to state.\r\n state.token = tokenFromDebugExchange;\r\n return { token: tokenFromDebugExchange.token };\r\n }\r\n /**\r\n * There are no valid tokens in memory or indexedDB and we are not in\r\n * debug mode.\r\n * Request a new token from the exchange endpoint.\r\n */\r\n try {\r\n // Avoid making another call to the exchange endpoint if one is in flight.\r\n if (!state.exchangeTokenPromise) {\r\n // state.provider is populated in initializeAppCheck()\r\n // ensureActivated() at the top of this function checks that\r\n // initializeAppCheck() has been called.\r\n state.exchangeTokenPromise = state.provider.getToken().finally(() => {\r\n // Clear promise when settled - either resolved or rejected.\r\n state.exchangeTokenPromise = undefined;\r\n });\r\n shouldCallListeners = true;\r\n }\r\n token = await getStateReference(app).exchangeTokenPromise;\r\n }\r\n catch (e) {\r\n if (e.code === `appCheck/${\"throttled\" /* AppCheckError.THROTTLED */}`) {\r\n // Warn if throttled, but do not treat it as an error.\r\n logger.warn(e.message);\r\n }\r\n else {\r\n // `getToken()` should never throw, but logging error text to console will aid debugging.\r\n logger.error(e);\r\n }\r\n // Always save error to be added to dummy token.\r\n error = e;\r\n }\r\n let interopTokenResult;\r\n if (!token) {\r\n // If token is undefined, there must be an error.\r\n // Return a dummy token along with the error.\r\n interopTokenResult = makeDummyTokenResult(error);\r\n }\r\n else if (error) {\r\n if (isValid(token)) {\r\n // It's also possible a valid token exists, but there's also an error.\r\n // (Such as if the token is almost expired, tries to refresh, and\r\n // the exchange request fails.)\r\n // We add a special error property here so that the refresher will\r\n // count this as a failed attempt and use the backoff instead of\r\n // retrying repeatedly with no delay, but any 3P listeners will not\r\n // be hindered in getting the still-valid token.\r\n interopTokenResult = {\r\n token: token.token,\r\n internalError: error\r\n };\r\n }\r\n else {\r\n // No invalid tokens should make it to this step. Memory and cached tokens\r\n // are checked. Other tokens are from fresh exchanges. But just in case.\r\n interopTokenResult = makeDummyTokenResult(error);\r\n }\r\n }\r\n else {\r\n interopTokenResult = {\r\n token: token.token\r\n };\r\n // write the new token to the memory state as well as the persistent storage.\r\n // Only do it if we got a valid new token\r\n state.token = token;\r\n await writeTokenToStorage(app, token);\r\n }\r\n if (shouldCallListeners) {\r\n notifyTokenListeners(app, interopTokenResult);\r\n }\r\n return interopTokenResult;\r\n}\r\n/**\r\n * Internal API for limited use tokens. Skips all FAC state and simply calls\r\n * the underlying provider.\r\n */\r\nasync function getLimitedUseToken$1(appCheck) {\r\n const app = appCheck.app;\r\n ensureActivated(app);\r\n const { provider } = getStateReference(app);\r\n if (isDebugMode()) {\r\n const debugToken = await getDebugToken();\r\n const { token } = await exchangeToken(getExchangeDebugTokenRequest(app, debugToken), appCheck.heartbeatServiceProvider);\r\n return { token };\r\n }\r\n else {\r\n // provider is definitely valid since we ensure AppCheck was activated\r\n const { token } = await provider.getToken();\r\n return { token };\r\n }\r\n}\r\nfunction addTokenListener(appCheck, type, listener, onError) {\r\n const { app } = appCheck;\r\n const state = getStateReference(app);\r\n const tokenObserver = {\r\n next: listener,\r\n error: onError,\r\n type\r\n };\r\n state.tokenObservers = [...state.tokenObservers, tokenObserver];\r\n // Invoke the listener async immediately if there is a valid token\r\n // in memory.\r\n if (state.token && isValid(state.token)) {\r\n const validToken = state.token;\r\n Promise.resolve()\r\n .then(() => {\r\n listener({ token: validToken.token });\r\n initTokenRefresher(appCheck);\r\n })\r\n .catch(() => {\r\n /* we don't care about exceptions thrown in listeners */\r\n });\r\n }\r\n /**\r\n * Wait for any cached token promise to resolve before starting the token\r\n * refresher. The refresher checks to see if there is an existing token\r\n * in state and calls the exchange endpoint if not. We should first let the\r\n * IndexedDB check have a chance to populate state if it can.\r\n *\r\n * Listener call isn't needed here because cachedTokenPromise will call any\r\n * listeners that exist when it resolves.\r\n */\r\n // state.cachedTokenPromise is always populated in `activate()`.\r\n void state.cachedTokenPromise.then(() => initTokenRefresher(appCheck));\r\n}\r\nfunction removeTokenListener(app, listener) {\r\n const state = getStateReference(app);\r\n const newObservers = state.tokenObservers.filter(tokenObserver => tokenObserver.next !== listener);\r\n if (newObservers.length === 0 &&\r\n state.tokenRefresher &&\r\n state.tokenRefresher.isRunning()) {\r\n state.tokenRefresher.stop();\r\n }\r\n state.tokenObservers = newObservers;\r\n}\r\n/**\r\n * Logic to create and start refresher as needed.\r\n */\r\nfunction initTokenRefresher(appCheck) {\r\n const { app } = appCheck;\r\n const state = getStateReference(app);\r\n // Create the refresher but don't start it if `isTokenAutoRefreshEnabled`\r\n // is not true.\r\n let refresher = state.tokenRefresher;\r\n if (!refresher) {\r\n refresher = createTokenRefresher(appCheck);\r\n state.tokenRefresher = refresher;\r\n }\r\n if (!refresher.isRunning() && state.isTokenAutoRefreshEnabled) {\r\n refresher.start();\r\n }\r\n}\r\nfunction createTokenRefresher(appCheck) {\r\n const { app } = appCheck;\r\n return new Refresher(\r\n // Keep in mind when this fails for any reason other than the ones\r\n // for which we should retry, it will effectively stop the proactive refresh.\r\n async () => {\r\n const state = getStateReference(app);\r\n // If there is no token, we will try to load it from storage and use it\r\n // If there is a token, we force refresh it because we know it's going to expire soon\r\n let result;\r\n if (!state.token) {\r\n result = await getToken$2(appCheck);\r\n }\r\n else {\r\n result = await getToken$2(appCheck, true);\r\n }\r\n /**\r\n * getToken() always resolves. In case the result has an error field defined, it means\r\n * the operation failed, and we should retry.\r\n */\r\n if (result.error) {\r\n throw result.error;\r\n }\r\n /**\r\n * A special `internalError` field reflects that there was an error\r\n * getting a new token from the exchange endpoint, but there's still a\r\n * previous token that's valid for now and this should be passed to 2P/3P\r\n * requests for a token. But we want this callback (`this.operation` in\r\n * `Refresher`) to throw in order to kick off the Refresher's retry\r\n * backoff. (Setting `hasSucceeded` to false.)\r\n */\r\n if (result.internalError) {\r\n throw result.internalError;\r\n }\r\n }, () => {\r\n return true;\r\n }, () => {\r\n const state = getStateReference(app);\r\n if (state.token) {\r\n // issuedAtTime + (50% * total TTL) + 5 minutes\r\n let nextRefreshTimeMillis = state.token.issuedAtTimeMillis +\r\n (state.token.expireTimeMillis - state.token.issuedAtTimeMillis) *\r\n 0.5 +\r\n 5 * 60 * 1000;\r\n // Do not allow refresh time to be past (expireTime - 5 minutes)\r\n const latestAllowableRefresh = state.token.expireTimeMillis - 5 * 60 * 1000;\r\n nextRefreshTimeMillis = Math.min(nextRefreshTimeMillis, latestAllowableRefresh);\r\n return Math.max(0, nextRefreshTimeMillis - Date.now());\r\n }\r\n else {\r\n return 0;\r\n }\r\n }, TOKEN_REFRESH_TIME.RETRIAL_MIN_WAIT, TOKEN_REFRESH_TIME.RETRIAL_MAX_WAIT);\r\n}\r\nfunction notifyTokenListeners(app, token) {\r\n const observers = getStateReference(app).tokenObservers;\r\n for (const observer of observers) {\r\n try {\r\n if (observer.type === \"EXTERNAL\" /* ListenerType.EXTERNAL */ && token.error != null) {\r\n // If this listener was added by a 3P call, send any token error to\r\n // the supplied error handler. A 3P observer always has an error\r\n // handler.\r\n observer.error(token.error);\r\n }\r\n else {\r\n // If the token has no error field, always return the token.\r\n // If this is a 2P listener, return the token, whether or not it\r\n // has an error field.\r\n observer.next(token);\r\n }\r\n }\r\n catch (e) {\r\n // Errors in the listener function itself are always ignored.\r\n }\r\n }\r\n}\r\nfunction isValid(token) {\r\n return token.expireTimeMillis - Date.now() > 0;\r\n}\r\nfunction makeDummyTokenResult(error) {\r\n return {\r\n token: formatDummyToken(defaultTokenErrorData),\r\n error\r\n };\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * AppCheck Service class.\r\n */\r\nclass AppCheckService {\r\n constructor(app, heartbeatServiceProvider) {\r\n this.app = app;\r\n this.heartbeatServiceProvider = heartbeatServiceProvider;\r\n }\r\n _delete() {\r\n const { tokenObservers } = getStateReference(this.app);\r\n for (const tokenObserver of tokenObservers) {\r\n removeTokenListener(this.app, tokenObserver.next);\r\n }\r\n return Promise.resolve();\r\n }\r\n}\r\nfunction factory(app, heartbeatServiceProvider) {\r\n return new AppCheckService(app, heartbeatServiceProvider);\r\n}\r\nfunction internalFactory(appCheck) {\r\n return {\r\n getToken: forceRefresh => getToken$2(appCheck, forceRefresh),\r\n getLimitedUseToken: () => getLimitedUseToken$1(appCheck),\r\n addTokenListener: listener => addTokenListener(appCheck, \"INTERNAL\" /* ListenerType.INTERNAL */, listener),\r\n removeTokenListener: listener => removeTokenListener(appCheck.app, listener)\r\n };\r\n}\n\nconst name = \"@firebase/app-check\";\nconst version = \"0.8.0\";\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst RECAPTCHA_URL = 'https://www.google.com/recaptcha/api.js';\r\nconst RECAPTCHA_ENTERPRISE_URL = 'https://www.google.com/recaptcha/enterprise.js';\r\nfunction initializeV3(app, siteKey) {\r\n const initialized = new Deferred();\r\n const state = getStateReference(app);\r\n state.reCAPTCHAState = { initialized };\r\n const divId = makeDiv(app);\r\n const grecaptcha = getRecaptcha(false);\r\n if (!grecaptcha) {\r\n loadReCAPTCHAV3Script(() => {\r\n const grecaptcha = getRecaptcha(false);\r\n if (!grecaptcha) {\r\n // it shouldn't happen.\r\n throw new Error('no recaptcha');\r\n }\r\n queueWidgetRender(app, siteKey, grecaptcha, divId, initialized);\r\n });\r\n }\r\n else {\r\n queueWidgetRender(app, siteKey, grecaptcha, divId, initialized);\r\n }\r\n return initialized.promise;\r\n}\r\nfunction initializeEnterprise(app, siteKey) {\r\n const initialized = new Deferred();\r\n const state = getStateReference(app);\r\n state.reCAPTCHAState = { initialized };\r\n const divId = makeDiv(app);\r\n const grecaptcha = getRecaptcha(true);\r\n if (!grecaptcha) {\r\n loadReCAPTCHAEnterpriseScript(() => {\r\n const grecaptcha = getRecaptcha(true);\r\n if (!grecaptcha) {\r\n // it shouldn't happen.\r\n throw new Error('no recaptcha');\r\n }\r\n queueWidgetRender(app, siteKey, grecaptcha, divId, initialized);\r\n });\r\n }\r\n else {\r\n queueWidgetRender(app, siteKey, grecaptcha, divId, initialized);\r\n }\r\n return initialized.promise;\r\n}\r\n/**\r\n * Add listener to render the widget and resolve the promise when\r\n * the grecaptcha.ready() event fires.\r\n */\r\nfunction queueWidgetRender(app, siteKey, grecaptcha, container, initialized) {\r\n grecaptcha.ready(() => {\r\n // Invisible widgets allow us to set a different siteKey for each widget,\r\n // so we use them to support multiple apps\r\n renderInvisibleWidget(app, siteKey, grecaptcha, container);\r\n initialized.resolve(grecaptcha);\r\n });\r\n}\r\n/**\r\n * Add invisible div to page.\r\n */\r\nfunction makeDiv(app) {\r\n const divId = `fire_app_check_${app.name}`;\r\n const invisibleDiv = document.createElement('div');\r\n invisibleDiv.id = divId;\r\n invisibleDiv.style.display = 'none';\r\n document.body.appendChild(invisibleDiv);\r\n return divId;\r\n}\r\nasync function getToken$1(app) {\r\n ensureActivated(app);\r\n // ensureActivated() guarantees that reCAPTCHAState is set\r\n const reCAPTCHAState = getStateReference(app).reCAPTCHAState;\r\n const recaptcha = await reCAPTCHAState.initialized.promise;\r\n return new Promise((resolve, _reject) => {\r\n // Updated after initialization is complete.\r\n const reCAPTCHAState = getStateReference(app).reCAPTCHAState;\r\n recaptcha.ready(() => {\r\n resolve(\r\n // widgetId is guaranteed to be available if reCAPTCHAState.initialized.promise resolved.\r\n recaptcha.execute(reCAPTCHAState.widgetId, {\r\n action: 'fire_app_check'\r\n }));\r\n });\r\n });\r\n}\r\n/**\r\n *\r\n * @param app\r\n * @param container - Id of a HTML element.\r\n */\r\nfunction renderInvisibleWidget(app, siteKey, grecaptcha, container) {\r\n const widgetId = grecaptcha.render(container, {\r\n sitekey: siteKey,\r\n size: 'invisible',\r\n // Success callback - set state\r\n callback: () => {\r\n getStateReference(app).reCAPTCHAState.succeeded = true;\r\n },\r\n // Failure callback - set state\r\n 'error-callback': () => {\r\n getStateReference(app).reCAPTCHAState.succeeded = false;\r\n }\r\n });\r\n const state = getStateReference(app);\r\n state.reCAPTCHAState = Object.assign(Object.assign({}, state.reCAPTCHAState), { // state.reCAPTCHAState is set in the initialize()\r\n widgetId });\r\n}\r\nfunction loadReCAPTCHAV3Script(onload) {\r\n const script = document.createElement('script');\r\n script.src = RECAPTCHA_URL;\r\n script.onload = onload;\r\n document.head.appendChild(script);\r\n}\r\nfunction loadReCAPTCHAEnterpriseScript(onload) {\r\n const script = document.createElement('script');\r\n script.src = RECAPTCHA_ENTERPRISE_URL;\r\n script.onload = onload;\r\n document.head.appendChild(script);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * App Check provider that can obtain a reCAPTCHA V3 token and exchange it\r\n * for an App Check token.\r\n *\r\n * @public\r\n */\r\nclass ReCaptchaV3Provider {\r\n /**\r\n * Create a ReCaptchaV3Provider instance.\r\n * @param siteKey - ReCAPTCHA V3 siteKey.\r\n */\r\n constructor(_siteKey) {\r\n this._siteKey = _siteKey;\r\n /**\r\n * Throttle requests on certain error codes to prevent too many retries\r\n * in a short time.\r\n */\r\n this._throttleData = null;\r\n }\r\n /**\r\n * Returns an App Check token.\r\n * @internal\r\n */\r\n async getToken() {\r\n var _a, _b, _c;\r\n throwIfThrottled(this._throttleData);\r\n // Top-level `getToken()` has already checked that App Check is initialized\r\n // and therefore this._app and this._heartbeatServiceProvider are available.\r\n const attestedClaimsToken = await getToken$1(this._app).catch(_e => {\r\n // reCaptcha.execute() throws null which is not very descriptive.\r\n throw ERROR_FACTORY.create(\"recaptcha-error\" /* AppCheckError.RECAPTCHA_ERROR */);\r\n });\r\n // Check if a failure state was set by the recaptcha \"error-callback\".\r\n if (!((_a = getStateReference(this._app).reCAPTCHAState) === null || _a === void 0 ? void 0 : _a.succeeded)) {\r\n throw ERROR_FACTORY.create(\"recaptcha-error\" /* AppCheckError.RECAPTCHA_ERROR */);\r\n }\r\n let result;\r\n try {\r\n result = await exchangeToken(getExchangeRecaptchaV3TokenRequest(this._app, attestedClaimsToken), this._heartbeatServiceProvider);\r\n }\r\n catch (e) {\r\n if ((_b = e.code) === null || _b === void 0 ? void 0 : _b.includes(\"fetch-status-error\" /* AppCheckError.FETCH_STATUS_ERROR */)) {\r\n this._throttleData = setBackoff(Number((_c = e.customData) === null || _c === void 0 ? void 0 : _c.httpStatus), this._throttleData);\r\n throw ERROR_FACTORY.create(\"throttled\" /* AppCheckError.THROTTLED */, {\r\n time: getDurationString(this._throttleData.allowRequestsAfter - Date.now()),\r\n httpStatus: this._throttleData.httpStatus\r\n });\r\n }\r\n else {\r\n throw e;\r\n }\r\n }\r\n // If successful, clear throttle data.\r\n this._throttleData = null;\r\n return result;\r\n }\r\n /**\r\n * @internal\r\n */\r\n initialize(app) {\r\n this._app = app;\r\n this._heartbeatServiceProvider = _getProvider(app, 'heartbeat');\r\n initializeV3(app, this._siteKey).catch(() => {\r\n /* we don't care about the initialization result */\r\n });\r\n }\r\n /**\r\n * @internal\r\n */\r\n isEqual(otherProvider) {\r\n if (otherProvider instanceof ReCaptchaV3Provider) {\r\n return this._siteKey === otherProvider._siteKey;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n}\r\n/**\r\n * App Check provider that can obtain a reCAPTCHA Enterprise token and exchange it\r\n * for an App Check token.\r\n *\r\n * @public\r\n */\r\nclass ReCaptchaEnterpriseProvider {\r\n /**\r\n * Create a ReCaptchaEnterpriseProvider instance.\r\n * @param siteKey - reCAPTCHA Enterprise score-based site key.\r\n */\r\n constructor(_siteKey) {\r\n this._siteKey = _siteKey;\r\n /**\r\n * Throttle requests on certain error codes to prevent too many retries\r\n * in a short time.\r\n */\r\n this._throttleData = null;\r\n }\r\n /**\r\n * Returns an App Check token.\r\n * @internal\r\n */\r\n async getToken() {\r\n var _a, _b, _c;\r\n throwIfThrottled(this._throttleData);\r\n // Top-level `getToken()` has already checked that App Check is initialized\r\n // and therefore this._app and this._heartbeatServiceProvider are available.\r\n const attestedClaimsToken = await getToken$1(this._app).catch(_e => {\r\n // reCaptcha.execute() throws null which is not very descriptive.\r\n throw ERROR_FACTORY.create(\"recaptcha-error\" /* AppCheckError.RECAPTCHA_ERROR */);\r\n });\r\n // Check if a failure state was set by the recaptcha \"error-callback\".\r\n if (!((_a = getStateReference(this._app).reCAPTCHAState) === null || _a === void 0 ? void 0 : _a.succeeded)) {\r\n throw ERROR_FACTORY.create(\"recaptcha-error\" /* AppCheckError.RECAPTCHA_ERROR */);\r\n }\r\n let result;\r\n try {\r\n result = await exchangeToken(getExchangeRecaptchaEnterpriseTokenRequest(this._app, attestedClaimsToken), this._heartbeatServiceProvider);\r\n }\r\n catch (e) {\r\n if ((_b = e.code) === null || _b === void 0 ? void 0 : _b.includes(\"fetch-status-error\" /* AppCheckError.FETCH_STATUS_ERROR */)) {\r\n this._throttleData = setBackoff(Number((_c = e.customData) === null || _c === void 0 ? void 0 : _c.httpStatus), this._throttleData);\r\n throw ERROR_FACTORY.create(\"throttled\" /* AppCheckError.THROTTLED */, {\r\n time: getDurationString(this._throttleData.allowRequestsAfter - Date.now()),\r\n httpStatus: this._throttleData.httpStatus\r\n });\r\n }\r\n else {\r\n throw e;\r\n }\r\n }\r\n // If successful, clear throttle data.\r\n this._throttleData = null;\r\n return result;\r\n }\r\n /**\r\n * @internal\r\n */\r\n initialize(app) {\r\n this._app = app;\r\n this._heartbeatServiceProvider = _getProvider(app, 'heartbeat');\r\n initializeEnterprise(app, this._siteKey).catch(() => {\r\n /* we don't care about the initialization result */\r\n });\r\n }\r\n /**\r\n * @internal\r\n */\r\n isEqual(otherProvider) {\r\n if (otherProvider instanceof ReCaptchaEnterpriseProvider) {\r\n return this._siteKey === otherProvider._siteKey;\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n}\r\n/**\r\n * Custom provider class.\r\n * @public\r\n */\r\nclass CustomProvider {\r\n constructor(_customProviderOptions) {\r\n this._customProviderOptions = _customProviderOptions;\r\n }\r\n /**\r\n * @internal\r\n */\r\n async getToken() {\r\n // custom provider\r\n const customToken = await this._customProviderOptions.getToken();\r\n // Try to extract IAT from custom token, in case this token is not\r\n // being newly issued. JWT timestamps are in seconds since epoch.\r\n const issuedAtTimeSeconds = issuedAtTime(customToken.token);\r\n // Very basic validation, use current timestamp as IAT if JWT\r\n // has no `iat` field or value is out of bounds.\r\n const issuedAtTimeMillis = issuedAtTimeSeconds !== null &&\r\n issuedAtTimeSeconds < Date.now() &&\r\n issuedAtTimeSeconds > 0\r\n ? issuedAtTimeSeconds * 1000\r\n : Date.now();\r\n return Object.assign(Object.assign({}, customToken), { issuedAtTimeMillis });\r\n }\r\n /**\r\n * @internal\r\n */\r\n initialize(app) {\r\n this._app = app;\r\n }\r\n /**\r\n * @internal\r\n */\r\n isEqual(otherProvider) {\r\n if (otherProvider instanceof CustomProvider) {\r\n return (this._customProviderOptions.getToken.toString() ===\r\n otherProvider._customProviderOptions.getToken.toString());\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n}\r\n/**\r\n * Set throttle data to block requests until after a certain time\r\n * depending on the failed request's status code.\r\n * @param httpStatus - Status code of failed request.\r\n * @param throttleData - `ThrottleData` object containing previous throttle\r\n * data state.\r\n * @returns Data about current throttle state and expiration time.\r\n */\r\nfunction setBackoff(httpStatus, throttleData) {\r\n /**\r\n * Block retries for 1 day for the following error codes:\r\n *\r\n * 404: Likely malformed URL.\r\n *\r\n * 403:\r\n * - Attestation failed\r\n * - Wrong API key\r\n * - Project deleted\r\n */\r\n if (httpStatus === 404 || httpStatus === 403) {\r\n return {\r\n backoffCount: 1,\r\n allowRequestsAfter: Date.now() + ONE_DAY,\r\n httpStatus\r\n };\r\n }\r\n else {\r\n /**\r\n * For all other error codes, the time when it is ok to retry again\r\n * is based on exponential backoff.\r\n */\r\n const backoffCount = throttleData ? throttleData.backoffCount : 0;\r\n const backoffMillis = calculateBackoffMillis(backoffCount, 1000, 2);\r\n return {\r\n backoffCount: backoffCount + 1,\r\n allowRequestsAfter: Date.now() + backoffMillis,\r\n httpStatus\r\n };\r\n }\r\n}\r\nfunction throwIfThrottled(throttleData) {\r\n if (throttleData) {\r\n if (Date.now() - throttleData.allowRequestsAfter <= 0) {\r\n // If before, throw.\r\n throw ERROR_FACTORY.create(\"throttled\" /* AppCheckError.THROTTLED */, {\r\n time: getDurationString(throttleData.allowRequestsAfter - Date.now()),\r\n httpStatus: throttleData.httpStatus\r\n });\r\n }\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Activate App Check for the given app. Can be called only once per app.\r\n * @param app - the {@link @firebase/app#FirebaseApp} to activate App Check for\r\n * @param options - App Check initialization options\r\n * @public\r\n */\r\nfunction initializeAppCheck(app = getApp(), options) {\r\n app = getModularInstance(app);\r\n const provider = _getProvider(app, 'app-check');\r\n // Ensure initializeDebugMode() is only called once.\r\n if (!getDebugState().initialized) {\r\n initializeDebugMode();\r\n }\r\n // Log a message containing the debug token when `initializeAppCheck()`\r\n // is called in debug mode.\r\n if (isDebugMode()) {\r\n // Do not block initialization to get the token for the message.\r\n void getDebugToken().then(token => \r\n // Not using logger because I don't think we ever want this accidentally hidden.\r\n console.log(`App Check debug token: ${token}. You will need to add it to your app's App Check settings in the Firebase console for it to work.`));\r\n }\r\n if (provider.isInitialized()) {\r\n const existingInstance = provider.getImmediate();\r\n const initialOptions = provider.getOptions();\r\n if (initialOptions.isTokenAutoRefreshEnabled ===\r\n options.isTokenAutoRefreshEnabled &&\r\n initialOptions.provider.isEqual(options.provider)) {\r\n return existingInstance;\r\n }\r\n else {\r\n throw ERROR_FACTORY.create(\"already-initialized\" /* AppCheckError.ALREADY_INITIALIZED */, {\r\n appName: app.name\r\n });\r\n }\r\n }\r\n const appCheck = provider.initialize({ options });\r\n _activate(app, options.provider, options.isTokenAutoRefreshEnabled);\r\n // If isTokenAutoRefreshEnabled is false, do not send any requests to the\r\n // exchange endpoint without an explicit call from the user either directly\r\n // or through another Firebase library (storage, functions, etc.)\r\n if (getStateReference(app).isTokenAutoRefreshEnabled) {\r\n // Adding a listener will start the refresher and fetch a token if needed.\r\n // This gets a token ready and prevents a delay when an internal library\r\n // requests the token.\r\n // Listener function does not need to do anything, its base functionality\r\n // of calling getToken() already fetches token and writes it to memory/storage.\r\n addTokenListener(appCheck, \"INTERNAL\" /* ListenerType.INTERNAL */, () => { });\r\n }\r\n return appCheck;\r\n}\r\n/**\r\n * Activate App Check\r\n * @param app - Firebase app to activate App Check for.\r\n * @param provider - reCAPTCHA v3 provider or\r\n * custom token provider.\r\n * @param isTokenAutoRefreshEnabled - If true, the SDK automatically\r\n * refreshes App Check tokens as needed. If undefined, defaults to the\r\n * value of `app.automaticDataCollectionEnabled`, which defaults to\r\n * false and can be set in the app config.\r\n */\r\nfunction _activate(app, provider, isTokenAutoRefreshEnabled) {\r\n // Create an entry in the APP_CHECK_STATES map. Further changes should\r\n // directly mutate this object.\r\n const state = setInitialState(app, Object.assign({}, DEFAULT_STATE));\r\n state.activated = true;\r\n state.provider = provider; // Read cached token from storage if it exists and store it in memory.\r\n state.cachedTokenPromise = readTokenFromStorage(app).then(cachedToken => {\r\n if (cachedToken && isValid(cachedToken)) {\r\n state.token = cachedToken;\r\n // notify all listeners with the cached token\r\n notifyTokenListeners(app, { token: cachedToken.token });\r\n }\r\n return cachedToken;\r\n });\r\n // Use value of global `automaticDataCollectionEnabled` (which\r\n // itself defaults to false if not specified in config) if\r\n // `isTokenAutoRefreshEnabled` param was not provided by user.\r\n state.isTokenAutoRefreshEnabled =\r\n isTokenAutoRefreshEnabled === undefined\r\n ? app.automaticDataCollectionEnabled\r\n : isTokenAutoRefreshEnabled;\r\n state.provider.initialize(app);\r\n}\r\n/**\r\n * Set whether App Check will automatically refresh tokens as needed.\r\n *\r\n * @param appCheckInstance - The App Check service instance.\r\n * @param isTokenAutoRefreshEnabled - If true, the SDK automatically\r\n * refreshes App Check tokens as needed. This overrides any value set\r\n * during `initializeAppCheck()`.\r\n * @public\r\n */\r\nfunction setTokenAutoRefreshEnabled(appCheckInstance, isTokenAutoRefreshEnabled) {\r\n const app = appCheckInstance.app;\r\n const state = getStateReference(app);\r\n // This will exist if any product libraries have called\r\n // `addTokenListener()`\r\n if (state.tokenRefresher) {\r\n if (isTokenAutoRefreshEnabled === true) {\r\n state.tokenRefresher.start();\r\n }\r\n else {\r\n state.tokenRefresher.stop();\r\n }\r\n }\r\n state.isTokenAutoRefreshEnabled = isTokenAutoRefreshEnabled;\r\n}\r\n/**\r\n * Get the current App Check token. Attaches to the most recent\r\n * in-flight request if one is present. Returns null if no token\r\n * is present and no token requests are in-flight.\r\n *\r\n * @param appCheckInstance - The App Check service instance.\r\n * @param forceRefresh - If true, will always try to fetch a fresh token.\r\n * If false, will use a cached token if found in storage.\r\n * @public\r\n */\r\nasync function getToken(appCheckInstance, forceRefresh) {\r\n const result = await getToken$2(appCheckInstance, forceRefresh);\r\n if (result.error) {\r\n throw result.error;\r\n }\r\n return { token: result.token };\r\n}\r\n/**\r\n * Requests a Firebase App Check token. This method should be used\r\n * only if you need to authorize requests to a non-Firebase backend.\r\n *\r\n * Returns limited-use tokens that are intended for use with your\r\n * non-Firebase backend endpoints that are protected with\r\n * \r\n * Replay Protection. This method\r\n * does not affect the token generation behavior of the\r\n * #getAppCheckToken() method.\r\n *\r\n * @param appCheckInstance - The App Check service instance.\r\n * @returns The limited use token.\r\n * @public\r\n */\r\nfunction getLimitedUseToken(appCheckInstance) {\r\n return getLimitedUseToken$1(appCheckInstance);\r\n}\r\n/**\r\n * Wraps `addTokenListener`/`removeTokenListener` methods in an `Observer`\r\n * pattern for public use.\r\n */\r\nfunction onTokenChanged(appCheckInstance, onNextOrObserver, onError, \r\n/**\r\n * NOTE: Although an `onCompletion` callback can be provided, it will\r\n * never be called because the token stream is never-ending.\r\n * It is added only for API consistency with the observer pattern, which\r\n * we follow in JS APIs.\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\nonCompletion) {\r\n let nextFn = () => { };\r\n let errorFn = () => { };\r\n if (onNextOrObserver.next != null) {\r\n nextFn = onNextOrObserver.next.bind(onNextOrObserver);\r\n }\r\n else {\r\n nextFn = onNextOrObserver;\r\n }\r\n if (onNextOrObserver.error != null) {\r\n errorFn = onNextOrObserver.error.bind(onNextOrObserver);\r\n }\r\n else if (onError) {\r\n errorFn = onError;\r\n }\r\n addTokenListener(appCheckInstance, \"EXTERNAL\" /* ListenerType.EXTERNAL */, nextFn, errorFn);\r\n return () => removeTokenListener(appCheckInstance.app, nextFn);\r\n}\n\n/**\r\n * Firebase App Check\r\n *\r\n * @packageDocumentation\r\n */\r\nconst APP_CHECK_NAME = 'app-check';\r\nconst APP_CHECK_NAME_INTERNAL = 'app-check-internal';\r\nfunction registerAppCheck() {\r\n // The public interface\r\n _registerComponent(new Component(APP_CHECK_NAME, container => {\r\n // getImmediate for FirebaseApp will always succeed\r\n const app = container.getProvider('app').getImmediate();\r\n const heartbeatServiceProvider = container.getProvider('heartbeat');\r\n return factory(app, heartbeatServiceProvider);\r\n }, \"PUBLIC\" /* ComponentType.PUBLIC */)\r\n .setInstantiationMode(\"EXPLICIT\" /* InstantiationMode.EXPLICIT */)\r\n /**\r\n * Initialize app-check-internal after app-check is initialized to make AppCheck available to\r\n * other Firebase SDKs\r\n */\r\n .setInstanceCreatedCallback((container, _identifier, _appcheckService) => {\r\n container.getProvider(APP_CHECK_NAME_INTERNAL).initialize();\r\n }));\r\n // The internal interface used by other Firebase products\r\n _registerComponent(new Component(APP_CHECK_NAME_INTERNAL, container => {\r\n const appCheck = container.getProvider('app-check').getImmediate();\r\n return internalFactory(appCheck);\r\n }, \"PUBLIC\" /* ComponentType.PUBLIC */).setInstantiationMode(\"EXPLICIT\" /* InstantiationMode.EXPLICIT */));\r\n registerVersion(name, version);\r\n}\r\nregisterAppCheck();\n\nexport { CustomProvider, ReCaptchaEnterpriseProvider, ReCaptchaV3Provider, getLimitedUseToken, getToken, initializeAppCheck, onTokenChanged, setTokenAutoRefreshEnabled };\n","import { ɵgetAllInstancesOf, ɵgetDefaultInstanceOf, VERSION, ɵAngularFireSchedulers, ɵzoneWrap } from '@angular/fire';\nimport { timer, from } from 'rxjs';\nimport { concatMap, distinct } from 'rxjs/operators';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, isDevMode, Optional, PLATFORM_ID, NgModule, NgZone, Injector } from '@angular/core';\nimport { FirebaseApp, FirebaseApps } from '@angular/fire/app';\nimport { registerVersion } from 'firebase/app';\nimport { isPlatformServer } from '@angular/common';\nimport { getToken as getToken$1, initializeAppCheck as initializeAppCheck$1, onTokenChanged as onTokenChanged$1, setTokenAutoRefreshEnabled as setTokenAutoRefreshEnabled$1 } from 'firebase/app-check';\nexport * from 'firebase/app-check';\n\nconst APP_CHECK_PROVIDER_NAME = 'app-check';\nclass AppCheck {\n constructor(appCheck) {\n return appCheck;\n }\n}\nclass AppCheckInstances {\n constructor() {\n return ɵgetAllInstancesOf(APP_CHECK_PROVIDER_NAME);\n }\n}\nconst appCheckInstance$ = timer(0, 300).pipe(concatMap(() => from(ɵgetAllInstancesOf(APP_CHECK_PROVIDER_NAME))), distinct());\n\nconst PROVIDED_APP_CHECK_INSTANCES = new InjectionToken('angularfire2.app-check-instances');\nconst APP_CHECK_NAMESPACE_SYMBOL = Symbol('angularfire2.app-check.namespace');\nfunction defaultAppCheckInstanceFactory(provided, defaultApp) {\n const defaultAppCheck = ɵgetDefaultInstanceOf(APP_CHECK_PROVIDER_NAME, provided, defaultApp);\n return defaultAppCheck && new AppCheck(defaultAppCheck);\n}\nconst LOCALHOSTS = ['localhost', '0.0.0.0', '127.0.0.1'];\nconst isLocalhost = typeof window !== 'undefined' && LOCALHOSTS.includes(window.location.hostname);\nfunction appCheckInstanceFactory(fn) {\n // tslint:disable-next-line:ban-types\n return (zone, injector, platformId) => {\n var _a;\n // Node should use admin token provider, browser devmode and localhost should use debug token\n if (!isPlatformServer(platformId) && (isDevMode() || isLocalhost)) {\n (_a = globalThis.FIREBASE_APPCHECK_DEBUG_TOKEN) !== null && _a !== void 0 ? _a : (globalThis.FIREBASE_APPCHECK_DEBUG_TOKEN = true);\n }\n const appCheck = zone.runOutsideAngular(() => fn(injector));\n return new AppCheck(appCheck);\n };\n}\nconst APP_CHECK_INSTANCES_PROVIDER = {\n provide: AppCheckInstances,\n deps: [\n [new Optional(), PROVIDED_APP_CHECK_INSTANCES],\n ]\n};\nconst DEFAULT_APP_CHECK_INSTANCE_PROVIDER = {\n provide: AppCheck,\n useFactory: defaultAppCheckInstanceFactory,\n deps: [\n [new Optional(), PROVIDED_APP_CHECK_INSTANCES],\n FirebaseApp,\n PLATFORM_ID,\n ]\n};\nclass AppCheckModule {\n constructor() {\n registerVersion('angularfire', VERSION.full, 'app-check');\n }\n}\nAppCheckModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.1.3\", ngImport: i0, type: AppCheckModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nAppCheckModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.1.3\", ngImport: i0, type: AppCheckModule });\nAppCheckModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.1.3\", ngImport: i0, type: AppCheckModule, providers: [\n DEFAULT_APP_CHECK_INSTANCE_PROVIDER,\n APP_CHECK_INSTANCES_PROVIDER,\n ] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.1.3\", ngImport: i0, type: AppCheckModule, decorators: [{\n type: NgModule,\n args: [{\n providers: [\n DEFAULT_APP_CHECK_INSTANCE_PROVIDER,\n APP_CHECK_INSTANCES_PROVIDER,\n ]\n }]\n }], ctorParameters: function () { return []; } });\nfunction provideAppCheck(fn, ...deps) {\n return {\n ngModule: AppCheckModule,\n providers: [{\n provide: PROVIDED_APP_CHECK_INSTANCES,\n useFactory: appCheckInstanceFactory(fn),\n multi: true,\n deps: [\n NgZone,\n Injector,\n PLATFORM_ID,\n ɵAngularFireSchedulers,\n FirebaseApps,\n ...deps,\n ]\n }]\n };\n}\n\n// DO NOT MODIFY, this file is autogenerated by tools/build.ts\nconst getToken = ɵzoneWrap(getToken$1, true);\nconst initializeAppCheck = ɵzoneWrap(initializeAppCheck$1, true);\nconst onTokenChanged = ɵzoneWrap(onTokenChanged$1, true);\nconst setTokenAutoRefreshEnabled = ɵzoneWrap(setTokenAutoRefreshEnabled$1, true);\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AppCheck, AppCheckInstances, AppCheckModule, appCheckInstance$, getToken, initializeAppCheck, onTokenChanged, provideAppCheck, setTokenAutoRefreshEnabled };\n","import { switchMap } from './switchMap';\nimport { isFunction } from '../util/isFunction';\nexport function switchMapTo(innerObservable, resultSelector) {\n return isFunction(resultSelector) ? switchMap(() => innerObservable, resultSelector) : switchMap(() => innerObservable);\n}\n","\nimport * as i0 from '@angular/core';\nimport { InjectionToken, PLATFORM_ID, Injectable, Inject, Optional, NgModule } from '@angular/core';\nimport { Subject, of, Observable, from, merge } from 'rxjs';\nimport { observeOn, switchMap, map, shareReplay, first, switchMapTo, subscribeOn, filter } from 'rxjs/operators';\nimport * as i1 from '@angular/fire';\nimport { keepUnstableUntilFirst, VERSION } from '@angular/fire';\nimport { ɵcacheInstance, ɵfirebaseAppFactory, ɵlazySDKProxy, FIREBASE_OPTIONS, FIREBASE_APP_NAME, ɵapplyMixins } from '@angular/fire/compat';\nimport { isPlatformServer } from '@angular/common';\nimport * as i2 from '@angular/fire/app-check';\nimport firebase from 'firebase/compat/app';\n\n// DO NOT MODIFY, this file is autogenerated by tools/build.ts\n// Export a null object with the same keys as firebase/compat/auth, so Proxy can work with proxy-polyfill in Internet Explorer\nconst proxyPolyfillCompat = {\n name: null,\n config: null,\n emulatorConfig: null,\n app: null,\n applyActionCode: null,\n checkActionCode: null,\n confirmPasswordReset: null,\n createUserWithEmailAndPassword: null,\n currentUser: null,\n fetchSignInMethodsForEmail: null,\n isSignInWithEmailLink: null,\n getRedirectResult: null,\n languageCode: null,\n settings: null,\n onAuthStateChanged: null,\n onIdTokenChanged: null,\n sendSignInLinkToEmail: null,\n sendPasswordResetEmail: null,\n setPersistence: null,\n signInAndRetrieveDataWithCredential: null,\n signInAnonymously: null,\n signInWithCredential: null,\n signInWithCustomToken: null,\n signInWithEmailAndPassword: null,\n signInWithPhoneNumber: null,\n signInWithEmailLink: null,\n signInWithPopup: null,\n signInWithRedirect: null,\n signOut: null,\n tenantId: null,\n updateCurrentUser: null,\n useDeviceLanguage: null,\n useEmulator: null,\n verifyPasswordResetCode: null,\n};\n\nconst USE_EMULATOR = new InjectionToken('angularfire2.auth.use-emulator');\nconst SETTINGS = new InjectionToken('angularfire2.auth.settings');\nconst TENANT_ID = new InjectionToken('angularfire2.auth.tenant-id');\nconst LANGUAGE_CODE = new InjectionToken('angularfire2.auth.langugage-code');\nconst USE_DEVICE_LANGUAGE = new InjectionToken('angularfire2.auth.use-device-language');\nconst PERSISTENCE = new InjectionToken('angularfire.auth.persistence');\nconst ɵauthFactory = (app, zone, useEmulator, tenantId, languageCode, useDeviceLanguage, settings, persistence) => ɵcacheInstance(`${app.name}.auth`, 'AngularFireAuth', app.name, () => {\n const auth = zone.runOutsideAngular(() => app.auth());\n if (useEmulator) {\n auth.useEmulator(...useEmulator);\n }\n if (tenantId) {\n auth.tenantId = tenantId;\n }\n auth.languageCode = languageCode;\n if (useDeviceLanguage) {\n auth.useDeviceLanguage();\n }\n if (settings) {\n for (const [k, v] of Object.entries(settings)) {\n auth.settings[k] = v;\n }\n }\n if (persistence) {\n auth.setPersistence(persistence);\n }\n return auth;\n}, [useEmulator, tenantId, languageCode, useDeviceLanguage, settings, persistence]);\nclass AngularFireAuth {\n constructor(options, name, \n // tslint:disable-next-line:ban-types\n platformId, zone, schedulers, useEmulator, // can't use the tuple here\n settings, // can't use firebase.auth.AuthSettings here\n tenantId, languageCode, useDeviceLanguage, persistence, _appCheckInstances) {\n const logins = new Subject();\n const auth = of(undefined).pipe(observeOn(schedulers.outsideAngular), switchMap(() => zone.runOutsideAngular(() => import('firebase/compat/auth'))), map(() => ɵfirebaseAppFactory(options, zone, name)), map(app => ɵauthFactory(app, zone, useEmulator, tenantId, languageCode, useDeviceLanguage, settings, persistence)), shareReplay({ bufferSize: 1, refCount: false }));\n if (isPlatformServer(platformId)) {\n this.authState = this.user = this.idToken = this.idTokenResult = this.credential = of(null);\n }\n else {\n // HACK, as we're exporting auth.Auth, rather than auth, developers importing firebase.auth\n // (e.g, `import { auth } from 'firebase/compat/app'`) are getting an undefined auth object unexpectedly\n // as we're completely lazy. Let's eagerly load the Auth SDK here.\n // There could potentially be race conditions still... but this greatly decreases the odds while\n // we reevaluate the API.\n const _ = auth.pipe(first()).subscribe();\n const redirectResult = auth.pipe(switchMap(auth => auth.getRedirectResult().then(it => it, () => null)), keepUnstableUntilFirst, shareReplay({ bufferSize: 1, refCount: false }));\n const authStateChanged = auth.pipe(switchMap(auth => new Observable(sub => ({ unsubscribe: zone.runOutsideAngular(() => auth.onAuthStateChanged(next => sub.next(next), err => sub.error(err), () => sub.complete())) }))));\n const idTokenChanged = auth.pipe(switchMap(auth => new Observable(sub => ({ unsubscribe: zone.runOutsideAngular(() => auth.onIdTokenChanged(next => sub.next(next), err => sub.error(err), () => sub.complete())) }))));\n this.authState = redirectResult.pipe(switchMapTo(authStateChanged), subscribeOn(schedulers.outsideAngular), observeOn(schedulers.insideAngular));\n this.user = redirectResult.pipe(switchMapTo(idTokenChanged), subscribeOn(schedulers.outsideAngular), observeOn(schedulers.insideAngular));\n this.idToken = this.user.pipe(switchMap(user => user ? from(user.getIdToken()) : of(null)));\n this.idTokenResult = this.user.pipe(switchMap(user => user ? from(user.getIdTokenResult()) : of(null)));\n this.credential = merge(redirectResult, logins, \n // pipe in null authState to make credential zipable, just a weird devexp if\n // authState and user go null to still have a credential\n this.authState.pipe(filter(it => !it))).pipe(\n // handle the { user: { } } when a user is already logged in, rather have null\n // TODO handle the type corcersion better\n map(credential => (credential === null || credential === void 0 ? void 0 : credential.user) ? credential : null), subscribeOn(schedulers.outsideAngular), observeOn(schedulers.insideAngular));\n }\n return ɵlazySDKProxy(this, auth, zone, { spy: {\n apply: (name, _, val) => {\n // If they call a signIn or createUser function listen into the promise\n // this will give us the user credential, push onto the logins Subject\n // to be consumed in .credential\n if (name.startsWith('signIn') || name.startsWith('createUser')) {\n // TODO fix the types, the trouble is UserCredential has everything optional\n val.then((user) => logins.next(user));\n }\n }\n } });\n }\n}\nAngularFireAuth.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.1.3\", ngImport: i0, type: AngularFireAuth, deps: [{ token: FIREBASE_OPTIONS }, { token: FIREBASE_APP_NAME, optional: true }, { token: PLATFORM_ID }, { token: i0.NgZone }, { token: i1.ɵAngularFireSchedulers }, { token: USE_EMULATOR, optional: true }, { token: SETTINGS, optional: true }, { token: TENANT_ID, optional: true }, { token: LANGUAGE_CODE, optional: true }, { token: USE_DEVICE_LANGUAGE, optional: true }, { token: PERSISTENCE, optional: true }, { token: i2.AppCheckInstances, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nAngularFireAuth.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.1.3\", ngImport: i0, type: AngularFireAuth, providedIn: 'any' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.1.3\", ngImport: i0, type: AngularFireAuth, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'any'\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [FIREBASE_OPTIONS]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [FIREBASE_APP_NAME]\n }] }, { type: Object, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: i0.NgZone }, { type: i1.ɵAngularFireSchedulers }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [USE_EMULATOR]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [SETTINGS]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TENANT_ID]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [LANGUAGE_CODE]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [USE_DEVICE_LANGUAGE]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [PERSISTENCE]\n }] }, { type: i2.AppCheckInstances, decorators: [{\n type: Optional\n }] }]; } });\nɵapplyMixins(AngularFireAuth, [proxyPolyfillCompat]);\n\nclass AngularFireAuthModule {\n constructor() {\n firebase.registerVersion('angularfire', VERSION.full, 'auth-compat');\n }\n}\nAngularFireAuthModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.1.3\", ngImport: i0, type: AngularFireAuthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nAngularFireAuthModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.1.3\", ngImport: i0, type: AngularFireAuthModule });\nAngularFireAuthModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.1.3\", ngImport: i0, type: AngularFireAuthModule, providers: [AngularFireAuth] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.1.3\", ngImport: i0, type: AngularFireAuthModule, decorators: [{\n type: NgModule,\n args: [{\n providers: [AngularFireAuth]\n }]\n }], ctorParameters: function () { return []; } });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AngularFireAuth, AngularFireAuthModule, LANGUAGE_CODE, PERSISTENCE, SETTINGS, TENANT_ID, USE_DEVICE_LANGUAGE, USE_EMULATOR, ɵauthFactory };\n","var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nvar esm = {};\n\n/*\n\n Copyright The Closure Library Authors.\n SPDX-License-Identifier: Apache-2.0\n*/\n\nvar k,goog=goog||{},l=commonjsGlobal||self;function aa(a){var b=typeof a;b=\"object\"!=b?b:a?Array.isArray(a)?\"array\":b:\"null\";return \"array\"==b||\"object\"==b&&\"number\"==typeof a.length}function p(a){var b=typeof a;return \"object\"==b&&null!=a||\"function\"==b}function ba(a){return Object.prototype.hasOwnProperty.call(a,ca)&&a[ca]||(a[ca]=++da)}var ca=\"closure_uid_\"+(1E9*Math.random()>>>0),da=0;function ea(a,b,c){return a.call.apply(a.bind,arguments)}\nfunction fa(a,b,c){if(!a)throw Error();if(2{},b),l.removeEventListener(\"test\",()=>{},b);}catch(c){}return a}();function x(a){return /^[\\s\\xa0]*$/.test(a)}function pa(){var a=l.navigator;return a&&(a=a.userAgent)?a:\"\"}function y(a){return -1!=pa().indexOf(a)}function qa(a){qa[\" \"](a);return a}qa[\" \"]=function(){};function ra(a,b){var c=sa;return Object.prototype.hasOwnProperty.call(c,a)?c[a]:c[a]=b(a)}var ta=y(\"Opera\"),z=y(\"Trident\")||y(\"MSIE\"),ua=y(\"Edge\"),va=ua||z,wa=y(\"Gecko\")&&!(-1!=pa().toLowerCase().indexOf(\"webkit\")&&!y(\"Edge\"))&&!(y(\"Trident\")||y(\"MSIE\"))&&!y(\"Edge\"),xa=-1!=pa().toLowerCase().indexOf(\"webkit\")&&!y(\"Edge\");function ya(){var a=l.document;return a?a.documentMode:void 0}var za;\na:{var Aa=\"\",Ba=function(){var a=pa();if(wa)return /rv:([^\\);]+)(\\)|;)/.exec(a);if(ua)return /Edge\\/([\\d\\.]+)/.exec(a);if(z)return /\\b(?:MSIE|rv)[: ]([^\\);]+)(\\)|;)/.exec(a);if(xa)return /WebKit\\/(\\S+)/.exec(a);if(ta)return /(?:Version)[ \\/]?(\\S+)/.exec(a)}();Ba&&(Aa=Ba?Ba[1]:\"\");if(z){var Ca=ya();if(null!=Ca&&Ca>parseFloat(Aa)){za=String(Ca);break a}}za=Aa;}var Da;if(l.document&&z){var Ea=ya();Da=Ea?Ea:parseInt(za,10)||void 0;}else Da=void 0;var Fa=Da;function A(a,b){w.call(this,a?a.type:\"\");this.relatedTarget=this.g=this.target=null;this.button=this.screenY=this.screenX=this.clientY=this.clientX=0;this.key=\"\";this.metaKey=this.shiftKey=this.altKey=this.ctrlKey=!1;this.state=null;this.pointerId=0;this.pointerType=\"\";this.i=null;if(a){var c=this.type=a.type,d=a.changedTouches&&a.changedTouches.length?a.changedTouches[0]:null;this.target=a.target||a.srcElement;this.g=b;if(b=a.relatedTarget){if(wa){a:{try{qa(b.nodeName);var e=!0;break a}catch(f){}e=\n!1;}e||(b=null);}}else \"mouseover\"==c?b=a.fromElement:\"mouseout\"==c&&(b=a.toElement);this.relatedTarget=b;d?(this.clientX=void 0!==d.clientX?d.clientX:d.pageX,this.clientY=void 0!==d.clientY?d.clientY:d.pageY,this.screenX=d.screenX||0,this.screenY=d.screenY||0):(this.clientX=void 0!==a.clientX?a.clientX:a.pageX,this.clientY=void 0!==a.clientY?a.clientY:a.pageY,this.screenX=a.screenX||0,this.screenY=a.screenY||0);this.button=a.button;this.key=a.key||\"\";this.ctrlKey=a.ctrlKey;this.altKey=a.altKey;this.shiftKey=\na.shiftKey;this.metaKey=a.metaKey;this.pointerId=a.pointerId||0;this.pointerType=\"string\"===typeof a.pointerType?a.pointerType:Ga[a.pointerType]||\"\";this.state=a.state;this.i=a;a.defaultPrevented&&A.$.h.call(this);}}r(A,w);var Ga={2:\"touch\",3:\"pen\",4:\"mouse\"};A.prototype.h=function(){A.$.h.call(this);var a=this.i;a.preventDefault?a.preventDefault():a.returnValue=!1;};var Ha=\"closure_listenable_\"+(1E6*Math.random()|0);var Ia=0;function Ja(a,b,c,d,e){this.listener=a;this.proxy=null;this.src=b;this.type=c;this.capture=!!d;this.la=e;this.key=++Ia;this.fa=this.ia=!1;}function Ka(a){a.fa=!0;a.listener=null;a.proxy=null;a.src=null;a.la=null;}function Na(a,b,c){for(const d in a)b.call(c,a[d],d,a);}function Oa(a,b){for(const c in a)b.call(void 0,a[c],c,a);}function Pa(a){const b={};for(const c in a)b[c]=a[c];return b}const Qa=\"constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf\".split(\" \");function Ra(a,b){let c,d;for(let e=1;e>>0);function $a(a){if(\"function\"===typeof a)return a;a[hb]||(a[hb]=function(b){return a.handleEvent(b)});return a[hb]}function B(){v.call(this);this.i=new Sa(this);this.S=this;this.J=null;}r(B,v);B.prototype[Ha]=!0;B.prototype.removeEventListener=function(a,b,c,d){fb(this,a,b,c,d);};\nfunction C(a,b){var c,d=a.J;if(d)for(c=[];d;d=d.J)c.push(d);a=a.S;d=b.type||b;if(\"string\"===typeof b)b=new w(b,a);else if(b instanceof w)b.target=b.target||a;else {var e=b;b=new w(d,a);Ra(b,e);}e=!0;if(c)for(var f=c.length-1;0<=f;f--){var h=b.g=c[f];e=ib(h,d,!0,b)&&e;}h=b.g=a;e=ib(h,d,!0,b)&&e;e=ib(h,d,!1,b)&&e;if(c)for(f=0;fnew pb,a=>a.reset());class pb{constructor(){this.next=this.g=this.h=null;}set(a,b){this.h=a;this.g=b;this.next=null;}reset(){this.next=this.g=this.h=null;}}function qb(a){var b=1;a=a.split(\":\");const c=[];for(;0{throw a;},0);}let sb,tb=!1,mb=new nb,vb=()=>{const a=l.Promise.resolve(void 0);sb=()=>{a.then(ub);};};var ub=()=>{for(var a;a=lb();){try{a.h.call(a.g);}catch(c){rb(c);}var b=ob;b.j(a);100>b.h&&(b.h++,a.next=b.g,b.g=a);}tb=!1;};function wb(a,b){B.call(this);this.h=a||1;this.g=b||l;this.j=q(this.qb,this);this.l=Date.now();}r(wb,B);k=wb.prototype;k.ga=!1;k.T=null;k.qb=function(){if(this.ga){var a=Date.now()-this.l;0{a.g=null;a.i&&(a.i=!1,zb(a));},a.j);const b=a.h;a.h=null;a.m.apply(null,b);}class Ab extends v{constructor(a,b){super();this.m=a;this.j=b;this.h=null;this.i=!1;this.g=null;}l(a){this.h=arguments;this.g?this.i=!0:zb(this);}N(){super.N();this.g&&(l.clearTimeout(this.g),this.g=null,this.i=!1,this.h=null);}}function Bb(a){v.call(this);this.h=a;this.g={};}r(Bb,v);var Cb=[];function Db(a,b,c,d){Array.isArray(c)||(c&&(Cb[0]=c.toString()),c=Cb);for(var e=0;ed.length)){var e=d[1];if(Array.isArray(e)&&!(1>e.length)){var f=e[0];if(\"noop\"!=f&&\"stop\"!=f&&\"close\"!=f)for(var h=1;hu)&&(3!=u||va||this.g&&(this.h.h||this.g.ja()||mc(this.g)))){this.J||4!=u||7==b||(8==b||0>=L?Ob(3):Ob(2));nc(this);var c=this.g.da();this.ca=c;b:if(oc(this)){var d=mc(this.g);a=\"\";var e=d.length,f=4==H(this.g);if(!this.h.i){if(\"undefined\"===typeof TextDecoder){I(this);pc(this);var h=\"\";break b}this.h.i=new l.TextDecoder;}for(b=0;bb.length)return fc;b=b.slice(d,d+c);a.C=d+c;return b}k.cancel=function(){this.J=!0;I(this);};function jc(a){a.Y=Date.now()+a.P;wc(a,a.P);}\nfunction wc(a,b){if(null!=a.B)throw Error(\"WatchDog timer not null\");a.B=Rb(q(a.lb,a),b);}function nc(a){a.B&&(l.clearTimeout(a.B),a.B=null);}k.lb=function(){this.B=null;const a=Date.now();0<=a-this.Y?(Kb(this.j,this.A),2!=this.L&&(Ob(),F(17)),I(this),this.o=2,pc(this)):wc(this,this.Y-a);};function pc(a){0==a.l.H||a.J||sc(a.l,a);}function I(a){nc(a);var b=a.M;b&&\"function\"==typeof b.sa&&b.sa();a.M=null;xb(a.V);Fb(a.U);a.g&&(b=a.g,a.g=null,b.abort(),b.sa());}\nfunction qc(a,b){try{var c=a.l;if(0!=c.H&&(c.g==a||xc(c.i,a)))if(!a.K&&xc(c.i,a)&&3==c.H){try{var d=c.Ja.g.parse(b);}catch(m){d=null;}if(Array.isArray(d)&&3==d.length){var e=d;if(0==e[0])a:{if(!c.u){if(c.g)if(c.g.G+3E3e[2]&&c.G&&0==c.A&&!c.v&&(c.v=Rb(q(c.ib,c),6E3));if(1>=Bc(c.i)&&c.oa){try{c.oa();}catch(m){}c.oa=void 0;}}else J(c,11);}else if((a.K||c.g==a)&&yc(c),!x(b))for(e=c.Ja.g.parse(b),b=0;bb)throw Error(\"Bad port number \"+b);a.m=b;}else a.m=null;}function Qc(a,b,c){b instanceof Pc?(a.i=b,Xc(a.i,a.h)):(c||(b=Sc(b,Yc)),a.i=new Pc(b,a.h));}function K(a,b,c){a.i.set(b,c);}function hc(a){K(a,\"zx\",Math.floor(2147483648*Math.random()).toString(36)+Math.abs(Math.floor(2147483648*Math.random())^Date.now()).toString(36));return a}\nfunction Rc(a,b){return a?b?decodeURI(a.replace(/%25/g,\"%2525\")):decodeURIComponent(a):\"\"}function Sc(a,b,c){return \"string\"===typeof a?(a=encodeURI(a).replace(b,Zc),c&&(a=a.replace(/%25([0-9a-fA-F]{2})/g,\"%$1\")),a):null}function Zc(a){a=a.charCodeAt(0);return \"%\"+(a>>4&15).toString(16)+(a&15).toString(16)}var Tc=/[#\\/\\?@]/g,Vc=/[#\\?:]/g,Uc=/[#\\?]/g,Yc=/[#\\?@]/g,Wc=/#/g;function Pc(a,b){this.h=this.g=null;this.i=a||null;this.j=!!b;}\nfunction N(a){a.g||(a.g=new Map,a.h=0,a.i&&Mc(a.i,function(b,c){a.add(decodeURIComponent(b.replace(/\\+/g,\" \")),c);}));}k=Pc.prototype;k.add=function(a,b){N(this);this.i=null;a=O(this,a);var c=this.g.get(a);c||this.g.set(a,c=[]);c.push(b);this.h+=1;return this};function $c(a,b){N(a);b=O(a,b);a.g.has(b)&&(a.i=null,a.h-=a.g.get(b).length,a.g.delete(b));}function ad(a,b){N(a);b=O(a,b);return a.g.has(b)}\nk.forEach=function(a,b){N(this);this.g.forEach(function(c,d){c.forEach(function(e){a.call(b,e,d,this);},this);},this);};k.ta=function(){N(this);const a=Array.from(this.g.values()),b=Array.from(this.g.keys()),c=[];for(let d=0;d=a.j:!1}function Bc(a){return a.h?1:a.g?a.g.size:0}function xc(a,b){return a.h?a.h==b:a.g?a.g.has(b):!1}function Cc(a,b){a.g?a.g.add(b):a.h=b;}\nfunction Ec(a,b){a.h&&a.h==b?a.h=null:a.g&&a.g.has(b)&&a.g.delete(b);}cd.prototype.cancel=function(){this.i=fd(this);if(this.h)this.h.cancel(),this.h=null;else if(this.g&&0!==this.g.size){for(const a of this.g.values())a.cancel();this.g.clear();}};function fd(a){if(null!=a.h)return a.i.concat(a.h.F);if(null!=a.g&&0!==a.g.size){let b=a.i;for(const c of a.g.values())b=b.concat(c.F);return b}return ma(a.i)}var gd=class{stringify(a){return l.JSON.stringify(a,void 0)}parse(a){return l.JSON.parse(a,void 0)}};function hd(){this.g=new gd;}function id(a,b,c){const d=c||\"\";try{Kc(a,function(e,f){let h=e;p(e)&&(h=jb(e));b.push(d+f+\"=\"+encodeURIComponent(h));});}catch(e){throw b.push(d+\"type=\"+encodeURIComponent(\"_badmap\")),e;}}function jd(a,b){const c=new Gb;if(l.Image){const d=new Image;d.onload=ha(kd,c,d,\"TestLoadImage: loaded\",!0,b);d.onerror=ha(kd,c,d,\"TestLoadImage: error\",!1,b);d.onabort=ha(kd,c,d,\"TestLoadImage: abort\",!1,b);d.ontimeout=ha(kd,c,d,\"TestLoadImage: timeout\",!1,b);l.setTimeout(function(){if(d.ontimeout)d.ontimeout();},1E4);d.src=a;}else b(!1);}function kd(a,b,c,d,e){try{b.onload=null,b.onerror=null,b.onabort=null,b.ontimeout=null,e(d);}catch(f){}}function ld(a){this.l=a.fc||null;this.j=a.ob||!1;}r(ld,Ub);ld.prototype.g=function(){return new md(this.l,this.j)};ld.prototype.i=function(a){return function(){return a}}({});function md(a,b){B.call(this);this.F=a;this.u=b;this.m=void 0;this.readyState=nd;this.status=0;this.responseType=this.responseText=this.response=this.statusText=\"\";this.onreadystatechange=null;this.v=new Headers;this.h=null;this.C=\"GET\";this.B=\"\";this.g=!1;this.A=this.j=this.l=null;}r(md,B);var nd=0;k=md.prototype;\nk.open=function(a,b){if(this.readyState!=nd)throw this.abort(),Error(\"Error reopening a connection\");this.C=a;this.B=b;this.readyState=1;od(this);};k.send=function(a){if(1!=this.readyState)throw this.abort(),Error(\"need to call open() first. \");this.g=!0;const b={headers:this.v,method:this.C,credentials:this.m,cache:void 0};a&&(b.body=a);(this.F||l).fetch(new Request(this.B,b)).then(this.$a.bind(this),this.ka.bind(this));};\nk.abort=function(){this.response=this.responseText=\"\";this.v=new Headers;this.status=0;this.j&&this.j.cancel(\"Request was aborted.\").catch(()=>{});1<=this.readyState&&this.g&&4!=this.readyState&&(this.g=!1,pd(this));this.readyState=nd;};\nk.$a=function(a){if(this.g&&(this.l=a,this.h||(this.status=this.l.status,this.statusText=this.l.statusText,this.h=a.headers,this.readyState=2,od(this)),this.g&&(this.readyState=3,od(this),this.g)))if(\"arraybuffer\"===this.responseType)a.arrayBuffer().then(this.Ya.bind(this),this.ka.bind(this));else if(\"undefined\"!==typeof l.ReadableStream&&\"body\"in a){this.j=a.body.getReader();if(this.u){if(this.responseType)throw Error('responseType must be empty for \"streamBinaryChunks\" mode responses.');this.response=\n[];}else this.response=this.responseText=\"\",this.A=new TextDecoder;qd(this);}else a.text().then(this.Za.bind(this),this.ka.bind(this));};function qd(a){a.j.read().then(a.Xa.bind(a)).catch(a.ka.bind(a));}k.Xa=function(a){if(this.g){if(this.u&&a.value)this.response.push(a.value);else if(!this.u){var b=a.value?a.value:new Uint8Array(0);if(b=this.A.decode(b,{stream:!a.done}))this.response=this.responseText+=b;}a.done?pd(this):od(this);3==this.readyState&&qd(this);}};\nk.Za=function(a){this.g&&(this.response=this.responseText=a,pd(this));};k.Ya=function(a){this.g&&(this.response=a,pd(this));};k.ka=function(){this.g&&pd(this);};function pd(a){a.readyState=4;a.l=null;a.j=null;a.A=null;od(a);}k.setRequestHeader=function(a,b){this.v.append(a,b);};k.getResponseHeader=function(a){return this.h?this.h.get(a.toLowerCase())||\"\":\"\"};\nk.getAllResponseHeaders=function(){if(!this.h)return \"\";const a=[],b=this.h.entries();for(var c=b.next();!c.done;)c=c.value,a.push(c[0]+\": \"+c[1]),c=b.next();return a.join(\"\\r\\n\")};function od(a){a.onreadystatechange&&a.onreadystatechange.call(a);}Object.defineProperty(md.prototype,\"withCredentials\",{get:function(){return \"include\"===this.m},set:function(a){this.m=a?\"include\":\"same-origin\";}});var rd=l.JSON.parse;function P(a){B.call(this);this.headers=new Map;this.u=a||null;this.h=!1;this.C=this.g=null;this.I=\"\";this.m=0;this.j=\"\";this.l=this.G=this.v=this.F=!1;this.B=0;this.A=null;this.K=sd;this.L=this.M=!1;}r(P,B);var sd=\"\",td=/^https?$/i,ud=[\"POST\",\"PUT\"];k=P.prototype;k.Oa=function(a){this.M=a;};\nk.ha=function(a,b,c,d){if(this.g)throw Error(\"[goog.net.XhrIo] Object is active with another request=\"+this.I+\"; newUri=\"+a);b=b?b.toUpperCase():\"GET\";this.I=a;this.j=\"\";this.m=0;this.F=!1;this.h=!0;this.g=this.u?this.u.g():$b.g();this.C=this.u?Vb(this.u):Vb($b);this.g.onreadystatechange=q(this.La,this);try{this.G=!0,this.g.open(b,String(a),!0),this.G=!1;}catch(f){vd(this,f);return}a=c||\"\";c=new Map(this.headers);if(d)if(Object.getPrototypeOf(d)===Object.prototype)for(var e in d)c.set(e,d[e]);else if(\"function\"===\ntypeof d.keys&&\"function\"===typeof d.get)for(const f of d.keys())c.set(f,d.get(f));else throw Error(\"Unknown input type for opt_headers: \"+String(d));d=Array.from(c.keys()).find(f=>\"content-type\"==f.toLowerCase());e=l.FormData&&a instanceof l.FormData;!(0<=ka(ud,b))||d||e||c.set(\"Content-Type\",\"application/x-www-form-urlencoded;charset=utf-8\");for(const [f,h]of c)this.g.setRequestHeader(f,h);this.K&&(this.g.responseType=this.K);\"withCredentials\"in this.g&&this.g.withCredentials!==this.M&&(this.g.withCredentials=\nthis.M);try{wd(this),0{}:null;a.g=null;a.C=null;b||C(a,\"ready\");try{c.onreadystatechange=d;}catch(e){}}}function wd(a){a.g&&a.L&&(a.g.ontimeout=null);a.A&&(l.clearTimeout(a.A),a.A=null);}k.isActive=function(){return !!this.g};function H(a){return a.g?a.g.readyState:0}k.da=function(){try{return 2=a.i.j-(a.m?1:0))return !1;if(a.m)return a.j=b.F.concat(a.j),!0;if(1==a.H||2==a.H||a.C>=(a.cb?0:a.eb))return !1;a.m=Rb(q(a.Na,a,b),Jd(a,a.C));a.C++;return !0}\nk.Na=function(a){if(this.m)if(this.m=null,1==this.H){if(!a){this.W=Math.floor(1E5*Math.random());a=this.W++;const e=new bc(this,this.l,a);let f=this.s;this.U&&(f?(f=Pa(f),Ra(f,this.U)):f=this.U);null!==this.o||this.O||(e.I=f,f=null);if(this.P)a:{var b=0;for(var c=0;cm)f=Math.max(0,e[t].g-100),n=!1;else try{id(u,h,\"req\"+m+\"_\");}catch(L){d&&d(u);}}if(n){d=h.join(\"&\");break a}}}a=a.j.splice(0,c);b.F=a;return d}function Fc(a){if(!a.g&&!a.u){a.ba=1;var b=a.Ma;sb||vb();tb||(sb(),tb=!0);mb.add(b,a);a.A=0;}}\nfunction Ac(a){if(a.g||a.u||3<=a.A)return !1;a.ba++;a.u=Rb(q(a.Ma,a),Jd(a,a.A));a.A++;return !0}k.Ma=function(){this.u=null;Md(this);if(this.ca&&!(this.M||null==this.g||0>=this.S)){var a=2*this.S;this.l.info(\"BP detection timer enabled: \"+a);this.B=Rb(q(this.jb,this),a);}};k.jb=function(){this.B&&(this.B=null,this.l.info(\"BP detection timeout reached.\"),this.l.info(\"Buffering proxy detected and switch to long-polling!\"),this.G=!1,this.M=!0,F(10),zc(this),Md(this));};\nfunction vc(a){null!=a.B&&(l.clearTimeout(a.B),a.B=null);}function Md(a){a.g=new bc(a,a.l,\"rpc\",a.ba);null===a.o&&(a.g.I=a.s);a.g.O=0;var b=G(a.wa);K(b,\"RID\",\"rpc\");K(b,\"SID\",a.K);K(b,\"AID\",a.V);K(b,\"CI\",a.G?\"0\":\"1\");!a.G&&a.qa&&K(b,\"TO\",a.qa);K(b,\"TYPE\",\"xmlhttp\");Gd(a,b);a.o&&a.s&&Cd(b,a.o,a.s);a.L&&a.g.setTimeout(a.L);var c=a.g;a=a.pa;c.L=1;c.v=hc(G(b));c.s=null;c.S=!0;ic(c,a);}k.ib=function(){null!=this.v&&(this.v=null,zc(this),Ac(this),F(19));};\nfunction yc(a){null!=a.v&&(l.clearTimeout(a.v),a.v=null);}function sc(a,b){var c=null;if(a.g==b){yc(a);vc(a);a.g=null;var d=2;}else if(xc(a.i,b))c=b.F,Ec(a.i,b),d=1;else return;if(0!=a.H)if(b.i)if(1==d){c=b.s?b.s.length:0;b=Date.now()-b.G;var e=a.C;d=Mb();C(d,new Qb(d,c));Gc(a);}else Fc(a);else if(e=b.o,3==e||0==e&&0e;++e)d[e]=b.charCodeAt(c++)|b.charCodeAt(c++)<<8|b.charCodeAt(c++)<<16|b.charCodeAt(c++)<<24;else for(e=0;16>e;++e)d[e]=b[c++]|b[c++]<<8|b[c++]<<16|b[c++]<<24;b=a.g[0];c=a.g[1];e=a.g[2];var f=a.g[3];var h=b+(f^c&(e^f))+d[0]+3614090360&4294967295;b=c+(h<<7&4294967295|h>>>25);h=f+(e^b&(c^e))+d[1]+3905402710&4294967295;f=b+(h<<12&4294967295|h>>>20);h=e+(c^f&(b^c))+d[2]+606105819&4294967295;e=f+(h<<17&4294967295|h>>>15);\nh=c+(b^e&(f^b))+d[3]+3250441966&4294967295;c=e+(h<<22&4294967295|h>>>10);h=b+(f^c&(e^f))+d[4]+4118548399&4294967295;b=c+(h<<7&4294967295|h>>>25);h=f+(e^b&(c^e))+d[5]+1200080426&4294967295;f=b+(h<<12&4294967295|h>>>20);h=e+(c^f&(b^c))+d[6]+2821735955&4294967295;e=f+(h<<17&4294967295|h>>>15);h=c+(b^e&(f^b))+d[7]+4249261313&4294967295;c=e+(h<<22&4294967295|h>>>10);h=b+(f^c&(e^f))+d[8]+1770035416&4294967295;b=c+(h<<7&4294967295|h>>>25);h=f+(e^b&(c^e))+d[9]+2336552879&4294967295;f=b+(h<<12&4294967295|\nh>>>20);h=e+(c^f&(b^c))+d[10]+4294925233&4294967295;e=f+(h<<17&4294967295|h>>>15);h=c+(b^e&(f^b))+d[11]+2304563134&4294967295;c=e+(h<<22&4294967295|h>>>10);h=b+(f^c&(e^f))+d[12]+1804603682&4294967295;b=c+(h<<7&4294967295|h>>>25);h=f+(e^b&(c^e))+d[13]+4254626195&4294967295;f=b+(h<<12&4294967295|h>>>20);h=e+(c^f&(b^c))+d[14]+2792965006&4294967295;e=f+(h<<17&4294967295|h>>>15);h=c+(b^e&(f^b))+d[15]+1236535329&4294967295;c=e+(h<<22&4294967295|h>>>10);h=b+(e^f&(c^e))+d[1]+4129170786&4294967295;b=c+(h<<\n5&4294967295|h>>>27);h=f+(c^e&(b^c))+d[6]+3225465664&4294967295;f=b+(h<<9&4294967295|h>>>23);h=e+(b^c&(f^b))+d[11]+643717713&4294967295;e=f+(h<<14&4294967295|h>>>18);h=c+(f^b&(e^f))+d[0]+3921069994&4294967295;c=e+(h<<20&4294967295|h>>>12);h=b+(e^f&(c^e))+d[5]+3593408605&4294967295;b=c+(h<<5&4294967295|h>>>27);h=f+(c^e&(b^c))+d[10]+38016083&4294967295;f=b+(h<<9&4294967295|h>>>23);h=e+(b^c&(f^b))+d[15]+3634488961&4294967295;e=f+(h<<14&4294967295|h>>>18);h=c+(f^b&(e^f))+d[4]+3889429448&4294967295;c=\ne+(h<<20&4294967295|h>>>12);h=b+(e^f&(c^e))+d[9]+568446438&4294967295;b=c+(h<<5&4294967295|h>>>27);h=f+(c^e&(b^c))+d[14]+3275163606&4294967295;f=b+(h<<9&4294967295|h>>>23);h=e+(b^c&(f^b))+d[3]+4107603335&4294967295;e=f+(h<<14&4294967295|h>>>18);h=c+(f^b&(e^f))+d[8]+1163531501&4294967295;c=e+(h<<20&4294967295|h>>>12);h=b+(e^f&(c^e))+d[13]+2850285829&4294967295;b=c+(h<<5&4294967295|h>>>27);h=f+(c^e&(b^c))+d[2]+4243563512&4294967295;f=b+(h<<9&4294967295|h>>>23);h=e+(b^c&(f^b))+d[7]+1735328473&4294967295;\ne=f+(h<<14&4294967295|h>>>18);h=c+(f^b&(e^f))+d[12]+2368359562&4294967295;c=e+(h<<20&4294967295|h>>>12);h=b+(c^e^f)+d[5]+4294588738&4294967295;b=c+(h<<4&4294967295|h>>>28);h=f+(b^c^e)+d[8]+2272392833&4294967295;f=b+(h<<11&4294967295|h>>>21);h=e+(f^b^c)+d[11]+1839030562&4294967295;e=f+(h<<16&4294967295|h>>>16);h=c+(e^f^b)+d[14]+4259657740&4294967295;c=e+(h<<23&4294967295|h>>>9);h=b+(c^e^f)+d[1]+2763975236&4294967295;b=c+(h<<4&4294967295|h>>>28);h=f+(b^c^e)+d[4]+1272893353&4294967295;f=b+(h<<11&4294967295|\nh>>>21);h=e+(f^b^c)+d[7]+4139469664&4294967295;e=f+(h<<16&4294967295|h>>>16);h=c+(e^f^b)+d[10]+3200236656&4294967295;c=e+(h<<23&4294967295|h>>>9);h=b+(c^e^f)+d[13]+681279174&4294967295;b=c+(h<<4&4294967295|h>>>28);h=f+(b^c^e)+d[0]+3936430074&4294967295;f=b+(h<<11&4294967295|h>>>21);h=e+(f^b^c)+d[3]+3572445317&4294967295;e=f+(h<<16&4294967295|h>>>16);h=c+(e^f^b)+d[6]+76029189&4294967295;c=e+(h<<23&4294967295|h>>>9);h=b+(c^e^f)+d[9]+3654602809&4294967295;b=c+(h<<4&4294967295|h>>>28);h=f+(b^c^e)+d[12]+\n3873151461&4294967295;f=b+(h<<11&4294967295|h>>>21);h=e+(f^b^c)+d[15]+530742520&4294967295;e=f+(h<<16&4294967295|h>>>16);h=c+(e^f^b)+d[2]+3299628645&4294967295;c=e+(h<<23&4294967295|h>>>9);h=b+(e^(c|~f))+d[0]+4096336452&4294967295;b=c+(h<<6&4294967295|h>>>26);h=f+(c^(b|~e))+d[7]+1126891415&4294967295;f=b+(h<<10&4294967295|h>>>22);h=e+(b^(f|~c))+d[14]+2878612391&4294967295;e=f+(h<<15&4294967295|h>>>17);h=c+(f^(e|~b))+d[5]+4237533241&4294967295;c=e+(h<<21&4294967295|h>>>11);h=b+(e^(c|~f))+d[12]+1700485571&\n4294967295;b=c+(h<<6&4294967295|h>>>26);h=f+(c^(b|~e))+d[3]+2399980690&4294967295;f=b+(h<<10&4294967295|h>>>22);h=e+(b^(f|~c))+d[10]+4293915773&4294967295;e=f+(h<<15&4294967295|h>>>17);h=c+(f^(e|~b))+d[1]+2240044497&4294967295;c=e+(h<<21&4294967295|h>>>11);h=b+(e^(c|~f))+d[8]+1873313359&4294967295;b=c+(h<<6&4294967295|h>>>26);h=f+(c^(b|~e))+d[15]+4264355552&4294967295;f=b+(h<<10&4294967295|h>>>22);h=e+(b^(f|~c))+d[6]+2734768916&4294967295;e=f+(h<<15&4294967295|h>>>17);h=c+(f^(e|~b))+d[13]+1309151649&\n4294967295;c=e+(h<<21&4294967295|h>>>11);h=b+(e^(c|~f))+d[4]+4149444226&4294967295;b=c+(h<<6&4294967295|h>>>26);h=f+(c^(b|~e))+d[11]+3174756917&4294967295;f=b+(h<<10&4294967295|h>>>22);h=e+(b^(f|~c))+d[2]+718787259&4294967295;e=f+(h<<15&4294967295|h>>>17);h=c+(f^(e|~b))+d[9]+3951481745&4294967295;a.g[0]=a.g[0]+b&4294967295;a.g[1]=a.g[1]+(e+(h<<21&4294967295|h>>>11))&4294967295;a.g[2]=a.g[2]+e&4294967295;a.g[3]=a.g[3]+f&4294967295;}\nS.prototype.j=function(a,b){void 0===b&&(b=a.length);for(var c=b-this.blockSize,d=this.m,e=this.h,f=0;fthis.h?this.blockSize:2*this.blockSize)-this.h);a[0]=128;for(var b=1;bb;++b)for(var d=0;32>d;d+=8)a[c++]=this.g[b]>>>d&255;return a};function T(a,b){this.h=b;for(var c=[],d=!0,e=a.length-1;0<=e;e--){var f=a[e]|0;d&&f==b||(c[e]=f,d=!1);}this.g=c;}var sa={};function Td(a){return -128<=a&&128>a?ra(a,function(b){return new T([b|0],0>b?-1:0)}):new T([a|0],0>a?-1:0)}function U(a){if(isNaN(a)||!isFinite(a))return V;if(0>a)return W(U(-a));for(var b=[],c=1,d=0;a>=c;d++)b[d]=a/c|0,c*=Ud;return new T(b,0)}\nfunction Vd(a,b){if(0==a.length)throw Error(\"number format error: empty string\");b=b||10;if(2>b||36f?(f=U(Math.pow(b,f)),d=d.R(f).add(U(h))):(d=d.R(c),d=d.add(U(h)));}return d}\nvar Ud=4294967296,V=Td(0),Wd=Td(1),Xd=Td(16777216);k=T.prototype;k.ea=function(){if(X(this))return -W(this).ea();for(var a=0,b=1,c=0;ca||36>>0).toString(a);c=e;if(Y(c))return f+d;for(;6>f.length;)f=\"0\"+f;d=f+d;}};k.D=function(a){return 0>a?0:a>>16)+(this.D(e)>>>16)+(a.D(e)>>>16);d=h>>>16;f&=65535;h&=65535;c[e]=h<<16|f;}return new T(c,c[c.length-1]&-2147483648?-1:0)};\nfunction Zd(a,b){return a.add(W(b))}\nk.R=function(a){if(Y(this)||Y(a))return V;if(X(this))return X(a)?W(this).R(W(a)):W(W(this).R(a));if(X(a))return W(this.R(W(a)));if(0>this.X(Xd)&&0>a.X(Xd))return U(this.ea()*a.ea());for(var b=this.g.length+a.g.length,c=[],d=0;d<2*b;d++)c[d]=0;for(d=0;d>>16,h=this.D(d)&65535,n=a.D(e)>>>16,t=a.D(e)&65535;c[2*d+2*e]+=h*t;$d(c,2*d+2*e);c[2*d+2*e+1]+=f*t;$d(c,2*d+2*e+1);c[2*d+2*e+1]+=h*n;$d(c,2*d+2*e+1);c[2*d+2*e+2]+=f*n;$d(c,2*d+2*e+2);}for(d=\n0;d>>16,a[b]&=65535,b++;}function ae(a,b){this.g=a;this.h=b;}\nfunction Yd(a,b){if(Y(b))throw Error(\"division by zero\");if(Y(a))return new ae(V,V);if(X(a))return b=Yd(W(a),b),new ae(W(b.g),W(b.h));if(X(b))return b=Yd(a,W(b)),new ae(W(b.g),b.h);if(30=d.X(a);)c=be(c),d=be(d);var e=Z(c,1),f=Z(d,1);d=Z(d,2);for(c=Z(c,2);!Y(d);){var h=f.add(d);0>=h.X(a)&&(e=e.add(c),f=h);d=Z(d,1);c=Z(c,1);}b=Zd(a,e.R(b));return new ae(e,b)}for(e=V;0<=a.X(b);){c=Math.max(1,Math.floor(a.ea()/\nb.ea()));d=Math.ceil(Math.log(c)/Math.LN2);d=48>=d?1:Math.pow(2,d-48);f=U(c);for(h=f.R(b);X(h)||0>>31;return new T(c,a.h)}function Z(a,b){var c=b>>5;b%=32;for(var d=a.g.length-c,e=[],f=0;f>>b|a.D(f+c+1)<<32-b:a.D(f+c);return new T(e,a.h)}Od.prototype.createWebChannel=Od.prototype.g;Q.prototype.send=Q.prototype.u;Q.prototype.open=Q.prototype.m;Q.prototype.close=Q.prototype.close;Sb.NO_ERROR=0;Sb.TIMEOUT=8;Sb.HTTP_ERROR=6;Tb.COMPLETE=\"complete\";Wb.EventType=Xb;Xb.OPEN=\"a\";Xb.CLOSE=\"b\";Xb.ERROR=\"c\";Xb.MESSAGE=\"d\";B.prototype.listen=B.prototype.O;P.prototype.listenOnce=P.prototype.P;P.prototype.getLastError=P.prototype.Sa;P.prototype.getLastErrorCode=P.prototype.Ia;P.prototype.getStatus=P.prototype.da;P.prototype.getResponseJson=P.prototype.Wa;\nP.prototype.getResponseText=P.prototype.ja;P.prototype.send=P.prototype.ha;P.prototype.setWithCredentials=P.prototype.Oa;S.prototype.digest=S.prototype.l;S.prototype.reset=S.prototype.reset;S.prototype.update=S.prototype.j;T.prototype.add=T.prototype.add;T.prototype.multiply=T.prototype.R;T.prototype.modulo=T.prototype.gb;T.prototype.compare=T.prototype.X;T.prototype.toNumber=T.prototype.ea;T.prototype.toString=T.prototype.toString;T.prototype.getBits=T.prototype.D;T.fromNumber=U;T.fromString=Vd;\nvar createWebChannelTransport = esm.createWebChannelTransport=function(){return new Od};var getStatEventTarget = esm.getStatEventTarget=function(){return Mb()};var ErrorCode = esm.ErrorCode=Sb;var EventType = esm.EventType=Tb;var Event = esm.Event=E;var Stat = esm.Stat={xb:0,Ab:1,Bb:2,Ub:3,Zb:4,Wb:5,Xb:6,Vb:7,Tb:8,Yb:9,PROXY:10,NOPROXY:11,Rb:12,Nb:13,Ob:14,Mb:15,Pb:16,Qb:17,tb:18,sb:19,ub:20};var FetchXmlHttpFactory = esm.FetchXmlHttpFactory=ld;var WebChannel = esm.WebChannel=Wb;var XhrIo = esm.XhrIo=P;var Md5 = esm.Md5=S;var Integer = esm.Integer=T;\n\nexport { ErrorCode, Event, EventType, FetchXmlHttpFactory, Integer, Md5, Stat, WebChannel, XhrIo, createWebChannelTransport, esm as default, getStatEventTarget };\n","import { _registerComponent, registerVersion, _getProvider, getApp, _removeServiceInstance, SDK_VERSION } from '@firebase/app';\nimport { Component } from '@firebase/component';\nimport { Logger, LogLevel } from '@firebase/logger';\nimport { FirebaseError, createMockUserToken, getModularInstance, deepEqual, getDefaultEmulatorHostnameAndPort, getUA, isIndexedDBAvailable, isSafari } from '@firebase/util';\nimport { Integer, XhrIo, EventType, ErrorCode, createWebChannelTransport, getStatEventTarget, FetchXmlHttpFactory, WebChannel, Event, Stat, Md5 } from '@firebase/webchannel-wrapper';\n\nconst b = \"@firebase/firestore\";\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Simple wrapper around a nullable UID. Mostly exists to make code more\n * readable.\n */\nclass V {\n constructor(t) {\n this.uid = t;\n }\n isAuthenticated() {\n return null != this.uid;\n }\n /**\n * Returns a key representing this user, suitable for inclusion in a\n * dictionary.\n */ toKey() {\n return this.isAuthenticated() ? \"uid:\" + this.uid : \"anonymous-user\";\n }\n isEqual(t) {\n return t.uid === this.uid;\n }\n}\n\n/** A user with a null UID. */ V.UNAUTHENTICATED = new V(null), \n// TODO(mikelehen): Look into getting a proper uid-equivalent for\n// non-FirebaseAuth providers.\nV.GOOGLE_CREDENTIALS = new V(\"google-credentials-uid\"), V.FIRST_PARTY = new V(\"first-party-uid\"), \nV.MOCK_USER = new V(\"mock-user\");\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nlet S = \"9.23.0\";\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst D = new Logger(\"@firebase/firestore\");\n\n// Helper methods are needed because variables can't be exported as read/write\nfunction C() {\n return D.logLevel;\n}\n\n/**\n * Sets the verbosity of Cloud Firestore logs (debug, error, or silent).\n *\n * @param logLevel - The verbosity you set for activity and error logging. Can\n * be any of the following values:\n *\n *
      \n *
    • `debug` for the most verbose logging level, primarily for\n * debugging.
    • \n *
    • `error` to log errors only.
    • \n *
    • `silent` to turn off logging.
    • \n *
    \n */ function x(t) {\n D.setLogLevel(t);\n}\n\nfunction N(t, ...e) {\n if (D.logLevel <= LogLevel.DEBUG) {\n const n = e.map($);\n D.debug(`Firestore (${S}): ${t}`, ...n);\n }\n}\n\nfunction k(t, ...e) {\n if (D.logLevel <= LogLevel.ERROR) {\n const n = e.map($);\n D.error(`Firestore (${S}): ${t}`, ...n);\n }\n}\n\n/**\n * @internal\n */ function M(t, ...e) {\n if (D.logLevel <= LogLevel.WARN) {\n const n = e.map($);\n D.warn(`Firestore (${S}): ${t}`, ...n);\n }\n}\n\n/**\n * Converts an additional log parameter to a string representation.\n */ function $(t) {\n if (\"string\" == typeof t) return t;\n try {\n return e = t, JSON.stringify(e);\n } catch (e) {\n // Converting to JSON failed, just log the object directly\n return t;\n }\n /**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n /** Formats an object as a JSON string, suitable for logging. */\n var e;\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Unconditionally fails, throwing an Error with the given message.\n * Messages are stripped in production builds.\n *\n * Returns `never` and can be used in expressions:\n * @example\n * let futureVar = fail('not implemented yet');\n */ function O(t = \"Unexpected state\") {\n // Log the failure in addition to throw an exception, just in case the\n // exception is swallowed.\n const e = `FIRESTORE (${S}) INTERNAL ASSERTION FAILED: ` + t;\n // NOTE: We don't use FirestoreError here because these are internal failures\n // that cannot be handled by the user. (Also it would create a circular\n // dependency between the error and assert modules which doesn't work.)\n throw k(e), new Error(e);\n}\n\n/**\n * Fails if the given assertion condition is false, throwing an Error with the\n * given message if it did.\n *\n * Messages are stripped in production builds.\n */ function F(t, e) {\n t || O();\n}\n\n/**\n * Fails if the given assertion condition is false, throwing an Error with the\n * given message if it did.\n *\n * The code of callsites invoking this function are stripped out in production\n * builds. Any side-effects of code within the debugAssert() invocation will not\n * happen in this case.\n *\n * @internal\n */ function B(t, e) {\n t || O();\n}\n\n/**\n * Casts `obj` to `T`. In non-production builds, verifies that `obj` is an\n * instance of `T` before casting.\n */ function L(t, \n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ne) {\n return t;\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */ const q = {\n // Causes are copied from:\n // https://github.com/grpc/grpc/blob/bceec94ea4fc5f0085d81235d8e1c06798dc341a/include/grpc%2B%2B/impl/codegen/status_code_enum.h\n /** Not an error; returned on success. */\n OK: \"ok\",\n /** The operation was cancelled (typically by the caller). */\n CANCELLED: \"cancelled\",\n /** Unknown error or an error from a different error domain. */\n UNKNOWN: \"unknown\",\n /**\n * Client specified an invalid argument. Note that this differs from\n * FAILED_PRECONDITION. INVALID_ARGUMENT indicates arguments that are\n * problematic regardless of the state of the system (e.g., a malformed file\n * name).\n */\n INVALID_ARGUMENT: \"invalid-argument\",\n /**\n * Deadline expired before operation could complete. For operations that\n * change the state of the system, this error may be returned even if the\n * operation has completed successfully. For example, a successful response\n * from a server could have been delayed long enough for the deadline to\n * expire.\n */\n DEADLINE_EXCEEDED: \"deadline-exceeded\",\n /** Some requested entity (e.g., file or directory) was not found. */\n NOT_FOUND: \"not-found\",\n /**\n * Some entity that we attempted to create (e.g., file or directory) already\n * exists.\n */\n ALREADY_EXISTS: \"already-exists\",\n /**\n * The caller does not have permission to execute the specified operation.\n * PERMISSION_DENIED must not be used for rejections caused by exhausting\n * some resource (use RESOURCE_EXHAUSTED instead for those errors).\n * PERMISSION_DENIED must not be used if the caller can not be identified\n * (use UNAUTHENTICATED instead for those errors).\n */\n PERMISSION_DENIED: \"permission-denied\",\n /**\n * The request does not have valid authentication credentials for the\n * operation.\n */\n UNAUTHENTICATED: \"unauthenticated\",\n /**\n * Some resource has been exhausted, perhaps a per-user quota, or perhaps the\n * entire file system is out of space.\n */\n RESOURCE_EXHAUSTED: \"resource-exhausted\",\n /**\n * Operation was rejected because the system is not in a state required for\n * the operation's execution. For example, directory to be deleted may be\n * non-empty, an rmdir operation is applied to a non-directory, etc.\n *\n * A litmus test that may help a service implementor in deciding\n * between FAILED_PRECONDITION, ABORTED, and UNAVAILABLE:\n * (a) Use UNAVAILABLE if the client can retry just the failing call.\n * (b) Use ABORTED if the client should retry at a higher-level\n * (e.g., restarting a read-modify-write sequence).\n * (c) Use FAILED_PRECONDITION if the client should not retry until\n * the system state has been explicitly fixed. E.g., if an \"rmdir\"\n * fails because the directory is non-empty, FAILED_PRECONDITION\n * should be returned since the client should not retry unless\n * they have first fixed up the directory by deleting files from it.\n * (d) Use FAILED_PRECONDITION if the client performs conditional\n * REST Get/Update/Delete on a resource and the resource on the\n * server does not match the condition. E.g., conflicting\n * read-modify-write on the same resource.\n */\n FAILED_PRECONDITION: \"failed-precondition\",\n /**\n * The operation was aborted, typically due to a concurrency issue like\n * sequencer check failures, transaction aborts, etc.\n *\n * See litmus test above for deciding between FAILED_PRECONDITION, ABORTED,\n * and UNAVAILABLE.\n */\n ABORTED: \"aborted\",\n /**\n * Operation was attempted past the valid range. E.g., seeking or reading\n * past end of file.\n *\n * Unlike INVALID_ARGUMENT, this error indicates a problem that may be fixed\n * if the system state changes. For example, a 32-bit file system will\n * generate INVALID_ARGUMENT if asked to read at an offset that is not in the\n * range [0,2^32-1], but it will generate OUT_OF_RANGE if asked to read from\n * an offset past the current file size.\n *\n * There is a fair bit of overlap between FAILED_PRECONDITION and\n * OUT_OF_RANGE. We recommend using OUT_OF_RANGE (the more specific error)\n * when it applies so that callers who are iterating through a space can\n * easily look for an OUT_OF_RANGE error to detect when they are done.\n */\n OUT_OF_RANGE: \"out-of-range\",\n /** Operation is not implemented or not supported/enabled in this service. */\n UNIMPLEMENTED: \"unimplemented\",\n /**\n * Internal errors. Means some invariants expected by underlying System has\n * been broken. If you see one of these errors, Something is very broken.\n */\n INTERNAL: \"internal\",\n /**\n * The service is currently unavailable. This is a most likely a transient\n * condition and may be corrected by retrying with a backoff.\n *\n * See litmus test above for deciding between FAILED_PRECONDITION, ABORTED,\n * and UNAVAILABLE.\n */\n UNAVAILABLE: \"unavailable\",\n /** Unrecoverable data loss or corruption. */\n DATA_LOSS: \"data-loss\"\n};\n\n/** An error returned by a Firestore operation. */ class U extends FirebaseError {\n /** @hideconstructor */\n constructor(\n /**\n * The backend error code associated with this error.\n */\n t, \n /**\n * A custom error description.\n */\n e) {\n super(t, e), this.code = t, this.message = e, \n // HACK: We write a toString property directly because Error is not a real\n // class and so inheritance does not work correctly. We could alternatively\n // do the same \"back-door inheritance\" trick that FirebaseError does.\n this.toString = () => `${this.name}: [code=${this.code}]: ${this.message}`;\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */ class K {\n constructor() {\n this.promise = new Promise(((t, e) => {\n this.resolve = t, this.reject = e;\n }));\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */ class G {\n constructor(t, e) {\n this.user = e, this.type = \"OAuth\", this.headers = new Map, this.headers.set(\"Authorization\", `Bearer ${t}`);\n }\n}\n\n/**\n * A CredentialsProvider that always yields an empty token.\n * @internal\n */ class Q {\n getToken() {\n return Promise.resolve(null);\n }\n invalidateToken() {}\n start(t, e) {\n // Fire with initial user.\n t.enqueueRetryable((() => e(V.UNAUTHENTICATED)));\n }\n shutdown() {}\n}\n\n/**\n * A CredentialsProvider that always returns a constant token. Used for\n * emulator token mocking.\n */ class j {\n constructor(t) {\n this.token = t, \n /**\n * Stores the listener registered with setChangeListener()\n * This isn't actually necessary since the UID never changes, but we use this\n * to verify the listen contract is adhered to in tests.\n */\n this.changeListener = null;\n }\n getToken() {\n return Promise.resolve(this.token);\n }\n invalidateToken() {}\n start(t, e) {\n this.changeListener = e, \n // Fire with initial user.\n t.enqueueRetryable((() => e(this.token.user)));\n }\n shutdown() {\n this.changeListener = null;\n }\n}\n\nclass z {\n constructor(t) {\n this.t = t, \n /** Tracks the current User. */\n this.currentUser = V.UNAUTHENTICATED, \n /**\n * Counter used to detect if the token changed while a getToken request was\n * outstanding.\n */\n this.i = 0, this.forceRefresh = !1, this.auth = null;\n }\n start(t, e) {\n let n = this.i;\n // A change listener that prevents double-firing for the same token change.\n const s = t => this.i !== n ? (n = this.i, e(t)) : Promise.resolve();\n // A promise that can be waited on to block on the next token change.\n // This promise is re-created after each change.\n let i = new K;\n this.o = () => {\n this.i++, this.currentUser = this.u(), i.resolve(), i = new K, t.enqueueRetryable((() => s(this.currentUser)));\n };\n const r = () => {\n const e = i;\n t.enqueueRetryable((async () => {\n await e.promise, await s(this.currentUser);\n }));\n }, o = t => {\n N(\"FirebaseAuthCredentialsProvider\", \"Auth detected\"), this.auth = t, this.auth.addAuthTokenListener(this.o), \n r();\n };\n this.t.onInit((t => o(t))), \n // Our users can initialize Auth right after Firestore, so we give it\n // a chance to register itself with the component framework before we\n // determine whether to start up in unauthenticated mode.\n setTimeout((() => {\n if (!this.auth) {\n const t = this.t.getImmediate({\n optional: !0\n });\n t ? o(t) : (\n // If auth is still not available, proceed with `null` user\n N(\"FirebaseAuthCredentialsProvider\", \"Auth not yet detected\"), i.resolve(), i = new K);\n }\n }), 0), r();\n }\n getToken() {\n // Take note of the current value of the tokenCounter so that this method\n // can fail (with an ABORTED error) if there is a token change while the\n // request is outstanding.\n const t = this.i, e = this.forceRefresh;\n return this.forceRefresh = !1, this.auth ? this.auth.getToken(e).then((e => \n // Cancel the request since the token changed while the request was\n // outstanding so the response is potentially for a previous user (which\n // user, we can't be sure).\n this.i !== t ? (N(\"FirebaseAuthCredentialsProvider\", \"getToken aborted due to token change.\"), \n this.getToken()) : e ? (F(\"string\" == typeof e.accessToken), new G(e.accessToken, this.currentUser)) : null)) : Promise.resolve(null);\n }\n invalidateToken() {\n this.forceRefresh = !0;\n }\n shutdown() {\n this.auth && this.auth.removeAuthTokenListener(this.o);\n }\n // Auth.getUid() can return null even with a user logged in. It is because\n // getUid() is synchronous, but the auth code populating Uid is asynchronous.\n // This method should only be called in the AuthTokenListener callback\n // to guarantee to get the actual user.\n u() {\n const t = this.auth && this.auth.getUid();\n return F(null === t || \"string\" == typeof t), new V(t);\n }\n}\n\n/*\n * FirstPartyToken provides a fresh token each time its value\n * is requested, because if the token is too old, requests will be rejected.\n * Technically this may no longer be necessary since the SDK should gracefully\n * recover from unauthenticated errors (see b/33147818 for context), but it's\n * safer to keep the implementation as-is.\n */ class W {\n constructor(t, e, n) {\n this.h = t, this.l = e, this.m = n, this.type = \"FirstParty\", this.user = V.FIRST_PARTY, \n this.g = new Map;\n }\n /**\n * Gets an authorization token, using a provided factory function, or return\n * null.\n */ p() {\n return this.m ? this.m() : null;\n }\n get headers() {\n this.g.set(\"X-Goog-AuthUser\", this.h);\n // Use array notation to prevent minification\n const t = this.p();\n return t && this.g.set(\"Authorization\", t), this.l && this.g.set(\"X-Goog-Iam-Authorization-Token\", this.l), \n this.g;\n }\n}\n\n/*\n * Provides user credentials required for the Firestore JavaScript SDK\n * to authenticate the user, using technique that is only available\n * to applications hosted by Google.\n */ class H {\n constructor(t, e, n) {\n this.h = t, this.l = e, this.m = n;\n }\n getToken() {\n return Promise.resolve(new W(this.h, this.l, this.m));\n }\n start(t, e) {\n // Fire with initial uid.\n t.enqueueRetryable((() => e(V.FIRST_PARTY)));\n }\n shutdown() {}\n invalidateToken() {}\n}\n\nclass J {\n constructor(t) {\n this.value = t, this.type = \"AppCheck\", this.headers = new Map, t && t.length > 0 && this.headers.set(\"x-firebase-appcheck\", this.value);\n }\n}\n\nclass Y {\n constructor(t) {\n this.I = t, this.forceRefresh = !1, this.appCheck = null, this.T = null;\n }\n start(t, e) {\n const n = t => {\n null != t.error && N(\"FirebaseAppCheckTokenProvider\", `Error getting App Check token; using placeholder token instead. Error: ${t.error.message}`);\n const n = t.token !== this.T;\n return this.T = t.token, N(\"FirebaseAppCheckTokenProvider\", `Received ${n ? \"new\" : \"existing\"} token.`), \n n ? e(t.token) : Promise.resolve();\n };\n this.o = e => {\n t.enqueueRetryable((() => n(e)));\n };\n const s = t => {\n N(\"FirebaseAppCheckTokenProvider\", \"AppCheck detected\"), this.appCheck = t, this.appCheck.addTokenListener(this.o);\n };\n this.I.onInit((t => s(t))), \n // Our users can initialize AppCheck after Firestore, so we give it\n // a chance to register itself with the component framework.\n setTimeout((() => {\n if (!this.appCheck) {\n const t = this.I.getImmediate({\n optional: !0\n });\n t ? s(t) : \n // If AppCheck is still not available, proceed without it.\n N(\"FirebaseAppCheckTokenProvider\", \"AppCheck not yet detected\");\n }\n }), 0);\n }\n getToken() {\n const t = this.forceRefresh;\n return this.forceRefresh = !1, this.appCheck ? this.appCheck.getToken(t).then((t => t ? (F(\"string\" == typeof t.token), \n this.T = t.token, new J(t.token)) : null)) : Promise.resolve(null);\n }\n invalidateToken() {\n this.forceRefresh = !0;\n }\n shutdown() {\n this.appCheck && this.appCheck.removeTokenListener(this.o);\n }\n}\n\n/**\n * An AppCheck token provider that always yields an empty token.\n * @internal\n */ class X {\n getToken() {\n return Promise.resolve(new J(\"\"));\n }\n invalidateToken() {}\n start(t, e) {}\n shutdown() {}\n}\n\n/**\n * Builds a CredentialsProvider depending on the type of\n * the credentials passed in.\n */\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Generates `nBytes` of random bytes.\n *\n * If `nBytes < 0` , an error will be thrown.\n */\nfunction Z(t) {\n // Polyfills for IE and WebWorker by using `self` and `msCrypto` when `crypto` is not available.\n const e = \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n \"undefined\" != typeof self && (self.crypto || self.msCrypto), n = new Uint8Array(t);\n if (e && \"function\" == typeof e.getRandomValues) e.getRandomValues(n); else \n // Falls back to Math.random\n for (let e = 0; e < t; e++) n[e] = Math.floor(256 * Math.random());\n return n;\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */ class tt {\n static A() {\n // Alphanumeric characters\n const t = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\", e = Math.floor(256 / t.length) * t.length;\n // The largest byte value that is a multiple of `char.length`.\n let n = \"\";\n for (;n.length < 20; ) {\n const s = Z(40);\n for (let i = 0; i < s.length; ++i) \n // Only accept values that are [0, maxMultiple), this ensures they can\n // be evenly mapped to indices of `chars` via a modulo operation.\n n.length < 20 && s[i] < e && (n += t.charAt(s[i] % t.length));\n }\n return n;\n }\n}\n\nfunction et(t, e) {\n return t < e ? -1 : t > e ? 1 : 0;\n}\n\n/** Helper to compare arrays using isEqual(). */ function nt(t, e, n) {\n return t.length === e.length && t.every(((t, s) => n(t, e[s])));\n}\n\n/**\n * Returns the immediate lexicographically-following string. This is useful to\n * construct an inclusive range for indexeddb iterators.\n */ function st(t) {\n // Return the input string, with an additional NUL byte appended.\n return t + \"\\0\";\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// The earliest date supported by Firestore timestamps (0001-01-01T00:00:00Z).\n/**\n * A `Timestamp` represents a point in time independent of any time zone or\n * calendar, represented as seconds and fractions of seconds at nanosecond\n * resolution in UTC Epoch time.\n *\n * It is encoded using the Proleptic Gregorian Calendar which extends the\n * Gregorian calendar backwards to year one. It is encoded assuming all minutes\n * are 60 seconds long, i.e. leap seconds are \"smeared\" so that no leap second\n * table is needed for interpretation. Range is from 0001-01-01T00:00:00Z to\n * 9999-12-31T23:59:59.999999999Z.\n *\n * For examples and further specifications, refer to the\n * {@link https://github.com/google/protobuf/blob/master/src/google/protobuf/timestamp.proto | Timestamp definition}.\n */\nclass it {\n /**\n * Creates a new timestamp.\n *\n * @param seconds - The number of seconds of UTC time since Unix epoch\n * 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to\n * 9999-12-31T23:59:59Z inclusive.\n * @param nanoseconds - The non-negative fractions of a second at nanosecond\n * resolution. Negative second values with fractions must still have\n * non-negative nanoseconds values that count forward in time. Must be\n * from 0 to 999,999,999 inclusive.\n */\n constructor(\n /**\n * The number of seconds of UTC time since Unix epoch 1970-01-01T00:00:00Z.\n */\n t, \n /**\n * The fractions of a second at nanosecond resolution.*\n */\n e) {\n if (this.seconds = t, this.nanoseconds = e, e < 0) throw new U(q.INVALID_ARGUMENT, \"Timestamp nanoseconds out of range: \" + e);\n if (e >= 1e9) throw new U(q.INVALID_ARGUMENT, \"Timestamp nanoseconds out of range: \" + e);\n if (t < -62135596800) throw new U(q.INVALID_ARGUMENT, \"Timestamp seconds out of range: \" + t);\n // This will break in the year 10,000.\n if (t >= 253402300800) throw new U(q.INVALID_ARGUMENT, \"Timestamp seconds out of range: \" + t);\n }\n /**\n * Creates a new timestamp with the current date, with millisecond precision.\n *\n * @returns a new timestamp representing the current date.\n */ static now() {\n return it.fromMillis(Date.now());\n }\n /**\n * Creates a new timestamp from the given date.\n *\n * @param date - The date to initialize the `Timestamp` from.\n * @returns A new `Timestamp` representing the same point in time as the given\n * date.\n */ static fromDate(t) {\n return it.fromMillis(t.getTime());\n }\n /**\n * Creates a new timestamp from the given number of milliseconds.\n *\n * @param milliseconds - Number of milliseconds since Unix epoch\n * 1970-01-01T00:00:00Z.\n * @returns A new `Timestamp` representing the same point in time as the given\n * number of milliseconds.\n */ static fromMillis(t) {\n const e = Math.floor(t / 1e3), n = Math.floor(1e6 * (t - 1e3 * e));\n return new it(e, n);\n }\n /**\n * Converts a `Timestamp` to a JavaScript `Date` object. This conversion\n * causes a loss of precision since `Date` objects only support millisecond\n * precision.\n *\n * @returns JavaScript `Date` object representing the same point in time as\n * this `Timestamp`, with millisecond precision.\n */ toDate() {\n return new Date(this.toMillis());\n }\n /**\n * Converts a `Timestamp` to a numeric timestamp (in milliseconds since\n * epoch). This operation causes a loss of precision.\n *\n * @returns The point in time corresponding to this timestamp, represented as\n * the number of milliseconds since Unix epoch 1970-01-01T00:00:00Z.\n */ toMillis() {\n return 1e3 * this.seconds + this.nanoseconds / 1e6;\n }\n _compareTo(t) {\n return this.seconds === t.seconds ? et(this.nanoseconds, t.nanoseconds) : et(this.seconds, t.seconds);\n }\n /**\n * Returns true if this `Timestamp` is equal to the provided one.\n *\n * @param other - The `Timestamp` to compare against.\n * @returns true if this `Timestamp` is equal to the provided one.\n */ isEqual(t) {\n return t.seconds === this.seconds && t.nanoseconds === this.nanoseconds;\n }\n /** Returns a textual representation of this `Timestamp`. */ toString() {\n return \"Timestamp(seconds=\" + this.seconds + \", nanoseconds=\" + this.nanoseconds + \")\";\n }\n /** Returns a JSON-serializable representation of this `Timestamp`. */ toJSON() {\n return {\n seconds: this.seconds,\n nanoseconds: this.nanoseconds\n };\n }\n /**\n * Converts this object to a primitive string, which allows `Timestamp` objects\n * to be compared using the `>`, `<=`, `>=` and `>` operators.\n */ valueOf() {\n // This method returns a string of the form . where\n // is translated to have a non-negative value and both \n // and are left-padded with zeroes to be a consistent length.\n // Strings with this format then have a lexiographical ordering that matches\n // the expected ordering. The translation is done to avoid having\n // a leading negative sign (i.e. a leading '-' character) in its string\n // representation, which would affect its lexiographical ordering.\n const t = this.seconds - -62135596800;\n // Note: Up to 12 decimal digits are required to represent all valid\n // 'seconds' values.\n return String(t).padStart(12, \"0\") + \".\" + String(this.nanoseconds).padStart(9, \"0\");\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A version of a document in Firestore. This corresponds to the version\n * timestamp, such as update_time or read_time.\n */ class rt {\n constructor(t) {\n this.timestamp = t;\n }\n static fromTimestamp(t) {\n return new rt(t);\n }\n static min() {\n return new rt(new it(0, 0));\n }\n static max() {\n return new rt(new it(253402300799, 999999999));\n }\n compareTo(t) {\n return this.timestamp._compareTo(t.timestamp);\n }\n isEqual(t) {\n return this.timestamp.isEqual(t.timestamp);\n }\n /** Returns a number representation of the version for use in spec tests. */ toMicroseconds() {\n // Convert to microseconds.\n return 1e6 * this.timestamp.seconds + this.timestamp.nanoseconds / 1e3;\n }\n toString() {\n return \"SnapshotVersion(\" + this.timestamp.toString() + \")\";\n }\n toTimestamp() {\n return this.timestamp;\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Path represents an ordered sequence of string segments.\n */\nclass ot {\n constructor(t, e, n) {\n void 0 === e ? e = 0 : e > t.length && O(), void 0 === n ? n = t.length - e : n > t.length - e && O(), \n this.segments = t, this.offset = e, this.len = n;\n }\n get length() {\n return this.len;\n }\n isEqual(t) {\n return 0 === ot.comparator(this, t);\n }\n child(t) {\n const e = this.segments.slice(this.offset, this.limit());\n return t instanceof ot ? t.forEach((t => {\n e.push(t);\n })) : e.push(t), this.construct(e);\n }\n /** The index of one past the last segment of the path. */ limit() {\n return this.offset + this.length;\n }\n popFirst(t) {\n return t = void 0 === t ? 1 : t, this.construct(this.segments, this.offset + t, this.length - t);\n }\n popLast() {\n return this.construct(this.segments, this.offset, this.length - 1);\n }\n firstSegment() {\n return this.segments[this.offset];\n }\n lastSegment() {\n return this.get(this.length - 1);\n }\n get(t) {\n return this.segments[this.offset + t];\n }\n isEmpty() {\n return 0 === this.length;\n }\n isPrefixOf(t) {\n if (t.length < this.length) return !1;\n for (let e = 0; e < this.length; e++) if (this.get(e) !== t.get(e)) return !1;\n return !0;\n }\n isImmediateParentOf(t) {\n if (this.length + 1 !== t.length) return !1;\n for (let e = 0; e < this.length; e++) if (this.get(e) !== t.get(e)) return !1;\n return !0;\n }\n forEach(t) {\n for (let e = this.offset, n = this.limit(); e < n; e++) t(this.segments[e]);\n }\n toArray() {\n return this.segments.slice(this.offset, this.limit());\n }\n static comparator(t, e) {\n const n = Math.min(t.length, e.length);\n for (let s = 0; s < n; s++) {\n const n = t.get(s), i = e.get(s);\n if (n < i) return -1;\n if (n > i) return 1;\n }\n return t.length < e.length ? -1 : t.length > e.length ? 1 : 0;\n }\n}\n\n/**\n * A slash-separated path for navigating resources (documents and collections)\n * within Firestore.\n *\n * @internal\n */ class ut extends ot {\n construct(t, e, n) {\n return new ut(t, e, n);\n }\n canonicalString() {\n // NOTE: The client is ignorant of any path segments containing escape\n // sequences (e.g. __id123__) and just passes them through raw (they exist\n // for legacy reasons and should not be used frequently).\n return this.toArray().join(\"/\");\n }\n toString() {\n return this.canonicalString();\n }\n /**\n * Creates a resource path from the given slash-delimited string. If multiple\n * arguments are provided, all components are combined. Leading and trailing\n * slashes from all components are ignored.\n */ static fromString(...t) {\n // NOTE: The client is ignorant of any path segments containing escape\n // sequences (e.g. __id123__) and just passes them through raw (they exist\n // for legacy reasons and should not be used frequently).\n const e = [];\n for (const n of t) {\n if (n.indexOf(\"//\") >= 0) throw new U(q.INVALID_ARGUMENT, `Invalid segment (${n}). Paths must not contain // in them.`);\n // Strip leading and traling slashed.\n e.push(...n.split(\"/\").filter((t => t.length > 0)));\n }\n return new ut(e);\n }\n static emptyPath() {\n return new ut([]);\n }\n}\n\nconst ct = /^[_a-zA-Z][_a-zA-Z0-9]*$/;\n\n/**\n * A dot-separated path for navigating sub-objects within a document.\n * @internal\n */ class at extends ot {\n construct(t, e, n) {\n return new at(t, e, n);\n }\n /**\n * Returns true if the string could be used as a segment in a field path\n * without escaping.\n */ static isValidIdentifier(t) {\n return ct.test(t);\n }\n canonicalString() {\n return this.toArray().map((t => (t = t.replace(/\\\\/g, \"\\\\\\\\\").replace(/`/g, \"\\\\`\"), \n at.isValidIdentifier(t) || (t = \"`\" + t + \"`\"), t))).join(\".\");\n }\n toString() {\n return this.canonicalString();\n }\n /**\n * Returns true if this field references the key of a document.\n */ isKeyField() {\n return 1 === this.length && \"__name__\" === this.get(0);\n }\n /**\n * The field designating the key of a document.\n */ static keyField() {\n return new at([ \"__name__\" ]);\n }\n /**\n * Parses a field string from the given server-formatted string.\n *\n * - Splitting the empty string is not allowed (for now at least).\n * - Empty segments within the string (e.g. if there are two consecutive\n * separators) are not allowed.\n *\n * TODO(b/37244157): we should make this more strict. Right now, it allows\n * non-identifier path components, even if they aren't escaped.\n */ static fromServerFormat(t) {\n const e = [];\n let n = \"\", s = 0;\n const i = () => {\n if (0 === n.length) throw new U(q.INVALID_ARGUMENT, `Invalid field path (${t}). Paths must not be empty, begin with '.', end with '.', or contain '..'`);\n e.push(n), n = \"\";\n };\n let r = !1;\n for (;s < t.length; ) {\n const e = t[s];\n if (\"\\\\\" === e) {\n if (s + 1 === t.length) throw new U(q.INVALID_ARGUMENT, \"Path has trailing escape character: \" + t);\n const e = t[s + 1];\n if (\"\\\\\" !== e && \".\" !== e && \"`\" !== e) throw new U(q.INVALID_ARGUMENT, \"Path has invalid escape sequence: \" + t);\n n += e, s += 2;\n } else \"`\" === e ? (r = !r, s++) : \".\" !== e || r ? (n += e, s++) : (i(), s++);\n }\n if (i(), r) throw new U(q.INVALID_ARGUMENT, \"Unterminated ` in path: \" + t);\n return new at(e);\n }\n static emptyPath() {\n return new at([]);\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @internal\n */ class ht {\n constructor(t) {\n this.path = t;\n }\n static fromPath(t) {\n return new ht(ut.fromString(t));\n }\n static fromName(t) {\n return new ht(ut.fromString(t).popFirst(5));\n }\n static empty() {\n return new ht(ut.emptyPath());\n }\n get collectionGroup() {\n return this.path.popLast().lastSegment();\n }\n /** Returns true if the document is in the specified collectionId. */ hasCollectionId(t) {\n return this.path.length >= 2 && this.path.get(this.path.length - 2) === t;\n }\n /** Returns the collection group (i.e. the name of the parent collection) for this key. */ getCollectionGroup() {\n return this.path.get(this.path.length - 2);\n }\n /** Returns the fully qualified path to the parent collection. */ getCollectionPath() {\n return this.path.popLast();\n }\n isEqual(t) {\n return null !== t && 0 === ut.comparator(this.path, t.path);\n }\n toString() {\n return this.path.toString();\n }\n static comparator(t, e) {\n return ut.comparator(t.path, e.path);\n }\n static isDocumentKey(t) {\n return t.length % 2 == 0;\n }\n /**\n * Creates and returns a new document key with the given segments.\n *\n * @param segments - The segments of the path to the document\n * @returns A new instance of DocumentKey\n */ static fromSegments(t) {\n return new ht(new ut(t.slice()));\n }\n}\n\n/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * The initial mutation batch id for each index. Gets updated during index\n * backfill.\n */\n/**\n * An index definition for field indexes in Firestore.\n *\n * Every index is associated with a collection. The definition contains a list\n * of fields and their index kind (which can be `ASCENDING`, `DESCENDING` or\n * `CONTAINS` for ArrayContains/ArrayContainsAny queries).\n *\n * Unlike the backend, the SDK does not differentiate between collection or\n * collection group-scoped indices. Every index can be used for both single\n * collection and collection group queries.\n */\nclass lt {\n constructor(\n /**\n * The index ID. Returns -1 if the index ID is not available (e.g. the index\n * has not yet been persisted).\n */\n t, \n /** The collection ID this index applies to. */\n e, \n /** The field segments for this index. */\n n, \n /** Shows how up-to-date the index is for the current user. */\n s) {\n this.indexId = t, this.collectionGroup = e, this.fields = n, this.indexState = s;\n }\n}\n\n/** An ID for an index that has not yet been added to persistence. */\n/** Returns the ArrayContains/ArrayContainsAny segment for this index. */\nfunction ft(t) {\n return t.fields.find((t => 2 /* IndexKind.CONTAINS */ === t.kind));\n}\n\n/** Returns all directional (ascending/descending) segments for this index. */ function dt(t) {\n return t.fields.filter((t => 2 /* IndexKind.CONTAINS */ !== t.kind));\n}\n\n/**\n * Returns the order of the document key component for the given index.\n *\n * PORTING NOTE: This is only used in the Web IndexedDb implementation.\n */\n/**\n * Compares indexes by collection group and segments. Ignores update time and\n * index ID.\n */\nfunction wt(t, e) {\n let n = et(t.collectionGroup, e.collectionGroup);\n if (0 !== n) return n;\n for (let s = 0; s < Math.min(t.fields.length, e.fields.length); ++s) if (n = mt(t.fields[s], e.fields[s]), \n 0 !== n) return n;\n return et(t.fields.length, e.fields.length);\n}\n\n/** Returns a debug representation of the field index */ lt.UNKNOWN_ID = -1;\n\n/** An index component consisting of field path and index type. */\nclass _t {\n constructor(\n /** The field path of the component. */\n t, \n /** The fields sorting order. */\n e) {\n this.fieldPath = t, this.kind = e;\n }\n}\n\nfunction mt(t, e) {\n const n = at.comparator(t.fieldPath, e.fieldPath);\n return 0 !== n ? n : et(t.kind, e.kind);\n}\n\n/**\n * Stores the \"high water mark\" that indicates how updated the Index is for the\n * current user.\n */ class gt {\n constructor(\n /**\n * Indicates when the index was last updated (relative to other indexes).\n */\n t, \n /** The the latest indexed read time, document and batch id. */\n e) {\n this.sequenceNumber = t, this.offset = e;\n }\n /** The state of an index that has not yet been backfilled. */ static empty() {\n return new gt(0, It.min());\n }\n}\n\n/**\n * Creates an offset that matches all documents with a read time higher than\n * `readTime`.\n */ function yt(t, e) {\n // We want to create an offset that matches all documents with a read time\n // greater than the provided read time. To do so, we technically need to\n // create an offset for `(readTime, MAX_DOCUMENT_KEY)`. While we could use\n // Unicode codepoints to generate MAX_DOCUMENT_KEY, it is much easier to use\n // `(readTime + 1, DocumentKey.empty())` since `> DocumentKey.empty()` matches\n // all valid document IDs.\n const n = t.toTimestamp().seconds, s = t.toTimestamp().nanoseconds + 1, i = rt.fromTimestamp(1e9 === s ? new it(n + 1, 0) : new it(n, s));\n return new It(i, ht.empty(), e);\n}\n\n/** Creates a new offset based on the provided document. */ function pt(t) {\n return new It(t.readTime, t.key, -1);\n}\n\n/**\n * Stores the latest read time, document and batch ID that were processed for an\n * index.\n */ class It {\n constructor(\n /**\n * The latest read time version that has been indexed by Firestore for this\n * field index.\n */\n t, \n /**\n * The key of the last document that was indexed for this query. Use\n * `DocumentKey.empty()` if no document has been indexed.\n */\n e, \n /*\n * The largest mutation batch id that's been processed by Firestore.\n */\n n) {\n this.readTime = t, this.documentKey = e, this.largestBatchId = n;\n }\n /** Returns an offset that sorts before all regular offsets. */ static min() {\n return new It(rt.min(), ht.empty(), -1);\n }\n /** Returns an offset that sorts after all regular offsets. */ static max() {\n return new It(rt.max(), ht.empty(), -1);\n }\n}\n\nfunction Tt(t, e) {\n let n = t.readTime.compareTo(e.readTime);\n return 0 !== n ? n : (n = ht.comparator(t.documentKey, e.documentKey), 0 !== n ? n : et(t.largestBatchId, e.largestBatchId));\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */ const Et = \"The current tab is not in the required state to perform this operation. It might be necessary to refresh the browser tab.\";\n\n/**\n * A base class representing a persistence transaction, encapsulating both the\n * transaction's sequence numbers as well as a list of onCommitted listeners.\n *\n * When you call Persistence.runTransaction(), it will create a transaction and\n * pass it to your callback. You then pass it to any method that operates\n * on persistence.\n */ class At {\n constructor() {\n this.onCommittedListeners = [];\n }\n addOnCommittedListener(t) {\n this.onCommittedListeners.push(t);\n }\n raiseOnCommittedEvent() {\n this.onCommittedListeners.forEach((t => t()));\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Verifies the error thrown by a LocalStore operation. If a LocalStore\n * operation fails because the primary lease has been taken by another client,\n * we ignore the error (the persistence layer will immediately call\n * `applyPrimaryLease` to propagate the primary state change). All other errors\n * are re-thrown.\n *\n * @param err - An error returned by a LocalStore operation.\n * @returns A Promise that resolves after we recovered, or the original error.\n */ async function vt(t) {\n if (t.code !== q.FAILED_PRECONDITION || t.message !== Et) throw t;\n N(\"LocalStore\", \"Unexpectedly lost primary lease\");\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * PersistencePromise is essentially a re-implementation of Promise except\n * it has a .next() method instead of .then() and .next() and .catch() callbacks\n * are executed synchronously when a PersistencePromise resolves rather than\n * asynchronously (Promise implementations use setImmediate() or similar).\n *\n * This is necessary to interoperate with IndexedDB which will automatically\n * commit transactions if control is returned to the event loop without\n * synchronously initiating another operation on the transaction.\n *\n * NOTE: .then() and .catch() only allow a single consumer, unlike normal\n * Promises.\n */ class Rt {\n constructor(t) {\n // NOTE: next/catchCallback will always point to our own wrapper functions,\n // not the user's raw next() or catch() callbacks.\n this.nextCallback = null, this.catchCallback = null, \n // When the operation resolves, we'll set result or error and mark isDone.\n this.result = void 0, this.error = void 0, this.isDone = !1, \n // Set to true when .then() or .catch() are called and prevents additional\n // chaining.\n this.callbackAttached = !1, t((t => {\n this.isDone = !0, this.result = t, this.nextCallback && \n // value should be defined unless T is Void, but we can't express\n // that in the type system.\n this.nextCallback(t);\n }), (t => {\n this.isDone = !0, this.error = t, this.catchCallback && this.catchCallback(t);\n }));\n }\n catch(t) {\n return this.next(void 0, t);\n }\n next(t, e) {\n return this.callbackAttached && O(), this.callbackAttached = !0, this.isDone ? this.error ? this.wrapFailure(e, this.error) : this.wrapSuccess(t, this.result) : new Rt(((n, s) => {\n this.nextCallback = e => {\n this.wrapSuccess(t, e).next(n, s);\n }, this.catchCallback = t => {\n this.wrapFailure(e, t).next(n, s);\n };\n }));\n }\n toPromise() {\n return new Promise(((t, e) => {\n this.next(t, e);\n }));\n }\n wrapUserFunction(t) {\n try {\n const e = t();\n return e instanceof Rt ? e : Rt.resolve(e);\n } catch (t) {\n return Rt.reject(t);\n }\n }\n wrapSuccess(t, e) {\n return t ? this.wrapUserFunction((() => t(e))) : Rt.resolve(e);\n }\n wrapFailure(t, e) {\n return t ? this.wrapUserFunction((() => t(e))) : Rt.reject(e);\n }\n static resolve(t) {\n return new Rt(((e, n) => {\n e(t);\n }));\n }\n static reject(t) {\n return new Rt(((e, n) => {\n n(t);\n }));\n }\n static waitFor(\n // Accept all Promise types in waitFor().\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n t) {\n return new Rt(((e, n) => {\n let s = 0, i = 0, r = !1;\n t.forEach((t => {\n ++s, t.next((() => {\n ++i, r && i === s && e();\n }), (t => n(t)));\n })), r = !0, i === s && e();\n }));\n }\n /**\n * Given an array of predicate functions that asynchronously evaluate to a\n * boolean, implements a short-circuiting `or` between the results. Predicates\n * will be evaluated until one of them returns `true`, then stop. The final\n * result will be whether any of them returned `true`.\n */ static or(t) {\n let e = Rt.resolve(!1);\n for (const n of t) e = e.next((t => t ? Rt.resolve(t) : n()));\n return e;\n }\n static forEach(t, e) {\n const n = [];\n return t.forEach(((t, s) => {\n n.push(e.call(this, t, s));\n })), this.waitFor(n);\n }\n /**\n * Concurrently map all array elements through asynchronous function.\n */ static mapArray(t, e) {\n return new Rt(((n, s) => {\n const i = t.length, r = new Array(i);\n let o = 0;\n for (let u = 0; u < i; u++) {\n const c = u;\n e(t[c]).next((t => {\n r[c] = t, ++o, o === i && n(r);\n }), (t => s(t)));\n }\n }));\n }\n /**\n * An alternative to recursive PersistencePromise calls, that avoids\n * potential memory problems from unbounded chains of promises.\n *\n * The `action` will be called repeatedly while `condition` is true.\n */ static doWhile(t, e) {\n return new Rt(((n, s) => {\n const i = () => {\n !0 === t() ? e().next((() => {\n i();\n }), s) : n();\n };\n i();\n }));\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// References to `window` are guarded by SimpleDb.isAvailable()\n/* eslint-disable no-restricted-globals */\n/**\n * Wraps an IDBTransaction and exposes a store() method to get a handle to a\n * specific object store.\n */\nclass Pt {\n constructor(t, e) {\n this.action = t, this.transaction = e, this.aborted = !1, \n /**\n * A `Promise` that resolves with the result of the IndexedDb transaction.\n */\n this.v = new K, this.transaction.oncomplete = () => {\n this.v.resolve();\n }, this.transaction.onabort = () => {\n e.error ? this.v.reject(new St(t, e.error)) : this.v.resolve();\n }, this.transaction.onerror = e => {\n const n = kt(e.target.error);\n this.v.reject(new St(t, n));\n };\n }\n static open(t, e, n, s) {\n try {\n return new Pt(e, t.transaction(s, n));\n } catch (t) {\n throw new St(e, t);\n }\n }\n get R() {\n return this.v.promise;\n }\n abort(t) {\n t && this.v.reject(t), this.aborted || (N(\"SimpleDb\", \"Aborting transaction:\", t ? t.message : \"Client-initiated abort\"), \n this.aborted = !0, this.transaction.abort());\n }\n P() {\n // If the browser supports V3 IndexedDB, we invoke commit() explicitly to\n // speed up index DB processing if the event loop remains blocks.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const t = this.transaction;\n this.aborted || \"function\" != typeof t.commit || t.commit();\n }\n /**\n * Returns a SimpleDbStore for the specified store. All\n * operations performed on the SimpleDbStore happen within the context of this\n * transaction and it cannot be used anymore once the transaction is\n * completed.\n *\n * Note that we can't actually enforce that the KeyType and ValueType are\n * correct, but they allow type safety through the rest of the consuming code.\n */ store(t) {\n const e = this.transaction.objectStore(t);\n return new Ct(e);\n }\n}\n\n/**\n * Provides a wrapper around IndexedDb with a simplified interface that uses\n * Promise-like return values to chain operations. Real promises cannot be used\n * since .then() continuations are executed asynchronously (e.g. via\n * .setImmediate), which would cause IndexedDB to end the transaction.\n * See PersistencePromise for more details.\n */ class bt {\n /*\n * Creates a new SimpleDb wrapper for IndexedDb database `name`.\n *\n * Note that `version` must not be a downgrade. IndexedDB does not support\n * downgrading the schema version. We currently do not support any way to do\n * versioning outside of IndexedDB's versioning mechanism, as only\n * version-upgrade transactions are allowed to do things like create\n * objectstores.\n */\n constructor(t, e, n) {\n this.name = t, this.version = e, this.V = n;\n // NOTE: According to https://bugs.webkit.org/show_bug.cgi?id=197050, the\n // bug we're checking for should exist in iOS >= 12.2 and < 13, but for\n // whatever reason it's much harder to hit after 12.2 so we only proactively\n // log on 12.2.\n 12.2 === bt.S(getUA()) && k(\"Firestore persistence suffers from a bug in iOS 12.2 Safari that may cause your app to stop working. See https://stackoverflow.com/q/56496296/110915 for details and a potential workaround.\");\n }\n /** Deletes the specified database. */ static delete(t) {\n return N(\"SimpleDb\", \"Removing database:\", t), xt(window.indexedDB.deleteDatabase(t)).toPromise();\n }\n /** Returns true if IndexedDB is available in the current environment. */ static D() {\n if (!isIndexedDBAvailable()) return !1;\n if (bt.C()) return !0;\n // We extensively use indexed array values and compound keys,\n // which IE and Edge do not support. However, they still have indexedDB\n // defined on the window, so we need to check for them here and make sure\n // to return that persistence is not enabled for those browsers.\n // For tracking support of this feature, see here:\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/status/indexeddbarraysandmultientrysupport/\n // Check the UA string to find out the browser.\n const t = getUA(), e = bt.S(t), n = 0 < e && e < 10, s = bt.N(t), i = 0 < s && s < 4.5;\n // IE 10\n // ua = 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)';\n // IE 11\n // ua = 'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko';\n // Edge\n // ua = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML,\n // like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0';\n // iOS Safari: Disable for users running iOS version < 10.\n return !(t.indexOf(\"MSIE \") > 0 || t.indexOf(\"Trident/\") > 0 || t.indexOf(\"Edge/\") > 0 || n || i);\n }\n /**\n * Returns true if the backing IndexedDB store is the Node IndexedDBShim\n * (see https://github.com/axemclion/IndexedDBShim).\n */ static C() {\n var t;\n return \"undefined\" != typeof process && \"YES\" === (null === (t = process.env) || void 0 === t ? void 0 : t.k);\n }\n /** Helper to get a typed SimpleDbStore from a transaction. */ static M(t, e) {\n return t.store(e);\n }\n // visible for testing\n /** Parse User Agent to determine iOS version. Returns -1 if not found. */\n static S(t) {\n const e = t.match(/i(?:phone|pad|pod) os ([\\d_]+)/i), n = e ? e[1].split(\"_\").slice(0, 2).join(\".\") : \"-1\";\n return Number(n);\n }\n // visible for testing\n /** Parse User Agent to determine Android version. Returns -1 if not found. */\n static N(t) {\n const e = t.match(/Android ([\\d.]+)/i), n = e ? e[1].split(\".\").slice(0, 2).join(\".\") : \"-1\";\n return Number(n);\n }\n /**\n * Opens the specified database, creating or upgrading it if necessary.\n */ async $(t) {\n return this.db || (N(\"SimpleDb\", \"Opening database:\", this.name), this.db = await new Promise(((e, n) => {\n // TODO(mikelehen): Investigate browser compatibility.\n // https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API/Using_IndexedDB\n // suggests IE9 and older WebKit browsers handle upgrade\n // differently. They expect setVersion, as described here:\n // https://developer.mozilla.org/en-US/docs/Web/API/IDBVersionChangeRequest/setVersion\n const s = indexedDB.open(this.name, this.version);\n s.onsuccess = t => {\n const n = t.target.result;\n e(n);\n }, s.onblocked = () => {\n n(new St(t, \"Cannot upgrade IndexedDB schema while another tab is open. Close all tabs that access Firestore and reload this page to proceed.\"));\n }, s.onerror = e => {\n const s = e.target.error;\n \"VersionError\" === s.name ? n(new U(q.FAILED_PRECONDITION, \"A newer version of the Firestore SDK was previously used and so the persisted data is not compatible with the version of the SDK you are now using. The SDK will operate with persistence disabled. If you need persistence, please re-upgrade to a newer version of the SDK or else clear the persisted IndexedDB data for your app to start fresh.\")) : \"InvalidStateError\" === s.name ? n(new U(q.FAILED_PRECONDITION, \"Unable to open an IndexedDB connection. This could be due to running in a private browsing session on a browser whose private browsing sessions do not support IndexedDB: \" + s)) : n(new St(t, s));\n }, s.onupgradeneeded = t => {\n N(\"SimpleDb\", 'Database \"' + this.name + '\" requires upgrade from version:', t.oldVersion);\n const e = t.target.result;\n this.V.O(e, s.transaction, t.oldVersion, this.version).next((() => {\n N(\"SimpleDb\", \"Database upgrade to version \" + this.version + \" complete\");\n }));\n };\n }))), this.F && (this.db.onversionchange = t => this.F(t)), this.db;\n }\n B(t) {\n this.F = t, this.db && (this.db.onversionchange = e => t(e));\n }\n async runTransaction(t, e, n, s) {\n const i = \"readonly\" === e;\n let r = 0;\n for (;;) {\n ++r;\n try {\n this.db = await this.$(t);\n const e = Pt.open(this.db, t, i ? \"readonly\" : \"readwrite\", n), r = s(e).next((t => (e.P(), \n t))).catch((t => (\n // Abort the transaction if there was an error.\n e.abort(t), Rt.reject(t)))).toPromise();\n // As noted above, errors are propagated by aborting the transaction. So\n // we swallow any error here to avoid the browser logging it as unhandled.\n return r.catch((() => {})), \n // Wait for the transaction to complete (i.e. IndexedDb's onsuccess event to\n // fire), but still return the original transactionFnResult back to the\n // caller.\n await e.R, r;\n } catch (t) {\n const e = t, n = \"FirebaseError\" !== e.name && r < 3;\n // TODO(schmidt-sebastian): We could probably be smarter about this and\n // not retry exceptions that are likely unrecoverable (such as quota\n // exceeded errors).\n // Note: We cannot use an instanceof check for FirestoreException, since the\n // exception is wrapped in a generic error by our async/await handling.\n if (N(\"SimpleDb\", \"Transaction failed with error:\", e.message, \"Retrying:\", n), \n this.close(), !n) return Promise.reject(e);\n }\n }\n }\n close() {\n this.db && this.db.close(), this.db = void 0;\n }\n}\n\n/**\n * A controller for iterating over a key range or index. It allows an iterate\n * callback to delete the currently-referenced object, or jump to a new key\n * within the key range or index.\n */ class Vt {\n constructor(t) {\n this.L = t, this.q = !1, this.U = null;\n }\n get isDone() {\n return this.q;\n }\n get K() {\n return this.U;\n }\n set cursor(t) {\n this.L = t;\n }\n /**\n * This function can be called to stop iteration at any point.\n */ done() {\n this.q = !0;\n }\n /**\n * This function can be called to skip to that next key, which could be\n * an index or a primary key.\n */ G(t) {\n this.U = t;\n }\n /**\n * Delete the current cursor value from the object store.\n *\n * NOTE: You CANNOT do this with a keysOnly query.\n */ delete() {\n return xt(this.L.delete());\n }\n}\n\n/** An error that wraps exceptions that thrown during IndexedDB execution. */ class St extends U {\n constructor(t, e) {\n super(q.UNAVAILABLE, `IndexedDB transaction '${t}' failed: ${e}`), this.name = \"IndexedDbTransactionError\";\n }\n}\n\n/** Verifies whether `e` is an IndexedDbTransactionError. */ function Dt(t) {\n // Use name equality, as instanceof checks on errors don't work with errors\n // that wrap other errors.\n return \"IndexedDbTransactionError\" === t.name;\n}\n\n/**\n * A wrapper around an IDBObjectStore providing an API that:\n *\n * 1) Has generic KeyType / ValueType parameters to provide strongly-typed\n * methods for acting against the object store.\n * 2) Deals with IndexedDB's onsuccess / onerror event callbacks, making every\n * method return a PersistencePromise instead.\n * 3) Provides a higher-level API to avoid needing to do excessive wrapping of\n * intermediate IndexedDB types (IDBCursorWithValue, etc.)\n */ class Ct {\n constructor(t) {\n this.store = t;\n }\n put(t, e) {\n let n;\n return void 0 !== e ? (N(\"SimpleDb\", \"PUT\", this.store.name, t, e), n = this.store.put(e, t)) : (N(\"SimpleDb\", \"PUT\", this.store.name, \"\", t), \n n = this.store.put(t)), xt(n);\n }\n /**\n * Adds a new value into an Object Store and returns the new key. Similar to\n * IndexedDb's `add()`, this method will fail on primary key collisions.\n *\n * @param value - The object to write.\n * @returns The key of the value to add.\n */ add(t) {\n N(\"SimpleDb\", \"ADD\", this.store.name, t, t);\n return xt(this.store.add(t));\n }\n /**\n * Gets the object with the specified key from the specified store, or null\n * if no object exists with the specified key.\n *\n * @key The key of the object to get.\n * @returns The object with the specified key or null if no object exists.\n */ get(t) {\n // We're doing an unsafe cast to ValueType.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return xt(this.store.get(t)).next((e => (\n // Normalize nonexistence to null.\n void 0 === e && (e = null), N(\"SimpleDb\", \"GET\", this.store.name, t, e), e)));\n }\n delete(t) {\n N(\"SimpleDb\", \"DELETE\", this.store.name, t);\n return xt(this.store.delete(t));\n }\n /**\n * If we ever need more of the count variants, we can add overloads. For now,\n * all we need is to count everything in a store.\n *\n * Returns the number of rows in the store.\n */ count() {\n N(\"SimpleDb\", \"COUNT\", this.store.name);\n return xt(this.store.count());\n }\n j(t, e) {\n const n = this.options(t, e);\n // Use `getAll()` if the browser supports IndexedDB v3, as it is roughly\n // 20% faster. Unfortunately, getAll() does not support custom indices.\n if (n.index || \"function\" != typeof this.store.getAll) {\n const t = this.cursor(n), e = [];\n return this.W(t, ((t, n) => {\n e.push(n);\n })).next((() => e));\n }\n {\n const t = this.store.getAll(n.range);\n return new Rt(((e, n) => {\n t.onerror = t => {\n n(t.target.error);\n }, t.onsuccess = t => {\n e(t.target.result);\n };\n }));\n }\n }\n /**\n * Loads the first `count` elements from the provided index range. Loads all\n * elements if no limit is provided.\n */ H(t, e) {\n const n = this.store.getAll(t, null === e ? void 0 : e);\n return new Rt(((t, e) => {\n n.onerror = t => {\n e(t.target.error);\n }, n.onsuccess = e => {\n t(e.target.result);\n };\n }));\n }\n J(t, e) {\n N(\"SimpleDb\", \"DELETE ALL\", this.store.name);\n const n = this.options(t, e);\n n.Y = !1;\n const s = this.cursor(n);\n return this.W(s, ((t, e, n) => n.delete()));\n }\n X(t, e) {\n let n;\n e ? n = t : (n = {}, e = t);\n const s = this.cursor(n);\n return this.W(s, e);\n }\n /**\n * Iterates over a store, but waits for the given callback to complete for\n * each entry before iterating the next entry. This allows the callback to do\n * asynchronous work to determine if this iteration should continue.\n *\n * The provided callback should return `true` to continue iteration, and\n * `false` otherwise.\n */ Z(t) {\n const e = this.cursor({});\n return new Rt(((n, s) => {\n e.onerror = t => {\n const e = kt(t.target.error);\n s(e);\n }, e.onsuccess = e => {\n const s = e.target.result;\n s ? t(s.primaryKey, s.value).next((t => {\n t ? s.continue() : n();\n })) : n();\n };\n }));\n }\n W(t, e) {\n const n = [];\n return new Rt(((s, i) => {\n t.onerror = t => {\n i(t.target.error);\n }, t.onsuccess = t => {\n const i = t.target.result;\n if (!i) return void s();\n const r = new Vt(i), o = e(i.primaryKey, i.value, r);\n if (o instanceof Rt) {\n const t = o.catch((t => (r.done(), Rt.reject(t))));\n n.push(t);\n }\n r.isDone ? s() : null === r.K ? i.continue() : i.continue(r.K);\n };\n })).next((() => Rt.waitFor(n)));\n }\n options(t, e) {\n let n;\n return void 0 !== t && (\"string\" == typeof t ? n = t : e = t), {\n index: n,\n range: e\n };\n }\n cursor(t) {\n let e = \"next\";\n if (t.reverse && (e = \"prev\"), t.index) {\n const n = this.store.index(t.index);\n return t.Y ? n.openKeyCursor(t.range, e) : n.openCursor(t.range, e);\n }\n return this.store.openCursor(t.range, e);\n }\n}\n\n/**\n * Wraps an IDBRequest in a PersistencePromise, using the onsuccess / onerror\n * handlers to resolve / reject the PersistencePromise as appropriate.\n */ function xt(t) {\n return new Rt(((e, n) => {\n t.onsuccess = t => {\n const n = t.target.result;\n e(n);\n }, t.onerror = t => {\n const e = kt(t.target.error);\n n(e);\n };\n }));\n}\n\n// Guard so we only report the error once.\nlet Nt = !1;\n\nfunction kt(t) {\n const e = bt.S(getUA());\n if (e >= 12.2 && e < 13) {\n const e = \"An internal error was encountered in the Indexed Database server\";\n if (t.message.indexOf(e) >= 0) {\n // Wrap error in a more descriptive one.\n const t = new U(\"internal\", `IOS_INDEXEDDB_BUG1: IndexedDb has thrown '${e}'. This is likely due to an unavoidable bug in iOS. See https://stackoverflow.com/q/56496296/110915 for details and a potential workaround.`);\n return Nt || (Nt = !0, \n // Throw a global exception outside of this promise chain, for the user to\n // potentially catch.\n setTimeout((() => {\n throw t;\n }), 0)), t;\n }\n }\n return t;\n}\n\n/** This class is responsible for the scheduling of Index Backfiller. */\nclass Mt {\n constructor(t, e) {\n this.asyncQueue = t, this.tt = e, this.task = null;\n }\n start() {\n this.et(15e3);\n }\n stop() {\n this.task && (this.task.cancel(), this.task = null);\n }\n get started() {\n return null !== this.task;\n }\n et(t) {\n N(\"IndexBackiller\", `Scheduled in ${t}ms`), this.task = this.asyncQueue.enqueueAfterDelay(\"index_backfill\" /* TimerId.IndexBackfill */ , t, (async () => {\n this.task = null;\n try {\n N(\"IndexBackiller\", `Documents written: ${await this.tt.nt()}`);\n } catch (t) {\n Dt(t) ? N(\"IndexBackiller\", \"Ignoring IndexedDB error during index backfill: \", t) : await vt(t);\n }\n await this.et(6e4);\n }));\n }\n}\n\n/** Implements the steps for backfilling indexes. */ class $t {\n constructor(\n /**\n * LocalStore provides access to IndexManager and LocalDocumentView.\n * These properties will update when the user changes. Consequently,\n * making a local copy of IndexManager and LocalDocumentView will require\n * updates over time. The simpler solution is to rely on LocalStore to have\n * an up-to-date references to IndexManager and LocalDocumentStore.\n */\n t, e) {\n this.localStore = t, this.persistence = e;\n }\n async nt(t = 50) {\n return this.persistence.runTransaction(\"Backfill Indexes\", \"readwrite-primary\", (e => this.st(e, t)));\n }\n /** Writes index entries until the cap is reached. Returns the number of documents processed. */ st(t, e) {\n const n = new Set;\n let s = e, i = !0;\n return Rt.doWhile((() => !0 === i && s > 0), (() => this.localStore.indexManager.getNextCollectionGroupToUpdate(t).next((e => {\n if (null !== e && !n.has(e)) return N(\"IndexBackiller\", `Processing collection: ${e}`), \n this.it(t, e, s).next((t => {\n s -= t, n.add(e);\n }));\n i = !1;\n })))).next((() => e - s));\n }\n /**\n * Writes entries for the provided collection group. Returns the number of documents processed.\n */ it(t, e, n) {\n // Use the earliest offset of all field indexes to query the local cache.\n return this.localStore.indexManager.getMinOffsetFromCollectionGroup(t, e).next((s => this.localStore.localDocuments.getNextDocuments(t, e, s, n).next((n => {\n const i = n.changes;\n return this.localStore.indexManager.updateIndexEntries(t, i).next((() => this.rt(s, n))).next((n => (N(\"IndexBackiller\", `Updating offset: ${n}`), \n this.localStore.indexManager.updateCollectionGroup(t, e, n)))).next((() => i.size));\n }))));\n }\n /** Returns the next offset based on the provided documents. */ rt(t, e) {\n let n = t;\n return e.changes.forEach(((t, e) => {\n const s = pt(e);\n Tt(s, n) > 0 && (n = s);\n })), new It(n.readTime, n.documentKey, Math.max(e.batchId, t.largestBatchId));\n }\n}\n\n/**\n * @license\n * Copyright 2018 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * `ListenSequence` is a monotonic sequence. It is initialized with a minimum value to\n * exceed. All subsequent calls to next will return increasing values. If provided with a\n * `SequenceNumberSyncer`, it will additionally bump its next value when told of a new value, as\n * well as write out sequence numbers that it produces via `next()`.\n */ class Ot {\n constructor(t, e) {\n this.previousValue = t, e && (e.sequenceNumberHandler = t => this.ot(t), this.ut = t => e.writeSequenceNumber(t));\n }\n ot(t) {\n return this.previousValue = Math.max(t, this.previousValue), this.previousValue;\n }\n next() {\n const t = ++this.previousValue;\n return this.ut && this.ut(t), t;\n }\n}\n\nOt.ct = -1;\n\n/**\n * Returns whether a variable is either undefined or null.\n */\nfunction Ft(t) {\n return null == t;\n}\n\n/** Returns whether the value represents -0. */ function Bt(t) {\n // Detect if the value is -0.0. Based on polyfill from\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n return 0 === t && 1 / t == -1 / 0;\n}\n\n/**\n * Returns whether a value is an integer and in the safe integer range\n * @param value - The value to test for being an integer and in the safe range\n */ function Lt(t) {\n return \"number\" == typeof t && Number.isInteger(t) && !Bt(t) && t <= Number.MAX_SAFE_INTEGER && t >= Number.MIN_SAFE_INTEGER;\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Encodes a resource path into a IndexedDb-compatible string form.\n */\nfunction qt(t) {\n let e = \"\";\n for (let n = 0; n < t.length; n++) e.length > 0 && (e = Kt(e)), e = Ut(t.get(n), e);\n return Kt(e);\n}\n\n/** Encodes a single segment of a resource path into the given result */ function Ut(t, e) {\n let n = e;\n const s = t.length;\n for (let e = 0; e < s; e++) {\n const s = t.charAt(e);\n switch (s) {\n case \"\\0\":\n n += \"\u0001\u0010\";\n break;\n\n case \"\u0001\":\n n += \"\u0001\u0011\";\n break;\n\n default:\n n += s;\n }\n }\n return n;\n}\n\n/** Encodes a path separator into the given result */ function Kt(t) {\n return t + \"\u0001\u0001\";\n}\n\n/**\n * Decodes the given IndexedDb-compatible string form of a resource path into\n * a ResourcePath instance. Note that this method is not suitable for use with\n * decoding resource names from the server; those are One Platform format\n * strings.\n */ function Gt(t) {\n // Event the empty path must encode as a path of at least length 2. A path\n // with exactly 2 must be the empty path.\n const e = t.length;\n if (F(e >= 2), 2 === e) return F(\"\u0001\" === t.charAt(0) && \"\u0001\" === t.charAt(1)), ut.emptyPath();\n // Escape characters cannot exist past the second-to-last position in the\n // source value.\n const __PRIVATE_lastReasonableEscapeIndex = e - 2, n = [];\n let s = \"\";\n for (let i = 0; i < e; ) {\n // The last two characters of a valid encoded path must be a separator, so\n // there must be an end to this segment.\n const e = t.indexOf(\"\u0001\", i);\n (e < 0 || e > __PRIVATE_lastReasonableEscapeIndex) && O();\n switch (t.charAt(e + 1)) {\n case \"\u0001\":\n const r = t.substring(i, e);\n let o;\n 0 === s.length ? \n // Avoid copying for the common case of a segment that excludes \\0\n // and \\001\n o = r : (s += r, o = s, s = \"\"), n.push(o);\n break;\n\n case \"\u0010\":\n s += t.substring(i, e), s += \"\\0\";\n break;\n\n case \"\u0011\":\n // The escape character can be used in the output to encode itself.\n s += t.substring(i, e + 1);\n break;\n\n default:\n O();\n }\n i = e + 2;\n }\n return new ut(n);\n}\n\n/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */ const Qt = [ \"userId\", \"batchId\" ];\n\n/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Name of the IndexedDb object store.\n *\n * Note that the name 'owner' is chosen to ensure backwards compatibility with\n * older clients that only supported single locked access to the persistence\n * layer.\n */\n/**\n * Creates a [userId, encodedPath] key for use in the DbDocumentMutations\n * index to iterate over all at document mutations for a given path or lower.\n */\nfunction jt(t, e) {\n return [ t, qt(e) ];\n}\n\n/**\n * Creates a full index key of [userId, encodedPath, batchId] for inserting\n * and deleting into the DbDocumentMutations index.\n */ function zt(t, e, n) {\n return [ t, qt(e), n ];\n}\n\n/**\n * Because we store all the useful information for this store in the key,\n * there is no useful information to store as the value. The raw (unencoded)\n * path cannot be stored because IndexedDb doesn't store prototype\n * information.\n */ const Wt = {}, Ht = [ \"prefixPath\", \"collectionGroup\", \"readTime\", \"documentId\" ], Jt = [ \"prefixPath\", \"collectionGroup\", \"documentId\" ], Yt = [ \"collectionGroup\", \"readTime\", \"prefixPath\", \"documentId\" ], Xt = [ \"canonicalId\", \"targetId\" ], Zt = [ \"targetId\", \"path\" ], te = [ \"path\", \"targetId\" ], ee = [ \"collectionId\", \"parent\" ], ne = [ \"indexId\", \"uid\" ], se = [ \"uid\", \"sequenceNumber\" ], ie = [ \"indexId\", \"uid\", \"arrayValue\", \"directionalValue\", \"orderedDocumentKey\", \"documentKey\" ], re = [ \"indexId\", \"uid\", \"orderedDocumentKey\" ], oe = [ \"userId\", \"collectionPath\", \"documentId\" ], ue = [ \"userId\", \"collectionPath\", \"largestBatchId\" ], ce = [ \"userId\", \"collectionGroup\", \"largestBatchId\" ], ae = [ ...[ ...[ ...[ ...[ \"mutationQueues\", \"mutations\", \"documentMutations\", \"remoteDocuments\", \"targets\", \"owner\", \"targetGlobal\", \"targetDocuments\" ], \"clientMetadata\" ], \"remoteDocumentGlobal\" ], \"collectionParents\" ], \"bundles\", \"namedQueries\" ], he = [ ...ae, \"documentOverlays\" ], le = [ \"mutationQueues\", \"mutations\", \"documentMutations\", \"remoteDocumentsV14\", \"targets\", \"owner\", \"targetGlobal\", \"targetDocuments\", \"clientMetadata\", \"remoteDocumentGlobal\", \"collectionParents\", \"bundles\", \"namedQueries\", \"documentOverlays\" ], fe = le, de = [ ...fe, \"indexConfiguration\", \"indexState\", \"indexEntries\" ];\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nclass we extends At {\n constructor(t, e) {\n super(), this.ht = t, this.currentSequenceNumber = e;\n }\n}\n\nfunction _e(t, e) {\n const n = L(t);\n return bt.M(n.ht, e);\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */ function me(t) {\n let e = 0;\n for (const n in t) Object.prototype.hasOwnProperty.call(t, n) && e++;\n return e;\n}\n\nfunction ge(t, e) {\n for (const n in t) Object.prototype.hasOwnProperty.call(t, n) && e(n, t[n]);\n}\n\nfunction ye(t) {\n for (const e in t) if (Object.prototype.hasOwnProperty.call(t, e)) return !1;\n return !0;\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// An immutable sorted map implementation, based on a Left-leaning Red-Black\n// tree.\nclass pe {\n constructor(t, e) {\n this.comparator = t, this.root = e || Te.EMPTY;\n }\n // Returns a copy of the map, with the specified key/value added or replaced.\n insert(t, e) {\n return new pe(this.comparator, this.root.insert(t, e, this.comparator).copy(null, null, Te.BLACK, null, null));\n }\n // Returns a copy of the map, with the specified key removed.\n remove(t) {\n return new pe(this.comparator, this.root.remove(t, this.comparator).copy(null, null, Te.BLACK, null, null));\n }\n // Returns the value of the node with the given key, or null.\n get(t) {\n let e = this.root;\n for (;!e.isEmpty(); ) {\n const n = this.comparator(t, e.key);\n if (0 === n) return e.value;\n n < 0 ? e = e.left : n > 0 && (e = e.right);\n }\n return null;\n }\n // Returns the index of the element in this sorted map, or -1 if it doesn't\n // exist.\n indexOf(t) {\n // Number of nodes that were pruned when descending right\n let e = 0, n = this.root;\n for (;!n.isEmpty(); ) {\n const s = this.comparator(t, n.key);\n if (0 === s) return e + n.left.size;\n s < 0 ? n = n.left : (\n // Count all nodes left of the node plus the node itself\n e += n.left.size + 1, n = n.right);\n }\n // Node not found\n return -1;\n }\n isEmpty() {\n return this.root.isEmpty();\n }\n // Returns the total number of nodes in the map.\n get size() {\n return this.root.size;\n }\n // Returns the minimum key in the map.\n minKey() {\n return this.root.minKey();\n }\n // Returns the maximum key in the map.\n maxKey() {\n return this.root.maxKey();\n }\n // Traverses the map in key order and calls the specified action function\n // for each key/value pair. If action returns true, traversal is aborted.\n // Returns the first truthy value returned by action, or the last falsey\n // value returned by action.\n inorderTraversal(t) {\n return this.root.inorderTraversal(t);\n }\n forEach(t) {\n this.inorderTraversal(((e, n) => (t(e, n), !1)));\n }\n toString() {\n const t = [];\n return this.inorderTraversal(((e, n) => (t.push(`${e}:${n}`), !1))), `{${t.join(\", \")}}`;\n }\n // Traverses the map in reverse key order and calls the specified action\n // function for each key/value pair. If action returns true, traversal is\n // aborted.\n // Returns the first truthy value returned by action, or the last falsey\n // value returned by action.\n reverseTraversal(t) {\n return this.root.reverseTraversal(t);\n }\n // Returns an iterator over the SortedMap.\n getIterator() {\n return new Ie(this.root, null, this.comparator, !1);\n }\n getIteratorFrom(t) {\n return new Ie(this.root, t, this.comparator, !1);\n }\n getReverseIterator() {\n return new Ie(this.root, null, this.comparator, !0);\n }\n getReverseIteratorFrom(t) {\n return new Ie(this.root, t, this.comparator, !0);\n }\n}\n\n // end SortedMap\n// An iterator over an LLRBNode.\nclass Ie {\n constructor(t, e, n, s) {\n this.isReverse = s, this.nodeStack = [];\n let i = 1;\n for (;!t.isEmpty(); ) if (i = e ? n(t.key, e) : 1, \n // flip the comparison if we're going in reverse\n e && s && (i *= -1), i < 0) \n // This node is less than our start key. ignore it\n t = this.isReverse ? t.left : t.right; else {\n if (0 === i) {\n // This node is exactly equal to our start key. Push it on the stack,\n // but stop iterating;\n this.nodeStack.push(t);\n break;\n }\n // This node is greater than our start key, add it to the stack and move\n // to the next one\n this.nodeStack.push(t), t = this.isReverse ? t.right : t.left;\n }\n }\n getNext() {\n let t = this.nodeStack.pop();\n const e = {\n key: t.key,\n value: t.value\n };\n if (this.isReverse) for (t = t.left; !t.isEmpty(); ) this.nodeStack.push(t), t = t.right; else for (t = t.right; !t.isEmpty(); ) this.nodeStack.push(t), \n t = t.left;\n return e;\n }\n hasNext() {\n return this.nodeStack.length > 0;\n }\n peek() {\n if (0 === this.nodeStack.length) return null;\n const t = this.nodeStack[this.nodeStack.length - 1];\n return {\n key: t.key,\n value: t.value\n };\n }\n}\n\n // end SortedMapIterator\n// Represents a node in a Left-leaning Red-Black tree.\nclass Te {\n constructor(t, e, n, s, i) {\n this.key = t, this.value = e, this.color = null != n ? n : Te.RED, this.left = null != s ? s : Te.EMPTY, \n this.right = null != i ? i : Te.EMPTY, this.size = this.left.size + 1 + this.right.size;\n }\n // Returns a copy of the current node, optionally replacing pieces of it.\n copy(t, e, n, s, i) {\n return new Te(null != t ? t : this.key, null != e ? e : this.value, null != n ? n : this.color, null != s ? s : this.left, null != i ? i : this.right);\n }\n isEmpty() {\n return !1;\n }\n // Traverses the tree in key order and calls the specified action function\n // for each node. If action returns true, traversal is aborted.\n // Returns the first truthy value returned by action, or the last falsey\n // value returned by action.\n inorderTraversal(t) {\n return this.left.inorderTraversal(t) || t(this.key, this.value) || this.right.inorderTraversal(t);\n }\n // Traverses the tree in reverse key order and calls the specified action\n // function for each node. If action returns true, traversal is aborted.\n // Returns the first truthy value returned by action, or the last falsey\n // value returned by action.\n reverseTraversal(t) {\n return this.right.reverseTraversal(t) || t(this.key, this.value) || this.left.reverseTraversal(t);\n }\n // Returns the minimum node in the tree.\n min() {\n return this.left.isEmpty() ? this : this.left.min();\n }\n // Returns the maximum key in the tree.\n minKey() {\n return this.min().key;\n }\n // Returns the maximum key in the tree.\n maxKey() {\n return this.right.isEmpty() ? this.key : this.right.maxKey();\n }\n // Returns new tree, with the key/value added.\n insert(t, e, n) {\n let s = this;\n const i = n(t, s.key);\n return s = i < 0 ? s.copy(null, null, null, s.left.insert(t, e, n), null) : 0 === i ? s.copy(null, e, null, null, null) : s.copy(null, null, null, null, s.right.insert(t, e, n)), \n s.fixUp();\n }\n removeMin() {\n if (this.left.isEmpty()) return Te.EMPTY;\n let t = this;\n return t.left.isRed() || t.left.left.isRed() || (t = t.moveRedLeft()), t = t.copy(null, null, null, t.left.removeMin(), null), \n t.fixUp();\n }\n // Returns new tree, with the specified item removed.\n remove(t, e) {\n let n, s = this;\n if (e(t, s.key) < 0) s.left.isEmpty() || s.left.isRed() || s.left.left.isRed() || (s = s.moveRedLeft()), \n s = s.copy(null, null, null, s.left.remove(t, e), null); else {\n if (s.left.isRed() && (s = s.rotateRight()), s.right.isEmpty() || s.right.isRed() || s.right.left.isRed() || (s = s.moveRedRight()), \n 0 === e(t, s.key)) {\n if (s.right.isEmpty()) return Te.EMPTY;\n n = s.right.min(), s = s.copy(n.key, n.value, null, null, s.right.removeMin());\n }\n s = s.copy(null, null, null, null, s.right.remove(t, e));\n }\n return s.fixUp();\n }\n isRed() {\n return this.color;\n }\n // Returns new tree after performing any needed rotations.\n fixUp() {\n let t = this;\n return t.right.isRed() && !t.left.isRed() && (t = t.rotateLeft()), t.left.isRed() && t.left.left.isRed() && (t = t.rotateRight()), \n t.left.isRed() && t.right.isRed() && (t = t.colorFlip()), t;\n }\n moveRedLeft() {\n let t = this.colorFlip();\n return t.right.left.isRed() && (t = t.copy(null, null, null, null, t.right.rotateRight()), \n t = t.rotateLeft(), t = t.colorFlip()), t;\n }\n moveRedRight() {\n let t = this.colorFlip();\n return t.left.left.isRed() && (t = t.rotateRight(), t = t.colorFlip()), t;\n }\n rotateLeft() {\n const t = this.copy(null, null, Te.RED, null, this.right.left);\n return this.right.copy(null, null, this.color, t, null);\n }\n rotateRight() {\n const t = this.copy(null, null, Te.RED, this.left.right, null);\n return this.left.copy(null, null, this.color, null, t);\n }\n colorFlip() {\n const t = this.left.copy(null, null, !this.left.color, null, null), e = this.right.copy(null, null, !this.right.color, null, null);\n return this.copy(null, null, !this.color, t, e);\n }\n // For testing.\n checkMaxDepth() {\n const t = this.check();\n return Math.pow(2, t) <= this.size + 1;\n }\n // In a balanced RB tree, the black-depth (number of black nodes) from root to\n // leaves is equal on both sides. This function verifies that or asserts.\n check() {\n if (this.isRed() && this.left.isRed()) throw O();\n if (this.right.isRed()) throw O();\n const t = this.left.check();\n if (t !== this.right.check()) throw O();\n return t + (this.isRed() ? 0 : 1);\n }\n}\n\n // end LLRBNode\n// Empty node is shared between all LLRB trees.\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nTe.EMPTY = null, Te.RED = !0, Te.BLACK = !1;\n\n// end LLRBEmptyNode\nTe.EMPTY = new \n// Represents an empty node (a leaf node in the Red-Black Tree).\nclass {\n constructor() {\n this.size = 0;\n }\n get key() {\n throw O();\n }\n get value() {\n throw O();\n }\n get color() {\n throw O();\n }\n get left() {\n throw O();\n }\n get right() {\n throw O();\n }\n // Returns a copy of the current node.\n copy(t, e, n, s, i) {\n return this;\n }\n // Returns a copy of the tree, with the specified key/value added.\n insert(t, e, n) {\n return new Te(t, e);\n }\n // Returns a copy of the tree, with the specified key removed.\n remove(t, e) {\n return this;\n }\n isEmpty() {\n return !0;\n }\n inorderTraversal(t) {\n return !1;\n }\n reverseTraversal(t) {\n return !1;\n }\n minKey() {\n return null;\n }\n maxKey() {\n return null;\n }\n isRed() {\n return !1;\n }\n // For testing.\n checkMaxDepth() {\n return !0;\n }\n check() {\n return 0;\n }\n};\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * SortedSet is an immutable (copy-on-write) collection that holds elements\n * in order specified by the provided comparator.\n *\n * NOTE: if provided comparator returns 0 for two elements, we consider them to\n * be equal!\n */\nclass Ee {\n constructor(t) {\n this.comparator = t, this.data = new pe(this.comparator);\n }\n has(t) {\n return null !== this.data.get(t);\n }\n first() {\n return this.data.minKey();\n }\n last() {\n return this.data.maxKey();\n }\n get size() {\n return this.data.size;\n }\n indexOf(t) {\n return this.data.indexOf(t);\n }\n /** Iterates elements in order defined by \"comparator\" */ forEach(t) {\n this.data.inorderTraversal(((e, n) => (t(e), !1)));\n }\n /** Iterates over `elem`s such that: range[0] <= elem < range[1]. */ forEachInRange(t, e) {\n const n = this.data.getIteratorFrom(t[0]);\n for (;n.hasNext(); ) {\n const s = n.getNext();\n if (this.comparator(s.key, t[1]) >= 0) return;\n e(s.key);\n }\n }\n /**\n * Iterates over `elem`s such that: start <= elem until false is returned.\n */ forEachWhile(t, e) {\n let n;\n for (n = void 0 !== e ? this.data.getIteratorFrom(e) : this.data.getIterator(); n.hasNext(); ) {\n if (!t(n.getNext().key)) return;\n }\n }\n /** Finds the least element greater than or equal to `elem`. */ firstAfterOrEqual(t) {\n const e = this.data.getIteratorFrom(t);\n return e.hasNext() ? e.getNext().key : null;\n }\n getIterator() {\n return new Ae(this.data.getIterator());\n }\n getIteratorFrom(t) {\n return new Ae(this.data.getIteratorFrom(t));\n }\n /** Inserts or updates an element */ add(t) {\n return this.copy(this.data.remove(t).insert(t, !0));\n }\n /** Deletes an element */ delete(t) {\n return this.has(t) ? this.copy(this.data.remove(t)) : this;\n }\n isEmpty() {\n return this.data.isEmpty();\n }\n unionWith(t) {\n let e = this;\n // Make sure `result` always refers to the larger one of the two sets.\n return e.size < t.size && (e = t, t = this), t.forEach((t => {\n e = e.add(t);\n })), e;\n }\n isEqual(t) {\n if (!(t instanceof Ee)) return !1;\n if (this.size !== t.size) return !1;\n const e = this.data.getIterator(), n = t.data.getIterator();\n for (;e.hasNext(); ) {\n const t = e.getNext().key, s = n.getNext().key;\n if (0 !== this.comparator(t, s)) return !1;\n }\n return !0;\n }\n toArray() {\n const t = [];\n return this.forEach((e => {\n t.push(e);\n })), t;\n }\n toString() {\n const t = [];\n return this.forEach((e => t.push(e))), \"SortedSet(\" + t.toString() + \")\";\n }\n copy(t) {\n const e = new Ee(this.comparator);\n return e.data = t, e;\n }\n}\n\nclass Ae {\n constructor(t) {\n this.iter = t;\n }\n getNext() {\n return this.iter.getNext().key;\n }\n hasNext() {\n return this.iter.hasNext();\n }\n}\n\n/**\n * Compares two sorted sets for equality using their natural ordering. The\n * method computes the intersection and invokes `onAdd` for every element that\n * is in `after` but not `before`. `onRemove` is invoked for every element in\n * `before` but missing from `after`.\n *\n * The method creates a copy of both `before` and `after` and runs in O(n log\n * n), where n is the size of the two lists.\n *\n * @param before - The elements that exist in the original set.\n * @param after - The elements to diff against the original set.\n * @param comparator - The comparator for the elements in before and after.\n * @param onAdd - A function to invoke for every element that is part of `\n * after` but not `before`.\n * @param onRemove - A function to invoke for every element that is part of\n * `before` but not `after`.\n */\n/**\n * Returns the next element from the iterator or `undefined` if none available.\n */\nfunction ve(t) {\n return t.hasNext() ? t.getNext() : void 0;\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Provides a set of fields that can be used to partially patch a document.\n * FieldMask is used in conjunction with ObjectValue.\n * Examples:\n * foo - Overwrites foo entirely with the provided value. If foo is not\n * present in the companion ObjectValue, the field is deleted.\n * foo.bar - Overwrites only the field bar of the object foo.\n * If foo is not an object, foo is replaced with an object\n * containing foo\n */ class Re {\n constructor(t) {\n this.fields = t, \n // TODO(dimond): validation of FieldMask\n // Sort the field mask to support `FieldMask.isEqual()` and assert below.\n t.sort(at.comparator);\n }\n static empty() {\n return new Re([]);\n }\n /**\n * Returns a new FieldMask object that is the result of adding all the given\n * fields paths to this field mask.\n */ unionWith(t) {\n let e = new Ee(at.comparator);\n for (const t of this.fields) e = e.add(t);\n for (const n of t) e = e.add(n);\n return new Re(e.toArray());\n }\n /**\n * Verifies that `fieldPath` is included by at least one field in this field\n * mask.\n *\n * This is an O(n) operation, where `n` is the size of the field mask.\n */ covers(t) {\n for (const e of this.fields) if (e.isPrefixOf(t)) return !0;\n return !1;\n }\n isEqual(t) {\n return nt(this.fields, t.fields, ((t, e) => t.isEqual(e)));\n }\n}\n\n/**\n * @license\n * Copyright 2023 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * An error encountered while decoding base64 string.\n */ class Pe extends Error {\n constructor() {\n super(...arguments), this.name = \"Base64DecodeError\";\n }\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/** Converts a Base64 encoded string to a binary string. */\n/** True if and only if the Base64 conversion functions are available. */\nfunction be() {\n return \"undefined\" != typeof atob;\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Immutable class that represents a \"proto\" byte string.\n *\n * Proto byte strings can either be Base64-encoded strings or Uint8Arrays when\n * sent on the wire. This class abstracts away this differentiation by holding\n * the proto byte string in a common class that must be converted into a string\n * before being sent as a proto.\n * @internal\n */ class Ve {\n constructor(t) {\n this.binaryString = t;\n }\n static fromBase64String(t) {\n const e = function(t) {\n try {\n return atob(t);\n } catch (t) {\n // Check that `DOMException` is defined before using it to avoid\n // \"ReferenceError: Property 'DOMException' doesn't exist\" in react-native.\n // (https://github.com/firebase/firebase-js-sdk/issues/7115)\n throw \"undefined\" != typeof DOMException && t instanceof DOMException ? new Pe(\"Invalid base64 string: \" + t) : t;\n }\n }\n /** Converts a binary string to a Base64 encoded string. */ (t);\n return new Ve(e);\n }\n static fromUint8Array(t) {\n // TODO(indexing); Remove the copy of the byte string here as this method\n // is frequently called during indexing.\n const e = \n /**\n * Helper function to convert an Uint8array to a binary string.\n */\n function(t) {\n let e = \"\";\n for (let n = 0; n < t.length; ++n) e += String.fromCharCode(t[n]);\n return e;\n }\n /**\n * Helper function to convert a binary string to an Uint8Array.\n */ (t);\n return new Ve(e);\n }\n [Symbol.iterator]() {\n let t = 0;\n return {\n next: () => t < this.binaryString.length ? {\n value: this.binaryString.charCodeAt(t++),\n done: !1\n } : {\n value: void 0,\n done: !0\n }\n };\n }\n toBase64() {\n return t = this.binaryString, btoa(t);\n var t;\n }\n toUint8Array() {\n return function(t) {\n const e = new Uint8Array(t.length);\n for (let n = 0; n < t.length; n++) e[n] = t.charCodeAt(n);\n return e;\n }\n /**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n // A RegExp matching ISO 8601 UTC timestamps with optional fraction.\n (this.binaryString);\n }\n approximateByteSize() {\n return 2 * this.binaryString.length;\n }\n compareTo(t) {\n return et(this.binaryString, t.binaryString);\n }\n isEqual(t) {\n return this.binaryString === t.binaryString;\n }\n}\n\nVe.EMPTY_BYTE_STRING = new Ve(\"\");\n\nconst Se = new RegExp(/^\\d{4}-\\d\\d-\\d\\dT\\d\\d:\\d\\d:\\d\\d(?:\\.(\\d+))?Z$/);\n\n/**\n * Converts the possible Proto values for a timestamp value into a \"seconds and\n * nanos\" representation.\n */ function De(t) {\n // The json interface (for the browser) will return an iso timestamp string,\n // while the proto js library (for node) will return a\n // google.protobuf.Timestamp instance.\n if (F(!!t), \"string\" == typeof t) {\n // The date string can have higher precision (nanos) than the Date class\n // (millis), so we do some custom parsing here.\n // Parse the nanos right out of the string.\n let e = 0;\n const n = Se.exec(t);\n if (F(!!n), n[1]) {\n // Pad the fraction out to 9 digits (nanos).\n let t = n[1];\n t = (t + \"000000000\").substr(0, 9), e = Number(t);\n }\n // Parse the date to get the seconds.\n const s = new Date(t);\n return {\n seconds: Math.floor(s.getTime() / 1e3),\n nanos: e\n };\n }\n return {\n seconds: Ce(t.seconds),\n nanos: Ce(t.nanos)\n };\n}\n\n/**\n * Converts the possible Proto types for numbers into a JavaScript number.\n * Returns 0 if the value is not numeric.\n */ function Ce(t) {\n // TODO(bjornick): Handle int64 greater than 53 bits.\n return \"number\" == typeof t ? t : \"string\" == typeof t ? Number(t) : 0;\n}\n\n/** Converts the possible Proto types for Blobs into a ByteString. */ function xe(t) {\n return \"string\" == typeof t ? Ve.fromBase64String(t) : Ve.fromUint8Array(t);\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Represents a locally-applied ServerTimestamp.\n *\n * Server Timestamps are backed by MapValues that contain an internal field\n * `__type__` with a value of `server_timestamp`. The previous value and local\n * write time are stored in its `__previous_value__` and `__local_write_time__`\n * fields respectively.\n *\n * Notes:\n * - ServerTimestampValue instances are created as the result of applying a\n * transform. They can only exist in the local view of a document. Therefore\n * they do not need to be parsed or serialized.\n * - When evaluated locally (e.g. for snapshot.data()), they by default\n * evaluate to `null`. This behavior can be configured by passing custom\n * FieldValueOptions to value().\n * - With respect to other ServerTimestampValues, they sort by their\n * localWriteTime.\n */ function Ne(t) {\n var e, n;\n return \"server_timestamp\" === (null === (n = ((null === (e = null == t ? void 0 : t.mapValue) || void 0 === e ? void 0 : e.fields) || {}).__type__) || void 0 === n ? void 0 : n.stringValue);\n}\n\n/**\n * Creates a new ServerTimestamp proto value (using the internal format).\n */\n/**\n * Returns the value of the field before this ServerTimestamp was set.\n *\n * Preserving the previous values allows the user to display the last resoled\n * value until the backend responds with the timestamp.\n */\nfunction ke(t) {\n const e = t.mapValue.fields.__previous_value__;\n return Ne(e) ? ke(e) : e;\n}\n\n/**\n * Returns the local time at which this timestamp was first set.\n */ function Me(t) {\n const e = De(t.mapValue.fields.__local_write_time__.timestampValue);\n return new it(e.seconds, e.nanos);\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */ class $e {\n /**\n * Constructs a DatabaseInfo using the provided host, databaseId and\n * persistenceKey.\n *\n * @param databaseId - The database to use.\n * @param appId - The Firebase App Id.\n * @param persistenceKey - A unique identifier for this Firestore's local\n * storage (used in conjunction with the databaseId).\n * @param host - The Firestore backend host to connect to.\n * @param ssl - Whether to use SSL when connecting.\n * @param forceLongPolling - Whether to use the forceLongPolling option\n * when using WebChannel as the network transport.\n * @param autoDetectLongPolling - Whether to use the detectBufferingProxy\n * option when using WebChannel as the network transport.\n * @param longPollingOptions Options that configure long-polling.\n * @param useFetchStreams Whether to use the Fetch API instead of\n * XMLHTTPRequest\n */\n constructor(t, e, n, s, i, r, o, u, c) {\n this.databaseId = t, this.appId = e, this.persistenceKey = n, this.host = s, this.ssl = i, \n this.forceLongPolling = r, this.autoDetectLongPolling = o, this.longPollingOptions = u, \n this.useFetchStreams = c;\n }\n}\n\n/** The default database name for a project. */\n/**\n * Represents the database ID a Firestore client is associated with.\n * @internal\n */\nclass Oe {\n constructor(t, e) {\n this.projectId = t, this.database = e || \"(default)\";\n }\n static empty() {\n return new Oe(\"\", \"\");\n }\n get isDefaultDatabase() {\n return \"(default)\" === this.database;\n }\n isEqual(t) {\n return t instanceof Oe && t.projectId === this.projectId && t.database === this.database;\n }\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst Fe = {\n mapValue: {\n fields: {\n __type__: {\n stringValue: \"__max__\"\n }\n }\n }\n}, Be = {\n nullValue: \"NULL_VALUE\"\n};\n\n/** Extracts the backend's type order for the provided value. */\nfunction Le(t) {\n return \"nullValue\" in t ? 0 /* TypeOrder.NullValue */ : \"booleanValue\" in t ? 1 /* TypeOrder.BooleanValue */ : \"integerValue\" in t || \"doubleValue\" in t ? 2 /* TypeOrder.NumberValue */ : \"timestampValue\" in t ? 3 /* TypeOrder.TimestampValue */ : \"stringValue\" in t ? 5 /* TypeOrder.StringValue */ : \"bytesValue\" in t ? 6 /* TypeOrder.BlobValue */ : \"referenceValue\" in t ? 7 /* TypeOrder.RefValue */ : \"geoPointValue\" in t ? 8 /* TypeOrder.GeoPointValue */ : \"arrayValue\" in t ? 9 /* TypeOrder.ArrayValue */ : \"mapValue\" in t ? Ne(t) ? 4 /* TypeOrder.ServerTimestampValue */ : en(t) ? 9007199254740991 /* TypeOrder.MaxValue */ : 10 /* TypeOrder.ObjectValue */ : O();\n}\n\n/** Tests `left` and `right` for equality based on the backend semantics. */ function qe(t, e) {\n if (t === e) return !0;\n const n = Le(t);\n if (n !== Le(e)) return !1;\n switch (n) {\n case 0 /* TypeOrder.NullValue */ :\n case 9007199254740991 /* TypeOrder.MaxValue */ :\n return !0;\n\n case 1 /* TypeOrder.BooleanValue */ :\n return t.booleanValue === e.booleanValue;\n\n case 4 /* TypeOrder.ServerTimestampValue */ :\n return Me(t).isEqual(Me(e));\n\n case 3 /* TypeOrder.TimestampValue */ :\n return function(t, e) {\n if (\"string\" == typeof t.timestampValue && \"string\" == typeof e.timestampValue && t.timestampValue.length === e.timestampValue.length) \n // Use string equality for ISO 8601 timestamps\n return t.timestampValue === e.timestampValue;\n const n = De(t.timestampValue), s = De(e.timestampValue);\n return n.seconds === s.seconds && n.nanos === s.nanos;\n }(t, e);\n\n case 5 /* TypeOrder.StringValue */ :\n return t.stringValue === e.stringValue;\n\n case 6 /* TypeOrder.BlobValue */ :\n return function(t, e) {\n return xe(t.bytesValue).isEqual(xe(e.bytesValue));\n }(t, e);\n\n case 7 /* TypeOrder.RefValue */ :\n return t.referenceValue === e.referenceValue;\n\n case 8 /* TypeOrder.GeoPointValue */ :\n return function(t, e) {\n return Ce(t.geoPointValue.latitude) === Ce(e.geoPointValue.latitude) && Ce(t.geoPointValue.longitude) === Ce(e.geoPointValue.longitude);\n }(t, e);\n\n case 2 /* TypeOrder.NumberValue */ :\n return function(t, e) {\n if (\"integerValue\" in t && \"integerValue\" in e) return Ce(t.integerValue) === Ce(e.integerValue);\n if (\"doubleValue\" in t && \"doubleValue\" in e) {\n const n = Ce(t.doubleValue), s = Ce(e.doubleValue);\n return n === s ? Bt(n) === Bt(s) : isNaN(n) && isNaN(s);\n }\n return !1;\n }(t, e);\n\n case 9 /* TypeOrder.ArrayValue */ :\n return nt(t.arrayValue.values || [], e.arrayValue.values || [], qe);\n\n case 10 /* TypeOrder.ObjectValue */ :\n return function(t, e) {\n const n = t.mapValue.fields || {}, s = e.mapValue.fields || {};\n if (me(n) !== me(s)) return !1;\n for (const t in n) if (n.hasOwnProperty(t) && (void 0 === s[t] || !qe(n[t], s[t]))) return !1;\n return !0;\n }\n /** Returns true if the ArrayValue contains the specified element. */ (t, e);\n\n default:\n return O();\n }\n}\n\nfunction Ue(t, e) {\n return void 0 !== (t.values || []).find((t => qe(t, e)));\n}\n\nfunction Ke(t, e) {\n if (t === e) return 0;\n const n = Le(t), s = Le(e);\n if (n !== s) return et(n, s);\n switch (n) {\n case 0 /* TypeOrder.NullValue */ :\n case 9007199254740991 /* TypeOrder.MaxValue */ :\n return 0;\n\n case 1 /* TypeOrder.BooleanValue */ :\n return et(t.booleanValue, e.booleanValue);\n\n case 2 /* TypeOrder.NumberValue */ :\n return function(t, e) {\n const n = Ce(t.integerValue || t.doubleValue), s = Ce(e.integerValue || e.doubleValue);\n return n < s ? -1 : n > s ? 1 : n === s ? 0 : \n // one or both are NaN.\n isNaN(n) ? isNaN(s) ? 0 : -1 : 1;\n }(t, e);\n\n case 3 /* TypeOrder.TimestampValue */ :\n return Ge(t.timestampValue, e.timestampValue);\n\n case 4 /* TypeOrder.ServerTimestampValue */ :\n return Ge(Me(t), Me(e));\n\n case 5 /* TypeOrder.StringValue */ :\n return et(t.stringValue, e.stringValue);\n\n case 6 /* TypeOrder.BlobValue */ :\n return function(t, e) {\n const n = xe(t), s = xe(e);\n return n.compareTo(s);\n }(t.bytesValue, e.bytesValue);\n\n case 7 /* TypeOrder.RefValue */ :\n return function(t, e) {\n const n = t.split(\"/\"), s = e.split(\"/\");\n for (let t = 0; t < n.length && t < s.length; t++) {\n const e = et(n[t], s[t]);\n if (0 !== e) return e;\n }\n return et(n.length, s.length);\n }(t.referenceValue, e.referenceValue);\n\n case 8 /* TypeOrder.GeoPointValue */ :\n return function(t, e) {\n const n = et(Ce(t.latitude), Ce(e.latitude));\n if (0 !== n) return n;\n return et(Ce(t.longitude), Ce(e.longitude));\n }(t.geoPointValue, e.geoPointValue);\n\n case 9 /* TypeOrder.ArrayValue */ :\n return function(t, e) {\n const n = t.values || [], s = e.values || [];\n for (let t = 0; t < n.length && t < s.length; ++t) {\n const e = Ke(n[t], s[t]);\n if (e) return e;\n }\n return et(n.length, s.length);\n }(t.arrayValue, e.arrayValue);\n\n case 10 /* TypeOrder.ObjectValue */ :\n return function(t, e) {\n if (t === Fe.mapValue && e === Fe.mapValue) return 0;\n if (t === Fe.mapValue) return 1;\n if (e === Fe.mapValue) return -1;\n const n = t.fields || {}, s = Object.keys(n), i = e.fields || {}, r = Object.keys(i);\n // Even though MapValues are likely sorted correctly based on their insertion\n // order (e.g. when received from the backend), local modifications can bring\n // elements out of order. We need to re-sort the elements to ensure that\n // canonical IDs are independent of insertion order.\n s.sort(), r.sort();\n for (let t = 0; t < s.length && t < r.length; ++t) {\n const e = et(s[t], r[t]);\n if (0 !== e) return e;\n const o = Ke(n[s[t]], i[r[t]]);\n if (0 !== o) return o;\n }\n return et(s.length, r.length);\n }\n /**\n * Generates the canonical ID for the provided field value (as used in Target\n * serialization).\n */ (t.mapValue, e.mapValue);\n\n default:\n throw O();\n }\n}\n\nfunction Ge(t, e) {\n if (\"string\" == typeof t && \"string\" == typeof e && t.length === e.length) return et(t, e);\n const n = De(t), s = De(e), i = et(n.seconds, s.seconds);\n return 0 !== i ? i : et(n.nanos, s.nanos);\n}\n\nfunction Qe(t) {\n return je(t);\n}\n\nfunction je(t) {\n return \"nullValue\" in t ? \"null\" : \"booleanValue\" in t ? \"\" + t.booleanValue : \"integerValue\" in t ? \"\" + t.integerValue : \"doubleValue\" in t ? \"\" + t.doubleValue : \"timestampValue\" in t ? function(t) {\n const e = De(t);\n return `time(${e.seconds},${e.nanos})`;\n }(t.timestampValue) : \"stringValue\" in t ? t.stringValue : \"bytesValue\" in t ? xe(t.bytesValue).toBase64() : \"referenceValue\" in t ? (n = t.referenceValue, \n ht.fromName(n).toString()) : \"geoPointValue\" in t ? `geo(${(e = t.geoPointValue).latitude},${e.longitude})` : \"arrayValue\" in t ? function(t) {\n let e = \"[\", n = !0;\n for (const s of t.values || []) n ? n = !1 : e += \",\", e += je(s);\n return e + \"]\";\n }\n /**\n * Returns an approximate (and wildly inaccurate) in-memory size for the field\n * value.\n *\n * The memory size takes into account only the actual user data as it resides\n * in memory and ignores object overhead.\n */ (t.arrayValue) : \"mapValue\" in t ? function(t) {\n // Iteration order in JavaScript is not guaranteed. To ensure that we generate\n // matching canonical IDs for identical maps, we need to sort the keys.\n const e = Object.keys(t.fields || {}).sort();\n let n = \"{\", s = !0;\n for (const i of e) s ? s = !1 : n += \",\", n += `${i}:${je(t.fields[i])}`;\n return n + \"}\";\n }(t.mapValue) : O();\n var e, n;\n}\n\nfunction ze(t) {\n switch (Le(t)) {\n case 0 /* TypeOrder.NullValue */ :\n case 1 /* TypeOrder.BooleanValue */ :\n return 4;\n\n case 2 /* TypeOrder.NumberValue */ :\n return 8;\n\n case 3 /* TypeOrder.TimestampValue */ :\n case 8 /* TypeOrder.GeoPointValue */ :\n // GeoPoints are made up of two distinct numbers (latitude + longitude)\n return 16;\n\n case 4 /* TypeOrder.ServerTimestampValue */ :\n const e = ke(t);\n return e ? 16 + ze(e) : 16;\n\n case 5 /* TypeOrder.StringValue */ :\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures:\n // \"JavaScript's String type is [...] a set of elements of 16-bit unsigned\n // integer values\"\n return 2 * t.stringValue.length;\n\n case 6 /* TypeOrder.BlobValue */ :\n return xe(t.bytesValue).approximateByteSize();\n\n case 7 /* TypeOrder.RefValue */ :\n return t.referenceValue.length;\n\n case 9 /* TypeOrder.ArrayValue */ :\n return (t.arrayValue.values || []).reduce(((t, e) => t + ze(e)), 0);\n\n case 10 /* TypeOrder.ObjectValue */ :\n return function(t) {\n let e = 0;\n return ge(t.fields, ((t, n) => {\n e += t.length + ze(n);\n })), e;\n }(t.mapValue);\n\n default:\n throw O();\n }\n}\n\n/** Returns a reference value for the provided database and key. */\nfunction We(t, e) {\n return {\n referenceValue: `projects/${t.projectId}/databases/${t.database}/documents/${e.path.canonicalString()}`\n };\n}\n\n/** Returns true if `value` is an IntegerValue . */ function He(t) {\n return !!t && \"integerValue\" in t;\n}\n\n/** Returns true if `value` is a DoubleValue. */\n/** Returns true if `value` is an ArrayValue. */\nfunction Je(t) {\n return !!t && \"arrayValue\" in t;\n}\n\n/** Returns true if `value` is a NullValue. */ function Ye(t) {\n return !!t && \"nullValue\" in t;\n}\n\n/** Returns true if `value` is NaN. */ function Xe(t) {\n return !!t && \"doubleValue\" in t && isNaN(Number(t.doubleValue));\n}\n\n/** Returns true if `value` is a MapValue. */ function Ze(t) {\n return !!t && \"mapValue\" in t;\n}\n\n/** Creates a deep copy of `source`. */ function tn(t) {\n if (t.geoPointValue) return {\n geoPointValue: Object.assign({}, t.geoPointValue)\n };\n if (t.timestampValue && \"object\" == typeof t.timestampValue) return {\n timestampValue: Object.assign({}, t.timestampValue)\n };\n if (t.mapValue) {\n const e = {\n mapValue: {\n fields: {}\n }\n };\n return ge(t.mapValue.fields, ((t, n) => e.mapValue.fields[t] = tn(n))), e;\n }\n if (t.arrayValue) {\n const e = {\n arrayValue: {\n values: []\n }\n };\n for (let n = 0; n < (t.arrayValue.values || []).length; ++n) e.arrayValue.values[n] = tn(t.arrayValue.values[n]);\n return e;\n }\n return Object.assign({}, t);\n}\n\n/** Returns true if the Value represents the canonical {@link #MAX_VALUE} . */ function en(t) {\n return \"__max__\" === (((t.mapValue || {}).fields || {}).__type__ || {}).stringValue;\n}\n\n/** Returns the lowest value for the given value type (inclusive). */ function nn(t) {\n return \"nullValue\" in t ? Be : \"booleanValue\" in t ? {\n booleanValue: !1\n } : \"integerValue\" in t || \"doubleValue\" in t ? {\n doubleValue: NaN\n } : \"timestampValue\" in t ? {\n timestampValue: {\n seconds: Number.MIN_SAFE_INTEGER\n }\n } : \"stringValue\" in t ? {\n stringValue: \"\"\n } : \"bytesValue\" in t ? {\n bytesValue: \"\"\n } : \"referenceValue\" in t ? We(Oe.empty(), ht.empty()) : \"geoPointValue\" in t ? {\n geoPointValue: {\n latitude: -90,\n longitude: -180\n }\n } : \"arrayValue\" in t ? {\n arrayValue: {}\n } : \"mapValue\" in t ? {\n mapValue: {}\n } : O();\n}\n\n/** Returns the largest value for the given value type (exclusive). */ function sn(t) {\n return \"nullValue\" in t ? {\n booleanValue: !1\n } : \"booleanValue\" in t ? {\n doubleValue: NaN\n } : \"integerValue\" in t || \"doubleValue\" in t ? {\n timestampValue: {\n seconds: Number.MIN_SAFE_INTEGER\n }\n } : \"timestampValue\" in t ? {\n stringValue: \"\"\n } : \"stringValue\" in t ? {\n bytesValue: \"\"\n } : \"bytesValue\" in t ? We(Oe.empty(), ht.empty()) : \"referenceValue\" in t ? {\n geoPointValue: {\n latitude: -90,\n longitude: -180\n }\n } : \"geoPointValue\" in t ? {\n arrayValue: {}\n } : \"arrayValue\" in t ? {\n mapValue: {}\n } : \"mapValue\" in t ? Fe : O();\n}\n\nfunction rn(t, e) {\n const n = Ke(t.value, e.value);\n return 0 !== n ? n : t.inclusive && !e.inclusive ? -1 : !t.inclusive && e.inclusive ? 1 : 0;\n}\n\nfunction on(t, e) {\n const n = Ke(t.value, e.value);\n return 0 !== n ? n : t.inclusive && !e.inclusive ? 1 : !t.inclusive && e.inclusive ? -1 : 0;\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * An ObjectValue represents a MapValue in the Firestore Proto and offers the\n * ability to add and remove fields (via the ObjectValueBuilder).\n */ class un {\n constructor(t) {\n this.value = t;\n }\n static empty() {\n return new un({\n mapValue: {}\n });\n }\n /**\n * Returns the value at the given path or null.\n *\n * @param path - the path to search\n * @returns The value at the path or null if the path is not set.\n */ field(t) {\n if (t.isEmpty()) return this.value;\n {\n let e = this.value;\n for (let n = 0; n < t.length - 1; ++n) if (e = (e.mapValue.fields || {})[t.get(n)], \n !Ze(e)) return null;\n return e = (e.mapValue.fields || {})[t.lastSegment()], e || null;\n }\n }\n /**\n * Sets the field to the provided value.\n *\n * @param path - The field path to set.\n * @param value - The value to set.\n */ set(t, e) {\n this.getFieldsMap(t.popLast())[t.lastSegment()] = tn(e);\n }\n /**\n * Sets the provided fields to the provided values.\n *\n * @param data - A map of fields to values (or null for deletes).\n */ setAll(t) {\n let e = at.emptyPath(), n = {}, s = [];\n t.forEach(((t, i) => {\n if (!e.isImmediateParentOf(i)) {\n // Insert the accumulated changes at this parent location\n const t = this.getFieldsMap(e);\n this.applyChanges(t, n, s), n = {}, s = [], e = i.popLast();\n }\n t ? n[i.lastSegment()] = tn(t) : s.push(i.lastSegment());\n }));\n const i = this.getFieldsMap(e);\n this.applyChanges(i, n, s);\n }\n /**\n * Removes the field at the specified path. If there is no field at the\n * specified path, nothing is changed.\n *\n * @param path - The field path to remove.\n */ delete(t) {\n const e = this.field(t.popLast());\n Ze(e) && e.mapValue.fields && delete e.mapValue.fields[t.lastSegment()];\n }\n isEqual(t) {\n return qe(this.value, t.value);\n }\n /**\n * Returns the map that contains the leaf element of `path`. If the parent\n * entry does not yet exist, or if it is not a map, a new map will be created.\n */ getFieldsMap(t) {\n let e = this.value;\n e.mapValue.fields || (e.mapValue = {\n fields: {}\n });\n for (let n = 0; n < t.length; ++n) {\n let s = e.mapValue.fields[t.get(n)];\n Ze(s) && s.mapValue.fields || (s = {\n mapValue: {\n fields: {}\n }\n }, e.mapValue.fields[t.get(n)] = s), e = s;\n }\n return e.mapValue.fields;\n }\n /**\n * Modifies `fieldsMap` by adding, replacing or deleting the specified\n * entries.\n */ applyChanges(t, e, n) {\n ge(e, ((e, n) => t[e] = n));\n for (const e of n) delete t[e];\n }\n clone() {\n return new un(tn(this.value));\n }\n}\n\n/**\n * Returns a FieldMask built from all fields in a MapValue.\n */ function cn(t) {\n const e = [];\n return ge(t.fields, ((t, n) => {\n const s = new at([ t ]);\n if (Ze(n)) {\n const t = cn(n.mapValue).fields;\n if (0 === t.length) \n // Preserve the empty map by adding it to the FieldMask.\n e.push(s); else \n // For nested and non-empty ObjectValues, add the FieldPath of the\n // leaf nodes.\n for (const n of t) e.push(s.child(n));\n } else \n // For nested and non-empty ObjectValues, add the FieldPath of the leaf\n // nodes.\n e.push(s);\n })), new Re(e);\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Represents a document in Firestore with a key, version, data and whether it\n * has local mutations applied to it.\n *\n * Documents can transition between states via `convertToFoundDocument()`,\n * `convertToNoDocument()` and `convertToUnknownDocument()`. If a document does\n * not transition to one of these states even after all mutations have been\n * applied, `isValidDocument()` returns false and the document should be removed\n * from all views.\n */ class an {\n constructor(t, e, n, s, i, r, o) {\n this.key = t, this.documentType = e, this.version = n, this.readTime = s, this.createTime = i, \n this.data = r, this.documentState = o;\n }\n /**\n * Creates a document with no known version or data, but which can serve as\n * base document for mutations.\n */ static newInvalidDocument(t) {\n return new an(t, 0 /* DocumentType.INVALID */ , \n /* version */ rt.min(), \n /* readTime */ rt.min(), \n /* createTime */ rt.min(), un.empty(), 0 /* DocumentState.SYNCED */);\n }\n /**\n * Creates a new document that is known to exist with the given data at the\n * given version.\n */ static newFoundDocument(t, e, n, s) {\n return new an(t, 1 /* DocumentType.FOUND_DOCUMENT */ , \n /* version */ e, \n /* readTime */ rt.min(), \n /* createTime */ n, s, 0 /* DocumentState.SYNCED */);\n }\n /** Creates a new document that is known to not exist at the given version. */ static newNoDocument(t, e) {\n return new an(t, 2 /* DocumentType.NO_DOCUMENT */ , \n /* version */ e, \n /* readTime */ rt.min(), \n /* createTime */ rt.min(), un.empty(), 0 /* DocumentState.SYNCED */);\n }\n /**\n * Creates a new document that is known to exist at the given version but\n * whose data is not known (e.g. a document that was updated without a known\n * base document).\n */ static newUnknownDocument(t, e) {\n return new an(t, 3 /* DocumentType.UNKNOWN_DOCUMENT */ , \n /* version */ e, \n /* readTime */ rt.min(), \n /* createTime */ rt.min(), un.empty(), 2 /* DocumentState.HAS_COMMITTED_MUTATIONS */);\n }\n /**\n * Changes the document type to indicate that it exists and that its version\n * and data are known.\n */ convertToFoundDocument(t, e) {\n // If a document is switching state from being an invalid or deleted\n // document to a valid (FOUND_DOCUMENT) document, either due to receiving an\n // update from Watch or due to applying a local set mutation on top\n // of a deleted document, our best guess about its createTime would be the\n // version at which the document transitioned to a FOUND_DOCUMENT.\n return !this.createTime.isEqual(rt.min()) || 2 /* DocumentType.NO_DOCUMENT */ !== this.documentType && 0 /* DocumentType.INVALID */ !== this.documentType || (this.createTime = t), \n this.version = t, this.documentType = 1 /* DocumentType.FOUND_DOCUMENT */ , this.data = e, \n this.documentState = 0 /* DocumentState.SYNCED */ , this;\n }\n /**\n * Changes the document type to indicate that it doesn't exist at the given\n * version.\n */ convertToNoDocument(t) {\n return this.version = t, this.documentType = 2 /* DocumentType.NO_DOCUMENT */ , \n this.data = un.empty(), this.documentState = 0 /* DocumentState.SYNCED */ , this;\n }\n /**\n * Changes the document type to indicate that it exists at a given version but\n * that its data is not known (e.g. a document that was updated without a known\n * base document).\n */ convertToUnknownDocument(t) {\n return this.version = t, this.documentType = 3 /* DocumentType.UNKNOWN_DOCUMENT */ , \n this.data = un.empty(), this.documentState = 2 /* DocumentState.HAS_COMMITTED_MUTATIONS */ , \n this;\n }\n setHasCommittedMutations() {\n return this.documentState = 2 /* DocumentState.HAS_COMMITTED_MUTATIONS */ , this;\n }\n setHasLocalMutations() {\n return this.documentState = 1 /* DocumentState.HAS_LOCAL_MUTATIONS */ , this.version = rt.min(), \n this;\n }\n setReadTime(t) {\n return this.readTime = t, this;\n }\n get hasLocalMutations() {\n return 1 /* DocumentState.HAS_LOCAL_MUTATIONS */ === this.documentState;\n }\n get hasCommittedMutations() {\n return 2 /* DocumentState.HAS_COMMITTED_MUTATIONS */ === this.documentState;\n }\n get hasPendingWrites() {\n return this.hasLocalMutations || this.hasCommittedMutations;\n }\n isValidDocument() {\n return 0 /* DocumentType.INVALID */ !== this.documentType;\n }\n isFoundDocument() {\n return 1 /* DocumentType.FOUND_DOCUMENT */ === this.documentType;\n }\n isNoDocument() {\n return 2 /* DocumentType.NO_DOCUMENT */ === this.documentType;\n }\n isUnknownDocument() {\n return 3 /* DocumentType.UNKNOWN_DOCUMENT */ === this.documentType;\n }\n isEqual(t) {\n return t instanceof an && this.key.isEqual(t.key) && this.version.isEqual(t.version) && this.documentType === t.documentType && this.documentState === t.documentState && this.data.isEqual(t.data);\n }\n mutableCopy() {\n return new an(this.key, this.documentType, this.version, this.readTime, this.createTime, this.data.clone(), this.documentState);\n }\n toString() {\n return `Document(${this.key}, ${this.version}, ${JSON.stringify(this.data.value)}, {createTime: ${this.createTime}}), {documentType: ${this.documentType}}), {documentState: ${this.documentState}})`;\n }\n}\n\n/**\n * Compares the value for field `field` in the provided documents. Throws if\n * the field does not exist in both documents.\n */\n/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Represents a bound of a query.\n *\n * The bound is specified with the given components representing a position and\n * whether it's just before or just after the position (relative to whatever the\n * query order is).\n *\n * The position represents a logical index position for a query. It's a prefix\n * of values for the (potentially implicit) order by clauses of a query.\n *\n * Bound provides a function to determine whether a document comes before or\n * after a bound. This is influenced by whether the position is just before or\n * just after the provided values.\n */\nclass hn {\n constructor(t, e) {\n this.position = t, this.inclusive = e;\n }\n}\n\nfunction ln(t, e, n) {\n let s = 0;\n for (let i = 0; i < t.position.length; i++) {\n const r = e[i], o = t.position[i];\n if (r.field.isKeyField()) s = ht.comparator(ht.fromName(o.referenceValue), n.key); else {\n s = Ke(o, n.data.field(r.field));\n }\n if (\"desc\" /* Direction.DESCENDING */ === r.dir && (s *= -1), 0 !== s) break;\n }\n return s;\n}\n\n/**\n * Returns true if a document sorts after a bound using the provided sort\n * order.\n */ function fn(t, e) {\n if (null === t) return null === e;\n if (null === e) return !1;\n if (t.inclusive !== e.inclusive || t.position.length !== e.position.length) return !1;\n for (let n = 0; n < t.position.length; n++) {\n if (!qe(t.position[n], e.position[n])) return !1;\n }\n return !0;\n}\n\n/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * An ordering on a field, in some Direction. Direction defaults to ASCENDING.\n */ class dn {\n constructor(t, e = \"asc\" /* Direction.ASCENDING */) {\n this.field = t, this.dir = e;\n }\n}\n\nfunction wn(t, e) {\n return t.dir === e.dir && t.field.isEqual(e.field);\n}\n\n/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */ class _n {}\n\nclass mn extends _n {\n constructor(t, e, n) {\n super(), this.field = t, this.op = e, this.value = n;\n }\n /**\n * Creates a filter based on the provided arguments.\n */ static create(t, e, n) {\n return t.isKeyField() ? \"in\" /* Operator.IN */ === e || \"not-in\" /* Operator.NOT_IN */ === e ? this.createKeyFieldInFilter(t, e, n) : new Pn(t, e, n) : \"array-contains\" /* Operator.ARRAY_CONTAINS */ === e ? new Dn(t, n) : \"in\" /* Operator.IN */ === e ? new Cn(t, n) : \"not-in\" /* Operator.NOT_IN */ === e ? new xn(t, n) : \"array-contains-any\" /* Operator.ARRAY_CONTAINS_ANY */ === e ? new Nn(t, n) : new mn(t, e, n);\n }\n static createKeyFieldInFilter(t, e, n) {\n return \"in\" /* Operator.IN */ === e ? new bn(t, n) : new Vn(t, n);\n }\n matches(t) {\n const e = t.data.field(this.field);\n // Types do not have to match in NOT_EQUAL filters.\n return \"!=\" /* Operator.NOT_EQUAL */ === this.op ? null !== e && this.matchesComparison(Ke(e, this.value)) : null !== e && Le(this.value) === Le(e) && this.matchesComparison(Ke(e, this.value));\n // Only compare types with matching backend order (such as double and int).\n }\n matchesComparison(t) {\n switch (this.op) {\n case \"<\" /* Operator.LESS_THAN */ :\n return t < 0;\n\n case \"<=\" /* Operator.LESS_THAN_OR_EQUAL */ :\n return t <= 0;\n\n case \"==\" /* Operator.EQUAL */ :\n return 0 === t;\n\n case \"!=\" /* Operator.NOT_EQUAL */ :\n return 0 !== t;\n\n case \">\" /* Operator.GREATER_THAN */ :\n return t > 0;\n\n case \">=\" /* Operator.GREATER_THAN_OR_EQUAL */ :\n return t >= 0;\n\n default:\n return O();\n }\n }\n isInequality() {\n return [ \"<\" /* Operator.LESS_THAN */ , \"<=\" /* Operator.LESS_THAN_OR_EQUAL */ , \">\" /* Operator.GREATER_THAN */ , \">=\" /* Operator.GREATER_THAN_OR_EQUAL */ , \"!=\" /* Operator.NOT_EQUAL */ , \"not-in\" /* Operator.NOT_IN */ ].indexOf(this.op) >= 0;\n }\n getFlattenedFilters() {\n return [ this ];\n }\n getFilters() {\n return [ this ];\n }\n getFirstInequalityField() {\n return this.isInequality() ? this.field : null;\n }\n}\n\nclass gn extends _n {\n constructor(t, e) {\n super(), this.filters = t, this.op = e, this.lt = null;\n }\n /**\n * Creates a filter based on the provided arguments.\n */ static create(t, e) {\n return new gn(t, e);\n }\n matches(t) {\n return yn(this) ? void 0 === this.filters.find((e => !e.matches(t))) : void 0 !== this.filters.find((e => e.matches(t)));\n }\n getFlattenedFilters() {\n return null !== this.lt || (this.lt = this.filters.reduce(((t, e) => t.concat(e.getFlattenedFilters())), [])), \n this.lt;\n }\n // Returns a mutable copy of `this.filters`\n getFilters() {\n return Object.assign([], this.filters);\n }\n getFirstInequalityField() {\n const t = this.ft((t => t.isInequality()));\n return null !== t ? t.field : null;\n }\n // Performs a depth-first search to find and return the first FieldFilter in the composite filter\n // that satisfies the predicate. Returns `null` if none of the FieldFilters satisfy the\n // predicate.\n ft(t) {\n for (const e of this.getFlattenedFilters()) if (t(e)) return e;\n return null;\n }\n}\n\nfunction yn(t) {\n return \"and\" /* CompositeOperator.AND */ === t.op;\n}\n\nfunction pn(t) {\n return \"or\" /* CompositeOperator.OR */ === t.op;\n}\n\n/**\n * Returns true if this filter is a conjunction of field filters only. Returns false otherwise.\n */ function In(t) {\n return Tn(t) && yn(t);\n}\n\n/**\n * Returns true if this filter does not contain any composite filters. Returns false otherwise.\n */ function Tn(t) {\n for (const e of t.filters) if (e instanceof gn) return !1;\n return !0;\n}\n\nfunction En(t) {\n if (t instanceof mn) \n // TODO(b/29183165): Technically, this won't be unique if two values have\n // the same description, such as the int 3 and the string \"3\". So we should\n // add the types in here somehow, too.\n return t.field.canonicalString() + t.op.toString() + Qe(t.value);\n if (In(t)) \n // Older SDK versions use an implicit AND operation between their filters.\n // In the new SDK versions, the developer may use an explicit AND filter.\n // To stay consistent with the old usages, we add a special case to ensure\n // the canonical ID for these two are the same. For example:\n // `col.whereEquals(\"a\", 1).whereEquals(\"b\", 2)` should have the same\n // canonical ID as `col.where(and(equals(\"a\",1), equals(\"b\",2)))`.\n return t.filters.map((t => En(t))).join(\",\");\n {\n // filter instanceof CompositeFilter\n const e = t.filters.map((t => En(t))).join(\",\");\n return `${t.op}(${e})`;\n }\n}\n\nfunction An(t, e) {\n return t instanceof mn ? function(t, e) {\n return e instanceof mn && t.op === e.op && t.field.isEqual(e.field) && qe(t.value, e.value);\n }(t, e) : t instanceof gn ? function(t, e) {\n if (e instanceof gn && t.op === e.op && t.filters.length === e.filters.length) {\n return t.filters.reduce(((t, n, s) => t && An(n, e.filters[s])), !0);\n }\n return !1;\n }\n /**\n * Returns a new composite filter that contains all filter from\n * `compositeFilter` plus all the given filters in `otherFilters`.\n */ (t, e) : void O();\n}\n\nfunction vn(t, e) {\n const n = t.filters.concat(e);\n return gn.create(n, t.op);\n}\n\n/** Returns a debug description for `filter`. */ function Rn(t) {\n return t instanceof mn ? function(t) {\n return `${t.field.canonicalString()} ${t.op} ${Qe(t.value)}`;\n }\n /** Filter that matches on key fields (i.e. '__name__'). */ (t) : t instanceof gn ? function(t) {\n return t.op.toString() + \" {\" + t.getFilters().map(Rn).join(\" ,\") + \"}\";\n }(t) : \"Filter\";\n}\n\nclass Pn extends mn {\n constructor(t, e, n) {\n super(t, e, n), this.key = ht.fromName(n.referenceValue);\n }\n matches(t) {\n const e = ht.comparator(t.key, this.key);\n return this.matchesComparison(e);\n }\n}\n\n/** Filter that matches on key fields within an array. */ class bn extends mn {\n constructor(t, e) {\n super(t, \"in\" /* Operator.IN */ , e), this.keys = Sn(\"in\" /* Operator.IN */ , e);\n }\n matches(t) {\n return this.keys.some((e => e.isEqual(t.key)));\n }\n}\n\n/** Filter that matches on key fields not present within an array. */ class Vn extends mn {\n constructor(t, e) {\n super(t, \"not-in\" /* Operator.NOT_IN */ , e), this.keys = Sn(\"not-in\" /* Operator.NOT_IN */ , e);\n }\n matches(t) {\n return !this.keys.some((e => e.isEqual(t.key)));\n }\n}\n\nfunction Sn(t, e) {\n var n;\n return ((null === (n = e.arrayValue) || void 0 === n ? void 0 : n.values) || []).map((t => ht.fromName(t.referenceValue)));\n}\n\n/** A Filter that implements the array-contains operator. */ class Dn extends mn {\n constructor(t, e) {\n super(t, \"array-contains\" /* Operator.ARRAY_CONTAINS */ , e);\n }\n matches(t) {\n const e = t.data.field(this.field);\n return Je(e) && Ue(e.arrayValue, this.value);\n }\n}\n\n/** A Filter that implements the IN operator. */ class Cn extends mn {\n constructor(t, e) {\n super(t, \"in\" /* Operator.IN */ , e);\n }\n matches(t) {\n const e = t.data.field(this.field);\n return null !== e && Ue(this.value.arrayValue, e);\n }\n}\n\n/** A Filter that implements the not-in operator. */ class xn extends mn {\n constructor(t, e) {\n super(t, \"not-in\" /* Operator.NOT_IN */ , e);\n }\n matches(t) {\n if (Ue(this.value.arrayValue, {\n nullValue: \"NULL_VALUE\"\n })) return !1;\n const e = t.data.field(this.field);\n return null !== e && !Ue(this.value.arrayValue, e);\n }\n}\n\n/** A Filter that implements the array-contains-any operator. */ class Nn extends mn {\n constructor(t, e) {\n super(t, \"array-contains-any\" /* Operator.ARRAY_CONTAINS_ANY */ , e);\n }\n matches(t) {\n const e = t.data.field(this.field);\n return !(!Je(e) || !e.arrayValue.values) && e.arrayValue.values.some((t => Ue(this.value.arrayValue, t)));\n }\n}\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// Visible for testing\nclass kn {\n constructor(t, e = null, n = [], s = [], i = null, r = null, o = null) {\n this.path = t, this.collectionGroup = e, this.orderBy = n, this.filters = s, this.limit = i, \n this.startAt = r, this.endAt = o, this.dt = null;\n }\n}\n\n/**\n * Initializes a Target with a path and optional additional query constraints.\n * Path must currently be empty if this is a collection group query.\n *\n * NOTE: you should always construct `Target` from `Query.toTarget` instead of\n * using this factory method, because `Query` provides an implicit `orderBy`\n * property.\n */ function Mn(t, e = null, n = [], s = [], i = null, r = null, o = null) {\n return new kn(t, e, n, s, i, r, o);\n}\n\nfunction $n(t) {\n const e = L(t);\n if (null === e.dt) {\n let t = e.path.canonicalString();\n null !== e.collectionGroup && (t += \"|cg:\" + e.collectionGroup), t += \"|f:\", t += e.filters.map((t => En(t))).join(\",\"), \n t += \"|ob:\", t += e.orderBy.map((t => function(t) {\n // TODO(b/29183165): Make this collision robust.\n return t.field.canonicalString() + t.dir;\n }(t))).join(\",\"), Ft(e.limit) || (t += \"|l:\", t += e.limit), e.startAt && (t += \"|lb:\", \n t += e.startAt.inclusive ? \"b:\" : \"a:\", t += e.startAt.position.map((t => Qe(t))).join(\",\")), \n e.endAt && (t += \"|ub:\", t += e.endAt.inclusive ? \"a:\" : \"b:\", t += e.endAt.position.map((t => Qe(t))).join(\",\")), \n e.dt = t;\n }\n return e.dt;\n}\n\nfunction On(t, e) {\n if (t.limit !== e.limit) return !1;\n if (t.orderBy.length !== e.orderBy.length) return !1;\n for (let n = 0; n < t.orderBy.length; n++) if (!wn(t.orderBy[n], e.orderBy[n])) return !1;\n if (t.filters.length !== e.filters.length) return !1;\n for (let n = 0; n < t.filters.length; n++) if (!An(t.filters[n], e.filters[n])) return !1;\n return t.collectionGroup === e.collectionGroup && (!!t.path.isEqual(e.path) && (!!fn(t.startAt, e.startAt) && fn(t.endAt, e.endAt)));\n}\n\nfunction Fn(t) {\n return ht.isDocumentKey(t.path) && null === t.collectionGroup && 0 === t.filters.length;\n}\n\n/** Returns the field filters that target the given field path. */ function Bn(t, e) {\n return t.filters.filter((t => t instanceof mn && t.field.isEqual(e)));\n}\n\n/**\n * Returns the values that are used in ARRAY_CONTAINS or ARRAY_CONTAINS_ANY\n * filters. Returns `null` if there are no such filters.\n */\n/**\n * Returns the value to use as the lower bound for ascending index segment at\n * the provided `fieldPath` (or the upper bound for an descending segment).\n */\nfunction Ln(t, e, n) {\n let s = Be, i = !0;\n // Process all filters to find a value for the current field segment\n for (const n of Bn(t, e)) {\n let t = Be, e = !0;\n switch (n.op) {\n case \"<\" /* Operator.LESS_THAN */ :\n case \"<=\" /* Operator.LESS_THAN_OR_EQUAL */ :\n t = nn(n.value);\n break;\n\n case \"==\" /* Operator.EQUAL */ :\n case \"in\" /* Operator.IN */ :\n case \">=\" /* Operator.GREATER_THAN_OR_EQUAL */ :\n t = n.value;\n break;\n\n case \">\" /* Operator.GREATER_THAN */ :\n t = n.value, e = !1;\n break;\n\n case \"!=\" /* Operator.NOT_EQUAL */ :\n case \"not-in\" /* Operator.NOT_IN */ :\n t = Be;\n // Remaining filters cannot be used as lower bounds.\n }\n rn({\n value: s,\n inclusive: i\n }, {\n value: t,\n inclusive: e\n }) < 0 && (s = t, i = e);\n }\n // If there is an additional bound, compare the values against the existing\n // range to see if we can narrow the scope.\n if (null !== n) for (let r = 0; r < t.orderBy.length; ++r) {\n if (t.orderBy[r].field.isEqual(e)) {\n const t = n.position[r];\n rn({\n value: s,\n inclusive: i\n }, {\n value: t,\n inclusive: n.inclusive\n }) < 0 && (s = t, i = n.inclusive);\n break;\n }\n }\n return {\n value: s,\n inclusive: i\n };\n}\n\n/**\n * Returns the value to use as the upper bound for ascending index segment at\n * the provided `fieldPath` (or the lower bound for a descending segment).\n */ function qn(t, e, n) {\n let s = Fe, i = !0;\n // Process all filters to find a value for the current field segment\n for (const n of Bn(t, e)) {\n let t = Fe, e = !0;\n switch (n.op) {\n case \">=\" /* Operator.GREATER_THAN_OR_EQUAL */ :\n case \">\" /* Operator.GREATER_THAN */ :\n t = sn(n.value), e = !1;\n break;\n\n case \"==\" /* Operator.EQUAL */ :\n case \"in\" /* Operator.IN */ :\n case \"<=\" /* Operator.LESS_THAN_OR_EQUAL */ :\n t = n.value;\n break;\n\n case \"<\" /* Operator.LESS_THAN */ :\n t = n.value, e = !1;\n break;\n\n case \"!=\" /* Operator.NOT_EQUAL */ :\n case \"not-in\" /* Operator.NOT_IN */ :\n t = Fe;\n // Remaining filters cannot be used as upper bounds.\n }\n on({\n value: s,\n inclusive: i\n }, {\n value: t,\n inclusive: e\n }) > 0 && (s = t, i = e);\n }\n // If there is an additional bound, compare the values against the existing\n // range to see if we can narrow the scope.\n if (null !== n) for (let r = 0; r < t.orderBy.length; ++r) {\n if (t.orderBy[r].field.isEqual(e)) {\n const t = n.position[r];\n on({\n value: s,\n inclusive: i\n }, {\n value: t,\n inclusive: n.inclusive\n }) > 0 && (s = t, i = n.inclusive);\n break;\n }\n }\n return {\n value: s,\n inclusive: i\n };\n}\n\n/** Returns the number of segments of a perfect index for this target. */\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Query encapsulates all the query attributes we support in the SDK. It can\n * be run against the LocalStore, as well as be converted to a `Target` to\n * query the RemoteStore results.\n *\n * Visible for testing.\n */\nclass Un {\n /**\n * Initializes a Query with a path and optional additional query constraints.\n * Path must currently be empty if this is a collection group query.\n */\n constructor(t, e = null, n = [], s = [], i = null, r = \"F\" /* LimitType.First */ , o = null, u = null) {\n this.path = t, this.collectionGroup = e, this.explicitOrderBy = n, this.filters = s, \n this.limit = i, this.limitType = r, this.startAt = o, this.endAt = u, this.wt = null, \n // The corresponding `Target` of this `Query` instance.\n this._t = null, this.startAt, this.endAt;\n }\n}\n\n/** Creates a new Query instance with the options provided. */ function Kn(t, e, n, s, i, r, o, u) {\n return new Un(t, e, n, s, i, r, o, u);\n}\n\n/** Creates a new Query for a query that matches all documents at `path` */ function Gn(t) {\n return new Un(t);\n}\n\n/**\n * Helper to convert a collection group query into a collection query at a\n * specific path. This is used when executing collection group queries, since\n * we have to split the query into a set of collection queries at multiple\n * paths.\n */\n/**\n * Returns true if this query does not specify any query constraints that\n * could remove results.\n */\nfunction Qn(t) {\n return 0 === t.filters.length && null === t.limit && null == t.startAt && null == t.endAt && (0 === t.explicitOrderBy.length || 1 === t.explicitOrderBy.length && t.explicitOrderBy[0].field.isKeyField());\n}\n\nfunction jn(t) {\n return t.explicitOrderBy.length > 0 ? t.explicitOrderBy[0].field : null;\n}\n\nfunction zn(t) {\n for (const e of t.filters) {\n const t = e.getFirstInequalityField();\n if (null !== t) return t;\n }\n return null;\n}\n\n/**\n * Creates a new Query for a collection group query that matches all documents\n * within the provided collection group.\n */\n/**\n * Returns whether the query matches a collection group rather than a specific\n * collection.\n */\nfunction Wn(t) {\n return null !== t.collectionGroup;\n}\n\n/**\n * Returns the implicit order by constraint that is used to execute the Query,\n * which can be different from the order by constraints the user provided (e.g.\n * the SDK and backend always orders by `__name__`).\n */ function Hn(t) {\n const e = L(t);\n if (null === e.wt) {\n e.wt = [];\n const t = zn(e), n = jn(e);\n if (null !== t && null === n) \n // In order to implicitly add key ordering, we must also add the\n // inequality filter field for it to be a valid query.\n // Note that the default inequality field and key ordering is ascending.\n t.isKeyField() || e.wt.push(new dn(t)), e.wt.push(new dn(at.keyField(), \"asc\" /* Direction.ASCENDING */)); else {\n let t = !1;\n for (const n of e.explicitOrderBy) e.wt.push(n), n.field.isKeyField() && (t = !0);\n if (!t) {\n // The order of the implicit key ordering always matches the last\n // explicit order by\n const t = e.explicitOrderBy.length > 0 ? e.explicitOrderBy[e.explicitOrderBy.length - 1].dir : \"asc\" /* Direction.ASCENDING */;\n e.wt.push(new dn(at.keyField(), t));\n }\n }\n }\n return e.wt;\n}\n\n/**\n * Converts this `Query` instance to it's corresponding `Target` representation.\n */ function Jn(t) {\n const e = L(t);\n if (!e._t) if (\"F\" /* LimitType.First */ === e.limitType) e._t = Mn(e.path, e.collectionGroup, Hn(e), e.filters, e.limit, e.startAt, e.endAt); else {\n // Flip the orderBy directions since we want the last results\n const t = [];\n for (const n of Hn(e)) {\n const e = \"desc\" /* Direction.DESCENDING */ === n.dir ? \"asc\" /* Direction.ASCENDING */ : \"desc\" /* Direction.DESCENDING */;\n t.push(new dn(n.field, e));\n }\n // We need to swap the cursors to match the now-flipped query ordering.\n const n = e.endAt ? new hn(e.endAt.position, e.endAt.inclusive) : null, s = e.startAt ? new hn(e.startAt.position, e.startAt.inclusive) : null;\n // Now return as a LimitType.First query.\n e._t = Mn(e.path, e.collectionGroup, t, e.filters, e.limit, n, s);\n }\n return e._t;\n}\n\nfunction Yn(t, e) {\n e.getFirstInequalityField(), zn(t);\n const n = t.filters.concat([ e ]);\n return new Un(t.path, t.collectionGroup, t.explicitOrderBy.slice(), n, t.limit, t.limitType, t.startAt, t.endAt);\n}\n\nfunction Xn(t, e, n) {\n return new Un(t.path, t.collectionGroup, t.explicitOrderBy.slice(), t.filters.slice(), e, n, t.startAt, t.endAt);\n}\n\nfunction Zn(t, e) {\n return On(Jn(t), Jn(e)) && t.limitType === e.limitType;\n}\n\n// TODO(b/29183165): This is used to get a unique string from a query to, for\n// example, use as a dictionary key, but the implementation is subject to\n// collisions. Make it collision-free.\nfunction ts(t) {\n return `${$n(Jn(t))}|lt:${t.limitType}`;\n}\n\nfunction es(t) {\n return `Query(target=${function(t) {\n let e = t.path.canonicalString();\n return null !== t.collectionGroup && (e += \" collectionGroup=\" + t.collectionGroup), \n t.filters.length > 0 && (e += `, filters: [${t.filters.map((t => Rn(t))).join(\", \")}]`), \n Ft(t.limit) || (e += \", limit: \" + t.limit), t.orderBy.length > 0 && (e += `, orderBy: [${t.orderBy.map((t => function(t) {\n return `${t.field.canonicalString()} (${t.dir})`;\n }(t))).join(\", \")}]`), t.startAt && (e += \", startAt: \", e += t.startAt.inclusive ? \"b:\" : \"a:\", \n e += t.startAt.position.map((t => Qe(t))).join(\",\")), t.endAt && (e += \", endAt: \", \n e += t.endAt.inclusive ? \"a:\" : \"b:\", e += t.endAt.position.map((t => Qe(t))).join(\",\")), \n `Target(${e})`;\n }(Jn(t))}; limitType=${t.limitType})`;\n}\n\n/** Returns whether `doc` matches the constraints of `query`. */ function ns(t, e) {\n return e.isFoundDocument() && function(t, e) {\n const n = e.key.path;\n return null !== t.collectionGroup ? e.key.hasCollectionId(t.collectionGroup) && t.path.isPrefixOf(n) : ht.isDocumentKey(t.path) ? t.path.isEqual(n) : t.path.isImmediateParentOf(n);\n }\n /**\n * A document must have a value for every ordering clause in order to show up\n * in the results.\n */ (t, e) && function(t, e) {\n // We must use `queryOrderBy()` to get the list of all orderBys (both implicit and explicit).\n // Note that for OR queries, orderBy applies to all disjunction terms and implicit orderBys must\n // be taken into account. For example, the query \"a > 1 || b==1\" has an implicit \"orderBy a\" due\n // to the inequality, and is evaluated as \"a > 1 orderBy a || b==1 orderBy a\".\n // A document with content of {b:1} matches the filters, but does not match the orderBy because\n // it's missing the field 'a'.\n for (const n of Hn(t)) \n // order by key always matches\n if (!n.field.isKeyField() && null === e.data.field(n.field)) return !1;\n return !0;\n }(t, e) && function(t, e) {\n for (const n of t.filters) if (!n.matches(e)) return !1;\n return !0;\n }\n /** Makes sure a document is within the bounds, if provided. */ (t, e) && function(t, e) {\n if (t.startAt && !\n /**\n * Returns true if a document sorts before a bound using the provided sort\n * order.\n */\n function(t, e, n) {\n const s = ln(t, e, n);\n return t.inclusive ? s <= 0 : s < 0;\n }(t.startAt, Hn(t), e)) return !1;\n if (t.endAt && !function(t, e, n) {\n const s = ln(t, e, n);\n return t.inclusive ? s >= 0 : s > 0;\n }(t.endAt, Hn(t), e)) return !1;\n return !0;\n }\n /**\n * Returns the collection group that this query targets.\n *\n * PORTING NOTE: This is only used in the Web SDK to facilitate multi-tab\n * synchronization for query results.\n */ (t, e);\n}\n\nfunction ss(t) {\n return t.collectionGroup || (t.path.length % 2 == 1 ? t.path.lastSegment() : t.path.get(t.path.length - 2));\n}\n\n/**\n * Returns a new comparator function that can be used to compare two documents\n * based on the Query's ordering constraint.\n */ function is(t) {\n return (e, n) => {\n let s = !1;\n for (const i of Hn(t)) {\n const t = rs(i, e, n);\n if (0 !== t) return t;\n s = s || i.field.isKeyField();\n }\n return 0;\n };\n}\n\nfunction rs(t, e, n) {\n const s = t.field.isKeyField() ? ht.comparator(e.key, n.key) : function(t, e, n) {\n const s = e.data.field(t), i = n.data.field(t);\n return null !== s && null !== i ? Ke(s, i) : O();\n }(t.field, e, n);\n switch (t.dir) {\n case \"asc\" /* Direction.ASCENDING */ :\n return s;\n\n case \"desc\" /* Direction.DESCENDING */ :\n return -1 * s;\n\n default:\n return O();\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A map implementation that uses objects as keys. Objects must have an\n * associated equals function and must be immutable. Entries in the map are\n * stored together with the key being produced from the mapKeyFn. This map\n * automatically handles collisions of keys.\n */ class os {\n constructor(t, e) {\n this.mapKeyFn = t, this.equalsFn = e, \n /**\n * The inner map for a key/value pair. Due to the possibility of collisions we\n * keep a list of entries that we do a linear search through to find an actual\n * match. Note that collisions should be rare, so we still expect near\n * constant time lookups in practice.\n */\n this.inner = {}, \n /** The number of entries stored in the map */\n this.innerSize = 0;\n }\n /** Get a value for this key, or undefined if it does not exist. */ get(t) {\n const e = this.mapKeyFn(t), n = this.inner[e];\n if (void 0 !== n) for (const [e, s] of n) if (this.equalsFn(e, t)) return s;\n }\n has(t) {\n return void 0 !== this.get(t);\n }\n /** Put this key and value in the map. */ set(t, e) {\n const n = this.mapKeyFn(t), s = this.inner[n];\n if (void 0 === s) return this.inner[n] = [ [ t, e ] ], void this.innerSize++;\n for (let n = 0; n < s.length; n++) if (this.equalsFn(s[n][0], t)) \n // This is updating an existing entry and does not increase `innerSize`.\n return void (s[n] = [ t, e ]);\n s.push([ t, e ]), this.innerSize++;\n }\n /**\n * Remove this key from the map. Returns a boolean if anything was deleted.\n */ delete(t) {\n const e = this.mapKeyFn(t), n = this.inner[e];\n if (void 0 === n) return !1;\n for (let s = 0; s < n.length; s++) if (this.equalsFn(n[s][0], t)) return 1 === n.length ? delete this.inner[e] : n.splice(s, 1), \n this.innerSize--, !0;\n return !1;\n }\n forEach(t) {\n ge(this.inner, ((e, n) => {\n for (const [e, s] of n) t(e, s);\n }));\n }\n isEmpty() {\n return ye(this.inner);\n }\n size() {\n return this.innerSize;\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */ const us = new pe(ht.comparator);\n\nfunction cs() {\n return us;\n}\n\nconst as = new pe(ht.comparator);\n\nfunction hs(...t) {\n let e = as;\n for (const n of t) e = e.insert(n.key, n);\n return e;\n}\n\nfunction ls(t) {\n let e = as;\n return t.forEach(((t, n) => e = e.insert(t, n.overlayedDocument))), e;\n}\n\nfunction fs() {\n return ws();\n}\n\nfunction ds() {\n return ws();\n}\n\nfunction ws() {\n return new os((t => t.toString()), ((t, e) => t.isEqual(e)));\n}\n\nconst _s = new pe(ht.comparator);\n\nconst ms = new Ee(ht.comparator);\n\nfunction gs(...t) {\n let e = ms;\n for (const n of t) e = e.add(n);\n return e;\n}\n\nconst ys = new Ee(et);\n\nfunction ps() {\n return ys;\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Returns an DoubleValue for `value` that is encoded based the serializer's\n * `useProto3Json` setting.\n */ function Is(t, e) {\n if (t.useProto3Json) {\n if (isNaN(e)) return {\n doubleValue: \"NaN\"\n };\n if (e === 1 / 0) return {\n doubleValue: \"Infinity\"\n };\n if (e === -1 / 0) return {\n doubleValue: \"-Infinity\"\n };\n }\n return {\n doubleValue: Bt(e) ? \"-0\" : e\n };\n}\n\n/**\n * Returns an IntegerValue for `value`.\n */ function Ts(t) {\n return {\n integerValue: \"\" + t\n };\n}\n\n/**\n * Returns a value for a number that's appropriate to put into a proto.\n * The return value is an IntegerValue if it can safely represent the value,\n * otherwise a DoubleValue is returned.\n */ function Es(t, e) {\n return Lt(e) ? Ts(e) : Is(t, e);\n}\n\n/**\n * @license\n * Copyright 2018 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/** Used to represent a field transform on a mutation. */ class As {\n constructor() {\n // Make sure that the structural type of `TransformOperation` is unique.\n // See https://github.com/microsoft/TypeScript/issues/5451\n this._ = void 0;\n }\n}\n\n/**\n * Computes the local transform result against the provided `previousValue`,\n * optionally using the provided localWriteTime.\n */ function vs(t, e, n) {\n return t instanceof bs ? function(t, e) {\n const n = {\n fields: {\n __type__: {\n stringValue: \"server_timestamp\"\n },\n __local_write_time__: {\n timestampValue: {\n seconds: t.seconds,\n nanos: t.nanoseconds\n }\n }\n }\n };\n // We should avoid storing deeply nested server timestamp map values\n // because we never use the intermediate \"previous values\".\n // For example:\n // previous: 42L, add: t1, result: t1 -> 42L\n // previous: t1, add: t2, result: t2 -> 42L (NOT t2 -> t1 -> 42L)\n // previous: t2, add: t3, result: t3 -> 42L (NOT t3 -> t2 -> t1 -> 42L)\n // `getPreviousValue` recursively traverses server timestamps to find the\n // least recent Value.\n return e && Ne(e) && (e = ke(e)), e && (n.fields.__previous_value__ = e), \n {\n mapValue: n\n };\n }(n, e) : t instanceof Vs ? Ss(t, e) : t instanceof Ds ? Cs(t, e) : function(t, e) {\n // PORTING NOTE: Since JavaScript's integer arithmetic is limited to 53 bit\n // precision and resolves overflows by reducing precision, we do not\n // manually cap overflows at 2^63.\n const n = Ps(t, e), s = Ns(n) + Ns(t.gt);\n return He(n) && He(t.gt) ? Ts(s) : Is(t.serializer, s);\n }(t, e);\n}\n\n/**\n * Computes a final transform result after the transform has been acknowledged\n * by the server, potentially using the server-provided transformResult.\n */ function Rs(t, e, n) {\n // The server just sends null as the transform result for array operations,\n // so we have to calculate a result the same as we do for local\n // applications.\n return t instanceof Vs ? Ss(t, e) : t instanceof Ds ? Cs(t, e) : n;\n}\n\n/**\n * If this transform operation is not idempotent, returns the base value to\n * persist for this transform. If a base value is returned, the transform\n * operation is always applied to this base value, even if document has\n * already been updated.\n *\n * Base values provide consistent behavior for non-idempotent transforms and\n * allow us to return the same latency-compensated value even if the backend\n * has already applied the transform operation. The base value is null for\n * idempotent transforms, as they can be re-played even if the backend has\n * already applied them.\n *\n * @returns a base value to store along with the mutation, or null for\n * idempotent transforms.\n */ function Ps(t, e) {\n return t instanceof xs ? He(n = e) || function(t) {\n return !!t && \"doubleValue\" in t;\n }\n /** Returns true if `value` is either an IntegerValue or a DoubleValue. */ (n) ? e : {\n integerValue: 0\n } : null;\n var n;\n}\n\n/** Transforms a value into a server-generated timestamp. */\nclass bs extends As {}\n\n/** Transforms an array value via a union operation. */ class Vs extends As {\n constructor(t) {\n super(), this.elements = t;\n }\n}\n\nfunction Ss(t, e) {\n const n = ks(e);\n for (const e of t.elements) n.some((t => qe(t, e))) || n.push(e);\n return {\n arrayValue: {\n values: n\n }\n };\n}\n\n/** Transforms an array value via a remove operation. */ class Ds extends As {\n constructor(t) {\n super(), this.elements = t;\n }\n}\n\nfunction Cs(t, e) {\n let n = ks(e);\n for (const e of t.elements) n = n.filter((t => !qe(t, e)));\n return {\n arrayValue: {\n values: n\n }\n };\n}\n\n/**\n * Implements the backend semantics for locally computed NUMERIC_ADD (increment)\n * transforms. Converts all field values to integers or doubles, but unlike the\n * backend does not cap integer values at 2^63. Instead, JavaScript number\n * arithmetic is used and precision loss can occur for values greater than 2^53.\n */ class xs extends As {\n constructor(t, e) {\n super(), this.serializer = t, this.gt = e;\n }\n}\n\nfunction Ns(t) {\n return Ce(t.integerValue || t.doubleValue);\n}\n\nfunction ks(t) {\n return Je(t) && t.arrayValue.values ? t.arrayValue.values.slice() : [];\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/** A field path and the TransformOperation to perform upon it. */ class Ms {\n constructor(t, e) {\n this.field = t, this.transform = e;\n }\n}\n\nfunction $s(t, e) {\n return t.field.isEqual(e.field) && function(t, e) {\n return t instanceof Vs && e instanceof Vs || t instanceof Ds && e instanceof Ds ? nt(t.elements, e.elements, qe) : t instanceof xs && e instanceof xs ? qe(t.gt, e.gt) : t instanceof bs && e instanceof bs;\n }(t.transform, e.transform);\n}\n\n/** The result of successfully applying a mutation to the backend. */\nclass Os {\n constructor(\n /**\n * The version at which the mutation was committed:\n *\n * - For most operations, this is the updateTime in the WriteResult.\n * - For deletes, the commitTime of the WriteResponse (because deletes are\n * not stored and have no updateTime).\n *\n * Note that these versions can be different: No-op writes will not change\n * the updateTime even though the commitTime advances.\n */\n t, \n /**\n * The resulting fields returned from the backend after a mutation\n * containing field transforms has been committed. Contains one FieldValue\n * for each FieldTransform that was in the mutation.\n *\n * Will be empty if the mutation did not contain any field transforms.\n */\n e) {\n this.version = t, this.transformResults = e;\n }\n}\n\n/**\n * Encodes a precondition for a mutation. This follows the model that the\n * backend accepts with the special case of an explicit \"empty\" precondition\n * (meaning no precondition).\n */ class Fs {\n constructor(t, e) {\n this.updateTime = t, this.exists = e;\n }\n /** Creates a new empty Precondition. */ static none() {\n return new Fs;\n }\n /** Creates a new Precondition with an exists flag. */ static exists(t) {\n return new Fs(void 0, t);\n }\n /** Creates a new Precondition based on a version a document exists at. */ static updateTime(t) {\n return new Fs(t);\n }\n /** Returns whether this Precondition is empty. */ get isNone() {\n return void 0 === this.updateTime && void 0 === this.exists;\n }\n isEqual(t) {\n return this.exists === t.exists && (this.updateTime ? !!t.updateTime && this.updateTime.isEqual(t.updateTime) : !t.updateTime);\n }\n}\n\n/** Returns true if the preconditions is valid for the given document. */ function Bs(t, e) {\n return void 0 !== t.updateTime ? e.isFoundDocument() && e.version.isEqual(t.updateTime) : void 0 === t.exists || t.exists === e.isFoundDocument();\n}\n\n/**\n * A mutation describes a self-contained change to a document. Mutations can\n * create, replace, delete, and update subsets of documents.\n *\n * Mutations not only act on the value of the document but also its version.\n *\n * For local mutations (mutations that haven't been committed yet), we preserve\n * the existing version for Set and Patch mutations. For Delete mutations, we\n * reset the version to 0.\n *\n * Here's the expected transition table.\n *\n * MUTATION APPLIED TO RESULTS IN\n *\n * SetMutation Document(v3) Document(v3)\n * SetMutation NoDocument(v3) Document(v0)\n * SetMutation InvalidDocument(v0) Document(v0)\n * PatchMutation Document(v3) Document(v3)\n * PatchMutation NoDocument(v3) NoDocument(v3)\n * PatchMutation InvalidDocument(v0) UnknownDocument(v3)\n * DeleteMutation Document(v3) NoDocument(v0)\n * DeleteMutation NoDocument(v3) NoDocument(v0)\n * DeleteMutation InvalidDocument(v0) NoDocument(v0)\n *\n * For acknowledged mutations, we use the updateTime of the WriteResponse as\n * the resulting version for Set and Patch mutations. As deletes have no\n * explicit update time, we use the commitTime of the WriteResponse for\n * Delete mutations.\n *\n * If a mutation is acknowledged by the backend but fails the precondition check\n * locally, we transition to an `UnknownDocument` and rely on Watch to send us\n * the updated version.\n *\n * Field transforms are used only with Patch and Set Mutations. We use the\n * `updateTransforms` message to store transforms, rather than the `transforms`s\n * messages.\n *\n * ## Subclassing Notes\n *\n * Every type of mutation needs to implement its own applyToRemoteDocument() and\n * applyToLocalView() to implement the actual behavior of applying the mutation\n * to some source document (see `setMutationApplyToRemoteDocument()` for an\n * example).\n */ class Ls {}\n\n/**\n * A utility method to calculate a `Mutation` representing the overlay from the\n * final state of the document, and a `FieldMask` representing the fields that\n * are mutated by the local mutations.\n */ function qs(t, e) {\n if (!t.hasLocalMutations || e && 0 === e.fields.length) return null;\n // mask is null when sets or deletes are applied to the current document.\n if (null === e) return t.isNoDocument() ? new Ys(t.key, Fs.none()) : new js(t.key, t.data, Fs.none());\n {\n const n = t.data, s = un.empty();\n let i = new Ee(at.comparator);\n for (let t of e.fields) if (!i.has(t)) {\n let e = n.field(t);\n // If we are deleting a nested field, we take the immediate parent as\n // the mask used to construct the resulting mutation.\n // Justification: Nested fields can create parent fields implicitly. If\n // only a leaf entry is deleted in later mutations, the parent field\n // should still remain, but we may have lost this information.\n // Consider mutation (foo.bar 1), then mutation (foo.bar delete()).\n // This leaves the final result (foo, {}). Despite the fact that `doc`\n // has the correct result, `foo` is not in `mask`, and the resulting\n // mutation would miss `foo`.\n null === e && t.length > 1 && (t = t.popLast(), e = n.field(t)), null === e ? s.delete(t) : s.set(t, e), \n i = i.add(t);\n }\n return new zs(t.key, s, new Re(i.toArray()), Fs.none());\n }\n}\n\n/**\n * Applies this mutation to the given document for the purposes of computing a\n * new remote document. If the input document doesn't match the expected state\n * (e.g. it is invalid or outdated), the document type may transition to\n * unknown.\n *\n * @param mutation - The mutation to apply.\n * @param document - The document to mutate. The input document can be an\n * invalid document if the client has no knowledge of the pre-mutation state\n * of the document.\n * @param mutationResult - The result of applying the mutation from the backend.\n */ function Us(t, e, n) {\n t instanceof js ? function(t, e, n) {\n // Unlike setMutationApplyToLocalView, if we're applying a mutation to a\n // remote document the server has accepted the mutation so the precondition\n // must have held.\n const s = t.value.clone(), i = Hs(t.fieldTransforms, e, n.transformResults);\n s.setAll(i), e.convertToFoundDocument(n.version, s).setHasCommittedMutations();\n }(t, e, n) : t instanceof zs ? function(t, e, n) {\n if (!Bs(t.precondition, e)) \n // Since the mutation was not rejected, we know that the precondition\n // matched on the backend. We therefore must not have the expected version\n // of the document in our cache and convert to an UnknownDocument with a\n // known updateTime.\n return void e.convertToUnknownDocument(n.version);\n const s = Hs(t.fieldTransforms, e, n.transformResults), i = e.data;\n i.setAll(Ws(t)), i.setAll(s), e.convertToFoundDocument(n.version, i).setHasCommittedMutations();\n }(t, e, n) : function(t, e, n) {\n // Unlike applyToLocalView, if we're applying a mutation to a remote\n // document the server has accepted the mutation so the precondition must\n // have held.\n e.convertToNoDocument(n.version).setHasCommittedMutations();\n }(0, e, n);\n}\n\n/**\n * Applies this mutation to the given document for the purposes of computing\n * the new local view of a document. If the input document doesn't match the\n * expected state, the document is not modified.\n *\n * @param mutation - The mutation to apply.\n * @param document - The document to mutate. The input document can be an\n * invalid document if the client has no knowledge of the pre-mutation state\n * of the document.\n * @param previousMask - The fields that have been updated before applying this mutation.\n * @param localWriteTime - A timestamp indicating the local write time of the\n * batch this mutation is a part of.\n * @returns A `FieldMask` representing the fields that are changed by applying this mutation.\n */ function Ks(t, e, n, s) {\n return t instanceof js ? function(t, e, n, s) {\n if (!Bs(t.precondition, e)) \n // The mutation failed to apply (e.g. a document ID created with add()\n // caused a name collision).\n return n;\n const i = t.value.clone(), r = Js(t.fieldTransforms, s, e);\n return i.setAll(r), e.convertToFoundDocument(e.version, i).setHasLocalMutations(), \n null;\n // SetMutation overwrites all fields.\n }\n /**\n * A mutation that modifies fields of the document at the given key with the\n * given values. The values are applied through a field mask:\n *\n * * When a field is in both the mask and the values, the corresponding field\n * is updated.\n * * When a field is in neither the mask nor the values, the corresponding\n * field is unmodified.\n * * When a field is in the mask but not in the values, the corresponding field\n * is deleted.\n * * When a field is not in the mask but is in the values, the values map is\n * ignored.\n */ (t, e, n, s) : t instanceof zs ? function(t, e, n, s) {\n if (!Bs(t.precondition, e)) return n;\n const i = Js(t.fieldTransforms, s, e), r = e.data;\n if (r.setAll(Ws(t)), r.setAll(i), e.convertToFoundDocument(e.version, r).setHasLocalMutations(), \n null === n) return null;\n return n.unionWith(t.fieldMask.fields).unionWith(t.fieldTransforms.map((t => t.field)));\n }\n /**\n * Returns a FieldPath/Value map with the content of the PatchMutation.\n */ (t, e, n, s) : function(t, e, n) {\n if (Bs(t.precondition, e)) return e.convertToNoDocument(e.version).setHasLocalMutations(), \n null;\n return n;\n }\n /**\n * A mutation that verifies the existence of the document at the given key with\n * the provided precondition.\n *\n * The `verify` operation is only used in Transactions, and this class serves\n * primarily to facilitate serialization into protos.\n */ (t, e, n);\n}\n\n/**\n * If this mutation is not idempotent, returns the base value to persist with\n * this mutation. If a base value is returned, the mutation is always applied\n * to this base value, even if document has already been updated.\n *\n * The base value is a sparse object that consists of only the document\n * fields for which this mutation contains a non-idempotent transformation\n * (e.g. a numeric increment). The provided value guarantees consistent\n * behavior for non-idempotent transforms and allow us to return the same\n * latency-compensated value even if the backend has already applied the\n * mutation. The base value is null for idempotent mutations, as they can be\n * re-played even if the backend has already applied them.\n *\n * @returns a base value to store along with the mutation, or null for\n * idempotent mutations.\n */ function Gs(t, e) {\n let n = null;\n for (const s of t.fieldTransforms) {\n const t = e.data.field(s.field), i = Ps(s.transform, t || null);\n null != i && (null === n && (n = un.empty()), n.set(s.field, i));\n }\n return n || null;\n}\n\nfunction Qs(t, e) {\n return t.type === e.type && (!!t.key.isEqual(e.key) && (!!t.precondition.isEqual(e.precondition) && (!!function(t, e) {\n return void 0 === t && void 0 === e || !(!t || !e) && nt(t, e, ((t, e) => $s(t, e)));\n }(t.fieldTransforms, e.fieldTransforms) && (0 /* MutationType.Set */ === t.type ? t.value.isEqual(e.value) : 1 /* MutationType.Patch */ !== t.type || t.data.isEqual(e.data) && t.fieldMask.isEqual(e.fieldMask)))));\n}\n\n/**\n * A mutation that creates or replaces the document at the given key with the\n * object value contents.\n */ class js extends Ls {\n constructor(t, e, n, s = []) {\n super(), this.key = t, this.value = e, this.precondition = n, this.fieldTransforms = s, \n this.type = 0 /* MutationType.Set */;\n }\n getFieldMask() {\n return null;\n }\n}\n\nclass zs extends Ls {\n constructor(t, e, n, s, i = []) {\n super(), this.key = t, this.data = e, this.fieldMask = n, this.precondition = s, \n this.fieldTransforms = i, this.type = 1 /* MutationType.Patch */;\n }\n getFieldMask() {\n return this.fieldMask;\n }\n}\n\nfunction Ws(t) {\n const e = new Map;\n return t.fieldMask.fields.forEach((n => {\n if (!n.isEmpty()) {\n const s = t.data.field(n);\n e.set(n, s);\n }\n })), e;\n}\n\n/**\n * Creates a list of \"transform results\" (a transform result is a field value\n * representing the result of applying a transform) for use after a mutation\n * containing transforms has been acknowledged by the server.\n *\n * @param fieldTransforms - The field transforms to apply the result to.\n * @param mutableDocument - The current state of the document after applying all\n * previous mutations.\n * @param serverTransformResults - The transform results received by the server.\n * @returns The transform results list.\n */ function Hs(t, e, n) {\n const s = new Map;\n F(t.length === n.length);\n for (let i = 0; i < n.length; i++) {\n const r = t[i], o = r.transform, u = e.data.field(r.field);\n s.set(r.field, Rs(o, u, n[i]));\n }\n return s;\n}\n\n/**\n * Creates a list of \"transform results\" (a transform result is a field value\n * representing the result of applying a transform) for use when applying a\n * transform locally.\n *\n * @param fieldTransforms - The field transforms to apply the result to.\n * @param localWriteTime - The local time of the mutation (used to\n * generate ServerTimestampValues).\n * @param mutableDocument - The document to apply transforms on.\n * @returns The transform results list.\n */ function Js(t, e, n) {\n const s = new Map;\n for (const i of t) {\n const t = i.transform, r = n.data.field(i.field);\n s.set(i.field, vs(t, r, e));\n }\n return s;\n}\n\n/** A mutation that deletes the document at the given key. */ class Ys extends Ls {\n constructor(t, e) {\n super(), this.key = t, this.precondition = e, this.type = 2 /* MutationType.Delete */ , \n this.fieldTransforms = [];\n }\n getFieldMask() {\n return null;\n }\n}\n\nclass Xs extends Ls {\n constructor(t, e) {\n super(), this.key = t, this.precondition = e, this.type = 3 /* MutationType.Verify */ , \n this.fieldTransforms = [];\n }\n getFieldMask() {\n return null;\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A batch of mutations that will be sent as one unit to the backend.\n */ class Zs {\n /**\n * @param batchId - The unique ID of this mutation batch.\n * @param localWriteTime - The original write time of this mutation.\n * @param baseMutations - Mutations that are used to populate the base\n * values when this mutation is applied locally. This can be used to locally\n * overwrite values that are persisted in the remote document cache. Base\n * mutations are never sent to the backend.\n * @param mutations - The user-provided mutations in this mutation batch.\n * User-provided mutations are applied both locally and remotely on the\n * backend.\n */\n constructor(t, e, n, s) {\n this.batchId = t, this.localWriteTime = e, this.baseMutations = n, this.mutations = s;\n }\n /**\n * Applies all the mutations in this MutationBatch to the specified document\n * to compute the state of the remote document\n *\n * @param document - The document to apply mutations to.\n * @param batchResult - The result of applying the MutationBatch to the\n * backend.\n */ applyToRemoteDocument(t, e) {\n const n = e.mutationResults;\n for (let e = 0; e < this.mutations.length; e++) {\n const s = this.mutations[e];\n if (s.key.isEqual(t.key)) {\n Us(s, t, n[e]);\n }\n }\n }\n /**\n * Computes the local view of a document given all the mutations in this\n * batch.\n *\n * @param document - The document to apply mutations to.\n * @param mutatedFields - Fields that have been updated before applying this mutation batch.\n * @returns A `FieldMask` representing all the fields that are mutated.\n */ applyToLocalView(t, e) {\n // First, apply the base state. This allows us to apply non-idempotent\n // transform against a consistent set of values.\n for (const n of this.baseMutations) n.key.isEqual(t.key) && (e = Ks(n, t, e, this.localWriteTime));\n // Second, apply all user-provided mutations.\n for (const n of this.mutations) n.key.isEqual(t.key) && (e = Ks(n, t, e, this.localWriteTime));\n return e;\n }\n /**\n * Computes the local view for all provided documents given the mutations in\n * this batch. Returns a `DocumentKey` to `Mutation` map which can be used to\n * replace all the mutation applications.\n */ applyToLocalDocumentSet(t, e) {\n // TODO(mrschmidt): This implementation is O(n^2). If we apply the mutations\n // directly (as done in `applyToLocalView()`), we can reduce the complexity\n // to O(n).\n const n = ds();\n return this.mutations.forEach((s => {\n const i = t.get(s.key), r = i.overlayedDocument;\n // TODO(mutabledocuments): This method should take a MutableDocumentMap\n // and we should remove this cast.\n let o = this.applyToLocalView(r, i.mutatedFields);\n // Set mutatedFields to null if the document is only from local mutations.\n // This creates a Set or Delete mutation, instead of trying to create a\n // patch mutation as the overlay.\n o = e.has(s.key) ? null : o;\n const u = qs(r, o);\n null !== u && n.set(s.key, u), r.isValidDocument() || r.convertToNoDocument(rt.min());\n })), n;\n }\n keys() {\n return this.mutations.reduce(((t, e) => t.add(e.key)), gs());\n }\n isEqual(t) {\n return this.batchId === t.batchId && nt(this.mutations, t.mutations, ((t, e) => Qs(t, e))) && nt(this.baseMutations, t.baseMutations, ((t, e) => Qs(t, e)));\n }\n}\n\n/** The result of applying a mutation batch to the backend. */ class ti {\n constructor(t, e, n, \n /**\n * A pre-computed mapping from each mutated document to the resulting\n * version.\n */\n s) {\n this.batch = t, this.commitVersion = e, this.mutationResults = n, this.docVersions = s;\n }\n /**\n * Creates a new MutationBatchResult for the given batch and results. There\n * must be one result for each mutation in the batch. This static factory\n * caches a document=>version mapping (docVersions).\n */ static from(t, e, n) {\n F(t.mutations.length === n.length);\n let s = _s;\n const i = t.mutations;\n for (let t = 0; t < i.length; t++) s = s.insert(i[t].key, n[t].version);\n return new ti(t, e, n, s);\n }\n}\n\n/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Representation of an overlay computed by Firestore.\n *\n * Holds information about a mutation and the largest batch id in Firestore when\n * the mutation was created.\n */ class ei {\n constructor(t, e) {\n this.largestBatchId = t, this.mutation = e;\n }\n getKey() {\n return this.mutation.key;\n }\n isEqual(t) {\n return null !== t && this.mutation === t.mutation;\n }\n toString() {\n return `Overlay{\\n largestBatchId: ${this.largestBatchId},\\n mutation: ${this.mutation.toString()}\\n }`;\n }\n}\n\n/**\n * @license\n * Copyright 2023 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Concrete implementation of the Aggregate type.\n */ class ni {\n constructor(t, e, n) {\n this.alias = t, this.yt = e, this.fieldPath = n;\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */ class si {\n constructor(t, e) {\n this.count = t, this.unchangedNames = e;\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Error Codes describing the different ways GRPC can fail. These are copied\n * directly from GRPC's sources here:\n *\n * https://github.com/grpc/grpc/blob/bceec94ea4fc5f0085d81235d8e1c06798dc341a/include/grpc%2B%2B/impl/codegen/status_code_enum.h\n *\n * Important! The names of these identifiers matter because the string forms\n * are used for reverse lookups from the webchannel stream. Do NOT change the\n * names of these identifiers or change this into a const enum.\n */ var ii, ri;\n\n/**\n * Determines whether an error code represents a permanent error when received\n * in response to a non-write operation.\n *\n * See isPermanentWriteError for classifying write errors.\n */\nfunction oi(t) {\n switch (t) {\n default:\n return O();\n\n case q.CANCELLED:\n case q.UNKNOWN:\n case q.DEADLINE_EXCEEDED:\n case q.RESOURCE_EXHAUSTED:\n case q.INTERNAL:\n case q.UNAVAILABLE:\n // Unauthenticated means something went wrong with our token and we need\n // to retry with new credentials which will happen automatically.\n case q.UNAUTHENTICATED:\n return !1;\n\n case q.INVALID_ARGUMENT:\n case q.NOT_FOUND:\n case q.ALREADY_EXISTS:\n case q.PERMISSION_DENIED:\n case q.FAILED_PRECONDITION:\n // Aborted might be retried in some scenarios, but that is dependant on\n // the context and should handled individually by the calling code.\n // See https://cloud.google.com/apis/design/errors.\n case q.ABORTED:\n case q.OUT_OF_RANGE:\n case q.UNIMPLEMENTED:\n case q.DATA_LOSS:\n return !0;\n }\n}\n\n/**\n * Determines whether an error code represents a permanent error when received\n * in response to a write operation.\n *\n * Write operations must be handled specially because as of b/119437764, ABORTED\n * errors on the write stream should be retried too (even though ABORTED errors\n * are not generally retryable).\n *\n * Note that during the initial handshake on the write stream an ABORTED error\n * signals that we should discard our stream token (i.e. it is permanent). This\n * means a handshake error should be classified with isPermanentError, above.\n */\n/**\n * Maps an error Code from GRPC status code number, like 0, 1, or 14. These\n * are not the same as HTTP status codes.\n *\n * @returns The Code equivalent to the given GRPC status code. Fails if there\n * is no match.\n */\nfunction ui(t) {\n if (void 0 === t) \n // This shouldn't normally happen, but in certain error cases (like trying\n // to send invalid proto messages) we may get an error with no GRPC code.\n return k(\"GRPC error has no .code\"), q.UNKNOWN;\n switch (t) {\n case ii.OK:\n return q.OK;\n\n case ii.CANCELLED:\n return q.CANCELLED;\n\n case ii.UNKNOWN:\n return q.UNKNOWN;\n\n case ii.DEADLINE_EXCEEDED:\n return q.DEADLINE_EXCEEDED;\n\n case ii.RESOURCE_EXHAUSTED:\n return q.RESOURCE_EXHAUSTED;\n\n case ii.INTERNAL:\n return q.INTERNAL;\n\n case ii.UNAVAILABLE:\n return q.UNAVAILABLE;\n\n case ii.UNAUTHENTICATED:\n return q.UNAUTHENTICATED;\n\n case ii.INVALID_ARGUMENT:\n return q.INVALID_ARGUMENT;\n\n case ii.NOT_FOUND:\n return q.NOT_FOUND;\n\n case ii.ALREADY_EXISTS:\n return q.ALREADY_EXISTS;\n\n case ii.PERMISSION_DENIED:\n return q.PERMISSION_DENIED;\n\n case ii.FAILED_PRECONDITION:\n return q.FAILED_PRECONDITION;\n\n case ii.ABORTED:\n return q.ABORTED;\n\n case ii.OUT_OF_RANGE:\n return q.OUT_OF_RANGE;\n\n case ii.UNIMPLEMENTED:\n return q.UNIMPLEMENTED;\n\n case ii.DATA_LOSS:\n return q.DATA_LOSS;\n\n default:\n return O();\n }\n}\n\n/**\n * Converts an HTTP response's error status to the equivalent error code.\n *\n * @param status - An HTTP error response status (\"FAILED_PRECONDITION\",\n * \"UNKNOWN\", etc.)\n * @returns The equivalent Code. Non-matching responses are mapped to\n * Code.UNKNOWN.\n */ (ri = ii || (ii = {}))[ri.OK = 0] = \"OK\", ri[ri.CANCELLED = 1] = \"CANCELLED\", \nri[ri.UNKNOWN = 2] = \"UNKNOWN\", ri[ri.INVALID_ARGUMENT = 3] = \"INVALID_ARGUMENT\", \nri[ri.DEADLINE_EXCEEDED = 4] = \"DEADLINE_EXCEEDED\", ri[ri.NOT_FOUND = 5] = \"NOT_FOUND\", \nri[ri.ALREADY_EXISTS = 6] = \"ALREADY_EXISTS\", ri[ri.PERMISSION_DENIED = 7] = \"PERMISSION_DENIED\", \nri[ri.UNAUTHENTICATED = 16] = \"UNAUTHENTICATED\", ri[ri.RESOURCE_EXHAUSTED = 8] = \"RESOURCE_EXHAUSTED\", \nri[ri.FAILED_PRECONDITION = 9] = \"FAILED_PRECONDITION\", ri[ri.ABORTED = 10] = \"ABORTED\", \nri[ri.OUT_OF_RANGE = 11] = \"OUT_OF_RANGE\", ri[ri.UNIMPLEMENTED = 12] = \"UNIMPLEMENTED\", \nri[ri.INTERNAL = 13] = \"INTERNAL\", ri[ri.UNAVAILABLE = 14] = \"UNAVAILABLE\", ri[ri.DATA_LOSS = 15] = \"DATA_LOSS\";\n\n/**\n * @license\n * Copyright 2023 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Manages \"testing hooks\", hooks into the internals of the SDK to verify\n * internal state and events during integration tests. Do not use this class\n * except for testing purposes.\n *\n * There are two ways to retrieve the global singleton instance of this class:\n * 1. The `instance` property, which returns null if the global singleton\n * instance has not been created. Use this property if the caller should\n * \"do nothing\" if there are no testing hooks registered, such as when\n * delivering an event to notify registered callbacks.\n * 2. The `getOrCreateInstance()` method, which creates the global singleton\n * instance if it has not been created. Use this method if the instance is\n * needed to, for example, register a callback.\n *\n * @internal\n */\nclass ci {\n constructor() {\n this.onExistenceFilterMismatchCallbacks = new Map;\n }\n /**\n * Returns the singleton instance of this class, or null if it has not been\n * initialized.\n */ static get instance() {\n return ai;\n }\n /**\n * Returns the singleton instance of this class, creating it if is has never\n * been created before.\n */ static getOrCreateInstance() {\n return null === ai && (ai = new ci), ai;\n }\n /**\n * Registers a callback to be notified when an existence filter mismatch\n * occurs in the Watch listen stream.\n *\n * The relative order in which callbacks are notified is unspecified; do not\n * rely on any particular ordering. If a given callback is registered multiple\n * times then it will be notified multiple times, once per registration.\n *\n * @param callback the callback to invoke upon existence filter mismatch.\n *\n * @return a function that, when called, unregisters the given callback; only\n * the first invocation of the returned function does anything; all subsequent\n * invocations do nothing.\n */ onExistenceFilterMismatch(t) {\n const e = Symbol();\n return this.onExistenceFilterMismatchCallbacks.set(e, t), () => this.onExistenceFilterMismatchCallbacks.delete(e);\n }\n /**\n * Invokes all currently-registered `onExistenceFilterMismatch` callbacks.\n * @param info Information about the existence filter mismatch.\n */ notifyOnExistenceFilterMismatch(t) {\n this.onExistenceFilterMismatchCallbacks.forEach((e => e(t)));\n }\n}\n\n/** The global singleton instance of `TestingHooks`. */ let ai = null;\n\n/**\n * @license\n * Copyright 2023 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * An instance of the Platform's 'TextEncoder' implementation.\n */ function hi() {\n return new TextEncoder;\n}\n\n/**\n * An instance of the Platform's 'TextDecoder' implementation.\n */\n/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nconst li = new Integer([ 4294967295, 4294967295 ], 0);\n\n// Hash a string using md5 hashing algorithm.\nfunction fi(t) {\n const e = hi().encode(t), n = new Md5;\n return n.update(e), new Uint8Array(n.digest());\n}\n\n// Interpret the 16 bytes array as two 64-bit unsigned integers, encoded using\n// 2’s complement using little endian.\nfunction di(t) {\n const e = new DataView(t.buffer), n = e.getUint32(0, /* littleEndian= */ !0), s = e.getUint32(4, /* littleEndian= */ !0), i = e.getUint32(8, /* littleEndian= */ !0), r = e.getUint32(12, /* littleEndian= */ !0);\n return [ new Integer([ n, s ], 0), new Integer([ i, r ], 0) ];\n}\n\nclass wi {\n constructor(t, e, n) {\n if (this.bitmap = t, this.padding = e, this.hashCount = n, e < 0 || e >= 8) throw new _i(`Invalid padding: ${e}`);\n if (n < 0) throw new _i(`Invalid hash count: ${n}`);\n if (t.length > 0 && 0 === this.hashCount) \n // Only empty bloom filter can have 0 hash count.\n throw new _i(`Invalid hash count: ${n}`);\n if (0 === t.length && 0 !== e) \n // Empty bloom filter should have 0 padding.\n throw new _i(`Invalid padding when bitmap length is 0: ${e}`);\n this.It = 8 * t.length - e, \n // Set the bit count in Integer to avoid repetition in mightContain().\n this.Tt = Integer.fromNumber(this.It);\n }\n // Calculate the ith hash value based on the hashed 64bit integers,\n // and calculate its corresponding bit index in the bitmap to be checked.\n Et(t, e, n) {\n // Calculate hashed value h(i) = h1 + (i * h2).\n let s = t.add(e.multiply(Integer.fromNumber(n)));\n // Wrap if hash value overflow 64bit.\n return 1 === s.compare(li) && (s = new Integer([ s.getBits(0), s.getBits(1) ], 0)), \n s.modulo(this.Tt).toNumber();\n }\n // Return whether the bit on the given index in the bitmap is set to 1.\n At(t) {\n return 0 != (this.bitmap[Math.floor(t / 8)] & 1 << t % 8);\n }\n vt(t) {\n // Empty bitmap should always return false on membership check.\n if (0 === this.It) return !1;\n const e = fi(t), [n, s] = di(e);\n for (let t = 0; t < this.hashCount; t++) {\n const e = this.Et(n, s, t);\n if (!this.At(e)) return !1;\n }\n return !0;\n }\n /** Create bloom filter for testing purposes only. */ static create(t, e, n) {\n const s = t % 8 == 0 ? 0 : 8 - t % 8, i = new Uint8Array(Math.ceil(t / 8)), r = new wi(i, s, e);\n return n.forEach((t => r.insert(t))), r;\n }\n insert(t) {\n if (0 === this.It) return;\n const e = fi(t), [n, s] = di(e);\n for (let t = 0; t < this.hashCount; t++) {\n const e = this.Et(n, s, t);\n this.Rt(e);\n }\n }\n Rt(t) {\n const e = Math.floor(t / 8), n = t % 8;\n this.bitmap[e] |= 1 << n;\n }\n}\n\nclass _i extends Error {\n constructor() {\n super(...arguments), this.name = \"BloomFilterError\";\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * An event from the RemoteStore. It is split into targetChanges (changes to the\n * state or the set of documents in our watched targets) and documentUpdates\n * (changes to the actual documents).\n */ class mi {\n constructor(\n /**\n * The snapshot version this event brings us up to, or MIN if not set.\n */\n t, \n /**\n * A map from target to changes to the target. See TargetChange.\n */\n e, \n /**\n * A map of targets that is known to be inconsistent, and the purpose for\n * re-listening. Listens for these targets should be re-established without\n * resume tokens.\n */\n n, \n /**\n * A set of which documents have changed or been deleted, along with the\n * doc's new values (if not deleted).\n */\n s, \n /**\n * A set of which document updates are due only to limbo resolution targets.\n */\n i) {\n this.snapshotVersion = t, this.targetChanges = e, this.targetMismatches = n, this.documentUpdates = s, \n this.resolvedLimboDocuments = i;\n }\n /**\n * HACK: Views require RemoteEvents in order to determine whether the view is\n * CURRENT, but secondary tabs don't receive remote events. So this method is\n * used to create a synthesized RemoteEvent that can be used to apply a\n * CURRENT status change to a View, for queries executed in a different tab.\n */\n // PORTING NOTE: Multi-tab only\n static createSynthesizedRemoteEventForCurrentChange(t, e, n) {\n const s = new Map;\n return s.set(t, gi.createSynthesizedTargetChangeForCurrentChange(t, e, n)), new mi(rt.min(), s, new pe(et), cs(), gs());\n }\n}\n\n/**\n * A TargetChange specifies the set of changes for a specific target as part of\n * a RemoteEvent. These changes track which documents are added, modified or\n * removed, as well as the target's resume token and whether the target is\n * marked CURRENT.\n * The actual changes *to* documents are not part of the TargetChange since\n * documents may be part of multiple targets.\n */ class gi {\n constructor(\n /**\n * An opaque, server-assigned token that allows watching a query to be resumed\n * after disconnecting without retransmitting all the data that matches the\n * query. The resume token essentially identifies a point in time from which\n * the server should resume sending results.\n */\n t, \n /**\n * The \"current\" (synced) status of this target. Note that \"current\"\n * has special meaning in the RPC protocol that implies that a target is\n * both up-to-date and consistent with the rest of the watch stream.\n */\n e, \n /**\n * The set of documents that were newly assigned to this target as part of\n * this remote event.\n */\n n, \n /**\n * The set of documents that were already assigned to this target but received\n * an update during this remote event.\n */\n s, \n /**\n * The set of documents that were removed from this target as part of this\n * remote event.\n */\n i) {\n this.resumeToken = t, this.current = e, this.addedDocuments = n, this.modifiedDocuments = s, \n this.removedDocuments = i;\n }\n /**\n * This method is used to create a synthesized TargetChanges that can be used to\n * apply a CURRENT status change to a View (for queries executed in a different\n * tab) or for new queries (to raise snapshots with correct CURRENT status).\n */ static createSynthesizedTargetChangeForCurrentChange(t, e, n) {\n return new gi(n, e, gs(), gs(), gs());\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Represents a changed document and a list of target ids to which this change\n * applies.\n *\n * If document has been deleted NoDocument will be provided.\n */ class yi {\n constructor(\n /** The new document applies to all of these targets. */\n t, \n /** The new document is removed from all of these targets. */\n e, \n /** The key of the document for this change. */\n n, \n /**\n * The new document or NoDocument if it was deleted. Is null if the\n * document went out of view without the server sending a new document.\n */\n s) {\n this.Pt = t, this.removedTargetIds = e, this.key = n, this.bt = s;\n }\n}\n\nclass pi {\n constructor(t, e) {\n this.targetId = t, this.Vt = e;\n }\n}\n\nclass Ii {\n constructor(\n /** What kind of change occurred to the watch target. */\n t, \n /** The target IDs that were added/removed/set. */\n e, \n /**\n * An opaque, server-assigned token that allows watching a target to be\n * resumed after disconnecting without retransmitting all the data that\n * matches the target. The resume token essentially identifies a point in\n * time from which the server should resume sending results.\n */\n n = Ve.EMPTY_BYTE_STRING\n /** An RPC error indicating why the watch failed. */ , s = null) {\n this.state = t, this.targetIds = e, this.resumeToken = n, this.cause = s;\n }\n}\n\n/** Tracks the internal state of a Watch target. */ class Ti {\n constructor() {\n /**\n * The number of pending responses (adds or removes) that we are waiting on.\n * We only consider targets active that have no pending responses.\n */\n this.St = 0, \n /**\n * Keeps track of the document changes since the last raised snapshot.\n *\n * These changes are continuously updated as we receive document updates and\n * always reflect the current set of changes against the last issued snapshot.\n */\n this.Dt = vi(), \n /** See public getters for explanations of these fields. */\n this.Ct = Ve.EMPTY_BYTE_STRING, this.xt = !1, \n /**\n * Whether this target state should be included in the next snapshot. We\n * initialize to true so that newly-added targets are included in the next\n * RemoteEvent.\n */\n this.Nt = !0;\n }\n /**\n * Whether this target has been marked 'current'.\n *\n * 'Current' has special meaning in the RPC protocol: It implies that the\n * Watch backend has sent us all changes up to the point at which the target\n * was added and that the target is consistent with the rest of the watch\n * stream.\n */ get current() {\n return this.xt;\n }\n /** The last resume token sent to us for this target. */ get resumeToken() {\n return this.Ct;\n }\n /** Whether this target has pending target adds or target removes. */ get kt() {\n return 0 !== this.St;\n }\n /** Whether we have modified any state that should trigger a snapshot. */ get Mt() {\n return this.Nt;\n }\n /**\n * Applies the resume token to the TargetChange, but only when it has a new\n * value. Empty resumeTokens are discarded.\n */ $t(t) {\n t.approximateByteSize() > 0 && (this.Nt = !0, this.Ct = t);\n }\n /**\n * Creates a target change from the current set of changes.\n *\n * To reset the document changes after raising this snapshot, call\n * `clearPendingChanges()`.\n */ Ot() {\n let t = gs(), e = gs(), n = gs();\n return this.Dt.forEach(((s, i) => {\n switch (i) {\n case 0 /* ChangeType.Added */ :\n t = t.add(s);\n break;\n\n case 2 /* ChangeType.Modified */ :\n e = e.add(s);\n break;\n\n case 1 /* ChangeType.Removed */ :\n n = n.add(s);\n break;\n\n default:\n O();\n }\n })), new gi(this.Ct, this.xt, t, e, n);\n }\n /**\n * Resets the document changes and sets `hasPendingChanges` to false.\n */ Ft() {\n this.Nt = !1, this.Dt = vi();\n }\n Bt(t, e) {\n this.Nt = !0, this.Dt = this.Dt.insert(t, e);\n }\n Lt(t) {\n this.Nt = !0, this.Dt = this.Dt.remove(t);\n }\n qt() {\n this.St += 1;\n }\n Ut() {\n this.St -= 1;\n }\n Kt() {\n this.Nt = !0, this.xt = !0;\n }\n}\n\n/**\n * A helper class to accumulate watch changes into a RemoteEvent.\n */\nclass Ei {\n constructor(t) {\n this.Gt = t, \n /** The internal state of all tracked targets. */\n this.Qt = new Map, \n /** Keeps track of the documents to update since the last raised snapshot. */\n this.jt = cs(), \n /** A mapping of document keys to their set of target IDs. */\n this.zt = Ai(), \n /**\n * A map of targets with existence filter mismatches. These targets are\n * known to be inconsistent and their listens needs to be re-established by\n * RemoteStore.\n */\n this.Wt = new pe(et);\n }\n /**\n * Processes and adds the DocumentWatchChange to the current set of changes.\n */ Ht(t) {\n for (const e of t.Pt) t.bt && t.bt.isFoundDocument() ? this.Jt(e, t.bt) : this.Yt(e, t.key, t.bt);\n for (const e of t.removedTargetIds) this.Yt(e, t.key, t.bt);\n }\n /** Processes and adds the WatchTargetChange to the current set of changes. */ Xt(t) {\n this.forEachTarget(t, (e => {\n const n = this.Zt(e);\n switch (t.state) {\n case 0 /* WatchTargetChangeState.NoChange */ :\n this.te(e) && n.$t(t.resumeToken);\n break;\n\n case 1 /* WatchTargetChangeState.Added */ :\n // We need to decrement the number of pending acks needed from watch\n // for this targetId.\n n.Ut(), n.kt || \n // We have a freshly added target, so we need to reset any state\n // that we had previously. This can happen e.g. when remove and add\n // back a target for existence filter mismatches.\n n.Ft(), n.$t(t.resumeToken);\n break;\n\n case 2 /* WatchTargetChangeState.Removed */ :\n // We need to keep track of removed targets to we can post-filter and\n // remove any target changes.\n // We need to decrement the number of pending acks needed from watch\n // for this targetId.\n n.Ut(), n.kt || this.removeTarget(e);\n break;\n\n case 3 /* WatchTargetChangeState.Current */ :\n this.te(e) && (n.Kt(), n.$t(t.resumeToken));\n break;\n\n case 4 /* WatchTargetChangeState.Reset */ :\n this.te(e) && (\n // Reset the target and synthesizes removes for all existing\n // documents. The backend will re-add any documents that still\n // match the target before it sends the next global snapshot.\n this.ee(e), n.$t(t.resumeToken));\n break;\n\n default:\n O();\n }\n }));\n }\n /**\n * Iterates over all targetIds that the watch change applies to: either the\n * targetIds explicitly listed in the change or the targetIds of all currently\n * active targets.\n */ forEachTarget(t, e) {\n t.targetIds.length > 0 ? t.targetIds.forEach(e) : this.Qt.forEach(((t, n) => {\n this.te(n) && e(n);\n }));\n }\n /**\n * Handles existence filters and synthesizes deletes for filter mismatches.\n * Targets that are invalidated by filter mismatches are added to\n * `pendingTargetResets`.\n */ ne(t) {\n var e;\n const n = t.targetId, s = t.Vt.count, i = this.se(n);\n if (i) {\n const r = i.target;\n if (Fn(r)) if (0 === s) {\n // The existence filter told us the document does not exist. We deduce\n // that this document does not exist and apply a deleted document to\n // our updates. Without applying this deleted document there might be\n // another query that will raise this document as part of a snapshot\n // until it is resolved, essentially exposing inconsistency between\n // queries.\n const t = new ht(r.path);\n this.Yt(n, t, an.newNoDocument(t, rt.min()));\n } else F(1 === s); else {\n const i = this.ie(n);\n // Existence filter mismatch. Mark the documents as being in limbo, and\n // raise a snapshot with `isFromCache:true`.\n if (i !== s) {\n // Apply bloom filter to identify and mark removed documents.\n const s = this.re(t, i);\n if (0 /* BloomFilterApplicationStatus.Success */ !== s) {\n // If bloom filter application fails, we reset the mapping and\n // trigger re-run of the query.\n this.ee(n);\n const t = 2 /* BloomFilterApplicationStatus.FalsePositive */ === s ? \"TargetPurposeExistenceFilterMismatchBloom\" /* TargetPurpose.ExistenceFilterMismatchBloom */ : \"TargetPurposeExistenceFilterMismatch\" /* TargetPurpose.ExistenceFilterMismatch */;\n this.Wt = this.Wt.insert(n, t);\n }\n null === (e = ci.instance) || void 0 === e || e.notifyOnExistenceFilterMismatch(function(t, e, n) {\n var s, i, r, o, u, c;\n const a = {\n localCacheCount: e,\n existenceFilterCount: n.count\n }, h = n.unchangedNames;\n h && (a.bloomFilter = {\n applied: 0 /* BloomFilterApplicationStatus.Success */ === t,\n hashCount: null !== (s = null == h ? void 0 : h.hashCount) && void 0 !== s ? s : 0,\n bitmapLength: null !== (o = null === (r = null === (i = null == h ? void 0 : h.bits) || void 0 === i ? void 0 : i.bitmap) || void 0 === r ? void 0 : r.length) && void 0 !== o ? o : 0,\n padding: null !== (c = null === (u = null == h ? void 0 : h.bits) || void 0 === u ? void 0 : u.padding) && void 0 !== c ? c : 0\n });\n return a;\n }\n /**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */ (s, i, t.Vt));\n }\n }\n }\n }\n /**\n * Apply bloom filter to remove the deleted documents, and return the\n * application status.\n */ re(t, e) {\n const {unchangedNames: n, count: s} = t.Vt;\n if (!n || !n.bits) return 1 /* BloomFilterApplicationStatus.Skipped */;\n const {bits: {bitmap: i = \"\", padding: r = 0}, hashCount: o = 0} = n;\n let u, c;\n try {\n u = xe(i).toUint8Array();\n } catch (t) {\n if (t instanceof Pe) return M(\"Decoding the base64 bloom filter in existence filter failed (\" + t.message + \"); ignoring the bloom filter and falling back to full re-query.\"), \n 1 /* BloomFilterApplicationStatus.Skipped */;\n throw t;\n }\n try {\n // BloomFilter throws error if the inputs are invalid.\n c = new wi(u, r, o);\n } catch (t) {\n return M(t instanceof _i ? \"BloomFilter error: \" : \"Applying bloom filter failed: \", t), \n 1 /* BloomFilterApplicationStatus.Skipped */;\n }\n if (0 === c.It) return 1 /* BloomFilterApplicationStatus.Skipped */;\n return s !== e - this.oe(t.targetId, c) ? 2 /* BloomFilterApplicationStatus.FalsePositive */ : 0 /* BloomFilterApplicationStatus.Success */;\n }\n /**\n * Filter out removed documents based on bloom filter membership result and\n * return number of documents removed.\n */ oe(t, e) {\n const n = this.Gt.getRemoteKeysForTarget(t);\n let s = 0;\n return n.forEach((n => {\n const i = this.Gt.ue(), r = `projects/${i.projectId}/databases/${i.database}/documents/${n.path.canonicalString()}`;\n e.vt(r) || (this.Yt(t, n, /*updatedDocument=*/ null), s++);\n })), s;\n }\n /**\n * Converts the currently accumulated state into a remote event at the\n * provided snapshot version. Resets the accumulated changes before returning.\n */ ce(t) {\n const e = new Map;\n this.Qt.forEach(((n, s) => {\n const i = this.se(s);\n if (i) {\n if (n.current && Fn(i.target)) {\n // Document queries for document that don't exist can produce an empty\n // result set. To update our local cache, we synthesize a document\n // delete if we have not previously received the document. This\n // resolves the limbo state of the document, removing it from\n // limboDocumentRefs.\n // TODO(dimond): Ideally we would have an explicit lookup target\n // instead resulting in an explicit delete message and we could\n // remove this special logic.\n const e = new ht(i.target.path);\n null !== this.jt.get(e) || this.ae(s, e) || this.Yt(s, e, an.newNoDocument(e, t));\n }\n n.Mt && (e.set(s, n.Ot()), n.Ft());\n }\n }));\n let n = gs();\n // We extract the set of limbo-only document updates as the GC logic\n // special-cases documents that do not appear in the target cache.\n \n // TODO(gsoltis): Expand on this comment once GC is available in the JS\n // client.\n this.zt.forEach(((t, e) => {\n let s = !0;\n e.forEachWhile((t => {\n const e = this.se(t);\n return !e || \"TargetPurposeLimboResolution\" /* TargetPurpose.LimboResolution */ === e.purpose || (s = !1, \n !1);\n })), s && (n = n.add(t));\n })), this.jt.forEach(((e, n) => n.setReadTime(t)));\n const s = new mi(t, e, this.Wt, this.jt, n);\n return this.jt = cs(), this.zt = Ai(), this.Wt = new pe(et), s;\n }\n /**\n * Adds the provided document to the internal list of document updates and\n * its document key to the given target's mapping.\n */\n // Visible for testing.\n Jt(t, e) {\n if (!this.te(t)) return;\n const n = this.ae(t, e.key) ? 2 /* ChangeType.Modified */ : 0 /* ChangeType.Added */;\n this.Zt(t).Bt(e.key, n), this.jt = this.jt.insert(e.key, e), this.zt = this.zt.insert(e.key, this.he(e.key).add(t));\n }\n /**\n * Removes the provided document from the target mapping. If the\n * document no longer matches the target, but the document's state is still\n * known (e.g. we know that the document was deleted or we received the change\n * that caused the filter mismatch), the new document can be provided\n * to update the remote document cache.\n */\n // Visible for testing.\n Yt(t, e, n) {\n if (!this.te(t)) return;\n const s = this.Zt(t);\n this.ae(t, e) ? s.Bt(e, 1 /* ChangeType.Removed */) : \n // The document may have entered and left the target before we raised a\n // snapshot, so we can just ignore the change.\n s.Lt(e), this.zt = this.zt.insert(e, this.he(e).delete(t)), n && (this.jt = this.jt.insert(e, n));\n }\n removeTarget(t) {\n this.Qt.delete(t);\n }\n /**\n * Returns the current count of documents in the target. This includes both\n * the number of documents that the LocalStore considers to be part of the\n * target as well as any accumulated changes.\n */ ie(t) {\n const e = this.Zt(t).Ot();\n return this.Gt.getRemoteKeysForTarget(t).size + e.addedDocuments.size - e.removedDocuments.size;\n }\n /**\n * Increment the number of acks needed from watch before we can consider the\n * server to be 'in-sync' with the client's active targets.\n */ qt(t) {\n this.Zt(t).qt();\n }\n Zt(t) {\n let e = this.Qt.get(t);\n return e || (e = new Ti, this.Qt.set(t, e)), e;\n }\n he(t) {\n let e = this.zt.get(t);\n return e || (e = new Ee(et), this.zt = this.zt.insert(t, e)), e;\n }\n /**\n * Verifies that the user is still interested in this target (by calling\n * `getTargetDataForTarget()`) and that we are not waiting for pending ADDs\n * from watch.\n */ te(t) {\n const e = null !== this.se(t);\n return e || N(\"WatchChangeAggregator\", \"Detected inactive target\", t), e;\n }\n /**\n * Returns the TargetData for an active target (i.e. a target that the user\n * is still interested in that has no outstanding target change requests).\n */ se(t) {\n const e = this.Qt.get(t);\n return e && e.kt ? null : this.Gt.le(t);\n }\n /**\n * Resets the state of a Watch target to its initial state (e.g. sets\n * 'current' to false, clears the resume token and removes its target mapping\n * from all documents).\n */ ee(t) {\n this.Qt.set(t, new Ti);\n this.Gt.getRemoteKeysForTarget(t).forEach((e => {\n this.Yt(t, e, /*updatedDocument=*/ null);\n }));\n }\n /**\n * Returns whether the LocalStore considers the document to be part of the\n * specified target.\n */ ae(t, e) {\n return this.Gt.getRemoteKeysForTarget(t).has(e);\n }\n}\n\nfunction Ai() {\n return new pe(ht.comparator);\n}\n\nfunction vi() {\n return new pe(ht.comparator);\n}\n\nconst Ri = (() => {\n const t = {\n asc: \"ASCENDING\",\n desc: \"DESCENDING\"\n };\n return t;\n})(), Pi = (() => {\n const t = {\n \"<\": \"LESS_THAN\",\n \"<=\": \"LESS_THAN_OR_EQUAL\",\n \">\": \"GREATER_THAN\",\n \">=\": \"GREATER_THAN_OR_EQUAL\",\n \"==\": \"EQUAL\",\n \"!=\": \"NOT_EQUAL\",\n \"array-contains\": \"ARRAY_CONTAINS\",\n in: \"IN\",\n \"not-in\": \"NOT_IN\",\n \"array-contains-any\": \"ARRAY_CONTAINS_ANY\"\n };\n return t;\n})(), bi = (() => {\n const t = {\n and: \"AND\",\n or: \"OR\"\n };\n return t;\n})();\n\n/**\n * This class generates JsonObject values for the Datastore API suitable for\n * sending to either GRPC stub methods or via the JSON/HTTP REST API.\n *\n * The serializer supports both Protobuf.js and Proto3 JSON formats. By\n * setting `useProto3Json` to true, the serializer will use the Proto3 JSON\n * format.\n *\n * For a description of the Proto3 JSON format check\n * https://developers.google.com/protocol-buffers/docs/proto3#json\n *\n * TODO(klimt): We can remove the databaseId argument if we keep the full\n * resource name in documents.\n */\nclass Vi {\n constructor(t, e) {\n this.databaseId = t, this.useProto3Json = e;\n }\n}\n\n/**\n * Returns a value for a number (or null) that's appropriate to put into\n * a google.protobuf.Int32Value proto.\n * DO NOT USE THIS FOR ANYTHING ELSE.\n * This method cheats. It's typed as returning \"number\" because that's what\n * our generated proto interfaces say Int32Value must be. But GRPC actually\n * expects a { value: } struct.\n */\nfunction Si(t, e) {\n return t.useProto3Json || Ft(e) ? e : {\n value: e\n };\n}\n\n/**\n * Returns a number (or null) from a google.protobuf.Int32Value proto.\n */\n/**\n * Returns a value for a Date that's appropriate to put into a proto.\n */\nfunction Di(t, e) {\n if (t.useProto3Json) {\n return `${new Date(1e3 * e.seconds).toISOString().replace(/\\.\\d*/, \"\").replace(\"Z\", \"\")}.${(\"000000000\" + e.nanoseconds).slice(-9)}Z`;\n }\n return {\n seconds: \"\" + e.seconds,\n nanos: e.nanoseconds\n };\n}\n\n/**\n * Returns a value for bytes that's appropriate to put in a proto.\n *\n * Visible for testing.\n */\nfunction Ci(t, e) {\n return t.useProto3Json ? e.toBase64() : e.toUint8Array();\n}\n\n/**\n * Returns a ByteString based on the proto string value.\n */ function xi(t, e) {\n return Di(t, e.toTimestamp());\n}\n\nfunction Ni(t) {\n return F(!!t), rt.fromTimestamp(function(t) {\n const e = De(t);\n return new it(e.seconds, e.nanos);\n }(t));\n}\n\nfunction ki(t, e) {\n return function(t) {\n return new ut([ \"projects\", t.projectId, \"databases\", t.database ]);\n }(t).child(\"documents\").child(e).canonicalString();\n}\n\nfunction Mi(t) {\n const e = ut.fromString(t);\n return F(ur(e)), e;\n}\n\nfunction $i(t, e) {\n return ki(t.databaseId, e.path);\n}\n\nfunction Oi(t, e) {\n const n = Mi(e);\n if (n.get(1) !== t.databaseId.projectId) throw new U(q.INVALID_ARGUMENT, \"Tried to deserialize key from different project: \" + n.get(1) + \" vs \" + t.databaseId.projectId);\n if (n.get(3) !== t.databaseId.database) throw new U(q.INVALID_ARGUMENT, \"Tried to deserialize key from different database: \" + n.get(3) + \" vs \" + t.databaseId.database);\n return new ht(qi(n));\n}\n\nfunction Fi(t, e) {\n return ki(t.databaseId, e);\n}\n\nfunction Bi(t) {\n const e = Mi(t);\n // In v1beta1 queries for collections at the root did not have a trailing\n // \"/documents\". In v1 all resource paths contain \"/documents\". Preserve the\n // ability to read the v1beta1 form for compatibility with queries persisted\n // in the local target cache.\n return 4 === e.length ? ut.emptyPath() : qi(e);\n}\n\nfunction Li(t) {\n return new ut([ \"projects\", t.databaseId.projectId, \"databases\", t.databaseId.database ]).canonicalString();\n}\n\nfunction qi(t) {\n return F(t.length > 4 && \"documents\" === t.get(4)), t.popFirst(5);\n}\n\n/** Creates a Document proto from key and fields (but no create/update time) */ function Ui(t, e, n) {\n return {\n name: $i(t, e),\n fields: n.value.mapValue.fields\n };\n}\n\nfunction Ki(t, e, n) {\n const s = Oi(t, e.name), i = Ni(e.updateTime), r = e.createTime ? Ni(e.createTime) : rt.min(), o = new un({\n mapValue: {\n fields: e.fields\n }\n }), u = an.newFoundDocument(s, i, r, o);\n return n && u.setHasCommittedMutations(), n ? u.setHasCommittedMutations() : u;\n}\n\nfunction Gi(t, e) {\n return \"found\" in e ? function(t, e) {\n F(!!e.found), e.found.name, e.found.updateTime;\n const n = Oi(t, e.found.name), s = Ni(e.found.updateTime), i = e.found.createTime ? Ni(e.found.createTime) : rt.min(), r = new un({\n mapValue: {\n fields: e.found.fields\n }\n });\n return an.newFoundDocument(n, s, i, r);\n }(t, e) : \"missing\" in e ? function(t, e) {\n F(!!e.missing), F(!!e.readTime);\n const n = Oi(t, e.missing), s = Ni(e.readTime);\n return an.newNoDocument(n, s);\n }(t, e) : O();\n}\n\nfunction Qi(t, e) {\n let n;\n if (\"targetChange\" in e) {\n e.targetChange;\n // proto3 default value is unset in JSON (undefined), so use 'NO_CHANGE'\n // if unset\n const s = function(t) {\n return \"NO_CHANGE\" === t ? 0 /* WatchTargetChangeState.NoChange */ : \"ADD\" === t ? 1 /* WatchTargetChangeState.Added */ : \"REMOVE\" === t ? 2 /* WatchTargetChangeState.Removed */ : \"CURRENT\" === t ? 3 /* WatchTargetChangeState.Current */ : \"RESET\" === t ? 4 /* WatchTargetChangeState.Reset */ : O();\n }(e.targetChange.targetChangeType || \"NO_CHANGE\"), i = e.targetChange.targetIds || [], r = function(t, e) {\n return t.useProto3Json ? (F(void 0 === e || \"string\" == typeof e), Ve.fromBase64String(e || \"\")) : (F(void 0 === e || e instanceof Uint8Array), \n Ve.fromUint8Array(e || new Uint8Array));\n }(t, e.targetChange.resumeToken), o = e.targetChange.cause, u = o && function(t) {\n const e = void 0 === t.code ? q.UNKNOWN : ui(t.code);\n return new U(e, t.message || \"\");\n }(o);\n n = new Ii(s, i, r, u || null);\n } else if (\"documentChange\" in e) {\n e.documentChange;\n const s = e.documentChange;\n s.document, s.document.name, s.document.updateTime;\n const i = Oi(t, s.document.name), r = Ni(s.document.updateTime), o = s.document.createTime ? Ni(s.document.createTime) : rt.min(), u = new un({\n mapValue: {\n fields: s.document.fields\n }\n }), c = an.newFoundDocument(i, r, o, u), a = s.targetIds || [], h = s.removedTargetIds || [];\n n = new yi(a, h, c.key, c);\n } else if (\"documentDelete\" in e) {\n e.documentDelete;\n const s = e.documentDelete;\n s.document;\n const i = Oi(t, s.document), r = s.readTime ? Ni(s.readTime) : rt.min(), o = an.newNoDocument(i, r), u = s.removedTargetIds || [];\n n = new yi([], u, o.key, o);\n } else if (\"documentRemove\" in e) {\n e.documentRemove;\n const s = e.documentRemove;\n s.document;\n const i = Oi(t, s.document), r = s.removedTargetIds || [];\n n = new yi([], r, i, null);\n } else {\n if (!(\"filter\" in e)) return O();\n {\n e.filter;\n const t = e.filter;\n t.targetId;\n const {count: s = 0, unchangedNames: i} = t, r = new si(s, i), o = t.targetId;\n n = new pi(o, r);\n }\n }\n return n;\n}\n\nfunction ji(t, e) {\n let n;\n if (e instanceof js) n = {\n update: Ui(t, e.key, e.value)\n }; else if (e instanceof Ys) n = {\n delete: $i(t, e.key)\n }; else if (e instanceof zs) n = {\n update: Ui(t, e.key, e.data),\n updateMask: or(e.fieldMask)\n }; else {\n if (!(e instanceof Xs)) return O();\n n = {\n verify: $i(t, e.key)\n };\n }\n return e.fieldTransforms.length > 0 && (n.updateTransforms = e.fieldTransforms.map((t => function(t, e) {\n const n = e.transform;\n if (n instanceof bs) return {\n fieldPath: e.field.canonicalString(),\n setToServerValue: \"REQUEST_TIME\"\n };\n if (n instanceof Vs) return {\n fieldPath: e.field.canonicalString(),\n appendMissingElements: {\n values: n.elements\n }\n };\n if (n instanceof Ds) return {\n fieldPath: e.field.canonicalString(),\n removeAllFromArray: {\n values: n.elements\n }\n };\n if (n instanceof xs) return {\n fieldPath: e.field.canonicalString(),\n increment: n.gt\n };\n throw O();\n }(0, t)))), e.precondition.isNone || (n.currentDocument = function(t, e) {\n return void 0 !== e.updateTime ? {\n updateTime: xi(t, e.updateTime)\n } : void 0 !== e.exists ? {\n exists: e.exists\n } : O();\n }(t, e.precondition)), n;\n}\n\nfunction zi(t, e) {\n const n = e.currentDocument ? function(t) {\n return void 0 !== t.updateTime ? Fs.updateTime(Ni(t.updateTime)) : void 0 !== t.exists ? Fs.exists(t.exists) : Fs.none();\n }(e.currentDocument) : Fs.none(), s = e.updateTransforms ? e.updateTransforms.map((e => function(t, e) {\n let n = null;\n if (\"setToServerValue\" in e) F(\"REQUEST_TIME\" === e.setToServerValue), n = new bs; else if (\"appendMissingElements\" in e) {\n const t = e.appendMissingElements.values || [];\n n = new Vs(t);\n } else if (\"removeAllFromArray\" in e) {\n const t = e.removeAllFromArray.values || [];\n n = new Ds(t);\n } else \"increment\" in e ? n = new xs(t, e.increment) : O();\n const s = at.fromServerFormat(e.fieldPath);\n return new Ms(s, n);\n }(t, e))) : [];\n if (e.update) {\n e.update.name;\n const i = Oi(t, e.update.name), r = new un({\n mapValue: {\n fields: e.update.fields\n }\n });\n if (e.updateMask) {\n const t = function(t) {\n const e = t.fieldPaths || [];\n return new Re(e.map((t => at.fromServerFormat(t))));\n }(e.updateMask);\n return new zs(i, r, t, n, s);\n }\n return new js(i, r, n, s);\n }\n if (e.delete) {\n const s = Oi(t, e.delete);\n return new Ys(s, n);\n }\n if (e.verify) {\n const s = Oi(t, e.verify);\n return new Xs(s, n);\n }\n return O();\n}\n\nfunction Wi(t, e) {\n return t && t.length > 0 ? (F(void 0 !== e), t.map((t => function(t, e) {\n // NOTE: Deletes don't have an updateTime.\n let n = t.updateTime ? Ni(t.updateTime) : Ni(e);\n return n.isEqual(rt.min()) && (\n // The Firestore Emulator currently returns an update time of 0 for\n // deletes of non-existing documents (rather than null). This breaks the\n // test \"get deleted doc while offline with source=cache\" as NoDocuments\n // with version 0 are filtered by IndexedDb's RemoteDocumentCache.\n // TODO(#2149): Remove this when Emulator is fixed\n n = Ni(e)), new Os(n, t.transformResults || []);\n }(t, e)))) : [];\n}\n\nfunction Hi(t, e) {\n return {\n documents: [ Fi(t, e.path) ]\n };\n}\n\nfunction Ji(t, e) {\n // Dissect the path into parent, collectionId, and optional key filter.\n const n = {\n structuredQuery: {}\n }, s = e.path;\n null !== e.collectionGroup ? (n.parent = Fi(t, s), n.structuredQuery.from = [ {\n collectionId: e.collectionGroup,\n allDescendants: !0\n } ]) : (n.parent = Fi(t, s.popLast()), n.structuredQuery.from = [ {\n collectionId: s.lastSegment()\n } ]);\n const i = function(t) {\n if (0 === t.length) return;\n return rr(gn.create(t, \"and\" /* CompositeOperator.AND */));\n }(e.filters);\n i && (n.structuredQuery.where = i);\n const r = function(t) {\n if (0 === t.length) return;\n return t.map((t => \n // visible for testing\n function(t) {\n return {\n field: sr(t.field),\n direction: tr(t.dir)\n };\n }(t)));\n }(e.orderBy);\n r && (n.structuredQuery.orderBy = r);\n const o = Si(t, e.limit);\n var u;\n return null !== o && (n.structuredQuery.limit = o), e.startAt && (n.structuredQuery.startAt = {\n before: (u = e.startAt).inclusive,\n values: u.position\n }), e.endAt && (n.structuredQuery.endAt = function(t) {\n return {\n before: !t.inclusive,\n values: t.position\n };\n }(e.endAt)), n;\n}\n\nfunction Yi(t) {\n let e = Bi(t.parent);\n const n = t.structuredQuery, s = n.from ? n.from.length : 0;\n let i = null;\n if (s > 0) {\n F(1 === s);\n const t = n.from[0];\n t.allDescendants ? i = t.collectionId : e = e.child(t.collectionId);\n }\n let r = [];\n n.where && (r = function(t) {\n const e = Zi(t);\n if (e instanceof gn && In(e)) return e.getFilters();\n return [ e ];\n }(n.where));\n let o = [];\n n.orderBy && (o = n.orderBy.map((t => function(t) {\n return new dn(ir(t.field), \n // visible for testing\n function(t) {\n switch (t) {\n case \"ASCENDING\":\n return \"asc\" /* Direction.ASCENDING */;\n\n case \"DESCENDING\":\n return \"desc\" /* Direction.DESCENDING */;\n\n default:\n return;\n }\n }\n // visible for testing\n (t.direction));\n }\n // visible for testing\n (t))));\n let u = null;\n n.limit && (u = function(t) {\n let e;\n return e = \"object\" == typeof t ? t.value : t, Ft(e) ? null : e;\n }(n.limit));\n let c = null;\n n.startAt && (c = function(t) {\n const e = !!t.before, n = t.values || [];\n return new hn(n, e);\n }(n.startAt));\n let a = null;\n return n.endAt && (a = function(t) {\n const e = !t.before, n = t.values || [];\n return new hn(n, e);\n }\n // visible for testing\n (n.endAt)), Kn(e, i, o, r, u, \"F\" /* LimitType.First */ , c, a);\n}\n\nfunction Xi(t, e) {\n const n = function(t) {\n switch (t) {\n case \"TargetPurposeListen\" /* TargetPurpose.Listen */ :\n return null;\n\n case \"TargetPurposeExistenceFilterMismatch\" /* TargetPurpose.ExistenceFilterMismatch */ :\n return \"existence-filter-mismatch\";\n\n case \"TargetPurposeExistenceFilterMismatchBloom\" /* TargetPurpose.ExistenceFilterMismatchBloom */ :\n return \"existence-filter-mismatch-bloom\";\n\n case \"TargetPurposeLimboResolution\" /* TargetPurpose.LimboResolution */ :\n return \"limbo-document\";\n\n default:\n return O();\n }\n }(e.purpose);\n return null == n ? null : {\n \"goog-listen-tags\": n\n };\n}\n\nfunction Zi(t) {\n return void 0 !== t.unaryFilter ? function(t) {\n switch (t.unaryFilter.op) {\n case \"IS_NAN\":\n const e = ir(t.unaryFilter.field);\n return mn.create(e, \"==\" /* Operator.EQUAL */ , {\n doubleValue: NaN\n });\n\n case \"IS_NULL\":\n const n = ir(t.unaryFilter.field);\n return mn.create(n, \"==\" /* Operator.EQUAL */ , {\n nullValue: \"NULL_VALUE\"\n });\n\n case \"IS_NOT_NAN\":\n const s = ir(t.unaryFilter.field);\n return mn.create(s, \"!=\" /* Operator.NOT_EQUAL */ , {\n doubleValue: NaN\n });\n\n case \"IS_NOT_NULL\":\n const i = ir(t.unaryFilter.field);\n return mn.create(i, \"!=\" /* Operator.NOT_EQUAL */ , {\n nullValue: \"NULL_VALUE\"\n });\n\n default:\n return O();\n }\n }(t) : void 0 !== t.fieldFilter ? function(t) {\n return mn.create(ir(t.fieldFilter.field), function(t) {\n switch (t) {\n case \"EQUAL\":\n return \"==\" /* Operator.EQUAL */;\n\n case \"NOT_EQUAL\":\n return \"!=\" /* Operator.NOT_EQUAL */;\n\n case \"GREATER_THAN\":\n return \">\" /* Operator.GREATER_THAN */;\n\n case \"GREATER_THAN_OR_EQUAL\":\n return \">=\" /* Operator.GREATER_THAN_OR_EQUAL */;\n\n case \"LESS_THAN\":\n return \"<\" /* Operator.LESS_THAN */;\n\n case \"LESS_THAN_OR_EQUAL\":\n return \"<=\" /* Operator.LESS_THAN_OR_EQUAL */;\n\n case \"ARRAY_CONTAINS\":\n return \"array-contains\" /* Operator.ARRAY_CONTAINS */;\n\n case \"IN\":\n return \"in\" /* Operator.IN */;\n\n case \"NOT_IN\":\n return \"not-in\" /* Operator.NOT_IN */;\n\n case \"ARRAY_CONTAINS_ANY\":\n return \"array-contains-any\" /* Operator.ARRAY_CONTAINS_ANY */;\n\n default:\n return O();\n }\n }(t.fieldFilter.op), t.fieldFilter.value);\n }(t) : void 0 !== t.compositeFilter ? function(t) {\n return gn.create(t.compositeFilter.filters.map((t => Zi(t))), function(t) {\n switch (t) {\n case \"AND\":\n return \"and\" /* CompositeOperator.AND */;\n\n case \"OR\":\n return \"or\" /* CompositeOperator.OR */;\n\n default:\n return O();\n }\n }(t.compositeFilter.op));\n }(t) : O();\n}\n\nfunction tr(t) {\n return Ri[t];\n}\n\nfunction er(t) {\n return Pi[t];\n}\n\nfunction nr(t) {\n return bi[t];\n}\n\nfunction sr(t) {\n return {\n fieldPath: t.canonicalString()\n };\n}\n\nfunction ir(t) {\n return at.fromServerFormat(t.fieldPath);\n}\n\nfunction rr(t) {\n return t instanceof mn ? function(t) {\n if (\"==\" /* Operator.EQUAL */ === t.op) {\n if (Xe(t.value)) return {\n unaryFilter: {\n field: sr(t.field),\n op: \"IS_NAN\"\n }\n };\n if (Ye(t.value)) return {\n unaryFilter: {\n field: sr(t.field),\n op: \"IS_NULL\"\n }\n };\n } else if (\"!=\" /* Operator.NOT_EQUAL */ === t.op) {\n if (Xe(t.value)) return {\n unaryFilter: {\n field: sr(t.field),\n op: \"IS_NOT_NAN\"\n }\n };\n if (Ye(t.value)) return {\n unaryFilter: {\n field: sr(t.field),\n op: \"IS_NOT_NULL\"\n }\n };\n }\n return {\n fieldFilter: {\n field: sr(t.field),\n op: er(t.op),\n value: t.value\n }\n };\n }(t) : t instanceof gn ? function(t) {\n const e = t.getFilters().map((t => rr(t)));\n if (1 === e.length) return e[0];\n return {\n compositeFilter: {\n op: nr(t.op),\n filters: e\n }\n };\n }(t) : O();\n}\n\nfunction or(t) {\n const e = [];\n return t.fields.forEach((t => e.push(t.canonicalString()))), {\n fieldPaths: e\n };\n}\n\nfunction ur(t) {\n // Resource names have at least 4 components (project ID, database ID)\n return t.length >= 4 && \"projects\" === t.get(0) && \"databases\" === t.get(2);\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * An immutable set of metadata that the local store tracks for each target.\n */ class cr {\n constructor(\n /** The target being listened to. */\n t, \n /**\n * The target ID to which the target corresponds; Assigned by the\n * LocalStore for user listens and by the SyncEngine for limbo watches.\n */\n e, \n /** The purpose of the target. */\n n, \n /**\n * The sequence number of the last transaction during which this target data\n * was modified.\n */\n s, \n /** The latest snapshot version seen for this target. */\n i = rt.min()\n /**\n * The maximum snapshot version at which the associated view\n * contained no limbo documents.\n */ , r = rt.min()\n /**\n * An opaque, server-assigned token that allows watching a target to be\n * resumed after disconnecting without retransmitting all the data that\n * matches the target. The resume token essentially identifies a point in\n * time from which the server should resume sending results.\n */ , o = Ve.EMPTY_BYTE_STRING\n /**\n * The number of documents that last matched the query at the resume token or\n * read time. Documents are counted only when making a listen request with\n * resume token or read time, otherwise, keep it null.\n */ , u = null) {\n this.target = t, this.targetId = e, this.purpose = n, this.sequenceNumber = s, this.snapshotVersion = i, \n this.lastLimboFreeSnapshotVersion = r, this.resumeToken = o, this.expectedCount = u;\n }\n /** Creates a new target data instance with an updated sequence number. */ withSequenceNumber(t) {\n return new cr(this.target, this.targetId, this.purpose, t, this.snapshotVersion, this.lastLimboFreeSnapshotVersion, this.resumeToken, this.expectedCount);\n }\n /**\n * Creates a new target data instance with an updated resume token and\n * snapshot version.\n */ withResumeToken(t, e) {\n return new cr(this.target, this.targetId, this.purpose, this.sequenceNumber, e, this.lastLimboFreeSnapshotVersion, t, \n /* expectedCount= */ null);\n }\n /**\n * Creates a new target data instance with an updated expected count.\n */ withExpectedCount(t) {\n return new cr(this.target, this.targetId, this.purpose, this.sequenceNumber, this.snapshotVersion, this.lastLimboFreeSnapshotVersion, this.resumeToken, t);\n }\n /**\n * Creates a new target data instance with an updated last limbo free\n * snapshot version number.\n */ withLastLimboFreeSnapshotVersion(t) {\n return new cr(this.target, this.targetId, this.purpose, this.sequenceNumber, this.snapshotVersion, t, this.resumeToken, this.expectedCount);\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/** Serializer for values stored in the LocalStore. */ class ar {\n constructor(t) {\n this.fe = t;\n }\n}\n\n/** Decodes a remote document from storage locally to a Document. */ function hr(t, e) {\n let n;\n if (e.document) n = Ki(t.fe, e.document, !!e.hasCommittedMutations); else if (e.noDocument) {\n const t = ht.fromSegments(e.noDocument.path), s = wr(e.noDocument.readTime);\n n = an.newNoDocument(t, s), e.hasCommittedMutations && n.setHasCommittedMutations();\n } else {\n if (!e.unknownDocument) return O();\n {\n const t = ht.fromSegments(e.unknownDocument.path), s = wr(e.unknownDocument.version);\n n = an.newUnknownDocument(t, s);\n }\n }\n return e.readTime && n.setReadTime(function(t) {\n const e = new it(t[0], t[1]);\n return rt.fromTimestamp(e);\n }(e.readTime)), n;\n}\n\n/** Encodes a document for storage locally. */ function lr(t, e) {\n const n = e.key, s = {\n prefixPath: n.getCollectionPath().popLast().toArray(),\n collectionGroup: n.collectionGroup,\n documentId: n.path.lastSegment(),\n readTime: fr(e.readTime),\n hasCommittedMutations: e.hasCommittedMutations\n };\n if (e.isFoundDocument()) s.document = function(t, e) {\n return {\n name: $i(t, e.key),\n fields: e.data.value.mapValue.fields,\n updateTime: Di(t, e.version.toTimestamp()),\n createTime: Di(t, e.createTime.toTimestamp())\n };\n }(t.fe, e); else if (e.isNoDocument()) s.noDocument = {\n path: n.path.toArray(),\n readTime: dr(e.version)\n }; else {\n if (!e.isUnknownDocument()) return O();\n s.unknownDocument = {\n path: n.path.toArray(),\n version: dr(e.version)\n };\n }\n return s;\n}\n\nfunction fr(t) {\n const e = t.toTimestamp();\n return [ e.seconds, e.nanoseconds ];\n}\n\nfunction dr(t) {\n const e = t.toTimestamp();\n return {\n seconds: e.seconds,\n nanoseconds: e.nanoseconds\n };\n}\n\nfunction wr(t) {\n const e = new it(t.seconds, t.nanoseconds);\n return rt.fromTimestamp(e);\n}\n\n/** Encodes a batch of mutations into a DbMutationBatch for local storage. */\n/** Decodes a DbMutationBatch into a MutationBatch */\nfunction _r(t, e) {\n const n = (e.baseMutations || []).map((e => zi(t.fe, e)));\n // Squash old transform mutations into existing patch or set mutations.\n // The replacement of representing `transforms` with `update_transforms`\n // on the SDK means that old `transform` mutations stored in IndexedDB need\n // to be updated to `update_transforms`.\n // TODO(b/174608374): Remove this code once we perform a schema migration.\n for (let t = 0; t < e.mutations.length - 1; ++t) {\n const n = e.mutations[t];\n if (t + 1 < e.mutations.length && void 0 !== e.mutations[t + 1].transform) {\n const s = e.mutations[t + 1];\n n.updateTransforms = s.transform.fieldTransforms, e.mutations.splice(t + 1, 1), \n ++t;\n }\n }\n const s = e.mutations.map((e => zi(t.fe, e))), i = it.fromMillis(e.localWriteTimeMs);\n return new Zs(e.batchId, i, n, s);\n}\n\n/** Decodes a DbTarget into TargetData */ function mr(t) {\n const e = wr(t.readTime), n = void 0 !== t.lastLimboFreeSnapshotVersion ? wr(t.lastLimboFreeSnapshotVersion) : rt.min();\n let s;\n var i;\n return void 0 !== t.query.documents ? (F(1 === (i = t.query).documents.length), \n s = Jn(Gn(Bi(i.documents[0])))) : s = function(t) {\n return Jn(Yi(t));\n }(t.query), new cr(s, t.targetId, \"TargetPurposeListen\" /* TargetPurpose.Listen */ , t.lastListenSequenceNumber, e, n, Ve.fromBase64String(t.resumeToken));\n}\n\n/** Encodes TargetData into a DbTarget for storage locally. */ function gr(t, e) {\n const n = dr(e.snapshotVersion), s = dr(e.lastLimboFreeSnapshotVersion);\n let i;\n i = Fn(e.target) ? Hi(t.fe, e.target) : Ji(t.fe, e.target);\n // We can't store the resumeToken as a ByteString in IndexedDb, so we\n // convert it to a base64 string for storage.\n const r = e.resumeToken.toBase64();\n // lastListenSequenceNumber is always 0 until we do real GC.\n return {\n targetId: e.targetId,\n canonicalId: $n(e.target),\n readTime: n,\n resumeToken: r,\n lastListenSequenceNumber: e.sequenceNumber,\n lastLimboFreeSnapshotVersion: s,\n query: i\n };\n}\n\n/**\n * A helper function for figuring out what kind of query has been stored.\n */\n/**\n * Encodes a `BundledQuery` from bundle proto to a Query object.\n *\n * This reconstructs the original query used to build the bundle being loaded,\n * including features exists only in SDKs (for example: limit-to-last).\n */\nfunction yr(t) {\n const e = Yi({\n parent: t.parent,\n structuredQuery: t.structuredQuery\n });\n return \"LAST\" === t.limitType ? Xn(e, e.limit, \"L\" /* LimitType.Last */) : e;\n}\n\n/** Encodes a NamedQuery proto object to a NamedQuery model object. */\n/** Encodes a DbDocumentOverlay object to an Overlay model object. */\nfunction pr(t, e) {\n return new ei(e.largestBatchId, zi(t.fe, e.overlayMutation));\n}\n\n/** Decodes an Overlay model object into a DbDocumentOverlay object. */\n/**\n * Returns the DbDocumentOverlayKey corresponding to the given user and\n * document key.\n */\nfunction Ir(t, e) {\n const n = e.path.lastSegment();\n return [ t, qt(e.path.popLast()), n ];\n}\n\nfunction Tr(t, e, n, s) {\n return {\n indexId: t,\n uid: e.uid || \"\",\n sequenceNumber: n,\n readTime: dr(s.readTime),\n documentKey: qt(s.documentKey.path),\n largestBatchId: s.largestBatchId\n };\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */ class Er {\n getBundleMetadata(t, e) {\n return Ar(t).get(e).next((t => {\n if (t) return {\n id: (e = t).bundleId,\n createTime: wr(e.createTime),\n version: e.version\n };\n /** Encodes a DbBundle to a BundleMetadata object. */\n var e;\n /** Encodes a BundleMetadata to a DbBundle. */ }));\n }\n saveBundleMetadata(t, e) {\n return Ar(t).put({\n bundleId: (n = e).id,\n createTime: dr(Ni(n.createTime)),\n version: n.version\n });\n var n;\n /** Encodes a DbNamedQuery to a NamedQuery. */ }\n getNamedQuery(t, e) {\n return vr(t).get(e).next((t => {\n if (t) return {\n name: (e = t).name,\n query: yr(e.bundledQuery),\n readTime: wr(e.readTime)\n };\n var e;\n /** Encodes a NamedQuery from a bundle proto to a DbNamedQuery. */ }));\n }\n saveNamedQuery(t, e) {\n return vr(t).put(function(t) {\n return {\n name: t.name,\n readTime: dr(Ni(t.readTime)),\n bundledQuery: t.bundledQuery\n };\n }(e));\n }\n}\n\n/**\n * Helper to get a typed SimpleDbStore for the bundles object store.\n */ function Ar(t) {\n return _e(t, \"bundles\");\n}\n\n/**\n * Helper to get a typed SimpleDbStore for the namedQueries object store.\n */ function vr(t) {\n return _e(t, \"namedQueries\");\n}\n\n/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Implementation of DocumentOverlayCache using IndexedDb.\n */ class Rr {\n /**\n * @param serializer - The document serializer.\n * @param userId - The userId for which we are accessing overlays.\n */\n constructor(t, e) {\n this.serializer = t, this.userId = e;\n }\n static de(t, e) {\n const n = e.uid || \"\";\n return new Rr(t, n);\n }\n getOverlay(t, e) {\n return Pr(t).get(Ir(this.userId, e)).next((t => t ? pr(this.serializer, t) : null));\n }\n getOverlays(t, e) {\n const n = fs();\n return Rt.forEach(e, (e => this.getOverlay(t, e).next((t => {\n null !== t && n.set(e, t);\n })))).next((() => n));\n }\n saveOverlays(t, e, n) {\n const s = [];\n return n.forEach(((n, i) => {\n const r = new ei(e, i);\n s.push(this.we(t, r));\n })), Rt.waitFor(s);\n }\n removeOverlaysForBatchId(t, e, n) {\n const s = new Set;\n // Get the set of unique collection paths.\n e.forEach((t => s.add(qt(t.getCollectionPath()))));\n const i = [];\n return s.forEach((e => {\n const s = IDBKeyRange.bound([ this.userId, e, n ], [ this.userId, e, n + 1 ], \n /*lowerOpen=*/ !1, \n /*upperOpen=*/ !0);\n i.push(Pr(t).J(\"collectionPathOverlayIndex\", s));\n })), Rt.waitFor(i);\n }\n getOverlaysForCollection(t, e, n) {\n const s = fs(), i = qt(e), r = IDBKeyRange.bound([ this.userId, i, n ], [ this.userId, i, Number.POSITIVE_INFINITY ], \n /*lowerOpen=*/ !0);\n return Pr(t).j(\"collectionPathOverlayIndex\", r).next((t => {\n for (const e of t) {\n const t = pr(this.serializer, e);\n s.set(t.getKey(), t);\n }\n return s;\n }));\n }\n getOverlaysForCollectionGroup(t, e, n, s) {\n const i = fs();\n let r;\n // We want batch IDs larger than `sinceBatchId`, and so the lower bound\n // is not inclusive.\n const o = IDBKeyRange.bound([ this.userId, e, n ], [ this.userId, e, Number.POSITIVE_INFINITY ], \n /*lowerOpen=*/ !0);\n return Pr(t).X({\n index: \"collectionGroupOverlayIndex\",\n range: o\n }, ((t, e, n) => {\n // We do not want to return partial batch overlays, even if the size\n // of the result set exceeds the given `count` argument. Therefore, we\n // continue to aggregate results even after the result size exceeds\n // `count` if there are more overlays from the `currentBatchId`.\n const o = pr(this.serializer, e);\n i.size() < s || o.largestBatchId === r ? (i.set(o.getKey(), o), r = o.largestBatchId) : n.done();\n })).next((() => i));\n }\n we(t, e) {\n return Pr(t).put(function(t, e, n) {\n const [s, i, r] = Ir(e, n.mutation.key);\n return {\n userId: e,\n collectionPath: i,\n documentId: r,\n collectionGroup: n.mutation.key.getCollectionGroup(),\n largestBatchId: n.largestBatchId,\n overlayMutation: ji(t.fe, n.mutation)\n };\n }(this.serializer, this.userId, e));\n }\n}\n\n/**\n * Helper to get a typed SimpleDbStore for the document overlay object store.\n */ function Pr(t) {\n return _e(t, \"documentOverlays\");\n}\n\n/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// Note: This code is copied from the backend. Code that is not used by\n// Firestore was removed.\n/** Firestore index value writer. */\nclass br {\n constructor() {}\n // The write methods below short-circuit writing terminators for values\n // containing a (terminating) truncated value.\n // As an example, consider the resulting encoding for:\n // [\"bar\", [2, \"foo\"]] -> (STRING, \"bar\", TERM, ARRAY, NUMBER, 2, STRING, \"foo\", TERM, TERM, TERM)\n // [\"bar\", [2, truncated(\"foo\")]] -> (STRING, \"bar\", TERM, ARRAY, NUMBER, 2, STRING, \"foo\", TRUNC)\n // [\"bar\", truncated([\"foo\"])] -> (STRING, \"bar\", TERM, ARRAY. STRING, \"foo\", TERM, TRUNC)\n /** Writes an index value. */\n _e(t, e) {\n this.me(t, e), \n // Write separator to split index values\n // (see go/firestore-storage-format#encodings).\n e.ge();\n }\n me(t, e) {\n if (\"nullValue\" in t) this.ye(e, 5); else if (\"booleanValue\" in t) this.ye(e, 10), \n e.pe(t.booleanValue ? 1 : 0); else if (\"integerValue\" in t) this.ye(e, 15), e.pe(Ce(t.integerValue)); else if (\"doubleValue\" in t) {\n const n = Ce(t.doubleValue);\n isNaN(n) ? this.ye(e, 13) : (this.ye(e, 15), Bt(n) ? \n // -0.0, 0 and 0.0 are all considered the same\n e.pe(0) : e.pe(n));\n } else if (\"timestampValue\" in t) {\n const n = t.timestampValue;\n this.ye(e, 20), \"string\" == typeof n ? e.Ie(n) : (e.Ie(`${n.seconds || \"\"}`), e.pe(n.nanos || 0));\n } else if (\"stringValue\" in t) this.Te(t.stringValue, e), this.Ee(e); else if (\"bytesValue\" in t) this.ye(e, 30), \n e.Ae(xe(t.bytesValue)), this.Ee(e); else if (\"referenceValue\" in t) this.ve(t.referenceValue, e); else if (\"geoPointValue\" in t) {\n const n = t.geoPointValue;\n this.ye(e, 45), e.pe(n.latitude || 0), e.pe(n.longitude || 0);\n } else \"mapValue\" in t ? en(t) ? this.ye(e, Number.MAX_SAFE_INTEGER) : (this.Re(t.mapValue, e), \n this.Ee(e)) : \"arrayValue\" in t ? (this.Pe(t.arrayValue, e), this.Ee(e)) : O();\n }\n Te(t, e) {\n this.ye(e, 25), this.be(t, e);\n }\n be(t, e) {\n e.Ie(t);\n }\n Re(t, e) {\n const n = t.fields || {};\n this.ye(e, 55);\n for (const t of Object.keys(n)) this.Te(t, e), this.me(n[t], e);\n }\n Pe(t, e) {\n const n = t.values || [];\n this.ye(e, 50);\n for (const t of n) this.me(t, e);\n }\n ve(t, e) {\n this.ye(e, 37);\n ht.fromName(t).path.forEach((t => {\n this.ye(e, 60), this.be(t, e);\n }));\n }\n ye(t, e) {\n t.pe(e);\n }\n Ee(t) {\n // While the SDK does not implement truncation, the truncation marker is\n // used to terminate all variable length values (which are strings, bytes,\n // references, arrays and maps).\n t.pe(2);\n }\n}\n\nbr.Ve = new br;\n\n/**\n * Counts the number of zeros in a byte.\n *\n * Visible for testing.\n */\nfunction Vr(t) {\n if (0 === t) return 8;\n let e = 0;\n return t >> 4 == 0 && (\n // Test if the first four bits are zero.\n e += 4, t <<= 4), t >> 6 == 0 && (\n // Test if the first two (or next two) bits are zero.\n e += 2, t <<= 2), t >> 7 == 0 && (\n // Test if the remaining bit is zero.\n e += 1), e;\n}\n\n/** Counts the number of leading zeros in the given byte array. */\n/**\n * Returns the number of bytes required to store \"value\". Leading zero bytes\n * are skipped.\n */\nfunction Sr(t) {\n // This is just the number of bytes for the unsigned representation of the number.\n const e = 64 - function(t) {\n let e = 0;\n for (let n = 0; n < 8; ++n) {\n const s = Vr(255 & t[n]);\n if (e += s, 8 !== s) break;\n }\n return e;\n }(t);\n return Math.ceil(e / 8);\n}\n\n/**\n * OrderedCodeWriter is a minimal-allocation implementation of the writing\n * behavior defined by the backend.\n *\n * The code is ported from its Java counterpart.\n */ class Dr {\n constructor() {\n this.buffer = new Uint8Array(1024), this.position = 0;\n }\n Se(t) {\n const e = t[Symbol.iterator]();\n let n = e.next();\n for (;!n.done; ) this.De(n.value), n = e.next();\n this.Ce();\n }\n xe(t) {\n const e = t[Symbol.iterator]();\n let n = e.next();\n for (;!n.done; ) this.Ne(n.value), n = e.next();\n this.ke();\n }\n /** Writes utf8 bytes into this byte sequence, ascending. */ Me(t) {\n for (const e of t) {\n const t = e.charCodeAt(0);\n if (t < 128) this.De(t); else if (t < 2048) this.De(960 | t >>> 6), this.De(128 | 63 & t); else if (e < \"\\ud800\" || \"\\udbff\" < e) this.De(480 | t >>> 12), \n this.De(128 | 63 & t >>> 6), this.De(128 | 63 & t); else {\n const t = e.codePointAt(0);\n this.De(240 | t >>> 18), this.De(128 | 63 & t >>> 12), this.De(128 | 63 & t >>> 6), \n this.De(128 | 63 & t);\n }\n }\n this.Ce();\n }\n /** Writes utf8 bytes into this byte sequence, descending */ $e(t) {\n for (const e of t) {\n const t = e.charCodeAt(0);\n if (t < 128) this.Ne(t); else if (t < 2048) this.Ne(960 | t >>> 6), this.Ne(128 | 63 & t); else if (e < \"\\ud800\" || \"\\udbff\" < e) this.Ne(480 | t >>> 12), \n this.Ne(128 | 63 & t >>> 6), this.Ne(128 | 63 & t); else {\n const t = e.codePointAt(0);\n this.Ne(240 | t >>> 18), this.Ne(128 | 63 & t >>> 12), this.Ne(128 | 63 & t >>> 6), \n this.Ne(128 | 63 & t);\n }\n }\n this.ke();\n }\n Oe(t) {\n // Values are encoded with a single byte length prefix, followed by the\n // actual value in big-endian format with leading 0 bytes dropped.\n const e = this.Fe(t), n = Sr(e);\n this.Be(1 + n), this.buffer[this.position++] = 255 & n;\n // Write the length\n for (let t = e.length - n; t < e.length; ++t) this.buffer[this.position++] = 255 & e[t];\n }\n Le(t) {\n // Values are encoded with a single byte length prefix, followed by the\n // inverted value in big-endian format with leading 0 bytes dropped.\n const e = this.Fe(t), n = Sr(e);\n this.Be(1 + n), this.buffer[this.position++] = ~(255 & n);\n // Write the length\n for (let t = e.length - n; t < e.length; ++t) this.buffer[this.position++] = ~(255 & e[t]);\n }\n /**\n * Writes the \"infinity\" byte sequence that sorts after all other byte\n * sequences written in ascending order.\n */ qe() {\n this.Ue(255), this.Ue(255);\n }\n /**\n * Writes the \"infinity\" byte sequence that sorts before all other byte\n * sequences written in descending order.\n */ Ke() {\n this.Ge(255), this.Ge(255);\n }\n /**\n * Resets the buffer such that it is the same as when it was newly\n * constructed.\n */ reset() {\n this.position = 0;\n }\n seed(t) {\n this.Be(t.length), this.buffer.set(t, this.position), this.position += t.length;\n }\n /** Makes a copy of the encoded bytes in this buffer. */ Qe() {\n return this.buffer.slice(0, this.position);\n }\n /**\n * Encodes `val` into an encoding so that the order matches the IEEE 754\n * floating-point comparison results with the following exceptions:\n * -0.0 < 0.0\n * all non-NaN < NaN\n * NaN = NaN\n */ Fe(t) {\n const e = \n /** Converts a JavaScript number to a byte array (using big endian encoding). */\n function(t) {\n const e = new DataView(new ArrayBuffer(8));\n return e.setFloat64(0, t, /* littleEndian= */ !1), new Uint8Array(e.buffer);\n }(t), n = 0 != (128 & e[0]);\n // Check if the first bit is set. We use a bit mask since value[0] is\n // encoded as a number from 0 to 255.\n // Revert the two complement to get natural ordering\n e[0] ^= n ? 255 : 128;\n for (let t = 1; t < e.length; ++t) e[t] ^= n ? 255 : 0;\n return e;\n }\n /** Writes a single byte ascending to the buffer. */ De(t) {\n const e = 255 & t;\n 0 === e ? (this.Ue(0), this.Ue(255)) : 255 === e ? (this.Ue(255), this.Ue(0)) : this.Ue(e);\n }\n /** Writes a single byte descending to the buffer. */ Ne(t) {\n const e = 255 & t;\n 0 === e ? (this.Ge(0), this.Ge(255)) : 255 === e ? (this.Ge(255), this.Ge(0)) : this.Ge(t);\n }\n Ce() {\n this.Ue(0), this.Ue(1);\n }\n ke() {\n this.Ge(0), this.Ge(1);\n }\n Ue(t) {\n this.Be(1), this.buffer[this.position++] = t;\n }\n Ge(t) {\n this.Be(1), this.buffer[this.position++] = ~t;\n }\n Be(t) {\n const e = t + this.position;\n if (e <= this.buffer.length) return;\n // Try doubling.\n let n = 2 * this.buffer.length;\n // Still not big enough? Just allocate the right size.\n n < e && (n = e);\n // Create the new buffer.\n const s = new Uint8Array(n);\n s.set(this.buffer), // copy old data\n this.buffer = s;\n }\n}\n\nclass Cr {\n constructor(t) {\n this.je = t;\n }\n Ae(t) {\n this.je.Se(t);\n }\n Ie(t) {\n this.je.Me(t);\n }\n pe(t) {\n this.je.Oe(t);\n }\n ge() {\n this.je.qe();\n }\n}\n\nclass xr {\n constructor(t) {\n this.je = t;\n }\n Ae(t) {\n this.je.xe(t);\n }\n Ie(t) {\n this.je.$e(t);\n }\n pe(t) {\n this.je.Le(t);\n }\n ge() {\n this.je.Ke();\n }\n}\n\n/**\n * Implements `DirectionalIndexByteEncoder` using `OrderedCodeWriter` for the\n * actual encoding.\n */ class Nr {\n constructor() {\n this.je = new Dr, this.ze = new Cr(this.je), this.We = new xr(this.je);\n }\n seed(t) {\n this.je.seed(t);\n }\n He(t) {\n return 0 /* IndexKind.ASCENDING */ === t ? this.ze : this.We;\n }\n Qe() {\n return this.je.Qe();\n }\n reset() {\n this.je.reset();\n }\n}\n\n/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/** Represents an index entry saved by the SDK in persisted storage. */ class kr {\n constructor(t, e, n, s) {\n this.indexId = t, this.documentKey = e, this.arrayValue = n, this.directionalValue = s;\n }\n /**\n * Returns an IndexEntry entry that sorts immediately after the current\n * directional value.\n */ Je() {\n const t = this.directionalValue.length, e = 0 === t || 255 === this.directionalValue[t - 1] ? t + 1 : t, n = new Uint8Array(e);\n return n.set(this.directionalValue, 0), e !== t ? n.set([ 0 ], this.directionalValue.length) : ++n[n.length - 1], \n new kr(this.indexId, this.documentKey, this.arrayValue, n);\n }\n}\n\nfunction Mr(t, e) {\n let n = t.indexId - e.indexId;\n return 0 !== n ? n : (n = $r(t.arrayValue, e.arrayValue), 0 !== n ? n : (n = $r(t.directionalValue, e.directionalValue), \n 0 !== n ? n : ht.comparator(t.documentKey, e.documentKey)));\n}\n\nfunction $r(t, e) {\n for (let n = 0; n < t.length && n < e.length; ++n) {\n const s = t[n] - e[n];\n if (0 !== s) return s;\n }\n return t.length - e.length;\n}\n\n/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A light query planner for Firestore.\n *\n * This class matches a `FieldIndex` against a Firestore Query `Target`. It\n * determines whether a given index can be used to serve the specified target.\n *\n * The following table showcases some possible index configurations:\n *\n * Query | Index\n * -----------------------------------------------------------------------------\n * where('a', '==', 'a').where('b', '==', 'b') | a ASC, b DESC\n * where('a', '==', 'a').where('b', '==', 'b') | a ASC\n * where('a', '==', 'a').where('b', '==', 'b') | b DESC\n * where('a', '>=', 'a').orderBy('a') | a ASC\n * where('a', '>=', 'a').orderBy('a', 'desc') | a DESC\n * where('a', '>=', 'a').orderBy('a').orderBy('b') | a ASC, b ASC\n * where('a', '>=', 'a').orderBy('a').orderBy('b') | a ASC\n * where('a', 'array-contains', 'a').orderBy('b') | a CONTAINS, b ASCENDING\n * where('a', 'array-contains', 'a').orderBy('b') | a CONTAINS\n */ class Or {\n constructor(t) {\n this.collectionId = null != t.collectionGroup ? t.collectionGroup : t.path.lastSegment(), \n this.Ye = t.orderBy, this.Xe = [];\n for (const e of t.filters) {\n const t = e;\n t.isInequality() ? this.Ze = t : this.Xe.push(t);\n }\n }\n /**\n * Returns whether the index can be used to serve the TargetIndexMatcher's\n * target.\n *\n * An index is considered capable of serving the target when:\n * - The target uses all index segments for its filters and orderBy clauses.\n * The target can have additional filter and orderBy clauses, but not\n * fewer.\n * - If an ArrayContains/ArrayContainsAnyfilter is used, the index must also\n * have a corresponding `CONTAINS` segment.\n * - All directional index segments can be mapped to the target as a series of\n * equality filters, a single inequality filter and a series of orderBy\n * clauses.\n * - The segments that represent the equality filters may appear out of order.\n * - The optional segment for the inequality filter must appear after all\n * equality segments.\n * - The segments that represent that orderBy clause of the target must appear\n * in order after all equality and inequality segments. Single orderBy\n * clauses cannot be skipped, but a continuous orderBy suffix may be\n * omitted.\n */ tn(t) {\n F(t.collectionGroup === this.collectionId);\n // If there is an array element, find a matching filter.\n const e = ft(t);\n if (void 0 !== e && !this.en(e)) return !1;\n const n = dt(t);\n let s = new Set, i = 0, r = 0;\n // Process all equalities first. Equalities can appear out of order.\n for (;i < n.length && this.en(n[i]); ++i) s = s.add(n[i].fieldPath.canonicalString());\n // If we already have processed all segments, all segments are used to serve\n // the equality filters and we do not need to map any segments to the\n // target's inequality and orderBy clauses.\n if (i === n.length) return !0;\n if (void 0 !== this.Ze) {\n // If there is an inequality filter and the field was not in one of the\n // equality filters above, the next segment must match both the filter\n // and the first orderBy clause.\n if (!s.has(this.Ze.field.canonicalString())) {\n const t = n[i];\n if (!this.nn(this.Ze, t) || !this.sn(this.Ye[r++], t)) return !1;\n }\n ++i;\n }\n // All remaining segments need to represent the prefix of the target's\n // orderBy.\n for (;i < n.length; ++i) {\n const t = n[i];\n if (r >= this.Ye.length || !this.sn(this.Ye[r++], t)) return !1;\n }\n return !0;\n }\n en(t) {\n for (const e of this.Xe) if (this.nn(e, t)) return !0;\n return !1;\n }\n nn(t, e) {\n if (void 0 === t || !t.field.isEqual(e.fieldPath)) return !1;\n const n = \"array-contains\" /* Operator.ARRAY_CONTAINS */ === t.op || \"array-contains-any\" /* Operator.ARRAY_CONTAINS_ANY */ === t.op;\n return 2 /* IndexKind.CONTAINS */ === e.kind === n;\n }\n sn(t, e) {\n return !!t.field.isEqual(e.fieldPath) && (0 /* IndexKind.ASCENDING */ === e.kind && \"asc\" /* Direction.ASCENDING */ === t.dir || 1 /* IndexKind.DESCENDING */ === e.kind && \"desc\" /* Direction.DESCENDING */ === t.dir);\n }\n}\n\n/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Provides utility functions that help with boolean logic transformations needed for handling\n * complex filters used in queries.\n */\n/**\n * The `in` filter is only a syntactic sugar over a disjunction of equalities. For instance: `a in\n * [1,2,3]` is in fact `a==1 || a==2 || a==3`. This method expands any `in` filter in the given\n * input into a disjunction of equality filters and returns the expanded filter.\n */ function Fr(t) {\n var e, n;\n if (F(t instanceof mn || t instanceof gn), t instanceof mn) {\n if (t instanceof Cn) {\n const s = (null === (n = null === (e = t.value.arrayValue) || void 0 === e ? void 0 : e.values) || void 0 === n ? void 0 : n.map((e => mn.create(t.field, \"==\" /* Operator.EQUAL */ , e)))) || [];\n return gn.create(s, \"or\" /* CompositeOperator.OR */);\n }\n // We have reached other kinds of field filters.\n return t;\n }\n // We have a composite filter.\n const s = t.filters.map((t => Fr(t)));\n return gn.create(s, t.op);\n}\n\n/**\n * Given a composite filter, returns the list of terms in its disjunctive normal form.\n *\n *

    Each element in the return value is one term of the resulting DNF. For instance: For the\n * input: (A || B) && C, the DNF form is: (A && C) || (B && C), and the return value is a list\n * with two elements: a composite filter that performs (A && C), and a composite filter that\n * performs (B && C).\n *\n * @param filter the composite filter to calculate DNF transform for.\n * @return the terms in the DNF transform.\n */ function Br(t) {\n if (0 === t.getFilters().length) return [];\n const e = Kr(Fr(t));\n return F(Ur(e)), Lr(e) || qr(e) ? [ e ] : e.getFilters();\n}\n\n/** Returns true if the given filter is a single field filter. e.g. (a == 10). */ function Lr(t) {\n return t instanceof mn;\n}\n\n/**\n * Returns true if the given filter is the conjunction of one or more field filters. e.g. (a == 10\n * && b == 20)\n */ function qr(t) {\n return t instanceof gn && In(t);\n}\n\n/**\n * Returns whether or not the given filter is in disjunctive normal form (DNF).\n *\n *

    In boolean logic, a disjunctive normal form (DNF) is a canonical normal form of a logical\n * formula consisting of a disjunction of conjunctions; it can also be described as an OR of ANDs.\n *\n *

    For more info, visit: https://en.wikipedia.org/wiki/Disjunctive_normal_form\n */ function Ur(t) {\n return Lr(t) || qr(t) || \n /**\n * Returns true if the given filter is the disjunction of one or more \"flat conjunctions\" and\n * field filters. e.g. (a == 10) || (b==20 && c==30)\n */\n function(t) {\n if (t instanceof gn && pn(t)) {\n for (const e of t.getFilters()) if (!Lr(e) && !qr(e)) return !1;\n return !0;\n }\n return !1;\n }(t);\n}\n\nfunction Kr(t) {\n if (F(t instanceof mn || t instanceof gn), t instanceof mn) return t;\n if (1 === t.filters.length) return Kr(t.filters[0]);\n // Compute DNF for each of the subfilters first\n const e = t.filters.map((t => Kr(t)));\n let n = gn.create(e, t.op);\n return n = jr(n), Ur(n) ? n : (F(n instanceof gn), F(yn(n)), F(n.filters.length > 1), \n n.filters.reduce(((t, e) => Gr(t, e))));\n}\n\nfunction Gr(t, e) {\n let n;\n return F(t instanceof mn || t instanceof gn), F(e instanceof mn || e instanceof gn), \n // FieldFilter FieldFilter\n n = t instanceof mn ? e instanceof mn ? function(t, e) {\n // Conjunction distribution for two field filters is the conjunction of them.\n return gn.create([ t, e ], \"and\" /* CompositeOperator.AND */);\n }(t, e) : Qr(t, e) : e instanceof mn ? Qr(e, t) : function(t, e) {\n // There are four cases:\n // (A & B) & (C & D) --> (A & B & C & D)\n // (A & B) & (C | D) --> (A & B & C) | (A & B & D)\n // (A | B) & (C & D) --> (C & D & A) | (C & D & B)\n // (A | B) & (C | D) --> (A & C) | (A & D) | (B & C) | (B & D)\n // Case 1 is a merge.\n if (F(t.filters.length > 0 && e.filters.length > 0), yn(t) && yn(e)) return vn(t, e.getFilters());\n // Case 2,3,4 all have at least one side (lhs or rhs) that is a disjunction. In all three cases\n // we should take each element of the disjunction and distribute it over the other side, and\n // return the disjunction of the distribution results.\n const n = pn(t) ? t : e, s = pn(t) ? e : t, i = n.filters.map((t => Gr(t, s)));\n return gn.create(i, \"or\" /* CompositeOperator.OR */);\n }(t, e), jr(n);\n}\n\nfunction Qr(t, e) {\n // There are two cases:\n // A & (B & C) --> (A & B & C)\n // A & (B | C) --> (A & B) | (A & C)\n if (yn(e)) \n // Case 1\n return vn(e, t.getFilters());\n {\n // Case 2\n const n = e.filters.map((e => Gr(t, e)));\n return gn.create(n, \"or\" /* CompositeOperator.OR */);\n }\n}\n\n/**\n * Applies the associativity property to the given filter and returns the resulting filter.\n *\n *

      \n *
    • A | (B | C) == (A | B) | C == (A | B | C)\n *
    • A & (B & C) == (A & B) & C == (A & B & C)\n *
    \n *\n *

    For more info, visit: https://en.wikipedia.org/wiki/Associative_property#Propositional_logic\n */ function jr(t) {\n if (F(t instanceof mn || t instanceof gn), t instanceof mn) return t;\n const e = t.getFilters();\n // If the composite filter only contains 1 filter, apply associativity to it.\n if (1 === e.length) return jr(e[0]);\n // Associativity applied to a flat composite filter results is itself.\n if (Tn(t)) return t;\n // First apply associativity to all subfilters. This will in turn recursively apply\n // associativity to all nested composite filters and field filters.\n const n = e.map((t => jr(t))), s = [];\n // For composite subfilters that perform the same kind of logical operation as `compositeFilter`\n // take out their filters and add them to `compositeFilter`. For example:\n // compositeFilter = (A | (B | C | D))\n // compositeSubfilter = (B | C | D)\n // Result: (A | B | C | D)\n // Note that the `compositeSubfilter` has been eliminated, and its filters (B, C, D) have been\n // added to the top-level \"compositeFilter\".\n return n.forEach((e => {\n e instanceof mn ? s.push(e) : e instanceof gn && (e.op === t.op ? \n // compositeFilter: (A | (B | C))\n // compositeSubfilter: (B | C)\n // Result: (A | B | C)\n s.push(...e.filters) : \n // compositeFilter: (A | (B & C))\n // compositeSubfilter: (B & C)\n // Result: (A | (B & C))\n s.push(e));\n })), 1 === s.length ? s[0] : gn.create(s, t.op);\n}\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * An in-memory implementation of IndexManager.\n */ class zr {\n constructor() {\n this.rn = new Wr;\n }\n addToCollectionParentIndex(t, e) {\n return this.rn.add(e), Rt.resolve();\n }\n getCollectionParents(t, e) {\n return Rt.resolve(this.rn.getEntries(e));\n }\n addFieldIndex(t, e) {\n // Field indices are not supported with memory persistence.\n return Rt.resolve();\n }\n deleteFieldIndex(t, e) {\n // Field indices are not supported with memory persistence.\n return Rt.resolve();\n }\n getDocumentsMatchingTarget(t, e) {\n // Field indices are not supported with memory persistence.\n return Rt.resolve(null);\n }\n getIndexType(t, e) {\n // Field indices are not supported with memory persistence.\n return Rt.resolve(0 /* IndexType.NONE */);\n }\n getFieldIndexes(t, e) {\n // Field indices are not supported with memory persistence.\n return Rt.resolve([]);\n }\n getNextCollectionGroupToUpdate(t) {\n // Field indices are not supported with memory persistence.\n return Rt.resolve(null);\n }\n getMinOffset(t, e) {\n return Rt.resolve(It.min());\n }\n getMinOffsetFromCollectionGroup(t, e) {\n return Rt.resolve(It.min());\n }\n updateCollectionGroup(t, e, n) {\n // Field indices are not supported with memory persistence.\n return Rt.resolve();\n }\n updateIndexEntries(t, e) {\n // Field indices are not supported with memory persistence.\n return Rt.resolve();\n }\n}\n\n/**\n * Internal implementation of the collection-parent index exposed by MemoryIndexManager.\n * Also used for in-memory caching by IndexedDbIndexManager and initial index population\n * in indexeddb_schema.ts\n */ class Wr {\n constructor() {\n this.index = {};\n }\n // Returns false if the entry already existed.\n add(t) {\n const e = t.lastSegment(), n = t.popLast(), s = this.index[e] || new Ee(ut.comparator), i = !s.has(n);\n return this.index[e] = s.add(n), i;\n }\n has(t) {\n const e = t.lastSegment(), n = t.popLast(), s = this.index[e];\n return s && s.has(n);\n }\n getEntries(t) {\n return (this.index[t] || new Ee(ut.comparator)).toArray();\n }\n}\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */ const Hr = new Uint8Array(0);\n\n/**\n * A persisted implementation of IndexManager.\n *\n * PORTING NOTE: Unlike iOS and Android, the Web SDK does not memoize index\n * data as it supports multi-tab access.\n */\nclass Jr {\n constructor(t, e) {\n this.user = t, this.databaseId = e, \n /**\n * An in-memory copy of the index entries we've already written since the SDK\n * launched. Used to avoid re-writing the same entry repeatedly.\n *\n * This is *NOT* a complete cache of what's in persistence and so can never be\n * used to satisfy reads.\n */\n this.on = new Wr, \n /**\n * Maps from a target to its equivalent list of sub-targets. Each sub-target\n * contains only one term from the target's disjunctive normal form (DNF).\n */\n this.un = new os((t => $n(t)), ((t, e) => On(t, e))), this.uid = t.uid || \"\";\n }\n /**\n * Adds a new entry to the collection parent index.\n *\n * Repeated calls for the same collectionPath should be avoided within a\n * transaction as IndexedDbIndexManager only caches writes once a transaction\n * has been committed.\n */ addToCollectionParentIndex(t, e) {\n if (!this.on.has(e)) {\n const n = e.lastSegment(), s = e.popLast();\n t.addOnCommittedListener((() => {\n // Add the collection to the in memory cache only if the transaction was\n // successfully committed.\n this.on.add(e);\n }));\n const i = {\n collectionId: n,\n parent: qt(s)\n };\n return Yr(t).put(i);\n }\n return Rt.resolve();\n }\n getCollectionParents(t, e) {\n const n = [], s = IDBKeyRange.bound([ e, \"\" ], [ st(e), \"\" ], \n /*lowerOpen=*/ !1, \n /*upperOpen=*/ !0);\n return Yr(t).j(s).next((t => {\n for (const s of t) {\n // This collectionId guard shouldn't be necessary (and isn't as long\n // as we're running in a real browser), but there's a bug in\n // indexeddbshim that breaks our range in our tests running in node:\n // https://github.com/axemclion/IndexedDBShim/issues/334\n if (s.collectionId !== e) break;\n n.push(Gt(s.parent));\n }\n return n;\n }));\n }\n addFieldIndex(t, e) {\n // TODO(indexing): Verify that the auto-incrementing index ID works in\n // Safari & Firefox.\n const n = Zr(t), s = function(t) {\n return {\n indexId: t.indexId,\n collectionGroup: t.collectionGroup,\n fields: t.fields.map((t => [ t.fieldPath.canonicalString(), t.kind ]))\n };\n }(e);\n delete s.indexId;\n // `indexId` is auto-populated by IndexedDb\n const i = n.add(s);\n if (e.indexState) {\n const n = to(t);\n return i.next((t => {\n n.put(Tr(t, this.user, e.indexState.sequenceNumber, e.indexState.offset));\n }));\n }\n return i.next();\n }\n deleteFieldIndex(t, e) {\n const n = Zr(t), s = to(t), i = Xr(t);\n return n.delete(e.indexId).next((() => s.delete(IDBKeyRange.bound([ e.indexId ], [ e.indexId + 1 ], \n /*lowerOpen=*/ !1, \n /*upperOpen=*/ !0)))).next((() => i.delete(IDBKeyRange.bound([ e.indexId ], [ e.indexId + 1 ], \n /*lowerOpen=*/ !1, \n /*upperOpen=*/ !0))));\n }\n getDocumentsMatchingTarget(t, e) {\n const n = Xr(t);\n let s = !0;\n const i = new Map;\n return Rt.forEach(this.cn(e), (e => this.an(t, e).next((t => {\n s && (s = !!t), i.set(e, t);\n })))).next((() => {\n if (s) {\n let t = gs();\n const s = [];\n return Rt.forEach(i, ((i, r) => {\n var o;\n N(\"IndexedDbIndexManager\", `Using index ${o = i, `id=${o.indexId}|cg=${o.collectionGroup}|f=${o.fields.map((t => `${t.fieldPath}:${t.kind}`)).join(\",\")}`} to execute ${$n(e)}`);\n const u = function(t, e) {\n const n = ft(e);\n if (void 0 === n) return null;\n for (const e of Bn(t, n.fieldPath)) switch (e.op) {\n case \"array-contains-any\" /* Operator.ARRAY_CONTAINS_ANY */ :\n return e.value.arrayValue.values || [];\n\n case \"array-contains\" /* Operator.ARRAY_CONTAINS */ :\n return [ e.value ];\n // Remaining filters are not array filters.\n }\n return null;\n }\n /**\n * Returns the list of values that are used in != or NOT_IN filters. Returns\n * `null` if there are no such filters.\n */ (r, i), c = function(t, e) {\n const n = new Map;\n for (const s of dt(e)) for (const e of Bn(t, s.fieldPath)) switch (e.op) {\n case \"==\" /* Operator.EQUAL */ :\n case \"in\" /* Operator.IN */ :\n // Encode equality prefix, which is encoded in the index value before\n // the inequality (e.g. `a == 'a' && b != 'b'` is encoded to\n // `value != 'ab'`).\n n.set(s.fieldPath.canonicalString(), e.value);\n break;\n\n case \"not-in\" /* Operator.NOT_IN */ :\n case \"!=\" /* Operator.NOT_EQUAL */ :\n // NotIn/NotEqual is always a suffix. There cannot be any remaining\n // segments and hence we can return early here.\n return n.set(s.fieldPath.canonicalString(), e.value), Array.from(n.values());\n // Remaining filters cannot be used as notIn bounds.\n }\n return null;\n }\n /**\n * Returns a lower bound of field values that can be used as a starting point to\n * scan the index defined by `fieldIndex`. Returns `MIN_VALUE` if no lower bound\n * exists.\n */ (r, i), a = function(t, e) {\n const n = [];\n let s = !0;\n // For each segment, retrieve a lower bound if there is a suitable filter or\n // startAt.\n for (const i of dt(e)) {\n const e = 0 /* IndexKind.ASCENDING */ === i.kind ? Ln(t, i.fieldPath, t.startAt) : qn(t, i.fieldPath, t.startAt);\n n.push(e.value), s && (s = e.inclusive);\n }\n return new hn(n, s);\n }\n /**\n * Returns an upper bound of field values that can be used as an ending point\n * when scanning the index defined by `fieldIndex`. Returns `MAX_VALUE` if no\n * upper bound exists.\n */ (r, i), h = function(t, e) {\n const n = [];\n let s = !0;\n // For each segment, retrieve an upper bound if there is a suitable filter or\n // endAt.\n for (const i of dt(e)) {\n const e = 0 /* IndexKind.ASCENDING */ === i.kind ? qn(t, i.fieldPath, t.endAt) : Ln(t, i.fieldPath, t.endAt);\n n.push(e.value), s && (s = e.inclusive);\n }\n return new hn(n, s);\n }(r, i), l = this.hn(i, r, a), f = this.hn(i, r, h), d = this.ln(i, r, c), w = this.fn(i.indexId, u, l, a.inclusive, f, h.inclusive, d);\n return Rt.forEach(w, (i => n.H(i, e.limit).next((e => {\n e.forEach((e => {\n const n = ht.fromSegments(e.documentKey);\n t.has(n) || (t = t.add(n), s.push(n));\n }));\n }))));\n })).next((() => s));\n }\n return Rt.resolve(null);\n }));\n }\n cn(t) {\n let e = this.un.get(t);\n if (e) return e;\n if (0 === t.filters.length) e = [ t ]; else {\n e = Br(gn.create(t.filters, \"and\" /* CompositeOperator.AND */)).map((e => Mn(t.path, t.collectionGroup, t.orderBy, e.getFilters(), t.limit, t.startAt, t.endAt)));\n }\n return this.un.set(t, e), e;\n }\n /**\n * Constructs a key range query on `DbIndexEntryStore` that unions all\n * bounds.\n */ fn(t, e, n, s, i, r, o) {\n // The number of total index scans we union together. This is similar to a\n // distributed normal form, but adapted for array values. We create a single\n // index range per value in an ARRAY_CONTAINS or ARRAY_CONTAINS_ANY filter\n // combined with the values from the query bounds.\n const u = (null != e ? e.length : 1) * Math.max(n.length, i.length), c = u / (null != e ? e.length : 1), a = [];\n for (let h = 0; h < u; ++h) {\n const u = e ? this.dn(e[h / c]) : Hr, l = this.wn(t, u, n[h % c], s), f = this._n(t, u, i[h % c], r), d = o.map((e => this.wn(t, u, e, \n /* inclusive= */ !0)));\n a.push(...this.createRange(l, f, d));\n }\n return a;\n }\n /** Generates the lower bound for `arrayValue` and `directionalValue`. */ wn(t, e, n, s) {\n const i = new kr(t, ht.empty(), e, n);\n return s ? i : i.Je();\n }\n /** Generates the upper bound for `arrayValue` and `directionalValue`. */ _n(t, e, n, s) {\n const i = new kr(t, ht.empty(), e, n);\n return s ? i.Je() : i;\n }\n an(t, e) {\n const n = new Or(e), s = null != e.collectionGroup ? e.collectionGroup : e.path.lastSegment();\n return this.getFieldIndexes(t, s).next((t => {\n // Return the index with the most number of segments.\n let e = null;\n for (const s of t) {\n n.tn(s) && (!e || s.fields.length > e.fields.length) && (e = s);\n }\n return e;\n }));\n }\n getIndexType(t, e) {\n let n = 2 /* IndexType.FULL */;\n const s = this.cn(e);\n return Rt.forEach(s, (e => this.an(t, e).next((t => {\n t ? 0 /* IndexType.NONE */ !== n && t.fields.length < function(t) {\n let e = new Ee(at.comparator), n = !1;\n for (const s of t.filters) for (const t of s.getFlattenedFilters()) \n // __name__ is not an explicit segment of any index, so we don't need to\n // count it.\n t.field.isKeyField() || (\n // ARRAY_CONTAINS or ARRAY_CONTAINS_ANY filters must be counted separately.\n // For instance, it is possible to have an index for \"a ARRAY a ASC\". Even\n // though these are on the same field, they should be counted as two\n // separate segments in an index.\n \"array-contains\" /* Operator.ARRAY_CONTAINS */ === t.op || \"array-contains-any\" /* Operator.ARRAY_CONTAINS_ANY */ === t.op ? n = !0 : e = e.add(t.field));\n for (const n of t.orderBy) \n // __name__ is not an explicit segment of any index, so we don't need to\n // count it.\n n.field.isKeyField() || (e = e.add(n.field));\n return e.size + (n ? 1 : 0);\n }(e) && (n = 1 /* IndexType.PARTIAL */) : n = 0 /* IndexType.NONE */;\n })))).next((() => \n // OR queries have more than one sub-target (one sub-target per DNF term). We currently consider\n // OR queries that have a `limit` to have a partial index. For such queries we perform sorting\n // and apply the limit in memory as a post-processing step.\n function(t) {\n return null !== t.limit;\n }(e) && s.length > 1 && 2 /* IndexType.FULL */ === n ? 1 /* IndexType.PARTIAL */ : n));\n }\n /**\n * Returns the byte encoded form of the directional values in the field index.\n * Returns `null` if the document does not have all fields specified in the\n * index.\n */ mn(t, e) {\n const n = new Nr;\n for (const s of dt(t)) {\n const t = e.data.field(s.fieldPath);\n if (null == t) return null;\n const i = n.He(s.kind);\n br.Ve._e(t, i);\n }\n return n.Qe();\n }\n /** Encodes a single value to the ascending index format. */ dn(t) {\n const e = new Nr;\n return br.Ve._e(t, e.He(0 /* IndexKind.ASCENDING */)), e.Qe();\n }\n /**\n * Returns an encoded form of the document key that sorts based on the key\n * ordering of the field index.\n */ gn(t, e) {\n const n = new Nr;\n return br.Ve._e(We(this.databaseId, e), n.He(function(t) {\n const e = dt(t);\n return 0 === e.length ? 0 /* IndexKind.ASCENDING */ : e[e.length - 1].kind;\n }(t))), n.Qe();\n }\n /**\n * Encodes the given field values according to the specification in `target`.\n * For IN queries, a list of possible values is returned.\n */ ln(t, e, n) {\n if (null === n) return [];\n let s = [];\n s.push(new Nr);\n let i = 0;\n for (const r of dt(t)) {\n const t = n[i++];\n for (const n of s) if (this.yn(e, r.fieldPath) && Je(t)) s = this.pn(s, r, t); else {\n const e = n.He(r.kind);\n br.Ve._e(t, e);\n }\n }\n return this.In(s);\n }\n /**\n * Encodes the given bounds according to the specification in `target`. For IN\n * queries, a list of possible values is returned.\n */ hn(t, e, n) {\n return this.ln(t, e, n.position);\n }\n /** Returns the byte representation for the provided encoders. */ In(t) {\n const e = [];\n for (let n = 0; n < t.length; ++n) e[n] = t[n].Qe();\n return e;\n }\n /**\n * Creates a separate encoder for each element of an array.\n *\n * The method appends each value to all existing encoders (e.g. filter(\"a\",\n * \"==\", \"a1\").filter(\"b\", \"in\", [\"b1\", \"b2\"]) becomes [\"a1,b1\", \"a1,b2\"]). A\n * list of new encoders is returned.\n */ pn(t, e, n) {\n const s = [ ...t ], i = [];\n for (const t of n.arrayValue.values || []) for (const n of s) {\n const s = new Nr;\n s.seed(n.Qe()), br.Ve._e(t, s.He(e.kind)), i.push(s);\n }\n return i;\n }\n yn(t, e) {\n return !!t.filters.find((t => t instanceof mn && t.field.isEqual(e) && (\"in\" /* Operator.IN */ === t.op || \"not-in\" /* Operator.NOT_IN */ === t.op)));\n }\n getFieldIndexes(t, e) {\n const n = Zr(t), s = to(t);\n return (e ? n.j(\"collectionGroupIndex\", IDBKeyRange.bound(e, e)) : n.j()).next((t => {\n const e = [];\n return Rt.forEach(t, (t => s.get([ t.indexId, this.uid ]).next((n => {\n e.push(function(t, e) {\n const n = e ? new gt(e.sequenceNumber, new It(wr(e.readTime), new ht(Gt(e.documentKey)), e.largestBatchId)) : gt.empty(), s = t.fields.map((([t, e]) => new _t(at.fromServerFormat(t), e)));\n return new lt(t.indexId, t.collectionGroup, s, n);\n }(t, n));\n })))).next((() => e));\n }));\n }\n getNextCollectionGroupToUpdate(t) {\n return this.getFieldIndexes(t).next((t => 0 === t.length ? null : (t.sort(((t, e) => {\n const n = t.indexState.sequenceNumber - e.indexState.sequenceNumber;\n return 0 !== n ? n : et(t.collectionGroup, e.collectionGroup);\n })), t[0].collectionGroup)));\n }\n updateCollectionGroup(t, e, n) {\n const s = Zr(t), i = to(t);\n return this.Tn(t).next((t => s.j(\"collectionGroupIndex\", IDBKeyRange.bound(e, e)).next((e => Rt.forEach(e, (e => i.put(Tr(e.indexId, this.user, t, n))))))));\n }\n updateIndexEntries(t, e) {\n // Porting Note: `getFieldIndexes()` on Web does not cache index lookups as\n // it could be used across different IndexedDB transactions. As any cached\n // data might be invalidated by other multi-tab clients, we can only trust\n // data within a single IndexedDB transaction. We therefore add a cache\n // here.\n const n = new Map;\n return Rt.forEach(e, ((e, s) => {\n const i = n.get(e.collectionGroup);\n return (i ? Rt.resolve(i) : this.getFieldIndexes(t, e.collectionGroup)).next((i => (n.set(e.collectionGroup, i), \n Rt.forEach(i, (n => this.En(t, e, n).next((e => {\n const i = this.An(s, n);\n return e.isEqual(i) ? Rt.resolve() : this.vn(t, s, n, e, i);\n })))))));\n }));\n }\n Rn(t, e, n, s) {\n return Xr(t).put({\n indexId: s.indexId,\n uid: this.uid,\n arrayValue: s.arrayValue,\n directionalValue: s.directionalValue,\n orderedDocumentKey: this.gn(n, e.key),\n documentKey: e.key.path.toArray()\n });\n }\n Pn(t, e, n, s) {\n return Xr(t).delete([ s.indexId, this.uid, s.arrayValue, s.directionalValue, this.gn(n, e.key), e.key.path.toArray() ]);\n }\n En(t, e, n) {\n const s = Xr(t);\n let i = new Ee(Mr);\n return s.X({\n index: \"documentKeyIndex\",\n range: IDBKeyRange.only([ n.indexId, this.uid, this.gn(n, e) ])\n }, ((t, s) => {\n i = i.add(new kr(n.indexId, e, s.arrayValue, s.directionalValue));\n })).next((() => i));\n }\n /** Creates the index entries for the given document. */ An(t, e) {\n let n = new Ee(Mr);\n const s = this.mn(e, t);\n if (null == s) return n;\n const i = ft(e);\n if (null != i) {\n const r = t.data.field(i.fieldPath);\n if (Je(r)) for (const i of r.arrayValue.values || []) n = n.add(new kr(e.indexId, t.key, this.dn(i), s));\n } else n = n.add(new kr(e.indexId, t.key, Hr, s));\n return n;\n }\n /**\n * Updates the index entries for the provided document by deleting entries\n * that are no longer referenced in `newEntries` and adding all newly added\n * entries.\n */ vn(t, e, n, s, i) {\n N(\"IndexedDbIndexManager\", \"Updating index entries for document '%s'\", e.key);\n const r = [];\n return function(t, e, n, s, i) {\n const r = t.getIterator(), o = e.getIterator();\n let u = ve(r), c = ve(o);\n // Walk through the two sets at the same time, using the ordering defined by\n // `comparator`.\n for (;u || c; ) {\n let t = !1, e = !1;\n if (u && c) {\n const s = n(u, c);\n s < 0 ? \n // The element was removed if the next element in our ordered\n // walkthrough is only in `before`.\n e = !0 : s > 0 && (\n // The element was added if the next element in our ordered walkthrough\n // is only in `after`.\n t = !0);\n } else null != u ? e = !0 : t = !0;\n t ? (s(c), c = ve(o)) : e ? (i(u), u = ve(r)) : (u = ve(r), c = ve(o));\n }\n }(s, i, Mr, (\n /* onAdd= */ s => {\n r.push(this.Rn(t, e, n, s));\n }), (\n /* onRemove= */ s => {\n r.push(this.Pn(t, e, n, s));\n })), Rt.waitFor(r);\n }\n Tn(t) {\n let e = 1;\n return to(t).X({\n index: \"sequenceNumberIndex\",\n reverse: !0,\n range: IDBKeyRange.upperBound([ this.uid, Number.MAX_SAFE_INTEGER ])\n }, ((t, n, s) => {\n s.done(), e = n.sequenceNumber + 1;\n })).next((() => e));\n }\n /**\n * Returns a new set of IDB ranges that splits the existing range and excludes\n * any values that match the `notInValue` from these ranges. As an example,\n * '[foo > 2 && foo != 3]` becomes `[foo > 2 && < 3, foo > 3]`.\n */ createRange(t, e, n) {\n // The notIn values need to be sorted and unique so that we can return a\n // sorted set of non-overlapping ranges.\n n = n.sort(((t, e) => Mr(t, e))).filter(((t, e, n) => !e || 0 !== Mr(t, n[e - 1])));\n const s = [];\n s.push(t);\n for (const i of n) {\n const n = Mr(i, t), r = Mr(i, e);\n if (0 === n) \n // `notInValue` is the lower bound. We therefore need to raise the bound\n // to the next value.\n s[0] = t.Je(); else if (n > 0 && r < 0) \n // `notInValue` is in the middle of the range\n s.push(i), s.push(i.Je()); else if (r > 0) \n // `notInValue` (and all following values) are out of the range\n break;\n }\n s.push(e);\n const i = [];\n for (let t = 0; t < s.length; t += 2) {\n // If we encounter two bounds that will create an unmatchable key range,\n // then we return an empty set of key ranges.\n if (this.bn(s[t], s[t + 1])) return [];\n const e = [ s[t].indexId, this.uid, s[t].arrayValue, s[t].directionalValue, Hr, [] ], n = [ s[t + 1].indexId, this.uid, s[t + 1].arrayValue, s[t + 1].directionalValue, Hr, [] ];\n i.push(IDBKeyRange.bound(e, n));\n }\n return i;\n }\n bn(t, e) {\n // If lower bound is greater than the upper bound, then the key\n // range can never be matched.\n return Mr(t, e) > 0;\n }\n getMinOffsetFromCollectionGroup(t, e) {\n return this.getFieldIndexes(t, e).next(eo);\n }\n getMinOffset(t, e) {\n return Rt.mapArray(this.cn(e), (e => this.an(t, e).next((t => t || O())))).next(eo);\n }\n}\n\n/**\n * Helper to get a typed SimpleDbStore for the collectionParents\n * document store.\n */ function Yr(t) {\n return _e(t, \"collectionParents\");\n}\n\n/**\n * Helper to get a typed SimpleDbStore for the index entry object store.\n */ function Xr(t) {\n return _e(t, \"indexEntries\");\n}\n\n/**\n * Helper to get a typed SimpleDbStore for the index configuration object store.\n */ function Zr(t) {\n return _e(t, \"indexConfiguration\");\n}\n\n/**\n * Helper to get a typed SimpleDbStore for the index state object store.\n */ function to(t) {\n return _e(t, \"indexState\");\n}\n\nfunction eo(t) {\n F(0 !== t.length);\n let e = t[0].indexState.offset, n = e.largestBatchId;\n for (let s = 1; s < t.length; s++) {\n const i = t[s].indexState.offset;\n Tt(i, e) < 0 && (e = i), n < i.largestBatchId && (n = i.largestBatchId);\n }\n return new It(e.readTime, e.documentKey, n);\n}\n\n/**\n * @license\n * Copyright 2018 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */ const no = {\n didRun: !1,\n sequenceNumbersCollected: 0,\n targetsRemoved: 0,\n documentsRemoved: 0\n};\n\nclass so {\n constructor(\n // When we attempt to collect, we will only do so if the cache size is greater than this\n // threshold. Passing `COLLECTION_DISABLED` here will cause collection to always be skipped.\n t, \n // The percentage of sequence numbers that we will attempt to collect\n e, \n // A cap on the total number of sequence numbers that will be collected. This prevents\n // us from collecting a huge number of sequence numbers if the cache has grown very large.\n n) {\n this.cacheSizeCollectionThreshold = t, this.percentileToCollect = e, this.maximumSequenceNumbersToCollect = n;\n }\n static withCacheSize(t) {\n return new so(t, so.DEFAULT_COLLECTION_PERCENTILE, so.DEFAULT_MAX_SEQUENCE_NUMBERS_TO_COLLECT);\n }\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Delete a mutation batch and the associated document mutations.\n * @returns A PersistencePromise of the document mutations that were removed.\n */\nfunction io(t, e, n) {\n const s = t.store(\"mutations\"), i = t.store(\"documentMutations\"), r = [], o = IDBKeyRange.only(n.batchId);\n let u = 0;\n const c = s.X({\n range: o\n }, ((t, e, n) => (u++, n.delete())));\n r.push(c.next((() => {\n F(1 === u);\n })));\n const a = [];\n for (const t of n.mutations) {\n const s = zt(e, t.key.path, n.batchId);\n r.push(i.delete(s)), a.push(t.key);\n }\n return Rt.waitFor(r).next((() => a));\n}\n\n/**\n * Returns an approximate size for the given document.\n */ function ro(t) {\n if (!t) return 0;\n let e;\n if (t.document) e = t.document; else if (t.unknownDocument) e = t.unknownDocument; else {\n if (!t.noDocument) throw O();\n e = t.noDocument;\n }\n return JSON.stringify(e).length;\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/** A mutation queue for a specific user, backed by IndexedDB. */ so.DEFAULT_COLLECTION_PERCENTILE = 10, \nso.DEFAULT_MAX_SEQUENCE_NUMBERS_TO_COLLECT = 1e3, so.DEFAULT = new so(41943040, so.DEFAULT_COLLECTION_PERCENTILE, so.DEFAULT_MAX_SEQUENCE_NUMBERS_TO_COLLECT), \nso.DISABLED = new so(-1, 0, 0);\n\nclass oo {\n constructor(\n /**\n * The normalized userId (e.g. null UID => \"\" userId) used to store /\n * retrieve mutations.\n */\n t, e, n, s) {\n this.userId = t, this.serializer = e, this.indexManager = n, this.referenceDelegate = s, \n /**\n * Caches the document keys for pending mutation batches. If the mutation\n * has been removed from IndexedDb, the cached value may continue to\n * be used to retrieve the batch's document keys. To remove a cached value\n * locally, `removeCachedMutationKeys()` should be invoked either directly\n * or through `removeMutationBatches()`.\n *\n * With multi-tab, when the primary client acknowledges or rejects a mutation,\n * this cache is used by secondary clients to invalidate the local\n * view of the documents that were previously affected by the mutation.\n */\n // PORTING NOTE: Multi-tab only.\n this.Vn = {};\n }\n /**\n * Creates a new mutation queue for the given user.\n * @param user - The user for which to create a mutation queue.\n * @param serializer - The serializer to use when persisting to IndexedDb.\n */ static de(t, e, n, s) {\n // TODO(mcg): Figure out what constraints there are on userIDs\n // In particular, are there any reserved characters? are empty ids allowed?\n // For the moment store these together in the same mutations table assuming\n // that empty userIDs aren't allowed.\n F(\"\" !== t.uid);\n const i = t.isAuthenticated() ? t.uid : \"\";\n return new oo(i, e, n, s);\n }\n checkEmpty(t) {\n let e = !0;\n const n = IDBKeyRange.bound([ this.userId, Number.NEGATIVE_INFINITY ], [ this.userId, Number.POSITIVE_INFINITY ]);\n return co(t).X({\n index: \"userMutationsIndex\",\n range: n\n }, ((t, n, s) => {\n e = !1, s.done();\n })).next((() => e));\n }\n addMutationBatch(t, e, n, s) {\n const i = ao(t), r = co(t);\n // The IndexedDb implementation in Chrome (and Firefox) does not handle\n // compound indices that include auto-generated keys correctly. To ensure\n // that the index entry is added correctly in all browsers, we perform two\n // writes: The first write is used to retrieve the next auto-generated Batch\n // ID, and the second write populates the index and stores the actual\n // mutation batch.\n // See: https://bugs.chromium.org/p/chromium/issues/detail?id=701972\n // We write an empty object to obtain key\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return r.add({}).next((o => {\n F(\"number\" == typeof o);\n const u = new Zs(o, e, n, s), c = function(t, e, n) {\n const s = n.baseMutations.map((e => ji(t.fe, e))), i = n.mutations.map((e => ji(t.fe, e)));\n return {\n userId: e,\n batchId: n.batchId,\n localWriteTimeMs: n.localWriteTime.toMillis(),\n baseMutations: s,\n mutations: i\n };\n }(this.serializer, this.userId, u), a = [];\n let h = new Ee(((t, e) => et(t.canonicalString(), e.canonicalString())));\n for (const t of s) {\n const e = zt(this.userId, t.key.path, o);\n h = h.add(t.key.path.popLast()), a.push(r.put(c)), a.push(i.put(e, Wt));\n }\n return h.forEach((e => {\n a.push(this.indexManager.addToCollectionParentIndex(t, e));\n })), t.addOnCommittedListener((() => {\n this.Vn[o] = u.keys();\n })), Rt.waitFor(a).next((() => u));\n }));\n }\n lookupMutationBatch(t, e) {\n return co(t).get(e).next((t => t ? (F(t.userId === this.userId), _r(this.serializer, t)) : null));\n }\n /**\n * Returns the document keys for the mutation batch with the given batchId.\n * For primary clients, this method returns `null` after\n * `removeMutationBatches()` has been called. Secondary clients return a\n * cached result until `removeCachedMutationKeys()` is invoked.\n */\n // PORTING NOTE: Multi-tab only.\n Sn(t, e) {\n return this.Vn[e] ? Rt.resolve(this.Vn[e]) : this.lookupMutationBatch(t, e).next((t => {\n if (t) {\n const n = t.keys();\n return this.Vn[e] = n, n;\n }\n return null;\n }));\n }\n getNextMutationBatchAfterBatchId(t, e) {\n const n = e + 1, s = IDBKeyRange.lowerBound([ this.userId, n ]);\n let i = null;\n return co(t).X({\n index: \"userMutationsIndex\",\n range: s\n }, ((t, e, s) => {\n e.userId === this.userId && (F(e.batchId >= n), i = _r(this.serializer, e)), s.done();\n })).next((() => i));\n }\n getHighestUnacknowledgedBatchId(t) {\n const e = IDBKeyRange.upperBound([ this.userId, Number.POSITIVE_INFINITY ]);\n let n = -1;\n return co(t).X({\n index: \"userMutationsIndex\",\n range: e,\n reverse: !0\n }, ((t, e, s) => {\n n = e.batchId, s.done();\n })).next((() => n));\n }\n getAllMutationBatches(t) {\n const e = IDBKeyRange.bound([ this.userId, -1 ], [ this.userId, Number.POSITIVE_INFINITY ]);\n return co(t).j(\"userMutationsIndex\", e).next((t => t.map((t => _r(this.serializer, t)))));\n }\n getAllMutationBatchesAffectingDocumentKey(t, e) {\n // Scan the document-mutation index starting with a prefix starting with\n // the given documentKey.\n const n = jt(this.userId, e.path), s = IDBKeyRange.lowerBound(n), i = [];\n return ao(t).X({\n range: s\n }, ((n, s, r) => {\n const [o, u, c] = n, a = Gt(u);\n // Only consider rows matching exactly the specific key of\n // interest. Note that because we order by path first, and we\n // order terminators before path separators, we'll encounter all\n // the index rows for documentKey contiguously. In particular, all\n // the rows for documentKey will occur before any rows for\n // documents nested in a subcollection beneath documentKey so we\n // can stop as soon as we hit any such row.\n if (o === this.userId && e.path.isEqual(a)) \n // Look up the mutation batch in the store.\n return co(t).get(c).next((t => {\n if (!t) throw O();\n F(t.userId === this.userId), i.push(_r(this.serializer, t));\n }));\n r.done();\n })).next((() => i));\n }\n getAllMutationBatchesAffectingDocumentKeys(t, e) {\n let n = new Ee(et);\n const s = [];\n return e.forEach((e => {\n const i = jt(this.userId, e.path), r = IDBKeyRange.lowerBound(i), o = ao(t).X({\n range: r\n }, ((t, s, i) => {\n const [r, o, u] = t, c = Gt(o);\n // Only consider rows matching exactly the specific key of\n // interest. Note that because we order by path first, and we\n // order terminators before path separators, we'll encounter all\n // the index rows for documentKey contiguously. In particular, all\n // the rows for documentKey will occur before any rows for\n // documents nested in a subcollection beneath documentKey so we\n // can stop as soon as we hit any such row.\n r === this.userId && e.path.isEqual(c) ? n = n.add(u) : i.done();\n }));\n s.push(o);\n })), Rt.waitFor(s).next((() => this.Dn(t, n)));\n }\n getAllMutationBatchesAffectingQuery(t, e) {\n const n = e.path, s = n.length + 1, i = jt(this.userId, n), r = IDBKeyRange.lowerBound(i);\n // Collect up unique batchIDs encountered during a scan of the index. Use a\n // SortedSet to accumulate batch IDs so they can be traversed in order in a\n // scan of the main table.\n let o = new Ee(et);\n return ao(t).X({\n range: r\n }, ((t, e, i) => {\n const [r, u, c] = t, a = Gt(u);\n r === this.userId && n.isPrefixOf(a) ? \n // Rows with document keys more than one segment longer than the\n // query path can't be matches. For example, a query on 'rooms'\n // can't match the document /rooms/abc/messages/xyx.\n // TODO(mcg): we'll need a different scanner when we implement\n // ancestor queries.\n a.length === s && (o = o.add(c)) : i.done();\n })).next((() => this.Dn(t, o)));\n }\n Dn(t, e) {\n const n = [], s = [];\n // TODO(rockwood): Implement this using iterate.\n return e.forEach((e => {\n s.push(co(t).get(e).next((t => {\n if (null === t) throw O();\n F(t.userId === this.userId), n.push(_r(this.serializer, t));\n })));\n })), Rt.waitFor(s).next((() => n));\n }\n removeMutationBatch(t, e) {\n return io(t.ht, this.userId, e).next((n => (t.addOnCommittedListener((() => {\n this.Cn(e.batchId);\n })), Rt.forEach(n, (e => this.referenceDelegate.markPotentiallyOrphaned(t, e))))));\n }\n /**\n * Clears the cached keys for a mutation batch. This method should be\n * called by secondary clients after they process mutation updates.\n *\n * Note that this method does not have to be called from primary clients as\n * the corresponding cache entries are cleared when an acknowledged or\n * rejected batch is removed from the mutation queue.\n */\n // PORTING NOTE: Multi-tab only\n Cn(t) {\n delete this.Vn[t];\n }\n performConsistencyCheck(t) {\n return this.checkEmpty(t).next((e => {\n if (!e) return Rt.resolve();\n // Verify that there are no entries in the documentMutations index if\n // the queue is empty.\n const n = IDBKeyRange.lowerBound([ this.userId ]);\n const s = [];\n return ao(t).X({\n range: n\n }, ((t, e, n) => {\n if (t[0] === this.userId) {\n const e = Gt(t[1]);\n s.push(e);\n } else n.done();\n })).next((() => {\n F(0 === s.length);\n }));\n }));\n }\n containsKey(t, e) {\n return uo(t, this.userId, e);\n }\n // PORTING NOTE: Multi-tab only (state is held in memory in other clients).\n /** Returns the mutation queue's metadata from IndexedDb. */\n xn(t) {\n return ho(t).get(this.userId).next((t => t || {\n userId: this.userId,\n lastAcknowledgedBatchId: -1,\n lastStreamToken: \"\"\n }));\n }\n}\n\n/**\n * @returns true if the mutation queue for the given user contains a pending\n * mutation for the given key.\n */ function uo(t, e, n) {\n const s = jt(e, n.path), i = s[1], r = IDBKeyRange.lowerBound(s);\n let o = !1;\n return ao(t).X({\n range: r,\n Y: !0\n }, ((t, n, s) => {\n const [r, u, /*batchID*/ c] = t;\n r === e && u === i && (o = !0), s.done();\n })).next((() => o));\n}\n\n/** Returns true if any mutation queue contains the given document. */\n/**\n * Helper to get a typed SimpleDbStore for the mutations object store.\n */\nfunction co(t) {\n return _e(t, \"mutations\");\n}\n\n/**\n * Helper to get a typed SimpleDbStore for the mutationQueues object store.\n */ function ao(t) {\n return _e(t, \"documentMutations\");\n}\n\n/**\n * Helper to get a typed SimpleDbStore for the mutationQueues object store.\n */ function ho(t) {\n return _e(t, \"mutationQueues\");\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/** Offset to ensure non-overlapping target ids. */\n/**\n * Generates monotonically increasing target IDs for sending targets to the\n * watch stream.\n *\n * The client constructs two generators, one for the target cache, and one for\n * for the sync engine (to generate limbo documents targets). These\n * generators produce non-overlapping IDs (by using even and odd IDs\n * respectively).\n *\n * By separating the target ID space, the query cache can generate target IDs\n * that persist across client restarts, while sync engine can independently\n * generate in-memory target IDs that are transient and can be reused after a\n * restart.\n */\nclass lo {\n constructor(t) {\n this.Nn = t;\n }\n next() {\n return this.Nn += 2, this.Nn;\n }\n static kn() {\n // The target cache generator must return '2' in its first call to `next()`\n // as there is no differentiation in the protocol layer between an unset\n // number and the number '0'. If we were to sent a target with target ID\n // '0', the backend would consider it unset and replace it with its own ID.\n return new lo(0);\n }\n static Mn() {\n // Sync engine assigns target IDs for limbo document detection.\n return new lo(-1);\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */ class fo {\n constructor(t, e) {\n this.referenceDelegate = t, this.serializer = e;\n }\n // PORTING NOTE: We don't cache global metadata for the target cache, since\n // some of it (in particular `highestTargetId`) can be modified by secondary\n // tabs. We could perhaps be more granular (and e.g. still cache\n // `lastRemoteSnapshotVersion` in memory) but for simplicity we currently go\n // to IndexedDb whenever we need to read metadata. We can revisit if it turns\n // out to have a meaningful performance impact.\n allocateTargetId(t) {\n return this.$n(t).next((e => {\n const n = new lo(e.highestTargetId);\n return e.highestTargetId = n.next(), this.On(t, e).next((() => e.highestTargetId));\n }));\n }\n getLastRemoteSnapshotVersion(t) {\n return this.$n(t).next((t => rt.fromTimestamp(new it(t.lastRemoteSnapshotVersion.seconds, t.lastRemoteSnapshotVersion.nanoseconds))));\n }\n getHighestSequenceNumber(t) {\n return this.$n(t).next((t => t.highestListenSequenceNumber));\n }\n setTargetsMetadata(t, e, n) {\n return this.$n(t).next((s => (s.highestListenSequenceNumber = e, n && (s.lastRemoteSnapshotVersion = n.toTimestamp()), \n e > s.highestListenSequenceNumber && (s.highestListenSequenceNumber = e), this.On(t, s))));\n }\n addTargetData(t, e) {\n return this.Fn(t, e).next((() => this.$n(t).next((n => (n.targetCount += 1, this.Bn(e, n), \n this.On(t, n))))));\n }\n updateTargetData(t, e) {\n return this.Fn(t, e);\n }\n removeTargetData(t, e) {\n return this.removeMatchingKeysForTargetId(t, e.targetId).next((() => wo(t).delete(e.targetId))).next((() => this.$n(t))).next((e => (F(e.targetCount > 0), \n e.targetCount -= 1, this.On(t, e))));\n }\n /**\n * Drops any targets with sequence number less than or equal to the upper bound, excepting those\n * present in `activeTargetIds`. Document associations for the removed targets are also removed.\n * Returns the number of targets removed.\n */ removeTargets(t, e, n) {\n let s = 0;\n const i = [];\n return wo(t).X(((r, o) => {\n const u = mr(o);\n u.sequenceNumber <= e && null === n.get(u.targetId) && (s++, i.push(this.removeTargetData(t, u)));\n })).next((() => Rt.waitFor(i))).next((() => s));\n }\n /**\n * Call provided function with each `TargetData` that we have cached.\n */ forEachTarget(t, e) {\n return wo(t).X(((t, n) => {\n const s = mr(n);\n e(s);\n }));\n }\n $n(t) {\n return _o(t).get(\"targetGlobalKey\").next((t => (F(null !== t), t)));\n }\n On(t, e) {\n return _o(t).put(\"targetGlobalKey\", e);\n }\n Fn(t, e) {\n return wo(t).put(gr(this.serializer, e));\n }\n /**\n * In-place updates the provided metadata to account for values in the given\n * TargetData. Saving is done separately. Returns true if there were any\n * changes to the metadata.\n */ Bn(t, e) {\n let n = !1;\n return t.targetId > e.highestTargetId && (e.highestTargetId = t.targetId, n = !0), \n t.sequenceNumber > e.highestListenSequenceNumber && (e.highestListenSequenceNumber = t.sequenceNumber, \n n = !0), n;\n }\n getTargetCount(t) {\n return this.$n(t).next((t => t.targetCount));\n }\n getTargetData(t, e) {\n // Iterating by the canonicalId may yield more than one result because\n // canonicalId values are not required to be unique per target. This query\n // depends on the queryTargets index to be efficient.\n const n = $n(e), s = IDBKeyRange.bound([ n, Number.NEGATIVE_INFINITY ], [ n, Number.POSITIVE_INFINITY ]);\n let i = null;\n return wo(t).X({\n range: s,\n index: \"queryTargetsIndex\"\n }, ((t, n, s) => {\n const r = mr(n);\n // After finding a potential match, check that the target is\n // actually equal to the requested target.\n On(e, r.target) && (i = r, s.done());\n })).next((() => i));\n }\n addMatchingKeys(t, e, n) {\n // PORTING NOTE: The reverse index (documentsTargets) is maintained by\n // IndexedDb.\n const s = [], i = mo(t);\n return e.forEach((e => {\n const r = qt(e.path);\n s.push(i.put({\n targetId: n,\n path: r\n })), s.push(this.referenceDelegate.addReference(t, n, e));\n })), Rt.waitFor(s);\n }\n removeMatchingKeys(t, e, n) {\n // PORTING NOTE: The reverse index (documentsTargets) is maintained by\n // IndexedDb.\n const s = mo(t);\n return Rt.forEach(e, (e => {\n const i = qt(e.path);\n return Rt.waitFor([ s.delete([ n, i ]), this.referenceDelegate.removeReference(t, n, e) ]);\n }));\n }\n removeMatchingKeysForTargetId(t, e) {\n const n = mo(t), s = IDBKeyRange.bound([ e ], [ e + 1 ], \n /*lowerOpen=*/ !1, \n /*upperOpen=*/ !0);\n return n.delete(s);\n }\n getMatchingKeysForTargetId(t, e) {\n const n = IDBKeyRange.bound([ e ], [ e + 1 ], \n /*lowerOpen=*/ !1, \n /*upperOpen=*/ !0), s = mo(t);\n let i = gs();\n return s.X({\n range: n,\n Y: !0\n }, ((t, e, n) => {\n const s = Gt(t[1]), r = new ht(s);\n i = i.add(r);\n })).next((() => i));\n }\n containsKey(t, e) {\n const n = qt(e.path), s = IDBKeyRange.bound([ n ], [ st(n) ], \n /*lowerOpen=*/ !1, \n /*upperOpen=*/ !0);\n let i = 0;\n return mo(t).X({\n index: \"documentTargetsIndex\",\n Y: !0,\n range: s\n }, (([t, e], n, s) => {\n // Having a sentinel row for a document does not count as containing that document;\n // For the target cache, containing the document means the document is part of some\n // target.\n 0 !== t && (i++, s.done());\n })).next((() => i > 0));\n }\n /**\n * Looks up a TargetData entry by target ID.\n *\n * @param targetId - The target ID of the TargetData entry to look up.\n * @returns The cached TargetData entry, or null if the cache has no entry for\n * the target.\n */\n // PORTING NOTE: Multi-tab only.\n le(t, e) {\n return wo(t).get(e).next((t => t ? mr(t) : null));\n }\n}\n\n/**\n * Helper to get a typed SimpleDbStore for the queries object store.\n */ function wo(t) {\n return _e(t, \"targets\");\n}\n\n/**\n * Helper to get a typed SimpleDbStore for the target globals object store.\n */ function _o(t) {\n return _e(t, \"targetGlobal\");\n}\n\n/**\n * Helper to get a typed SimpleDbStore for the document target object store.\n */ function mo(t) {\n return _e(t, \"targetDocuments\");\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */ function go([t, e], [n, s]) {\n const i = et(t, n);\n return 0 === i ? et(e, s) : i;\n}\n\n/**\n * Used to calculate the nth sequence number. Keeps a rolling buffer of the\n * lowest n values passed to `addElement`, and finally reports the largest of\n * them in `maxValue`.\n */ class yo {\n constructor(t) {\n this.Ln = t, this.buffer = new Ee(go), this.qn = 0;\n }\n Un() {\n return ++this.qn;\n }\n Kn(t) {\n const e = [ t, this.Un() ];\n if (this.buffer.size < this.Ln) this.buffer = this.buffer.add(e); else {\n const t = this.buffer.last();\n go(e, t) < 0 && (this.buffer = this.buffer.delete(t).add(e));\n }\n }\n get maxValue() {\n // Guaranteed to be non-empty. If we decide we are not collecting any\n // sequence numbers, nthSequenceNumber below short-circuits. If we have\n // decided that we are collecting n sequence numbers, it's because n is some\n // percentage of the existing sequence numbers. That means we should never\n // be in a situation where we are collecting sequence numbers but don't\n // actually have any.\n return this.buffer.last()[0];\n }\n}\n\n/**\n * This class is responsible for the scheduling of LRU garbage collection. It handles checking\n * whether or not GC is enabled, as well as which delay to use before the next run.\n */ class po {\n constructor(t, e, n) {\n this.garbageCollector = t, this.asyncQueue = e, this.localStore = n, this.Gn = null;\n }\n start() {\n -1 !== this.garbageCollector.params.cacheSizeCollectionThreshold && this.Qn(6e4);\n }\n stop() {\n this.Gn && (this.Gn.cancel(), this.Gn = null);\n }\n get started() {\n return null !== this.Gn;\n }\n Qn(t) {\n N(\"LruGarbageCollector\", `Garbage collection scheduled in ${t}ms`), this.Gn = this.asyncQueue.enqueueAfterDelay(\"lru_garbage_collection\" /* TimerId.LruGarbageCollection */ , t, (async () => {\n this.Gn = null;\n try {\n await this.localStore.collectGarbage(this.garbageCollector);\n } catch (t) {\n Dt(t) ? N(\"LruGarbageCollector\", \"Ignoring IndexedDB error during garbage collection: \", t) : await vt(t);\n }\n await this.Qn(3e5);\n }));\n }\n}\n\n/**\n * Implements the steps for LRU garbage collection.\n */ class Io {\n constructor(t, e) {\n this.jn = t, this.params = e;\n }\n calculateTargetCount(t, e) {\n return this.jn.zn(t).next((t => Math.floor(e / 100 * t)));\n }\n nthSequenceNumber(t, e) {\n if (0 === e) return Rt.resolve(Ot.ct);\n const n = new yo(e);\n return this.jn.forEachTarget(t, (t => n.Kn(t.sequenceNumber))).next((() => this.jn.Wn(t, (t => n.Kn(t))))).next((() => n.maxValue));\n }\n removeTargets(t, e, n) {\n return this.jn.removeTargets(t, e, n);\n }\n removeOrphanedDocuments(t, e) {\n return this.jn.removeOrphanedDocuments(t, e);\n }\n collect(t, e) {\n return -1 === this.params.cacheSizeCollectionThreshold ? (N(\"LruGarbageCollector\", \"Garbage collection skipped; disabled\"), \n Rt.resolve(no)) : this.getCacheSize(t).next((n => n < this.params.cacheSizeCollectionThreshold ? (N(\"LruGarbageCollector\", `Garbage collection skipped; Cache size ${n} is lower than threshold ${this.params.cacheSizeCollectionThreshold}`), \n no) : this.Hn(t, e)));\n }\n getCacheSize(t) {\n return this.jn.getCacheSize(t);\n }\n Hn(t, e) {\n let n, s, i, r, o, c, a;\n const h = Date.now();\n return this.calculateTargetCount(t, this.params.percentileToCollect).next((e => (\n // Cap at the configured max\n e > this.params.maximumSequenceNumbersToCollect ? (N(\"LruGarbageCollector\", `Capping sequence numbers to collect down to the maximum of ${this.params.maximumSequenceNumbersToCollect} from ${e}`), \n s = this.params.maximumSequenceNumbersToCollect) : s = e, r = Date.now(), this.nthSequenceNumber(t, s)))).next((s => (n = s, \n o = Date.now(), this.removeTargets(t, n, e)))).next((e => (i = e, c = Date.now(), \n this.removeOrphanedDocuments(t, n)))).next((t => {\n if (a = Date.now(), C() <= LogLevel.DEBUG) {\n N(\"LruGarbageCollector\", `LRU Garbage Collection\\n\\tCounted targets in ${r - h}ms\\n\\tDetermined least recently used ${s} in ` + (o - r) + \"ms\\n\" + `\\tRemoved ${i} targets in ` + (c - o) + \"ms\\n\" + `\\tRemoved ${t} documents in ` + (a - c) + \"ms\\n\" + `Total Duration: ${a - h}ms`);\n }\n return Rt.resolve({\n didRun: !0,\n sequenceNumbersCollected: s,\n targetsRemoved: i,\n documentsRemoved: t\n });\n }));\n }\n}\n\nfunction To(t, e) {\n return new Io(t, e);\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/** Provides LRU functionality for IndexedDB persistence. */ class Eo {\n constructor(t, e) {\n this.db = t, this.garbageCollector = To(this, e);\n }\n zn(t) {\n const e = this.Jn(t);\n return this.db.getTargetCache().getTargetCount(t).next((t => e.next((e => t + e))));\n }\n Jn(t) {\n let e = 0;\n return this.Wn(t, (t => {\n e++;\n })).next((() => e));\n }\n forEachTarget(t, e) {\n return this.db.getTargetCache().forEachTarget(t, e);\n }\n Wn(t, e) {\n return this.Yn(t, ((t, n) => e(n)));\n }\n addReference(t, e, n) {\n return Ao(t, n);\n }\n removeReference(t, e, n) {\n return Ao(t, n);\n }\n removeTargets(t, e, n) {\n return this.db.getTargetCache().removeTargets(t, e, n);\n }\n markPotentiallyOrphaned(t, e) {\n return Ao(t, e);\n }\n /**\n * Returns true if anything would prevent this document from being garbage\n * collected, given that the document in question is not present in any\n * targets and has a sequence number less than or equal to the upper bound for\n * the collection run.\n */ Xn(t, e) {\n return function(t, e) {\n let n = !1;\n return ho(t).Z((s => uo(t, s, e).next((t => (t && (n = !0), Rt.resolve(!t)))))).next((() => n));\n }(t, e);\n }\n removeOrphanedDocuments(t, e) {\n const n = this.db.getRemoteDocumentCache().newChangeBuffer(), s = [];\n let i = 0;\n return this.Yn(t, ((r, o) => {\n if (o <= e) {\n const e = this.Xn(t, r).next((e => {\n if (!e) \n // Our size accounting requires us to read all documents before\n // removing them.\n return i++, n.getEntry(t, r).next((() => (n.removeEntry(r, rt.min()), mo(t).delete([ 0, qt(r.path) ]))));\n }));\n s.push(e);\n }\n })).next((() => Rt.waitFor(s))).next((() => n.apply(t))).next((() => i));\n }\n removeTarget(t, e) {\n const n = e.withSequenceNumber(t.currentSequenceNumber);\n return this.db.getTargetCache().updateTargetData(t, n);\n }\n updateLimboDocument(t, e) {\n return Ao(t, e);\n }\n /**\n * Call provided function for each document in the cache that is 'orphaned'. Orphaned\n * means not a part of any target, so the only entry in the target-document index for\n * that document will be the sentinel row (targetId 0), which will also have the sequence\n * number for the last time the document was accessed.\n */ Yn(t, e) {\n const n = mo(t);\n let s, i = Ot.ct;\n return n.X({\n index: \"documentTargetsIndex\"\n }, (([t, n], {path: r, sequenceNumber: o}) => {\n 0 === t ? (\n // if nextToReport is valid, report it, this is a new key so the\n // last one must not be a member of any targets.\n i !== Ot.ct && e(new ht(Gt(s)), i), \n // set nextToReport to be this sequence number. It's the next one we\n // might report, if we don't find any targets for this document.\n // Note that the sequence number must be defined when the targetId\n // is 0.\n i = o, s = r) : \n // set nextToReport to be invalid, we know we don't need to report\n // this one since we found a target for it.\n i = Ot.ct;\n })).next((() => {\n // Since we report sequence numbers after getting to the next key, we\n // need to check if the last key we iterated over was an orphaned\n // document and report it.\n i !== Ot.ct && e(new ht(Gt(s)), i);\n }));\n }\n getCacheSize(t) {\n return this.db.getRemoteDocumentCache().getSize(t);\n }\n}\n\nfunction Ao(t, e) {\n return mo(t).put(\n /**\n * @returns A value suitable for writing a sentinel row in the target-document\n * store.\n */\n function(t, e) {\n return {\n targetId: 0,\n path: qt(t.path),\n sequenceNumber: e\n };\n }(e, t.currentSequenceNumber));\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * An in-memory buffer of entries to be written to a RemoteDocumentCache.\n * It can be used to batch up a set of changes to be written to the cache, but\n * additionally supports reading entries back with the `getEntry()` method,\n * falling back to the underlying RemoteDocumentCache if no entry is\n * buffered.\n *\n * Entries added to the cache *must* be read first. This is to facilitate\n * calculating the size delta of the pending changes.\n *\n * PORTING NOTE: This class was implemented then removed from other platforms.\n * If byte-counting ends up being needed on the other platforms, consider\n * porting this class as part of that implementation work.\n */ class vo {\n constructor() {\n // A mapping of document key to the new cache entry that should be written.\n this.changes = new os((t => t.toString()), ((t, e) => t.isEqual(e))), this.changesApplied = !1;\n }\n /**\n * Buffers a `RemoteDocumentCache.addEntry()` call.\n *\n * You can only modify documents that have already been retrieved via\n * `getEntry()/getEntries()` (enforced via IndexedDbs `apply()`).\n */ addEntry(t) {\n this.assertNotApplied(), this.changes.set(t.key, t);\n }\n /**\n * Buffers a `RemoteDocumentCache.removeEntry()` call.\n *\n * You can only remove documents that have already been retrieved via\n * `getEntry()/getEntries()` (enforced via IndexedDbs `apply()`).\n */ removeEntry(t, e) {\n this.assertNotApplied(), this.changes.set(t, an.newInvalidDocument(t).setReadTime(e));\n }\n /**\n * Looks up an entry in the cache. The buffered changes will first be checked,\n * and if no buffered change applies, this will forward to\n * `RemoteDocumentCache.getEntry()`.\n *\n * @param transaction - The transaction in which to perform any persistence\n * operations.\n * @param documentKey - The key of the entry to look up.\n * @returns The cached document or an invalid document if we have nothing\n * cached.\n */ getEntry(t, e) {\n this.assertNotApplied();\n const n = this.changes.get(e);\n return void 0 !== n ? Rt.resolve(n) : this.getFromCache(t, e);\n }\n /**\n * Looks up several entries in the cache, forwarding to\n * `RemoteDocumentCache.getEntry()`.\n *\n * @param transaction - The transaction in which to perform any persistence\n * operations.\n * @param documentKeys - The keys of the entries to look up.\n * @returns A map of cached documents, indexed by key. If an entry cannot be\n * found, the corresponding key will be mapped to an invalid document.\n */ getEntries(t, e) {\n return this.getAllFromCache(t, e);\n }\n /**\n * Applies buffered changes to the underlying RemoteDocumentCache, using\n * the provided transaction.\n */ apply(t) {\n return this.assertNotApplied(), this.changesApplied = !0, this.applyChanges(t);\n }\n /** Helper to assert this.changes is not null */ assertNotApplied() {}\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * The RemoteDocumentCache for IndexedDb. To construct, invoke\n * `newIndexedDbRemoteDocumentCache()`.\n */ class Ro {\n constructor(t) {\n this.serializer = t;\n }\n setIndexManager(t) {\n this.indexManager = t;\n }\n /**\n * Adds the supplied entries to the cache.\n *\n * All calls of `addEntry` are required to go through the RemoteDocumentChangeBuffer\n * returned by `newChangeBuffer()` to ensure proper accounting of metadata.\n */ addEntry(t, e, n) {\n return So(t).put(n);\n }\n /**\n * Removes a document from the cache.\n *\n * All calls of `removeEntry` are required to go through the RemoteDocumentChangeBuffer\n * returned by `newChangeBuffer()` to ensure proper accounting of metadata.\n */ removeEntry(t, e, n) {\n return So(t).delete(\n /**\n * Returns a key that can be used for document lookups via the primary key of\n * the DbRemoteDocument object store.\n */\n function(t, e) {\n const n = t.path.toArray();\n return [ \n /* prefix path */ n.slice(0, n.length - 2), \n /* collection id */ n[n.length - 2], fr(e), \n /* document id */ n[n.length - 1] ];\n }\n /**\n * Returns a key that can be used for document lookups on the\n * `DbRemoteDocumentDocumentCollectionGroupIndex` index.\n */ (e, n));\n }\n /**\n * Updates the current cache size.\n *\n * Callers to `addEntry()` and `removeEntry()` *must* call this afterwards to update the\n * cache's metadata.\n */ updateMetadata(t, e) {\n return this.getMetadata(t).next((n => (n.byteSize += e, this.Zn(t, n))));\n }\n getEntry(t, e) {\n let n = an.newInvalidDocument(e);\n return So(t).X({\n index: \"documentKeyIndex\",\n range: IDBKeyRange.only(Do(e))\n }, ((t, s) => {\n n = this.ts(e, s);\n })).next((() => n));\n }\n /**\n * Looks up an entry in the cache.\n *\n * @param documentKey - The key of the entry to look up.\n * @returns The cached document entry and its size.\n */ es(t, e) {\n let n = {\n size: 0,\n document: an.newInvalidDocument(e)\n };\n return So(t).X({\n index: \"documentKeyIndex\",\n range: IDBKeyRange.only(Do(e))\n }, ((t, s) => {\n n = {\n document: this.ts(e, s),\n size: ro(s)\n };\n })).next((() => n));\n }\n getEntries(t, e) {\n let n = cs();\n return this.ns(t, e, ((t, e) => {\n const s = this.ts(t, e);\n n = n.insert(t, s);\n })).next((() => n));\n }\n /**\n * Looks up several entries in the cache.\n *\n * @param documentKeys - The set of keys entries to look up.\n * @returns A map of documents indexed by key and a map of sizes indexed by\n * key (zero if the document does not exist).\n */ ss(t, e) {\n let n = cs(), s = new pe(ht.comparator);\n return this.ns(t, e, ((t, e) => {\n const i = this.ts(t, e);\n n = n.insert(t, i), s = s.insert(t, ro(e));\n })).next((() => ({\n documents: n,\n rs: s\n })));\n }\n ns(t, e, n) {\n if (e.isEmpty()) return Rt.resolve();\n let s = new Ee(xo);\n e.forEach((t => s = s.add(t)));\n const i = IDBKeyRange.bound(Do(s.first()), Do(s.last())), r = s.getIterator();\n let o = r.getNext();\n return So(t).X({\n index: \"documentKeyIndex\",\n range: i\n }, ((t, e, s) => {\n const i = ht.fromSegments([ ...e.prefixPath, e.collectionGroup, e.documentId ]);\n // Go through keys not found in cache.\n for (;o && xo(o, i) < 0; ) n(o, null), o = r.getNext();\n o && o.isEqual(i) && (\n // Key found in cache.\n n(o, e), o = r.hasNext() ? r.getNext() : null), \n // Skip to the next key (if there is one).\n o ? s.G(Do(o)) : s.done();\n })).next((() => {\n // The rest of the keys are not in the cache. One case where `iterate`\n // above won't go through them is when the cache is empty.\n for (;o; ) n(o, null), o = r.hasNext() ? r.getNext() : null;\n }));\n }\n getDocumentsMatchingQuery(t, e, n, s) {\n const i = e.path, r = [ i.popLast().toArray(), i.lastSegment(), fr(n.readTime), n.documentKey.path.isEmpty() ? \"\" : n.documentKey.path.lastSegment() ], o = [ i.popLast().toArray(), i.lastSegment(), [ Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER ], \"\" ];\n return So(t).j(IDBKeyRange.bound(r, o, !0)).next((t => {\n let n = cs();\n for (const i of t) {\n const t = this.ts(ht.fromSegments(i.prefixPath.concat(i.collectionGroup, i.documentId)), i);\n t.isFoundDocument() && (ns(e, t) || s.has(t.key)) && (\n // Either the document matches the given query, or it is mutated.\n n = n.insert(t.key, t));\n }\n return n;\n }));\n }\n getAllFromCollectionGroup(t, e, n, s) {\n let i = cs();\n const r = Co(e, n), o = Co(e, It.max());\n return So(t).X({\n index: \"collectionGroupIndex\",\n range: IDBKeyRange.bound(r, o, !0)\n }, ((t, e, n) => {\n const r = this.ts(ht.fromSegments(e.prefixPath.concat(e.collectionGroup, e.documentId)), e);\n i = i.insert(r.key, r), i.size === s && n.done();\n })).next((() => i));\n }\n newChangeBuffer(t) {\n return new bo(this, !!t && t.trackRemovals);\n }\n getSize(t) {\n return this.getMetadata(t).next((t => t.byteSize));\n }\n getMetadata(t) {\n return Vo(t).get(\"remoteDocumentGlobalKey\").next((t => (F(!!t), t)));\n }\n Zn(t, e) {\n return Vo(t).put(\"remoteDocumentGlobalKey\", e);\n }\n /**\n * Decodes `dbRemoteDoc` and returns the document (or an invalid document if\n * the document corresponds to the format used for sentinel deletes).\n */ ts(t, e) {\n if (e) {\n const t = hr(this.serializer, e);\n // Whether the document is a sentinel removal and should only be used in the\n // `getNewDocumentChanges()`\n if (!(t.isNoDocument() && t.version.isEqual(rt.min()))) return t;\n }\n return an.newInvalidDocument(t);\n }\n}\n\n/** Creates a new IndexedDbRemoteDocumentCache. */ function Po(t) {\n return new Ro(t);\n}\n\n/**\n * Handles the details of adding and updating documents in the IndexedDbRemoteDocumentCache.\n *\n * Unlike the MemoryRemoteDocumentChangeBuffer, the IndexedDb implementation computes the size\n * delta for all submitted changes. This avoids having to re-read all documents from IndexedDb\n * when we apply the changes.\n */ class bo extends vo {\n /**\n * @param documentCache - The IndexedDbRemoteDocumentCache to apply the changes to.\n * @param trackRemovals - Whether to create sentinel deletes that can be tracked by\n * `getNewDocumentChanges()`.\n */\n constructor(t, e) {\n super(), this.os = t, this.trackRemovals = e, \n // A map of document sizes and read times prior to applying the changes in\n // this buffer.\n this.us = new os((t => t.toString()), ((t, e) => t.isEqual(e)));\n }\n applyChanges(t) {\n const e = [];\n let n = 0, s = new Ee(((t, e) => et(t.canonicalString(), e.canonicalString())));\n return this.changes.forEach(((i, r) => {\n const o = this.us.get(i);\n if (e.push(this.os.removeEntry(t, i, o.readTime)), r.isValidDocument()) {\n const u = lr(this.os.serializer, r);\n s = s.add(i.path.popLast());\n const c = ro(u);\n n += c - o.size, e.push(this.os.addEntry(t, i, u));\n } else if (n -= o.size, this.trackRemovals) {\n // In order to track removals, we store a \"sentinel delete\" in the\n // RemoteDocumentCache. This entry is represented by a NoDocument\n // with a version of 0 and ignored by `maybeDecodeDocument()` but\n // preserved in `getNewDocumentChanges()`.\n const n = lr(this.os.serializer, r.convertToNoDocument(rt.min()));\n e.push(this.os.addEntry(t, i, n));\n }\n })), s.forEach((n => {\n e.push(this.os.indexManager.addToCollectionParentIndex(t, n));\n })), e.push(this.os.updateMetadata(t, n)), Rt.waitFor(e);\n }\n getFromCache(t, e) {\n // Record the size of everything we load from the cache so we can compute a delta later.\n return this.os.es(t, e).next((t => (this.us.set(e, {\n size: t.size,\n readTime: t.document.readTime\n }), t.document)));\n }\n getAllFromCache(t, e) {\n // Record the size of everything we load from the cache so we can compute\n // a delta later.\n return this.os.ss(t, e).next((({documents: t, rs: e}) => (\n // Note: `getAllFromCache` returns two maps instead of a single map from\n // keys to `DocumentSizeEntry`s. This is to allow returning the\n // `MutableDocumentMap` directly, without a conversion.\n e.forEach(((e, n) => {\n this.us.set(e, {\n size: n,\n readTime: t.get(e).readTime\n });\n })), t)));\n }\n}\n\nfunction Vo(t) {\n return _e(t, \"remoteDocumentGlobal\");\n}\n\n/**\n * Helper to get a typed SimpleDbStore for the remoteDocuments object store.\n */ function So(t) {\n return _e(t, \"remoteDocumentsV14\");\n}\n\n/**\n * Returns a key that can be used for document lookups on the\n * `DbRemoteDocumentDocumentKeyIndex` index.\n */ function Do(t) {\n const e = t.path.toArray();\n return [ \n /* prefix path */ e.slice(0, e.length - 2), \n /* collection id */ e[e.length - 2], \n /* document id */ e[e.length - 1] ];\n}\n\nfunction Co(t, e) {\n const n = e.documentKey.path.toArray();\n return [ \n /* collection id */ t, fr(e.readTime), \n /* prefix path */ n.slice(0, n.length - 2), \n /* document id */ n.length > 0 ? n[n.length - 1] : \"\" ];\n}\n\n/**\n * Comparator that compares document keys according to the primary key sorting\n * used by the `DbRemoteDocumentDocument` store (by prefix path, collection id\n * and then document ID).\n *\n * Visible for testing.\n */ function xo(t, e) {\n const n = t.path.toArray(), s = e.path.toArray();\n // The ordering is based on https://chromium.googlesource.com/chromium/blink/+/fe5c21fef94dae71c1c3344775b8d8a7f7e6d9ec/Source/modules/indexeddb/IDBKey.cpp#74\n let i = 0;\n for (let t = 0; t < n.length - 2 && t < s.length - 2; ++t) if (i = et(n[t], s[t]), \n i) return i;\n return i = et(n.length, s.length), i || (i = et(n[n.length - 2], s[s.length - 2]), \n i || et(n[n.length - 1], s[s.length - 1]));\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Schema Version for the Web client:\n * 1. Initial version including Mutation Queue, Query Cache, and Remote\n * Document Cache\n * 2. Used to ensure a targetGlobal object exists and add targetCount to it. No\n * longer required because migration 3 unconditionally clears it.\n * 3. Dropped and re-created Query Cache to deal with cache corruption related\n * to limbo resolution. Addresses\n * https://github.com/firebase/firebase-ios-sdk/issues/1548\n * 4. Multi-Tab Support.\n * 5. Removal of held write acks.\n * 6. Create document global for tracking document cache size.\n * 7. Ensure every cached document has a sentinel row with a sequence number.\n * 8. Add collection-parent index for Collection Group queries.\n * 9. Change RemoteDocumentChanges store to be keyed by readTime rather than\n * an auto-incrementing ID. This is required for Index-Free queries.\n * 10. Rewrite the canonical IDs to the explicit Protobuf-based format.\n * 11. Add bundles and named_queries for bundle support.\n * 12. Add document overlays.\n * 13. Rewrite the keys of the remote document cache to allow for efficient\n * document lookup via `getAll()`.\n * 14. Add overlays.\n * 15. Add indexing support.\n */\n/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Represents a local view (overlay) of a document, and the fields that are\n * locally mutated.\n */\nclass No {\n constructor(t, \n /**\n * The fields that are locally mutated by patch mutations.\n *\n * If the overlayed\tdocument is from set or delete mutations, this is `null`.\n * If there is no overlay (mutation) for the document, this is an empty `FieldMask`.\n */\n e) {\n this.overlayedDocument = t, this.mutatedFields = e;\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A readonly view of the local state of all documents we're tracking (i.e. we\n * have a cached version in remoteDocumentCache or local mutations for the\n * document). The view is computed by applying the mutations in the\n * MutationQueue to the RemoteDocumentCache.\n */ class ko {\n constructor(t, e, n, s) {\n this.remoteDocumentCache = t, this.mutationQueue = e, this.documentOverlayCache = n, \n this.indexManager = s;\n }\n /**\n * Get the local view of the document identified by `key`.\n *\n * @returns Local view of the document or null if we don't have any cached\n * state for it.\n */ getDocument(t, e) {\n let n = null;\n return this.documentOverlayCache.getOverlay(t, e).next((s => (n = s, this.remoteDocumentCache.getEntry(t, e)))).next((t => (null !== n && Ks(n.mutation, t, Re.empty(), it.now()), \n t)));\n }\n /**\n * Gets the local view of the documents identified by `keys`.\n *\n * If we don't have cached state for a document in `keys`, a NoDocument will\n * be stored for that key in the resulting set.\n */ getDocuments(t, e) {\n return this.remoteDocumentCache.getEntries(t, e).next((e => this.getLocalViewOfDocuments(t, e, gs()).next((() => e))));\n }\n /**\n * Similar to `getDocuments`, but creates the local view from the given\n * `baseDocs` without retrieving documents from the local store.\n *\n * @param transaction - The transaction this operation is scoped to.\n * @param docs - The documents to apply local mutations to get the local views.\n * @param existenceStateChanged - The set of document keys whose existence state\n * is changed. This is useful to determine if some documents overlay needs\n * to be recalculated.\n */ getLocalViewOfDocuments(t, e, n = gs()) {\n const s = fs();\n return this.populateOverlays(t, s, e).next((() => this.computeViews(t, e, s, n).next((t => {\n let e = hs();\n return t.forEach(((t, n) => {\n e = e.insert(t, n.overlayedDocument);\n })), e;\n }))));\n }\n /**\n * Gets the overlayed documents for the given document map, which will include\n * the local view of those documents and a `FieldMask` indicating which fields\n * are mutated locally, `null` if overlay is a Set or Delete mutation.\n */ getOverlayedDocuments(t, e) {\n const n = fs();\n return this.populateOverlays(t, n, e).next((() => this.computeViews(t, e, n, gs())));\n }\n /**\n * Fetches the overlays for {@code docs} and adds them to provided overlay map\n * if the map does not already contain an entry for the given document key.\n */ populateOverlays(t, e, n) {\n const s = [];\n return n.forEach((t => {\n e.has(t) || s.push(t);\n })), this.documentOverlayCache.getOverlays(t, s).next((t => {\n t.forEach(((t, n) => {\n e.set(t, n);\n }));\n }));\n }\n /**\n * Computes the local view for the given documents.\n *\n * @param docs - The documents to compute views for. It also has the base\n * version of the documents.\n * @param overlays - The overlays that need to be applied to the given base\n * version of the documents.\n * @param existenceStateChanged - A set of documents whose existence states\n * might have changed. This is used to determine if we need to re-calculate\n * overlays from mutation queues.\n * @return A map represents the local documents view.\n */ computeViews(t, e, n, s) {\n let i = cs();\n const r = ws(), o = ws();\n return e.forEach(((t, e) => {\n const o = n.get(e.key);\n // Recalculate an overlay if the document's existence state changed due to\n // a remote event *and* the overlay is a PatchMutation. This is because\n // document existence state can change if some patch mutation's\n // preconditions are met.\n // NOTE: we recalculate when `overlay` is undefined as well, because there\n // might be a patch mutation whose precondition does not match before the\n // change (hence overlay is undefined), but would now match.\n s.has(e.key) && (void 0 === o || o.mutation instanceof zs) ? i = i.insert(e.key, e) : void 0 !== o ? (r.set(e.key, o.mutation.getFieldMask()), \n Ks(o.mutation, e, o.mutation.getFieldMask(), it.now())) : \n // no overlay exists\n // Using EMPTY to indicate there is no overlay for the document.\n r.set(e.key, Re.empty());\n })), this.recalculateAndSaveOverlays(t, i).next((t => (t.forEach(((t, e) => r.set(t, e))), \n e.forEach(((t, e) => {\n var n;\n return o.set(t, new No(e, null !== (n = r.get(t)) && void 0 !== n ? n : null));\n })), o)));\n }\n recalculateAndSaveOverlays(t, e) {\n const n = ws();\n // A reverse lookup map from batch id to the documents within that batch.\n let s = new pe(((t, e) => t - e)), i = gs();\n return this.mutationQueue.getAllMutationBatchesAffectingDocumentKeys(t, e).next((t => {\n for (const i of t) i.keys().forEach((t => {\n const r = e.get(t);\n if (null === r) return;\n let o = n.get(t) || Re.empty();\n o = i.applyToLocalView(r, o), n.set(t, o);\n const u = (s.get(i.batchId) || gs()).add(t);\n s = s.insert(i.batchId, u);\n }));\n })).next((() => {\n const r = [], o = s.getReverseIterator();\n // Iterate in descending order of batch IDs, and skip documents that are\n // already saved.\n for (;o.hasNext(); ) {\n const s = o.getNext(), u = s.key, c = s.value, a = ds();\n c.forEach((t => {\n if (!i.has(t)) {\n const s = qs(e.get(t), n.get(t));\n null !== s && a.set(t, s), i = i.add(t);\n }\n })), r.push(this.documentOverlayCache.saveOverlays(t, u, a));\n }\n return Rt.waitFor(r);\n })).next((() => n));\n }\n /**\n * Recalculates overlays by reading the documents from remote document cache\n * first, and saves them after they are calculated.\n */ recalculateAndSaveOverlaysForDocumentKeys(t, e) {\n return this.remoteDocumentCache.getEntries(t, e).next((e => this.recalculateAndSaveOverlays(t, e)));\n }\n /**\n * Performs a query against the local view of all documents.\n *\n * @param transaction - The persistence transaction.\n * @param query - The query to match documents against.\n * @param offset - Read time and key to start scanning by (exclusive).\n */ getDocumentsMatchingQuery(t, e, n) {\n /**\n * Returns whether the query matches a single document by path (rather than a\n * collection).\n */\n return function(t) {\n return ht.isDocumentKey(t.path) && null === t.collectionGroup && 0 === t.filters.length;\n }(e) ? this.getDocumentsMatchingDocumentQuery(t, e.path) : Wn(e) ? this.getDocumentsMatchingCollectionGroupQuery(t, e, n) : this.getDocumentsMatchingCollectionQuery(t, e, n);\n }\n /**\n * Given a collection group, returns the next documents that follow the provided offset, along\n * with an updated batch ID.\n *\n *

    The documents returned by this method are ordered by remote version from the provided\n * offset. If there are no more remote documents after the provided offset, documents with\n * mutations in order of batch id from the offset are returned. Since all documents in a batch are\n * returned together, the total number of documents returned can exceed {@code count}.\n *\n * @param transaction\n * @param collectionGroup The collection group for the documents.\n * @param offset The offset to index into.\n * @param count The number of documents to return\n * @return A LocalWriteResult with the documents that follow the provided offset and the last processed batch id.\n */ getNextDocuments(t, e, n, s) {\n return this.remoteDocumentCache.getAllFromCollectionGroup(t, e, n, s).next((i => {\n const r = s - i.size > 0 ? this.documentOverlayCache.getOverlaysForCollectionGroup(t, e, n.largestBatchId, s - i.size) : Rt.resolve(fs());\n // The callsite will use the largest batch ID together with the latest read time to create\n // a new index offset. Since we only process batch IDs if all remote documents have been read,\n // no overlay will increase the overall read time. This is why we only need to special case\n // the batch id.\n let o = -1, u = i;\n return r.next((e => Rt.forEach(e, ((e, n) => (o < n.largestBatchId && (o = n.largestBatchId), \n i.get(e) ? Rt.resolve() : this.remoteDocumentCache.getEntry(t, e).next((t => {\n u = u.insert(e, t);\n }))))).next((() => this.populateOverlays(t, e, i))).next((() => this.computeViews(t, u, e, gs()))).next((t => ({\n batchId: o,\n changes: ls(t)\n })))));\n }));\n }\n getDocumentsMatchingDocumentQuery(t, e) {\n // Just do a simple document lookup.\n return this.getDocument(t, new ht(e)).next((t => {\n let e = hs();\n return t.isFoundDocument() && (e = e.insert(t.key, t)), e;\n }));\n }\n getDocumentsMatchingCollectionGroupQuery(t, e, n) {\n const s = e.collectionGroup;\n let i = hs();\n return this.indexManager.getCollectionParents(t, s).next((r => Rt.forEach(r, (r => {\n const o = function(t, e) {\n return new Un(e, \n /*collectionGroup=*/ null, t.explicitOrderBy.slice(), t.filters.slice(), t.limit, t.limitType, t.startAt, t.endAt);\n }(e, r.child(s));\n return this.getDocumentsMatchingCollectionQuery(t, o, n).next((t => {\n t.forEach(((t, e) => {\n i = i.insert(t, e);\n }));\n }));\n })).next((() => i))));\n }\n getDocumentsMatchingCollectionQuery(t, e, n) {\n // Query the remote documents and overlay mutations.\n let s;\n return this.documentOverlayCache.getOverlaysForCollection(t, e.path, n.largestBatchId).next((i => (s = i, \n this.remoteDocumentCache.getDocumentsMatchingQuery(t, e, n, s)))).next((t => {\n // As documents might match the query because of their overlay we need to\n // include documents for all overlays in the initial document set.\n s.forEach(((e, n) => {\n const s = n.getKey();\n null === t.get(s) && (t = t.insert(s, an.newInvalidDocument(s)));\n }));\n // Apply the overlays and match against the query.\n let n = hs();\n return t.forEach(((t, i) => {\n const r = s.get(t);\n void 0 !== r && Ks(r.mutation, i, Re.empty(), it.now()), \n // Finally, insert the documents that still match the query\n ns(e, i) && (n = n.insert(t, i));\n })), n;\n }));\n }\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */ class Mo {\n constructor(t) {\n this.serializer = t, this.cs = new Map, this.hs = new Map;\n }\n getBundleMetadata(t, e) {\n return Rt.resolve(this.cs.get(e));\n }\n saveBundleMetadata(t, e) {\n /** Decodes a BundleMetadata proto into a BundleMetadata object. */\n var n;\n return this.cs.set(e.id, {\n id: (n = e).id,\n version: n.version,\n createTime: Ni(n.createTime)\n }), Rt.resolve();\n }\n getNamedQuery(t, e) {\n return Rt.resolve(this.hs.get(e));\n }\n saveNamedQuery(t, e) {\n return this.hs.set(e.name, function(t) {\n return {\n name: t.name,\n query: yr(t.bundledQuery),\n readTime: Ni(t.readTime)\n };\n }(e)), Rt.resolve();\n }\n}\n\n/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * An in-memory implementation of DocumentOverlayCache.\n */ class $o {\n constructor() {\n // A map sorted by DocumentKey, whose value is a pair of the largest batch id\n // for the overlay and the overlay itself.\n this.overlays = new pe(ht.comparator), this.ls = new Map;\n }\n getOverlay(t, e) {\n return Rt.resolve(this.overlays.get(e));\n }\n getOverlays(t, e) {\n const n = fs();\n return Rt.forEach(e, (e => this.getOverlay(t, e).next((t => {\n null !== t && n.set(e, t);\n })))).next((() => n));\n }\n saveOverlays(t, e, n) {\n return n.forEach(((n, s) => {\n this.we(t, e, s);\n })), Rt.resolve();\n }\n removeOverlaysForBatchId(t, e, n) {\n const s = this.ls.get(n);\n return void 0 !== s && (s.forEach((t => this.overlays = this.overlays.remove(t))), \n this.ls.delete(n)), Rt.resolve();\n }\n getOverlaysForCollection(t, e, n) {\n const s = fs(), i = e.length + 1, r = new ht(e.child(\"\")), o = this.overlays.getIteratorFrom(r);\n for (;o.hasNext(); ) {\n const t = o.getNext().value, r = t.getKey();\n if (!e.isPrefixOf(r.path)) break;\n // Documents from sub-collections\n r.path.length === i && (t.largestBatchId > n && s.set(t.getKey(), t));\n }\n return Rt.resolve(s);\n }\n getOverlaysForCollectionGroup(t, e, n, s) {\n let i = new pe(((t, e) => t - e));\n const r = this.overlays.getIterator();\n for (;r.hasNext(); ) {\n const t = r.getNext().value;\n if (t.getKey().getCollectionGroup() === e && t.largestBatchId > n) {\n let e = i.get(t.largestBatchId);\n null === e && (e = fs(), i = i.insert(t.largestBatchId, e)), e.set(t.getKey(), t);\n }\n }\n const o = fs(), u = i.getIterator();\n for (;u.hasNext(); ) {\n if (u.getNext().value.forEach(((t, e) => o.set(t, e))), o.size() >= s) break;\n }\n return Rt.resolve(o);\n }\n we(t, e, n) {\n // Remove the association of the overlay to its batch id.\n const s = this.overlays.get(n.key);\n if (null !== s) {\n const t = this.ls.get(s.largestBatchId).delete(n.key);\n this.ls.set(s.largestBatchId, t);\n }\n this.overlays = this.overlays.insert(n.key, new ei(e, n));\n // Create the association of this overlay to the given largestBatchId.\n let i = this.ls.get(e);\n void 0 === i && (i = gs(), this.ls.set(e, i)), this.ls.set(e, i.add(n.key));\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A collection of references to a document from some kind of numbered entity\n * (either a target ID or batch ID). As references are added to or removed from\n * the set corresponding events are emitted to a registered garbage collector.\n *\n * Each reference is represented by a DocumentReference object. Each of them\n * contains enough information to uniquely identify the reference. They are all\n * stored primarily in a set sorted by key. A document is considered garbage if\n * there's no references in that set (this can be efficiently checked thanks to\n * sorting by key).\n *\n * ReferenceSet also keeps a secondary set that contains references sorted by\n * IDs. This one is used to efficiently implement removal of all references by\n * some target ID.\n */ class Oo {\n constructor() {\n // A set of outstanding references to a document sorted by key.\n this.fs = new Ee(Fo.ds), \n // A set of outstanding references to a document sorted by target id.\n this.ws = new Ee(Fo._s);\n }\n /** Returns true if the reference set contains no references. */ isEmpty() {\n return this.fs.isEmpty();\n }\n /** Adds a reference to the given document key for the given ID. */ addReference(t, e) {\n const n = new Fo(t, e);\n this.fs = this.fs.add(n), this.ws = this.ws.add(n);\n }\n /** Add references to the given document keys for the given ID. */ gs(t, e) {\n t.forEach((t => this.addReference(t, e)));\n }\n /**\n * Removes a reference to the given document key for the given\n * ID.\n */ removeReference(t, e) {\n this.ys(new Fo(t, e));\n }\n ps(t, e) {\n t.forEach((t => this.removeReference(t, e)));\n }\n /**\n * Clears all references with a given ID. Calls removeRef() for each key\n * removed.\n */ Is(t) {\n const e = new ht(new ut([])), n = new Fo(e, t), s = new Fo(e, t + 1), i = [];\n return this.ws.forEachInRange([ n, s ], (t => {\n this.ys(t), i.push(t.key);\n })), i;\n }\n Ts() {\n this.fs.forEach((t => this.ys(t)));\n }\n ys(t) {\n this.fs = this.fs.delete(t), this.ws = this.ws.delete(t);\n }\n Es(t) {\n const e = new ht(new ut([])), n = new Fo(e, t), s = new Fo(e, t + 1);\n let i = gs();\n return this.ws.forEachInRange([ n, s ], (t => {\n i = i.add(t.key);\n })), i;\n }\n containsKey(t) {\n const e = new Fo(t, 0), n = this.fs.firstAfterOrEqual(e);\n return null !== n && t.isEqual(n.key);\n }\n}\n\nclass Fo {\n constructor(t, e) {\n this.key = t, this.As = e;\n }\n /** Compare by key then by ID */ static ds(t, e) {\n return ht.comparator(t.key, e.key) || et(t.As, e.As);\n }\n /** Compare by ID then by key */ static _s(t, e) {\n return et(t.As, e.As) || ht.comparator(t.key, e.key);\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */ class Bo {\n constructor(t, e) {\n this.indexManager = t, this.referenceDelegate = e, \n /**\n * The set of all mutations that have been sent but not yet been applied to\n * the backend.\n */\n this.mutationQueue = [], \n /** Next value to use when assigning sequential IDs to each mutation batch. */\n this.vs = 1, \n /** An ordered mapping between documents and the mutations batch IDs. */\n this.Rs = new Ee(Fo.ds);\n }\n checkEmpty(t) {\n return Rt.resolve(0 === this.mutationQueue.length);\n }\n addMutationBatch(t, e, n, s) {\n const i = this.vs;\n this.vs++, this.mutationQueue.length > 0 && this.mutationQueue[this.mutationQueue.length - 1];\n const r = new Zs(i, e, n, s);\n this.mutationQueue.push(r);\n // Track references by document key and index collection parents.\n for (const e of s) this.Rs = this.Rs.add(new Fo(e.key, i)), this.indexManager.addToCollectionParentIndex(t, e.key.path.popLast());\n return Rt.resolve(r);\n }\n lookupMutationBatch(t, e) {\n return Rt.resolve(this.Ps(e));\n }\n getNextMutationBatchAfterBatchId(t, e) {\n const n = e + 1, s = this.bs(n), i = s < 0 ? 0 : s;\n // The requested batchId may still be out of range so normalize it to the\n // start of the queue.\n return Rt.resolve(this.mutationQueue.length > i ? this.mutationQueue[i] : null);\n }\n getHighestUnacknowledgedBatchId() {\n return Rt.resolve(0 === this.mutationQueue.length ? -1 : this.vs - 1);\n }\n getAllMutationBatches(t) {\n return Rt.resolve(this.mutationQueue.slice());\n }\n getAllMutationBatchesAffectingDocumentKey(t, e) {\n const n = new Fo(e, 0), s = new Fo(e, Number.POSITIVE_INFINITY), i = [];\n return this.Rs.forEachInRange([ n, s ], (t => {\n const e = this.Ps(t.As);\n i.push(e);\n })), Rt.resolve(i);\n }\n getAllMutationBatchesAffectingDocumentKeys(t, e) {\n let n = new Ee(et);\n return e.forEach((t => {\n const e = new Fo(t, 0), s = new Fo(t, Number.POSITIVE_INFINITY);\n this.Rs.forEachInRange([ e, s ], (t => {\n n = n.add(t.As);\n }));\n })), Rt.resolve(this.Vs(n));\n }\n getAllMutationBatchesAffectingQuery(t, e) {\n // Use the query path as a prefix for testing if a document matches the\n // query.\n const n = e.path, s = n.length + 1;\n // Construct a document reference for actually scanning the index. Unlike\n // the prefix the document key in this reference must have an even number of\n // segments. The empty segment can be used a suffix of the query path\n // because it precedes all other segments in an ordered traversal.\n let i = n;\n ht.isDocumentKey(i) || (i = i.child(\"\"));\n const r = new Fo(new ht(i), 0);\n // Find unique batchIDs referenced by all documents potentially matching the\n // query.\n let o = new Ee(et);\n return this.Rs.forEachWhile((t => {\n const e = t.key.path;\n return !!n.isPrefixOf(e) && (\n // Rows with document keys more than one segment longer than the query\n // path can't be matches. For example, a query on 'rooms' can't match\n // the document /rooms/abc/messages/xyx.\n // TODO(mcg): we'll need a different scanner when we implement\n // ancestor queries.\n e.length === s && (o = o.add(t.As)), !0);\n }), r), Rt.resolve(this.Vs(o));\n }\n Vs(t) {\n // Construct an array of matching batches, sorted by batchID to ensure that\n // multiple mutations affecting the same document key are applied in order.\n const e = [];\n return t.forEach((t => {\n const n = this.Ps(t);\n null !== n && e.push(n);\n })), e;\n }\n removeMutationBatch(t, e) {\n F(0 === this.Ss(e.batchId, \"removed\")), this.mutationQueue.shift();\n let n = this.Rs;\n return Rt.forEach(e.mutations, (s => {\n const i = new Fo(s.key, e.batchId);\n return n = n.delete(i), this.referenceDelegate.markPotentiallyOrphaned(t, s.key);\n })).next((() => {\n this.Rs = n;\n }));\n }\n Cn(t) {\n // No-op since the memory mutation queue does not maintain a separate cache.\n }\n containsKey(t, e) {\n const n = new Fo(e, 0), s = this.Rs.firstAfterOrEqual(n);\n return Rt.resolve(e.isEqual(s && s.key));\n }\n performConsistencyCheck(t) {\n return this.mutationQueue.length, Rt.resolve();\n }\n /**\n * Finds the index of the given batchId in the mutation queue and asserts that\n * the resulting index is within the bounds of the queue.\n *\n * @param batchId - The batchId to search for\n * @param action - A description of what the caller is doing, phrased in passive\n * form (e.g. \"acknowledged\" in a routine that acknowledges batches).\n */ Ss(t, e) {\n return this.bs(t);\n }\n /**\n * Finds the index of the given batchId in the mutation queue. This operation\n * is O(1).\n *\n * @returns The computed index of the batch with the given batchId, based on\n * the state of the queue. Note this index can be negative if the requested\n * batchId has already been remvoed from the queue or past the end of the\n * queue if the batchId is larger than the last added batch.\n */ bs(t) {\n if (0 === this.mutationQueue.length) \n // As an index this is past the end of the queue\n return 0;\n // Examine the front of the queue to figure out the difference between the\n // batchId and indexes in the array. Note that since the queue is ordered\n // by batchId, if the first batch has a larger batchId then the requested\n // batchId doesn't exist in the queue.\n return t - this.mutationQueue[0].batchId;\n }\n /**\n * A version of lookupMutationBatch that doesn't return a promise, this makes\n * other functions that uses this code easier to read and more efficent.\n */ Ps(t) {\n const e = this.bs(t);\n if (e < 0 || e >= this.mutationQueue.length) return null;\n return this.mutationQueue[e];\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * The memory-only RemoteDocumentCache for IndexedDb. To construct, invoke\n * `newMemoryRemoteDocumentCache()`.\n */\nclass Lo {\n /**\n * @param sizer - Used to assess the size of a document. For eager GC, this is\n * expected to just return 0 to avoid unnecessarily doing the work of\n * calculating the size.\n */\n constructor(t) {\n this.Ds = t, \n /** Underlying cache of documents and their read times. */\n this.docs = new pe(ht.comparator), \n /** Size of all cached documents. */\n this.size = 0;\n }\n setIndexManager(t) {\n this.indexManager = t;\n }\n /**\n * Adds the supplied entry to the cache and updates the cache size as appropriate.\n *\n * All calls of `addEntry` are required to go through the RemoteDocumentChangeBuffer\n * returned by `newChangeBuffer()`.\n */ addEntry(t, e) {\n const n = e.key, s = this.docs.get(n), i = s ? s.size : 0, r = this.Ds(e);\n return this.docs = this.docs.insert(n, {\n document: e.mutableCopy(),\n size: r\n }), this.size += r - i, this.indexManager.addToCollectionParentIndex(t, n.path.popLast());\n }\n /**\n * Removes the specified entry from the cache and updates the cache size as appropriate.\n *\n * All calls of `removeEntry` are required to go through the RemoteDocumentChangeBuffer\n * returned by `newChangeBuffer()`.\n */ removeEntry(t) {\n const e = this.docs.get(t);\n e && (this.docs = this.docs.remove(t), this.size -= e.size);\n }\n getEntry(t, e) {\n const n = this.docs.get(e);\n return Rt.resolve(n ? n.document.mutableCopy() : an.newInvalidDocument(e));\n }\n getEntries(t, e) {\n let n = cs();\n return e.forEach((t => {\n const e = this.docs.get(t);\n n = n.insert(t, e ? e.document.mutableCopy() : an.newInvalidDocument(t));\n })), Rt.resolve(n);\n }\n getDocumentsMatchingQuery(t, e, n, s) {\n let i = cs();\n // Documents are ordered by key, so we can use a prefix scan to narrow down\n // the documents we need to match the query against.\n const r = e.path, o = new ht(r.child(\"\")), u = this.docs.getIteratorFrom(o);\n for (;u.hasNext(); ) {\n const {key: t, value: {document: o}} = u.getNext();\n if (!r.isPrefixOf(t.path)) break;\n t.path.length > r.length + 1 || (Tt(pt(o), n) <= 0 || (s.has(o.key) || ns(e, o)) && (i = i.insert(o.key, o.mutableCopy())));\n }\n return Rt.resolve(i);\n }\n getAllFromCollectionGroup(t, e, n, s) {\n // This method should only be called from the IndexBackfiller if persistence\n // is enabled.\n O();\n }\n Cs(t, e) {\n return Rt.forEach(this.docs, (t => e(t)));\n }\n newChangeBuffer(t) {\n // `trackRemovals` is ignores since the MemoryRemoteDocumentCache keeps\n // a separate changelog and does not need special handling for removals.\n return new qo(this);\n }\n getSize(t) {\n return Rt.resolve(this.size);\n }\n}\n\n/**\n * Creates a new memory-only RemoteDocumentCache.\n *\n * @param sizer - Used to assess the size of a document. For eager GC, this is\n * expected to just return 0 to avoid unnecessarily doing the work of\n * calculating the size.\n */\n/**\n * Handles the details of adding and updating documents in the MemoryRemoteDocumentCache.\n */\nclass qo extends vo {\n constructor(t) {\n super(), this.os = t;\n }\n applyChanges(t) {\n const e = [];\n return this.changes.forEach(((n, s) => {\n s.isValidDocument() ? e.push(this.os.addEntry(t, s)) : this.os.removeEntry(n);\n })), Rt.waitFor(e);\n }\n getFromCache(t, e) {\n return this.os.getEntry(t, e);\n }\n getAllFromCache(t, e) {\n return this.os.getEntries(t, e);\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */ class Uo {\n constructor(t) {\n this.persistence = t, \n /**\n * Maps a target to the data about that target\n */\n this.xs = new os((t => $n(t)), On), \n /** The last received snapshot version. */\n this.lastRemoteSnapshotVersion = rt.min(), \n /** The highest numbered target ID encountered. */\n this.highestTargetId = 0, \n /** The highest sequence number encountered. */\n this.Ns = 0, \n /**\n * A ordered bidirectional mapping between documents and the remote target\n * IDs.\n */\n this.ks = new Oo, this.targetCount = 0, this.Ms = lo.kn();\n }\n forEachTarget(t, e) {\n return this.xs.forEach(((t, n) => e(n))), Rt.resolve();\n }\n getLastRemoteSnapshotVersion(t) {\n return Rt.resolve(this.lastRemoteSnapshotVersion);\n }\n getHighestSequenceNumber(t) {\n return Rt.resolve(this.Ns);\n }\n allocateTargetId(t) {\n return this.highestTargetId = this.Ms.next(), Rt.resolve(this.highestTargetId);\n }\n setTargetsMetadata(t, e, n) {\n return n && (this.lastRemoteSnapshotVersion = n), e > this.Ns && (this.Ns = e), \n Rt.resolve();\n }\n Fn(t) {\n this.xs.set(t.target, t);\n const e = t.targetId;\n e > this.highestTargetId && (this.Ms = new lo(e), this.highestTargetId = e), t.sequenceNumber > this.Ns && (this.Ns = t.sequenceNumber);\n }\n addTargetData(t, e) {\n return this.Fn(e), this.targetCount += 1, Rt.resolve();\n }\n updateTargetData(t, e) {\n return this.Fn(e), Rt.resolve();\n }\n removeTargetData(t, e) {\n return this.xs.delete(e.target), this.ks.Is(e.targetId), this.targetCount -= 1, \n Rt.resolve();\n }\n removeTargets(t, e, n) {\n let s = 0;\n const i = [];\n return this.xs.forEach(((r, o) => {\n o.sequenceNumber <= e && null === n.get(o.targetId) && (this.xs.delete(r), i.push(this.removeMatchingKeysForTargetId(t, o.targetId)), \n s++);\n })), Rt.waitFor(i).next((() => s));\n }\n getTargetCount(t) {\n return Rt.resolve(this.targetCount);\n }\n getTargetData(t, e) {\n const n = this.xs.get(e) || null;\n return Rt.resolve(n);\n }\n addMatchingKeys(t, e, n) {\n return this.ks.gs(e, n), Rt.resolve();\n }\n removeMatchingKeys(t, e, n) {\n this.ks.ps(e, n);\n const s = this.persistence.referenceDelegate, i = [];\n return s && e.forEach((e => {\n i.push(s.markPotentiallyOrphaned(t, e));\n })), Rt.waitFor(i);\n }\n removeMatchingKeysForTargetId(t, e) {\n return this.ks.Is(e), Rt.resolve();\n }\n getMatchingKeysForTargetId(t, e) {\n const n = this.ks.Es(e);\n return Rt.resolve(n);\n }\n containsKey(t, e) {\n return Rt.resolve(this.ks.containsKey(e));\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A memory-backed instance of Persistence. Data is stored only in RAM and\n * not persisted across sessions.\n */\nclass Ko {\n /**\n * The constructor accepts a factory for creating a reference delegate. This\n * allows both the delegate and this instance to have strong references to\n * each other without having nullable fields that would then need to be\n * checked or asserted on every access.\n */\n constructor(t, e) {\n this.$s = {}, this.overlays = {}, this.Os = new Ot(0), this.Fs = !1, this.Fs = !0, \n this.referenceDelegate = t(this), this.Bs = new Uo(this);\n this.indexManager = new zr, this.remoteDocumentCache = function(t) {\n return new Lo(t);\n }((t => this.referenceDelegate.Ls(t))), this.serializer = new ar(e), this.qs = new Mo(this.serializer);\n }\n start() {\n return Promise.resolve();\n }\n shutdown() {\n // No durable state to ensure is closed on shutdown.\n return this.Fs = !1, Promise.resolve();\n }\n get started() {\n return this.Fs;\n }\n setDatabaseDeletedListener() {\n // No op.\n }\n setNetworkEnabled() {\n // No op.\n }\n getIndexManager(t) {\n // We do not currently support indices for memory persistence, so we can\n // return the same shared instance of the memory index manager.\n return this.indexManager;\n }\n getDocumentOverlayCache(t) {\n let e = this.overlays[t.toKey()];\n return e || (e = new $o, this.overlays[t.toKey()] = e), e;\n }\n getMutationQueue(t, e) {\n let n = this.$s[t.toKey()];\n return n || (n = new Bo(e, this.referenceDelegate), this.$s[t.toKey()] = n), n;\n }\n getTargetCache() {\n return this.Bs;\n }\n getRemoteDocumentCache() {\n return this.remoteDocumentCache;\n }\n getBundleCache() {\n return this.qs;\n }\n runTransaction(t, e, n) {\n N(\"MemoryPersistence\", \"Starting transaction:\", t);\n const s = new Go(this.Os.next());\n return this.referenceDelegate.Us(), n(s).next((t => this.referenceDelegate.Ks(s).next((() => t)))).toPromise().then((t => (s.raiseOnCommittedEvent(), \n t)));\n }\n Gs(t, e) {\n return Rt.or(Object.values(this.$s).map((n => () => n.containsKey(t, e))));\n }\n}\n\n/**\n * Memory persistence is not actually transactional, but future implementations\n * may have transaction-scoped state.\n */ class Go extends At {\n constructor(t) {\n super(), this.currentSequenceNumber = t;\n }\n}\n\nclass Qo {\n constructor(t) {\n this.persistence = t, \n /** Tracks all documents that are active in Query views. */\n this.Qs = new Oo, \n /** The list of documents that are potentially GCed after each transaction. */\n this.js = null;\n }\n static zs(t) {\n return new Qo(t);\n }\n get Ws() {\n if (this.js) return this.js;\n throw O();\n }\n addReference(t, e, n) {\n return this.Qs.addReference(n, e), this.Ws.delete(n.toString()), Rt.resolve();\n }\n removeReference(t, e, n) {\n return this.Qs.removeReference(n, e), this.Ws.add(n.toString()), Rt.resolve();\n }\n markPotentiallyOrphaned(t, e) {\n return this.Ws.add(e.toString()), Rt.resolve();\n }\n removeTarget(t, e) {\n this.Qs.Is(e.targetId).forEach((t => this.Ws.add(t.toString())));\n const n = this.persistence.getTargetCache();\n return n.getMatchingKeysForTargetId(t, e.targetId).next((t => {\n t.forEach((t => this.Ws.add(t.toString())));\n })).next((() => n.removeTargetData(t, e)));\n }\n Us() {\n this.js = new Set;\n }\n Ks(t) {\n // Remove newly orphaned documents.\n const e = this.persistence.getRemoteDocumentCache().newChangeBuffer();\n return Rt.forEach(this.Ws, (n => {\n const s = ht.fromPath(n);\n return this.Hs(t, s).next((t => {\n t || e.removeEntry(s, rt.min());\n }));\n })).next((() => (this.js = null, e.apply(t))));\n }\n updateLimboDocument(t, e) {\n return this.Hs(t, e).next((t => {\n t ? this.Ws.delete(e.toString()) : this.Ws.add(e.toString());\n }));\n }\n Ls(t) {\n // For eager GC, we don't care about the document size, there are no size thresholds.\n return 0;\n }\n Hs(t, e) {\n return Rt.or([ () => Rt.resolve(this.Qs.containsKey(e)), () => this.persistence.getTargetCache().containsKey(t, e), () => this.persistence.Gs(t, e) ]);\n }\n}\n\nclass jo {\n constructor(t, e) {\n this.persistence = t, this.Js = new os((t => qt(t.path)), ((t, e) => t.isEqual(e))), \n this.garbageCollector = To(this, e);\n }\n static zs(t, e) {\n return new jo(t, e);\n }\n // No-ops, present so memory persistence doesn't have to care which delegate\n // it has.\n Us() {}\n Ks(t) {\n return Rt.resolve();\n }\n forEachTarget(t, e) {\n return this.persistence.getTargetCache().forEachTarget(t, e);\n }\n zn(t) {\n const e = this.Jn(t);\n return this.persistence.getTargetCache().getTargetCount(t).next((t => e.next((e => t + e))));\n }\n Jn(t) {\n let e = 0;\n return this.Wn(t, (t => {\n e++;\n })).next((() => e));\n }\n Wn(t, e) {\n return Rt.forEach(this.Js, ((n, s) => this.Xn(t, n, s).next((t => t ? Rt.resolve() : e(s)))));\n }\n removeTargets(t, e, n) {\n return this.persistence.getTargetCache().removeTargets(t, e, n);\n }\n removeOrphanedDocuments(t, e) {\n let n = 0;\n const s = this.persistence.getRemoteDocumentCache(), i = s.newChangeBuffer();\n return s.Cs(t, (s => this.Xn(t, s, e).next((t => {\n t || (n++, i.removeEntry(s, rt.min()));\n })))).next((() => i.apply(t))).next((() => n));\n }\n markPotentiallyOrphaned(t, e) {\n return this.Js.set(e, t.currentSequenceNumber), Rt.resolve();\n }\n removeTarget(t, e) {\n const n = e.withSequenceNumber(t.currentSequenceNumber);\n return this.persistence.getTargetCache().updateTargetData(t, n);\n }\n addReference(t, e, n) {\n return this.Js.set(n, t.currentSequenceNumber), Rt.resolve();\n }\n removeReference(t, e, n) {\n return this.Js.set(n, t.currentSequenceNumber), Rt.resolve();\n }\n updateLimboDocument(t, e) {\n return this.Js.set(e, t.currentSequenceNumber), Rt.resolve();\n }\n Ls(t) {\n let e = t.key.toString().length;\n return t.isFoundDocument() && (e += ze(t.data.value)), e;\n }\n Xn(t, e, n) {\n return Rt.or([ () => this.persistence.Gs(t, e), () => this.persistence.getTargetCache().containsKey(t, e), () => {\n const t = this.Js.get(e);\n return Rt.resolve(void 0 !== t && t > n);\n } ]);\n }\n getCacheSize(t) {\n return this.persistence.getRemoteDocumentCache().getSize(t);\n }\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/** Performs database creation and schema upgrades. */ class zo {\n constructor(t) {\n this.serializer = t;\n }\n /**\n * Performs database creation and schema upgrades.\n *\n * Note that in production, this method is only ever used to upgrade the schema\n * to SCHEMA_VERSION. Different values of toVersion are only used for testing\n * and local feature development.\n */ O(t, e, n, s) {\n const i = new Pt(\"createOrUpgrade\", e);\n n < 1 && s >= 1 && (function(t) {\n t.createObjectStore(\"owner\");\n }(t), function(t) {\n t.createObjectStore(\"mutationQueues\", {\n keyPath: \"userId\"\n });\n t.createObjectStore(\"mutations\", {\n keyPath: \"batchId\",\n autoIncrement: !0\n }).createIndex(\"userMutationsIndex\", Qt, {\n unique: !0\n }), t.createObjectStore(\"documentMutations\");\n }\n /**\n * Upgrade function to migrate the 'mutations' store from V1 to V3. Loads\n * and rewrites all data.\n */ (t), Wo(t), function(t) {\n t.createObjectStore(\"remoteDocuments\");\n }(t));\n // Migration 2 to populate the targetGlobal object no longer needed since\n // migration 3 unconditionally clears it.\n let r = Rt.resolve();\n return n < 3 && s >= 3 && (\n // Brand new clients don't need to drop and recreate--only clients that\n // potentially have corrupt data.\n 0 !== n && (!function(t) {\n t.deleteObjectStore(\"targetDocuments\"), t.deleteObjectStore(\"targets\"), t.deleteObjectStore(\"targetGlobal\");\n }(t), Wo(t)), r = r.next((() => \n /**\n * Creates the target global singleton row.\n *\n * @param txn - The version upgrade transaction for indexeddb\n */\n function(t) {\n const e = t.store(\"targetGlobal\"), n = {\n highestTargetId: 0,\n highestListenSequenceNumber: 0,\n lastRemoteSnapshotVersion: rt.min().toTimestamp(),\n targetCount: 0\n };\n return e.put(\"targetGlobalKey\", n);\n }(i)))), n < 4 && s >= 4 && (0 !== n && (\n // Schema version 3 uses auto-generated keys to generate globally unique\n // mutation batch IDs (this was previously ensured internally by the\n // client). To migrate to the new schema, we have to read all mutations\n // and write them back out. We preserve the existing batch IDs to guarantee\n // consistency with other object stores. Any further mutation batch IDs will\n // be auto-generated.\n r = r.next((() => function(t, e) {\n return e.store(\"mutations\").j().next((n => {\n t.deleteObjectStore(\"mutations\");\n t.createObjectStore(\"mutations\", {\n keyPath: \"batchId\",\n autoIncrement: !0\n }).createIndex(\"userMutationsIndex\", Qt, {\n unique: !0\n });\n const s = e.store(\"mutations\"), i = n.map((t => s.put(t)));\n return Rt.waitFor(i);\n }));\n }(t, i)))), r = r.next((() => {\n !function(t) {\n t.createObjectStore(\"clientMetadata\", {\n keyPath: \"clientId\"\n });\n }(t);\n }))), n < 5 && s >= 5 && (r = r.next((() => this.Ys(i)))), n < 6 && s >= 6 && (r = r.next((() => (function(t) {\n t.createObjectStore(\"remoteDocumentGlobal\");\n }(t), this.Xs(i))))), n < 7 && s >= 7 && (r = r.next((() => this.Zs(i)))), n < 8 && s >= 8 && (r = r.next((() => this.ti(t, i)))), \n n < 9 && s >= 9 && (r = r.next((() => {\n // Multi-Tab used to manage its own changelog, but this has been moved\n // to the DbRemoteDocument object store itself. Since the previous change\n // log only contained transient data, we can drop its object store.\n !function(t) {\n t.objectStoreNames.contains(\"remoteDocumentChanges\") && t.deleteObjectStore(\"remoteDocumentChanges\");\n }(t);\n // Note: Schema version 9 used to create a read time index for the\n // RemoteDocumentCache. This is now done with schema version 13.\n }))), n < 10 && s >= 10 && (r = r.next((() => this.ei(i)))), n < 11 && s >= 11 && (r = r.next((() => {\n !function(t) {\n t.createObjectStore(\"bundles\", {\n keyPath: \"bundleId\"\n });\n }(t), function(t) {\n t.createObjectStore(\"namedQueries\", {\n keyPath: \"name\"\n });\n }(t);\n }))), n < 12 && s >= 12 && (r = r.next((() => {\n !function(t) {\n const e = t.createObjectStore(\"documentOverlays\", {\n keyPath: oe\n });\n e.createIndex(\"collectionPathOverlayIndex\", ue, {\n unique: !1\n }), e.createIndex(\"collectionGroupOverlayIndex\", ce, {\n unique: !1\n });\n }(t);\n }))), n < 13 && s >= 13 && (r = r.next((() => function(t) {\n const e = t.createObjectStore(\"remoteDocumentsV14\", {\n keyPath: Ht\n });\n e.createIndex(\"documentKeyIndex\", Jt), e.createIndex(\"collectionGroupIndex\", Yt);\n }(t))).next((() => this.ni(t, i))).next((() => t.deleteObjectStore(\"remoteDocuments\")))), \n n < 14 && s >= 14 && (r = r.next((() => this.si(t, i)))), n < 15 && s >= 15 && (r = r.next((() => function(t) {\n t.createObjectStore(\"indexConfiguration\", {\n keyPath: \"indexId\",\n autoIncrement: !0\n }).createIndex(\"collectionGroupIndex\", \"collectionGroup\", {\n unique: !1\n });\n t.createObjectStore(\"indexState\", {\n keyPath: ne\n }).createIndex(\"sequenceNumberIndex\", se, {\n unique: !1\n });\n t.createObjectStore(\"indexEntries\", {\n keyPath: ie\n }).createIndex(\"documentKeyIndex\", re, {\n unique: !1\n });\n }(t)))), r;\n }\n Xs(t) {\n let e = 0;\n return t.store(\"remoteDocuments\").X(((t, n) => {\n e += ro(n);\n })).next((() => {\n const n = {\n byteSize: e\n };\n return t.store(\"remoteDocumentGlobal\").put(\"remoteDocumentGlobalKey\", n);\n }));\n }\n Ys(t) {\n const e = t.store(\"mutationQueues\"), n = t.store(\"mutations\");\n return e.j().next((e => Rt.forEach(e, (e => {\n const s = IDBKeyRange.bound([ e.userId, -1 ], [ e.userId, e.lastAcknowledgedBatchId ]);\n return n.j(\"userMutationsIndex\", s).next((n => Rt.forEach(n, (n => {\n F(n.userId === e.userId);\n const s = _r(this.serializer, n);\n return io(t, e.userId, s).next((() => {}));\n }))));\n }))));\n }\n /**\n * Ensures that every document in the remote document cache has a corresponding sentinel row\n * with a sequence number. Missing rows are given the most recently used sequence number.\n */ Zs(t) {\n const e = t.store(\"targetDocuments\"), n = t.store(\"remoteDocuments\");\n return t.store(\"targetGlobal\").get(\"targetGlobalKey\").next((t => {\n const s = [];\n return n.X(((n, i) => {\n const r = new ut(n), o = function(t) {\n return [ 0, qt(t) ];\n }(r);\n s.push(e.get(o).next((n => n ? Rt.resolve() : (n => e.put({\n targetId: 0,\n path: qt(n),\n sequenceNumber: t.highestListenSequenceNumber\n }))(r))));\n })).next((() => Rt.waitFor(s)));\n }));\n }\n ti(t, e) {\n // Create the index.\n t.createObjectStore(\"collectionParents\", {\n keyPath: ee\n });\n const n = e.store(\"collectionParents\"), s = new Wr, i = t => {\n if (s.add(t)) {\n const e = t.lastSegment(), s = t.popLast();\n return n.put({\n collectionId: e,\n parent: qt(s)\n });\n }\n };\n // Helper to add an index entry iff we haven't already written it.\n // Index existing remote documents.\n return e.store(\"remoteDocuments\").X({\n Y: !0\n }, ((t, e) => {\n const n = new ut(t);\n return i(n.popLast());\n })).next((() => e.store(\"documentMutations\").X({\n Y: !0\n }, (([t, e, n], s) => {\n const r = Gt(e);\n return i(r.popLast());\n }))));\n }\n ei(t) {\n const e = t.store(\"targets\");\n return e.X(((t, n) => {\n const s = mr(n), i = gr(this.serializer, s);\n return e.put(i);\n }));\n }\n ni(t, e) {\n const n = e.store(\"remoteDocuments\"), s = [];\n return n.X(((t, n) => {\n const i = e.store(\"remoteDocumentsV14\"), r = (o = n, o.document ? new ht(ut.fromString(o.document.name).popFirst(5)) : o.noDocument ? ht.fromSegments(o.noDocument.path) : o.unknownDocument ? ht.fromSegments(o.unknownDocument.path) : O()).path.toArray();\n var o;\n /**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */ const u = {\n prefixPath: r.slice(0, r.length - 2),\n collectionGroup: r[r.length - 2],\n documentId: r[r.length - 1],\n readTime: n.readTime || [ 0, 0 ],\n unknownDocument: n.unknownDocument,\n noDocument: n.noDocument,\n document: n.document,\n hasCommittedMutations: !!n.hasCommittedMutations\n };\n s.push(i.put(u));\n })).next((() => Rt.waitFor(s)));\n }\n si(t, e) {\n const n = e.store(\"mutations\"), s = Po(this.serializer), i = new Ko(Qo.zs, this.serializer.fe);\n return n.j().next((t => {\n const n = new Map;\n return t.forEach((t => {\n var e;\n let s = null !== (e = n.get(t.userId)) && void 0 !== e ? e : gs();\n _r(this.serializer, t).keys().forEach((t => s = s.add(t))), n.set(t.userId, s);\n })), Rt.forEach(n, ((t, n) => {\n const r = new V(n), o = Rr.de(this.serializer, r), u = i.getIndexManager(r), c = oo.de(r, this.serializer, u, i.referenceDelegate);\n return new ko(s, c, o, u).recalculateAndSaveOverlaysForDocumentKeys(new we(e, Ot.ct), t).next();\n }));\n }));\n }\n}\n\nfunction Wo(t) {\n t.createObjectStore(\"targetDocuments\", {\n keyPath: Zt\n }).createIndex(\"documentTargetsIndex\", te, {\n unique: !0\n });\n // NOTE: This is unique only because the TargetId is the suffix.\n t.createObjectStore(\"targets\", {\n keyPath: \"targetId\"\n }).createIndex(\"queryTargetsIndex\", Xt, {\n unique: !0\n }), t.createObjectStore(\"targetGlobal\");\n}\n\nconst Ho = \"Failed to obtain exclusive access to the persistence layer. To allow shared access, multi-tab synchronization has to be enabled in all tabs. If you are using `experimentalForceOwningTab:true`, make sure that only one tab has persistence enabled at any given time.\";\n\n/**\n * Oldest acceptable age in milliseconds for client metadata before the client\n * is considered inactive and its associated data is garbage collected.\n */\n/**\n * An IndexedDB-backed instance of Persistence. Data is stored persistently\n * across sessions.\n *\n * On Web only, the Firestore SDKs support shared access to its persistence\n * layer. This allows multiple browser tabs to read and write to IndexedDb and\n * to synchronize state even without network connectivity. Shared access is\n * currently optional and not enabled unless all clients invoke\n * `enablePersistence()` with `{synchronizeTabs:true}`.\n *\n * In multi-tab mode, if multiple clients are active at the same time, the SDK\n * will designate one client as the “primary client”. An effort is made to pick\n * a visible, network-connected and active client, and this client is\n * responsible for letting other clients know about its presence. The primary\n * client writes a unique client-generated identifier (the client ID) to\n * IndexedDb’s “owner” store every 4 seconds. If the primary client fails to\n * update this entry, another client can acquire the lease and take over as\n * primary.\n *\n * Some persistence operations in the SDK are designated as primary-client only\n * operations. This includes the acknowledgment of mutations and all updates of\n * remote documents. The effects of these operations are written to persistence\n * and then broadcast to other tabs via LocalStorage (see\n * `WebStorageSharedClientState`), which then refresh their state from\n * persistence.\n *\n * Similarly, the primary client listens to notifications sent by secondary\n * clients to discover persistence changes written by secondary clients, such as\n * the addition of new mutations and query targets.\n *\n * If multi-tab is not enabled and another tab already obtained the primary\n * lease, IndexedDbPersistence enters a failed state and all subsequent\n * operations will automatically fail.\n *\n * Additionally, there is an optimization so that when a tab is closed, the\n * primary lease is released immediately (this is especially important to make\n * sure that a refreshed tab is able to immediately re-acquire the primary\n * lease). Unfortunately, IndexedDB cannot be reliably used in window.unload\n * since it is an asynchronous API. So in addition to attempting to give up the\n * lease, the leaseholder writes its client ID to a \"zombiedClient\" entry in\n * LocalStorage which acts as an indicator that another tab should go ahead and\n * take the primary lease immediately regardless of the current lease timestamp.\n *\n * TODO(b/114226234): Remove `synchronizeTabs` section when multi-tab is no\n * longer optional.\n */\nclass Jo {\n constructor(\n /**\n * Whether to synchronize the in-memory state of multiple tabs and share\n * access to local persistence.\n */\n t, e, n, s, i, r, o, u, c, \n /**\n * If set to true, forcefully obtains database access. Existing tabs will\n * no longer be able to access IndexedDB.\n */\n a, h = 15) {\n if (this.allowTabSynchronization = t, this.persistenceKey = e, this.clientId = n, \n this.ii = i, this.window = r, this.document = o, this.ri = c, this.oi = a, this.ui = h, \n this.Os = null, this.Fs = !1, this.isPrimary = !1, this.networkEnabled = !0, \n /** Our window.unload handler, if registered. */\n this.ci = null, this.inForeground = !1, \n /** Our 'visibilitychange' listener if registered. */\n this.ai = null, \n /** The client metadata refresh task. */\n this.hi = null, \n /** The last time we garbage collected the client metadata object store. */\n this.li = Number.NEGATIVE_INFINITY, \n /** A listener to notify on primary state changes. */\n this.fi = t => Promise.resolve(), !Jo.D()) throw new U(q.UNIMPLEMENTED, \"This platform is either missing IndexedDB or is known to have an incomplete implementation. Offline persistence has been disabled.\");\n this.referenceDelegate = new Eo(this, s), this.di = e + \"main\", this.serializer = new ar(u), \n this.wi = new bt(this.di, this.ui, new zo(this.serializer)), this.Bs = new fo(this.referenceDelegate, this.serializer), \n this.remoteDocumentCache = Po(this.serializer), this.qs = new Er, this.window && this.window.localStorage ? this._i = this.window.localStorage : (this._i = null, \n !1 === a && k(\"IndexedDbPersistence\", \"LocalStorage is unavailable. As a result, persistence may not work reliably. In particular enablePersistence() could fail immediately after refreshing the page.\"));\n }\n /**\n * Attempt to start IndexedDb persistence.\n *\n * @returns Whether persistence was enabled.\n */ start() {\n // NOTE: This is expected to fail sometimes (in the case of another tab\n // already having the persistence lock), so it's the first thing we should\n // do.\n return this.mi().then((() => {\n if (!this.isPrimary && !this.allowTabSynchronization) \n // Fail `start()` if `synchronizeTabs` is disabled and we cannot\n // obtain the primary lease.\n throw new U(q.FAILED_PRECONDITION, Ho);\n return this.gi(), this.yi(), this.pi(), this.runTransaction(\"getHighestListenSequenceNumber\", \"readonly\", (t => this.Bs.getHighestSequenceNumber(t)));\n })).then((t => {\n this.Os = new Ot(t, this.ri);\n })).then((() => {\n this.Fs = !0;\n })).catch((t => (this.wi && this.wi.close(), Promise.reject(t))));\n }\n /**\n * Registers a listener that gets called when the primary state of the\n * instance changes. Upon registering, this listener is invoked immediately\n * with the current primary state.\n *\n * PORTING NOTE: This is only used for Web multi-tab.\n */ Ii(t) {\n return this.fi = async e => {\n if (this.started) return t(e);\n }, t(this.isPrimary);\n }\n /**\n * Registers a listener that gets called when the database receives a\n * version change event indicating that it has deleted.\n *\n * PORTING NOTE: This is only used for Web multi-tab.\n */ setDatabaseDeletedListener(t) {\n this.wi.B((async e => {\n // Check if an attempt is made to delete IndexedDB.\n null === e.newVersion && await t();\n }));\n }\n /**\n * Adjusts the current network state in the client's metadata, potentially\n * affecting the primary lease.\n *\n * PORTING NOTE: This is only used for Web multi-tab.\n */ setNetworkEnabled(t) {\n this.networkEnabled !== t && (this.networkEnabled = t, \n // Schedule a primary lease refresh for immediate execution. The eventual\n // lease update will be propagated via `primaryStateListener`.\n this.ii.enqueueAndForget((async () => {\n this.started && await this.mi();\n })));\n }\n /**\n * Updates the client metadata in IndexedDb and attempts to either obtain or\n * extend the primary lease for the local client. Asynchronously notifies the\n * primary state listener if the client either newly obtained or released its\n * primary lease.\n */ mi() {\n return this.runTransaction(\"updateClientMetadataAndTryBecomePrimary\", \"readwrite\", (t => Xo(t).put({\n clientId: this.clientId,\n updateTimeMs: Date.now(),\n networkEnabled: this.networkEnabled,\n inForeground: this.inForeground\n }).next((() => {\n if (this.isPrimary) return this.Ti(t).next((t => {\n t || (this.isPrimary = !1, this.ii.enqueueRetryable((() => this.fi(!1))));\n }));\n })).next((() => this.Ei(t))).next((e => this.isPrimary && !e ? this.Ai(t).next((() => !1)) : !!e && this.vi(t).next((() => !0)))))).catch((t => {\n if (Dt(t)) \n // Proceed with the existing state. Any subsequent access to\n // IndexedDB will verify the lease.\n return N(\"IndexedDbPersistence\", \"Failed to extend owner lease: \", t), this.isPrimary;\n if (!this.allowTabSynchronization) throw t;\n return N(\"IndexedDbPersistence\", \"Releasing owner lease after error during lease refresh\", t), \n /* isPrimary= */ !1;\n })).then((t => {\n this.isPrimary !== t && this.ii.enqueueRetryable((() => this.fi(t))), this.isPrimary = t;\n }));\n }\n Ti(t) {\n return Yo(t).get(\"owner\").next((t => Rt.resolve(this.Ri(t))));\n }\n Pi(t) {\n return Xo(t).delete(this.clientId);\n }\n /**\n * If the garbage collection threshold has passed, prunes the\n * RemoteDocumentChanges and the ClientMetadata store based on the last update\n * time of all clients.\n */ async bi() {\n if (this.isPrimary && !this.Vi(this.li, 18e5)) {\n this.li = Date.now();\n const t = await this.runTransaction(\"maybeGarbageCollectMultiClientState\", \"readwrite-primary\", (t => {\n const e = _e(t, \"clientMetadata\");\n return e.j().next((t => {\n const n = this.Si(t, 18e5), s = t.filter((t => -1 === n.indexOf(t)));\n // Delete metadata for clients that are no longer considered active.\n return Rt.forEach(s, (t => e.delete(t.clientId))).next((() => s));\n }));\n })).catch((() => []));\n // Delete potential leftover entries that may continue to mark the\n // inactive clients as zombied in LocalStorage.\n // Ideally we'd delete the IndexedDb and LocalStorage zombie entries for\n // the client atomically, but we can't. So we opt to delete the IndexedDb\n // entries first to avoid potentially reviving a zombied client.\n if (this._i) for (const e of t) this._i.removeItem(this.Di(e.clientId));\n }\n }\n /**\n * Schedules a recurring timer to update the client metadata and to either\n * extend or acquire the primary lease if the client is eligible.\n */ pi() {\n this.hi = this.ii.enqueueAfterDelay(\"client_metadata_refresh\" /* TimerId.ClientMetadataRefresh */ , 4e3, (() => this.mi().then((() => this.bi())).then((() => this.pi()))));\n }\n /** Checks whether `client` is the local client. */ Ri(t) {\n return !!t && t.ownerId === this.clientId;\n }\n /**\n * Evaluate the state of all active clients and determine whether the local\n * client is or can act as the holder of the primary lease. Returns whether\n * the client is eligible for the lease, but does not actually acquire it.\n * May return 'false' even if there is no active leaseholder and another\n * (foreground) client should become leaseholder instead.\n */ Ei(t) {\n if (this.oi) return Rt.resolve(!0);\n return Yo(t).get(\"owner\").next((e => {\n // A client is eligible for the primary lease if:\n // - its network is enabled and the client's tab is in the foreground.\n // - its network is enabled and no other client's tab is in the\n // foreground.\n // - every clients network is disabled and the client's tab is in the\n // foreground.\n // - every clients network is disabled and no other client's tab is in\n // the foreground.\n // - the `forceOwningTab` setting was passed in.\n if (null !== e && this.Vi(e.leaseTimestampMs, 5e3) && !this.Ci(e.ownerId)) {\n if (this.Ri(e) && this.networkEnabled) return !0;\n if (!this.Ri(e)) {\n if (!e.allowTabSynchronization) \n // Fail the `canActAsPrimary` check if the current leaseholder has\n // not opted into multi-tab synchronization. If this happens at\n // client startup, we reject the Promise returned by\n // `enablePersistence()` and the user can continue to use Firestore\n // with in-memory persistence.\n // If this fails during a lease refresh, we will instead block the\n // AsyncQueue from executing further operations. Note that this is\n // acceptable since mixing & matching different `synchronizeTabs`\n // settings is not supported.\n // TODO(b/114226234): Remove this check when `synchronizeTabs` can\n // no longer be turned off.\n throw new U(q.FAILED_PRECONDITION, Ho);\n return !1;\n }\n }\n return !(!this.networkEnabled || !this.inForeground) || Xo(t).j().next((t => void 0 === this.Si(t, 5e3).find((t => {\n if (this.clientId !== t.clientId) {\n const e = !this.networkEnabled && t.networkEnabled, n = !this.inForeground && t.inForeground, s = this.networkEnabled === t.networkEnabled;\n if (e || n && s) return !0;\n }\n return !1;\n }))));\n })).next((t => (this.isPrimary !== t && N(\"IndexedDbPersistence\", `Client ${t ? \"is\" : \"is not\"} eligible for a primary lease.`), \n t)));\n }\n async shutdown() {\n // The shutdown() operations are idempotent and can be called even when\n // start() aborted (e.g. because it couldn't acquire the persistence lease).\n this.Fs = !1, this.xi(), this.hi && (this.hi.cancel(), this.hi = null), this.Ni(), \n this.ki(), \n // Use `SimpleDb.runTransaction` directly to avoid failing if another tab\n // has obtained the primary lease.\n await this.wi.runTransaction(\"shutdown\", \"readwrite\", [ \"owner\", \"clientMetadata\" ], (t => {\n const e = new we(t, Ot.ct);\n return this.Ai(e).next((() => this.Pi(e)));\n })), this.wi.close(), \n // Remove the entry marking the client as zombied from LocalStorage since\n // we successfully deleted its metadata from IndexedDb.\n this.Mi();\n }\n /**\n * Returns clients that are not zombied and have an updateTime within the\n * provided threshold.\n */ Si(t, e) {\n return t.filter((t => this.Vi(t.updateTimeMs, e) && !this.Ci(t.clientId)));\n }\n /**\n * Returns the IDs of the clients that are currently active. If multi-tab\n * is not supported, returns an array that only contains the local client's\n * ID.\n *\n * PORTING NOTE: This is only used for Web multi-tab.\n */ $i() {\n return this.runTransaction(\"getActiveClients\", \"readonly\", (t => Xo(t).j().next((t => this.Si(t, 18e5).map((t => t.clientId))))));\n }\n get started() {\n return this.Fs;\n }\n getMutationQueue(t, e) {\n return oo.de(t, this.serializer, e, this.referenceDelegate);\n }\n getTargetCache() {\n return this.Bs;\n }\n getRemoteDocumentCache() {\n return this.remoteDocumentCache;\n }\n getIndexManager(t) {\n return new Jr(t, this.serializer.fe.databaseId);\n }\n getDocumentOverlayCache(t) {\n return Rr.de(this.serializer, t);\n }\n getBundleCache() {\n return this.qs;\n }\n runTransaction(t, e, n) {\n N(\"IndexedDbPersistence\", \"Starting transaction:\", t);\n const s = \"readonly\" === e ? \"readonly\" : \"readwrite\", i = 15 === (r = this.ui) ? de : 14 === r ? fe : 13 === r ? le : 12 === r ? he : 11 === r ? ae : void O();\n /** Returns the object stores for the provided schema. */\n var r;\n let o;\n // Do all transactions as readwrite against all object stores, since we\n // are the only reader/writer.\n return this.wi.runTransaction(t, s, i, (s => (o = new we(s, this.Os ? this.Os.next() : Ot.ct), \n \"readwrite-primary\" === e ? this.Ti(o).next((t => !!t || this.Ei(o))).next((e => {\n if (!e) throw k(`Failed to obtain primary lease for action '${t}'.`), this.isPrimary = !1, \n this.ii.enqueueRetryable((() => this.fi(!1))), new U(q.FAILED_PRECONDITION, Et);\n return n(o);\n })).next((t => this.vi(o).next((() => t)))) : this.Oi(o).next((() => n(o)))))).then((t => (o.raiseOnCommittedEvent(), \n t)));\n }\n /**\n * Verifies that the current tab is the primary leaseholder or alternatively\n * that the leaseholder has opted into multi-tab synchronization.\n */\n // TODO(b/114226234): Remove this check when `synchronizeTabs` can no longer\n // be turned off.\n Oi(t) {\n return Yo(t).get(\"owner\").next((t => {\n if (null !== t && this.Vi(t.leaseTimestampMs, 5e3) && !this.Ci(t.ownerId) && !this.Ri(t) && !(this.oi || this.allowTabSynchronization && t.allowTabSynchronization)) throw new U(q.FAILED_PRECONDITION, Ho);\n }));\n }\n /**\n * Obtains or extends the new primary lease for the local client. This\n * method does not verify that the client is eligible for this lease.\n */ vi(t) {\n const e = {\n ownerId: this.clientId,\n allowTabSynchronization: this.allowTabSynchronization,\n leaseTimestampMs: Date.now()\n };\n return Yo(t).put(\"owner\", e);\n }\n static D() {\n return bt.D();\n }\n /** Checks the primary lease and removes it if we are the current primary. */ Ai(t) {\n const e = Yo(t);\n return e.get(\"owner\").next((t => this.Ri(t) ? (N(\"IndexedDbPersistence\", \"Releasing primary lease.\"), \n e.delete(\"owner\")) : Rt.resolve()));\n }\n /** Verifies that `updateTimeMs` is within `maxAgeMs`. */ Vi(t, e) {\n const n = Date.now();\n return !(t < n - e) && (!(t > n) || (k(`Detected an update time that is in the future: ${t} > ${n}`), \n !1));\n }\n gi() {\n null !== this.document && \"function\" == typeof this.document.addEventListener && (this.ai = () => {\n this.ii.enqueueAndForget((() => (this.inForeground = \"visible\" === this.document.visibilityState, \n this.mi())));\n }, this.document.addEventListener(\"visibilitychange\", this.ai), this.inForeground = \"visible\" === this.document.visibilityState);\n }\n Ni() {\n this.ai && (this.document.removeEventListener(\"visibilitychange\", this.ai), this.ai = null);\n }\n /**\n * Attaches a window.unload handler that will synchronously write our\n * clientId to a \"zombie client id\" location in LocalStorage. This can be used\n * by tabs trying to acquire the primary lease to determine that the lease\n * is no longer valid even if the timestamp is recent. This is particularly\n * important for the refresh case (so the tab correctly re-acquires the\n * primary lease). LocalStorage is used for this rather than IndexedDb because\n * it is a synchronous API and so can be used reliably from an unload\n * handler.\n */ yi() {\n var t;\n \"function\" == typeof (null === (t = this.window) || void 0 === t ? void 0 : t.addEventListener) && (this.ci = () => {\n // Note: In theory, this should be scheduled on the AsyncQueue since it\n // accesses internal state. We execute this code directly during shutdown\n // to make sure it gets a chance to run.\n this.xi();\n const t = /(?:Version|Mobile)\\/1[456]/;\n isSafari() && (navigator.appVersion.match(t) || navigator.userAgent.match(t)) && \n // On Safari 14, 15, and 16, we do not run any cleanup actions as it might\n // trigger a bug that prevents Safari from re-opening IndexedDB during\n // the next page load.\n // See https://bugs.webkit.org/show_bug.cgi?id=226547\n this.ii.enterRestrictedMode(/* purgeExistingTasks= */ !0), this.ii.enqueueAndForget((() => this.shutdown()));\n }, this.window.addEventListener(\"pagehide\", this.ci));\n }\n ki() {\n this.ci && (this.window.removeEventListener(\"pagehide\", this.ci), this.ci = null);\n }\n /**\n * Returns whether a client is \"zombied\" based on its LocalStorage entry.\n * Clients become zombied when their tab closes without running all of the\n * cleanup logic in `shutdown()`.\n */ Ci(t) {\n var e;\n try {\n const n = null !== (null === (e = this._i) || void 0 === e ? void 0 : e.getItem(this.Di(t)));\n return N(\"IndexedDbPersistence\", `Client '${t}' ${n ? \"is\" : \"is not\"} zombied in LocalStorage`), \n n;\n } catch (t) {\n // Gracefully handle if LocalStorage isn't working.\n return k(\"IndexedDbPersistence\", \"Failed to get zombied client id.\", t), !1;\n }\n }\n /**\n * Record client as zombied (a client that had its tab closed). Zombied\n * clients are ignored during primary tab selection.\n */ xi() {\n if (this._i) try {\n this._i.setItem(this.Di(this.clientId), String(Date.now()));\n } catch (t) {\n // Gracefully handle if LocalStorage isn't available / working.\n k(\"Failed to set zombie client id.\", t);\n }\n }\n /** Removes the zombied client entry if it exists. */ Mi() {\n if (this._i) try {\n this._i.removeItem(this.Di(this.clientId));\n } catch (t) {\n // Ignore\n }\n }\n Di(t) {\n return `firestore_zombie_${this.persistenceKey}_${t}`;\n }\n}\n\n/**\n * Helper to get a typed SimpleDbStore for the primary client object store.\n */ function Yo(t) {\n return _e(t, \"owner\");\n}\n\n/**\n * Helper to get a typed SimpleDbStore for the client metadata object store.\n */ function Xo(t) {\n return _e(t, \"clientMetadata\");\n}\n\n/**\n * Generates a string used as a prefix when storing data in IndexedDB and\n * LocalStorage.\n */ function Zo(t, e) {\n // Use two different prefix formats:\n // * firestore / persistenceKey / projectID . databaseID / ...\n // * firestore / persistenceKey / projectID / ...\n // projectIDs are DNS-compatible names and cannot contain dots\n // so there's no danger of collisions.\n let n = t.projectId;\n return t.isDefaultDatabase || (n += \".\" + t.database), \"firestore/\" + e + \"/\" + n + \"/\";\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A set of changes to what documents are currently in view and out of view for\n * a given query. These changes are sent to the LocalStore by the View (via\n * the SyncEngine) and are used to pin / unpin documents as appropriate.\n */\nclass tu {\n constructor(t, e, n, s) {\n this.targetId = t, this.fromCache = e, this.Fi = n, this.Bi = s;\n }\n static Li(t, e) {\n let n = gs(), s = gs();\n for (const t of e.docChanges) switch (t.type) {\n case 0 /* ChangeType.Added */ :\n n = n.add(t.doc.key);\n break;\n\n case 1 /* ChangeType.Removed */ :\n s = s.add(t.doc.key);\n // do nothing\n }\n return new tu(t, e.fromCache, n, s);\n }\n}\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * The Firestore query engine.\n *\n * Firestore queries can be executed in three modes. The Query Engine determines\n * what mode to use based on what data is persisted. The mode only determines\n * the runtime complexity of the query - the result set is equivalent across all\n * implementations.\n *\n * The Query engine will use indexed-based execution if a user has configured\n * any index that can be used to execute query (via `setIndexConfiguration()`).\n * Otherwise, the engine will try to optimize the query by re-using a previously\n * persisted query result. If that is not possible, the query will be executed\n * via a full collection scan.\n *\n * Index-based execution is the default when available. The query engine\n * supports partial indexed execution and merges the result from the index\n * lookup with documents that have not yet been indexed. The index evaluation\n * matches the backend's format and as such, the SDK can use indexing for all\n * queries that the backend supports.\n *\n * If no index exists, the query engine tries to take advantage of the target\n * document mapping in the TargetCache. These mappings exists for all queries\n * that have been synced with the backend at least once and allow the query\n * engine to only read documents that previously matched a query plus any\n * documents that were edited after the query was last listened to.\n *\n * There are some cases when this optimization is not guaranteed to produce\n * the same results as full collection scans. In these cases, query\n * processing falls back to full scans. These cases are:\n *\n * - Limit queries where a document that matched the query previously no longer\n * matches the query.\n *\n * - Limit queries where a document edit may cause the document to sort below\n * another document that is in the local cache.\n *\n * - Queries that have never been CURRENT or free of limbo documents.\n */ class eu {\n constructor() {\n this.qi = !1;\n }\n /** Sets the document view to query against. */ initialize(t, e) {\n this.Ui = t, this.indexManager = e, this.qi = !0;\n }\n /** Returns all local documents matching the specified query. */ getDocumentsMatchingQuery(t, e, n, s) {\n return this.Ki(t, e).next((i => i || this.Gi(t, e, s, n))).next((n => n || this.Qi(t, e)));\n }\n /**\n * Performs an indexed query that evaluates the query based on a collection's\n * persisted index values. Returns `null` if an index is not available.\n */ Ki(t, e) {\n if (Qn(e)) \n // Queries that match all documents don't benefit from using\n // key-based lookups. It is more efficient to scan all documents in a\n // collection, rather than to perform individual lookups.\n return Rt.resolve(null);\n let n = Jn(e);\n return this.indexManager.getIndexType(t, n).next((s => 0 /* IndexType.NONE */ === s ? null : (null !== e.limit && 1 /* IndexType.PARTIAL */ === s && (\n // We cannot apply a limit for targets that are served using a partial\n // index. If a partial index will be used to serve the target, the\n // query may return a superset of documents that match the target\n // (e.g. if the index doesn't include all the target's filters), or\n // may return the correct set of documents in the wrong order (e.g. if\n // the index doesn't include a segment for one of the orderBys).\n // Therefore, a limit should not be applied in such cases.\n e = Xn(e, null, \"F\" /* LimitType.First */), n = Jn(e)), this.indexManager.getDocumentsMatchingTarget(t, n).next((s => {\n const i = gs(...s);\n return this.Ui.getDocuments(t, i).next((s => this.indexManager.getMinOffset(t, n).next((n => {\n const r = this.ji(e, s);\n return this.zi(e, r, i, n.readTime) ? this.Ki(t, Xn(e, null, \"F\" /* LimitType.First */)) : this.Wi(t, r, e, n);\n }))));\n })))));\n }\n /**\n * Performs a query based on the target's persisted query mapping. Returns\n * `null` if the mapping is not available or cannot be used.\n */ Gi(t, e, n, s) {\n return Qn(e) || s.isEqual(rt.min()) ? this.Qi(t, e) : this.Ui.getDocuments(t, n).next((i => {\n const r = this.ji(e, i);\n return this.zi(e, r, n, s) ? this.Qi(t, e) : (C() <= LogLevel.DEBUG && N(\"QueryEngine\", \"Re-using previous result from %s to execute query: %s\", s.toString(), es(e)), \n this.Wi(t, r, e, yt(s, -1)));\n }));\n // Queries that have never seen a snapshot without limbo free documents\n // should also be run as a full collection scan.\n }\n /** Applies the query filter and sorting to the provided documents. */ ji(t, e) {\n // Sort the documents and re-apply the query filter since previously\n // matching documents do not necessarily still match the query.\n let n = new Ee(is(t));\n return e.forEach(((e, s) => {\n ns(t, s) && (n = n.add(s));\n })), n;\n }\n /**\n * Determines if a limit query needs to be refilled from cache, making it\n * ineligible for index-free execution.\n *\n * @param query - The query.\n * @param sortedPreviousResults - The documents that matched the query when it\n * was last synchronized, sorted by the query's comparator.\n * @param remoteKeys - The document keys that matched the query at the last\n * snapshot.\n * @param limboFreeSnapshotVersion - The version of the snapshot when the\n * query was last synchronized.\n */ zi(t, e, n, s) {\n if (null === t.limit) \n // Queries without limits do not need to be refilled.\n return !1;\n if (n.size !== e.size) \n // The query needs to be refilled if a previously matching document no\n // longer matches.\n return !0;\n // Limit queries are not eligible for index-free query execution if there is\n // a potential that an older document from cache now sorts before a document\n // that was previously part of the limit. This, however, can only happen if\n // the document at the edge of the limit goes out of limit.\n // If a document that is not the limit boundary sorts differently,\n // the boundary of the limit itself did not change and documents from cache\n // will continue to be \"rejected\" by this boundary. Therefore, we can ignore\n // any modifications that don't affect the last document.\n const i = \"F\" /* LimitType.First */ === t.limitType ? e.last() : e.first();\n return !!i && (i.hasPendingWrites || i.version.compareTo(s) > 0);\n }\n Qi(t, e) {\n return C() <= LogLevel.DEBUG && N(\"QueryEngine\", \"Using full collection scan to execute query:\", es(e)), \n this.Ui.getDocumentsMatchingQuery(t, e, It.min());\n }\n /**\n * Combines the results from an indexed execution with the remaining documents\n * that have not yet been indexed.\n */ Wi(t, e, n, s) {\n // Retrieve all results for documents that were updated since the offset.\n return this.Ui.getDocumentsMatchingQuery(t, n, s).next((t => (\n // Merge with existing results\n e.forEach((e => {\n t = t.insert(e.key, e);\n })), t)));\n }\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Implements `LocalStore` interface.\n *\n * Note: some field defined in this class might have public access level, but\n * the class is not exported so they are only accessible from this module.\n * This is useful to implement optional features (like bundles) in free\n * functions, such that they are tree-shakeable.\n */\nclass nu {\n constructor(\n /** Manages our in-memory or durable persistence. */\n t, e, n, s) {\n this.persistence = t, this.Hi = e, this.serializer = s, \n /**\n * Maps a targetID to data about its target.\n *\n * PORTING NOTE: We are using an immutable data structure on Web to make re-runs\n * of `applyRemoteEvent()` idempotent.\n */\n this.Ji = new pe(et), \n /** Maps a target to its targetID. */\n // TODO(wuandy): Evaluate if TargetId can be part of Target.\n this.Yi = new os((t => $n(t)), On), \n /**\n * A per collection group index of the last read time processed by\n * `getNewDocumentChanges()`.\n *\n * PORTING NOTE: This is only used for multi-tab synchronization.\n */\n this.Xi = new Map, this.Zi = t.getRemoteDocumentCache(), this.Bs = t.getTargetCache(), \n this.qs = t.getBundleCache(), this.tr(n);\n }\n tr(t) {\n // TODO(indexing): Add spec tests that test these components change after a\n // user change\n this.documentOverlayCache = this.persistence.getDocumentOverlayCache(t), this.indexManager = this.persistence.getIndexManager(t), \n this.mutationQueue = this.persistence.getMutationQueue(t, this.indexManager), this.localDocuments = new ko(this.Zi, this.mutationQueue, this.documentOverlayCache, this.indexManager), \n this.Zi.setIndexManager(this.indexManager), this.Hi.initialize(this.localDocuments, this.indexManager);\n }\n collectGarbage(t) {\n return this.persistence.runTransaction(\"Collect garbage\", \"readwrite-primary\", (e => t.collect(e, this.Ji)));\n }\n}\n\nfunction su(\n/** Manages our in-memory or durable persistence. */\nt, e, n, s) {\n return new nu(t, e, n, s);\n}\n\n/**\n * Tells the LocalStore that the currently authenticated user has changed.\n *\n * In response the local store switches the mutation queue to the new user and\n * returns any resulting document changes.\n */\n// PORTING NOTE: Android and iOS only return the documents affected by the\n// change.\nasync function iu(t, e) {\n const n = L(t);\n return await n.persistence.runTransaction(\"Handle user change\", \"readonly\", (t => {\n // Swap out the mutation queue, grabbing the pending mutation batches\n // before and after.\n let s;\n return n.mutationQueue.getAllMutationBatches(t).next((i => (s = i, n.tr(e), n.mutationQueue.getAllMutationBatches(t)))).next((e => {\n const i = [], r = [];\n // Union the old/new changed keys.\n let o = gs();\n for (const t of s) {\n i.push(t.batchId);\n for (const e of t.mutations) o = o.add(e.key);\n }\n for (const t of e) {\n r.push(t.batchId);\n for (const e of t.mutations) o = o.add(e.key);\n }\n // Return the set of all (potentially) changed documents and the list\n // of mutation batch IDs that were affected by change.\n return n.localDocuments.getDocuments(t, o).next((t => ({\n er: t,\n removedBatchIds: i,\n addedBatchIds: r\n })));\n }));\n }));\n}\n\n/* Accepts locally generated Mutations and commit them to storage. */\n/**\n * Acknowledges the given batch.\n *\n * On the happy path when a batch is acknowledged, the local store will\n *\n * + remove the batch from the mutation queue;\n * + apply the changes to the remote document cache;\n * + recalculate the latency compensated view implied by those changes (there\n * may be mutations in the queue that affect the documents but haven't been\n * acknowledged yet); and\n * + give the changed documents back the sync engine\n *\n * @returns The resulting (modified) documents.\n */\nfunction ru(t, e) {\n const n = L(t);\n return n.persistence.runTransaction(\"Acknowledge batch\", \"readwrite-primary\", (t => {\n const s = e.batch.keys(), i = n.Zi.newChangeBuffer({\n trackRemovals: !0\n });\n return function(t, e, n, s) {\n const i = n.batch, r = i.keys();\n let o = Rt.resolve();\n return r.forEach((t => {\n o = o.next((() => s.getEntry(e, t))).next((e => {\n const r = n.docVersions.get(t);\n F(null !== r), e.version.compareTo(r) < 0 && (i.applyToRemoteDocument(e, n), e.isValidDocument() && (\n // We use the commitVersion as the readTime rather than the\n // document's updateTime since the updateTime is not advanced\n // for updates that do not modify the underlying document.\n e.setReadTime(n.commitVersion), s.addEntry(e)));\n }));\n })), o.next((() => t.mutationQueue.removeMutationBatch(e, i)));\n }\n /** Returns the local view of the documents affected by a mutation batch. */\n // PORTING NOTE: Multi-Tab only.\n (n, t, e, i).next((() => i.apply(t))).next((() => n.mutationQueue.performConsistencyCheck(t))).next((() => n.documentOverlayCache.removeOverlaysForBatchId(t, s, e.batch.batchId))).next((() => n.localDocuments.recalculateAndSaveOverlaysForDocumentKeys(t, function(t) {\n let e = gs();\n for (let n = 0; n < t.mutationResults.length; ++n) {\n t.mutationResults[n].transformResults.length > 0 && (e = e.add(t.batch.mutations[n].key));\n }\n return e;\n }\n /**\n * Removes mutations from the MutationQueue for the specified batch;\n * LocalDocuments will be recalculated.\n *\n * @returns The resulting modified documents.\n */ (e)))).next((() => n.localDocuments.getDocuments(t, s)));\n }));\n}\n\n/**\n * Returns the last consistent snapshot processed (used by the RemoteStore to\n * determine whether to buffer incoming snapshots from the backend).\n */\nfunction ou(t) {\n const e = L(t);\n return e.persistence.runTransaction(\"Get last remote snapshot version\", \"readonly\", (t => e.Bs.getLastRemoteSnapshotVersion(t)));\n}\n\n/**\n * Updates the \"ground-state\" (remote) documents. We assume that the remote\n * event reflects any write batches that have been acknowledged or rejected\n * (i.e. we do not re-apply local mutations to updates from this event).\n *\n * LocalDocuments are re-calculated if there are remaining mutations in the\n * queue.\n */ function uu(t, e) {\n const n = L(t), s = e.snapshotVersion;\n let i = n.Ji;\n return n.persistence.runTransaction(\"Apply remote event\", \"readwrite-primary\", (t => {\n const r = n.Zi.newChangeBuffer({\n trackRemovals: !0\n });\n // Reset newTargetDataByTargetMap in case this transaction gets re-run.\n i = n.Ji;\n const o = [];\n e.targetChanges.forEach(((r, u) => {\n const c = i.get(u);\n if (!c) return;\n // Only update the remote keys if the target is still active. This\n // ensures that we can persist the updated target data along with\n // the updated assignment.\n o.push(n.Bs.removeMatchingKeys(t, r.removedDocuments, u).next((() => n.Bs.addMatchingKeys(t, r.addedDocuments, u))));\n let a = c.withSequenceNumber(t.currentSequenceNumber);\n null !== e.targetMismatches.get(u) ? a = a.withResumeToken(Ve.EMPTY_BYTE_STRING, rt.min()).withLastLimboFreeSnapshotVersion(rt.min()) : r.resumeToken.approximateByteSize() > 0 && (a = a.withResumeToken(r.resumeToken, s)), \n i = i.insert(u, a), \n // Update the target data if there are target changes (or if\n // sufficient time has passed since the last update).\n /**\n * Returns true if the newTargetData should be persisted during an update of\n * an active target. TargetData should always be persisted when a target is\n * being released and should not call this function.\n *\n * While the target is active, TargetData updates can be omitted when nothing\n * about the target has changed except metadata like the resume token or\n * snapshot version. Occasionally it's worth the extra write to prevent these\n * values from getting too stale after a crash, but this doesn't have to be\n * too frequent.\n */\n function(t, e, n) {\n // Always persist target data if we don't already have a resume token.\n if (0 === t.resumeToken.approximateByteSize()) return !0;\n // Don't allow resume token changes to be buffered indefinitely. This\n // allows us to be reasonably up-to-date after a crash and avoids needing\n // to loop over all active queries on shutdown. Especially in the browser\n // we may not get time to do anything interesting while the current tab is\n // closing.\n if (e.snapshotVersion.toMicroseconds() - t.snapshotVersion.toMicroseconds() >= 3e8) return !0;\n // Otherwise if the only thing that has changed about a target is its resume\n // token it's not worth persisting. Note that the RemoteStore keeps an\n // in-memory view of the currently active targets which includes the current\n // resume token, so stream failure or user changes will still use an\n // up-to-date resume token regardless of what we do here.\n return n.addedDocuments.size + n.modifiedDocuments.size + n.removedDocuments.size > 0;\n }\n /**\n * Notifies local store of the changed views to locally pin documents.\n */ (c, a, r) && o.push(n.Bs.updateTargetData(t, a));\n }));\n let u = cs(), c = gs();\n // HACK: The only reason we allow a null snapshot version is so that we\n // can synthesize remote events when we get permission denied errors while\n // trying to resolve the state of a locally cached document that is in\n // limbo.\n if (e.documentUpdates.forEach((s => {\n e.resolvedLimboDocuments.has(s) && o.push(n.persistence.referenceDelegate.updateLimboDocument(t, s));\n })), \n // Each loop iteration only affects its \"own\" doc, so it's safe to get all\n // the remote documents in advance in a single call.\n o.push(cu(t, r, e.documentUpdates).next((t => {\n u = t.nr, c = t.sr;\n }))), !s.isEqual(rt.min())) {\n const e = n.Bs.getLastRemoteSnapshotVersion(t).next((e => n.Bs.setTargetsMetadata(t, t.currentSequenceNumber, s)));\n o.push(e);\n }\n return Rt.waitFor(o).next((() => r.apply(t))).next((() => n.localDocuments.getLocalViewOfDocuments(t, u, c))).next((() => u));\n })).then((t => (n.Ji = i, t)));\n}\n\n/**\n * Populates document change buffer with documents from backend or a bundle.\n * Returns the document changes resulting from applying those documents, and\n * also a set of documents whose existence state are changed as a result.\n *\n * @param txn - Transaction to use to read existing documents from storage.\n * @param documentBuffer - Document buffer to collect the resulted changes to be\n * applied to storage.\n * @param documents - Documents to be applied.\n */ function cu(t, e, n) {\n let s = gs(), i = gs();\n return n.forEach((t => s = s.add(t))), e.getEntries(t, s).next((t => {\n let s = cs();\n return n.forEach(((n, r) => {\n const o = t.get(n);\n // Check if see if there is a existence state change for this document.\n r.isFoundDocument() !== o.isFoundDocument() && (i = i.add(n)), \n // Note: The order of the steps below is important, since we want\n // to ensure that rejected limbo resolutions (which fabricate\n // NoDocuments with SnapshotVersion.min()) never add documents to\n // cache.\n r.isNoDocument() && r.version.isEqual(rt.min()) ? (\n // NoDocuments with SnapshotVersion.min() are used in manufactured\n // events. We remove these documents from cache since we lost\n // access.\n e.removeEntry(n, r.readTime), s = s.insert(n, r)) : !o.isValidDocument() || r.version.compareTo(o.version) > 0 || 0 === r.version.compareTo(o.version) && o.hasPendingWrites ? (e.addEntry(r), \n s = s.insert(n, r)) : N(\"LocalStore\", \"Ignoring outdated watch update for \", n, \". Current version:\", o.version, \" Watch version:\", r.version);\n })), {\n nr: s,\n sr: i\n };\n }));\n}\n\n/**\n * Gets the mutation batch after the passed in batchId in the mutation queue\n * or null if empty.\n * @param afterBatchId - If provided, the batch to search after.\n * @returns The next mutation or null if there wasn't one.\n */\nfunction au(t, e) {\n const n = L(t);\n return n.persistence.runTransaction(\"Get next mutation batch\", \"readonly\", (t => (void 0 === e && (e = -1), \n n.mutationQueue.getNextMutationBatchAfterBatchId(t, e))));\n}\n\n/**\n * Reads the current value of a Document with a given key or null if not\n * found - used for testing.\n */\n/**\n * Assigns the given target an internal ID so that its results can be pinned so\n * they don't get GC'd. A target must be allocated in the local store before\n * the store can be used to manage its view.\n *\n * Allocating an already allocated `Target` will return the existing `TargetData`\n * for that `Target`.\n */\nfunction hu(t, e) {\n const n = L(t);\n return n.persistence.runTransaction(\"Allocate target\", \"readwrite\", (t => {\n let s;\n return n.Bs.getTargetData(t, e).next((i => i ? (\n // This target has been listened to previously, so reuse the\n // previous targetID.\n // TODO(mcg): freshen last accessed date?\n s = i, Rt.resolve(s)) : n.Bs.allocateTargetId(t).next((i => (s = new cr(e, i, \"TargetPurposeListen\" /* TargetPurpose.Listen */ , t.currentSequenceNumber), \n n.Bs.addTargetData(t, s).next((() => s)))))));\n })).then((t => {\n // If Multi-Tab is enabled, the existing target data may be newer than\n // the in-memory data\n const s = n.Ji.get(t.targetId);\n return (null === s || t.snapshotVersion.compareTo(s.snapshotVersion) > 0) && (n.Ji = n.Ji.insert(t.targetId, t), \n n.Yi.set(e, t.targetId)), t;\n }));\n}\n\n/**\n * Returns the TargetData as seen by the LocalStore, including updates that may\n * have not yet been persisted to the TargetCache.\n */\n// Visible for testing.\n/**\n * Unpins all the documents associated with the given target. If\n * `keepPersistedTargetData` is set to false and Eager GC enabled, the method\n * directly removes the associated target data from the target cache.\n *\n * Releasing a non-existing `Target` is a no-op.\n */\n// PORTING NOTE: `keepPersistedTargetData` is multi-tab only.\nasync function lu(t, e, n) {\n const s = L(t), i = s.Ji.get(e), r = n ? \"readwrite\" : \"readwrite-primary\";\n try {\n n || await s.persistence.runTransaction(\"Release target\", r, (t => s.persistence.referenceDelegate.removeTarget(t, i)));\n } catch (t) {\n if (!Dt(t)) throw t;\n // All `releaseTarget` does is record the final metadata state for the\n // target, but we've been recording this periodically during target\n // activity. If we lose this write this could cause a very slight\n // difference in the order of target deletion during GC, but we\n // don't define exact LRU semantics so this is acceptable.\n N(\"LocalStore\", `Failed to update sequence numbers for target ${e}: ${t}`);\n }\n s.Ji = s.Ji.remove(e), s.Yi.delete(i.target);\n}\n\n/**\n * Runs the specified query against the local store and returns the results,\n * potentially taking advantage of query data from previous executions (such\n * as the set of remote keys).\n *\n * @param usePreviousResults - Whether results from previous executions can\n * be used to optimize this query execution.\n */ function fu(t, e, n) {\n const s = L(t);\n let i = rt.min(), r = gs();\n return s.persistence.runTransaction(\"Execute query\", \"readonly\", (t => function(t, e, n) {\n const s = L(t), i = s.Yi.get(n);\n return void 0 !== i ? Rt.resolve(s.Ji.get(i)) : s.Bs.getTargetData(e, n);\n }(s, t, Jn(e)).next((e => {\n if (e) return i = e.lastLimboFreeSnapshotVersion, s.Bs.getMatchingKeysForTargetId(t, e.targetId).next((t => {\n r = t;\n }));\n })).next((() => s.Hi.getDocumentsMatchingQuery(t, e, n ? i : rt.min(), n ? r : gs()))).next((t => (_u(s, ss(e), t), \n {\n documents: t,\n ir: r\n })))));\n}\n\n// PORTING NOTE: Multi-Tab only.\nfunction du(t, e) {\n const n = L(t), s = L(n.Bs), i = n.Ji.get(e);\n return i ? Promise.resolve(i.target) : n.persistence.runTransaction(\"Get target data\", \"readonly\", (t => s.le(t, e).next((t => t ? t.target : null))));\n}\n\n/**\n * Returns the set of documents that have been updated since the last call.\n * If this is the first call, returns the set of changes since client\n * initialization. Further invocations will return document that have changed\n * since the prior call.\n */\n// PORTING NOTE: Multi-Tab only.\nfunction wu(t, e) {\n const n = L(t), s = n.Xi.get(e) || rt.min();\n // Get the current maximum read time for the collection. This should always\n // exist, but to reduce the chance for regressions we default to\n // SnapshotVersion.Min()\n // TODO(indexing): Consider removing the default value.\n return n.persistence.runTransaction(\"Get new document changes\", \"readonly\", (t => n.Zi.getAllFromCollectionGroup(t, e, yt(s, -1), \n /* limit= */ Number.MAX_SAFE_INTEGER))).then((t => (_u(n, e, t), t)));\n}\n\n/** Sets the collection group's maximum read time from the given documents. */\n// PORTING NOTE: Multi-Tab only.\nfunction _u(t, e, n) {\n let s = t.Xi.get(e) || rt.min();\n n.forEach(((t, e) => {\n e.readTime.compareTo(s) > 0 && (s = e.readTime);\n })), t.Xi.set(e, s);\n}\n\n/**\n * Creates a new target using the given bundle name, which will be used to\n * hold the keys of all documents from the bundle in query-document mappings.\n * This ensures that the loaded documents do not get garbage collected\n * right away.\n */\n/**\n * Applies the documents from a bundle to the \"ground-state\" (remote)\n * documents.\n *\n * LocalDocuments are re-calculated if there are remaining mutations in the\n * queue.\n */\nasync function mu(t, e, n, s) {\n const i = L(t);\n let r = gs(), o = cs();\n for (const t of n) {\n const n = e.rr(t.metadata.name);\n t.document && (r = r.add(n));\n const s = e.ur(t);\n s.setReadTime(e.cr(t.metadata.readTime)), o = o.insert(n, s);\n }\n const u = i.Zi.newChangeBuffer({\n trackRemovals: !0\n }), c = await hu(i, function(t) {\n // It is OK that the path used for the query is not valid, because this will\n // not be read and queried.\n return Jn(Gn(ut.fromString(`__bundle__/docs/${t}`)));\n }(s));\n // Allocates a target to hold all document keys from the bundle, such that\n // they will not get garbage collected right away.\n return i.persistence.runTransaction(\"Apply bundle documents\", \"readwrite\", (t => cu(t, u, o).next((e => (u.apply(t), \n e))).next((e => i.Bs.removeMatchingKeysForTargetId(t, c.targetId).next((() => i.Bs.addMatchingKeys(t, r, c.targetId))).next((() => i.localDocuments.getLocalViewOfDocuments(t, e.nr, e.sr))).next((() => e.nr))))));\n}\n\n/**\n * Returns a promise of a boolean to indicate if the given bundle has already\n * been loaded and the create time is newer than the current loading bundle.\n */\n/**\n * Saves the given `NamedQuery` to local persistence.\n */\nasync function gu(t, e, n = gs()) {\n // Allocate a target for the named query such that it can be resumed\n // from associated read time if users use it to listen.\n // NOTE: this also means if no corresponding target exists, the new target\n // will remain active and will not get collected, unless users happen to\n // unlisten the query somehow.\n const s = await hu(t, Jn(yr(e.bundledQuery))), i = L(t);\n return i.persistence.runTransaction(\"Save named query\", \"readwrite\", (t => {\n const r = Ni(e.readTime);\n // Simply save the query itself if it is older than what the SDK already\n // has.\n if (s.snapshotVersion.compareTo(r) >= 0) return i.qs.saveNamedQuery(t, e);\n // Update existing target data because the query from the bundle is newer.\n const o = s.withResumeToken(Ve.EMPTY_BYTE_STRING, r);\n return i.Ji = i.Ji.insert(o.targetId, o), i.Bs.updateTargetData(t, o).next((() => i.Bs.removeMatchingKeysForTargetId(t, s.targetId))).next((() => i.Bs.addMatchingKeys(t, n, s.targetId))).next((() => i.qs.saveNamedQuery(t, e)));\n }));\n}\n\n/** Assembles the key for a client state in WebStorage */\nfunction yu(t, e) {\n return `firestore_clients_${t}_${e}`;\n}\n\n// The format of the WebStorage key that stores the mutation state is:\n// firestore_mutations__\n// (for unauthenticated users)\n// or: firestore_mutations___\n\n// 'user_uid' is last to avoid needing to escape '_' characters that it might\n// contain.\n/** Assembles the key for a mutation batch in WebStorage */\nfunction pu(t, e, n) {\n let s = `firestore_mutations_${t}_${n}`;\n return e.isAuthenticated() && (s += `_${e.uid}`), s;\n}\n\n// The format of the WebStorage key that stores a query target's metadata is:\n// firestore_targets__\n/** Assembles the key for a query state in WebStorage */\nfunction Iu(t, e) {\n return `firestore_targets_${t}_${e}`;\n}\n\n// The WebStorage prefix that stores the primary tab's online state. The\n// format of the key is:\n// firestore_online_state_\n/**\n * Holds the state of a mutation batch, including its user ID, batch ID and\n * whether the batch is 'pending', 'acknowledged' or 'rejected'.\n */\n// Visible for testing\nclass Tu {\n constructor(t, e, n, s) {\n this.user = t, this.batchId = e, this.state = n, this.error = s;\n }\n /**\n * Parses a MutationMetadata from its JSON representation in WebStorage.\n * Logs a warning and returns null if the format of the data is not valid.\n */ static ar(t, e, n) {\n const s = JSON.parse(n);\n let i, r = \"object\" == typeof s && -1 !== [ \"pending\", \"acknowledged\", \"rejected\" ].indexOf(s.state) && (void 0 === s.error || \"object\" == typeof s.error);\n return r && s.error && (r = \"string\" == typeof s.error.message && \"string\" == typeof s.error.code, \n r && (i = new U(s.error.code, s.error.message))), r ? new Tu(t, e, s.state, i) : (k(\"SharedClientState\", `Failed to parse mutation state for ID '${e}': ${n}`), \n null);\n }\n hr() {\n const t = {\n state: this.state,\n updateTimeMs: Date.now()\n };\n return this.error && (t.error = {\n code: this.error.code,\n message: this.error.message\n }), JSON.stringify(t);\n }\n}\n\n/**\n * Holds the state of a query target, including its target ID and whether the\n * target is 'not-current', 'current' or 'rejected'.\n */\n// Visible for testing\nclass Eu {\n constructor(t, e, n) {\n this.targetId = t, this.state = e, this.error = n;\n }\n /**\n * Parses a QueryTargetMetadata from its JSON representation in WebStorage.\n * Logs a warning and returns null if the format of the data is not valid.\n */ static ar(t, e) {\n const n = JSON.parse(e);\n let s, i = \"object\" == typeof n && -1 !== [ \"not-current\", \"current\", \"rejected\" ].indexOf(n.state) && (void 0 === n.error || \"object\" == typeof n.error);\n return i && n.error && (i = \"string\" == typeof n.error.message && \"string\" == typeof n.error.code, \n i && (s = new U(n.error.code, n.error.message))), i ? new Eu(t, n.state, s) : (k(\"SharedClientState\", `Failed to parse target state for ID '${t}': ${e}`), \n null);\n }\n hr() {\n const t = {\n state: this.state,\n updateTimeMs: Date.now()\n };\n return this.error && (t.error = {\n code: this.error.code,\n message: this.error.message\n }), JSON.stringify(t);\n }\n}\n\n/**\n * This class represents the immutable ClientState for a client read from\n * WebStorage, containing the list of active query targets.\n */ class Au {\n constructor(t, e) {\n this.clientId = t, this.activeTargetIds = e;\n }\n /**\n * Parses a RemoteClientState from the JSON representation in WebStorage.\n * Logs a warning and returns null if the format of the data is not valid.\n */ static ar(t, e) {\n const n = JSON.parse(e);\n let s = \"object\" == typeof n && n.activeTargetIds instanceof Array, i = ps();\n for (let t = 0; s && t < n.activeTargetIds.length; ++t) s = Lt(n.activeTargetIds[t]), \n i = i.add(n.activeTargetIds[t]);\n return s ? new Au(t, i) : (k(\"SharedClientState\", `Failed to parse client data for instance '${t}': ${e}`), \n null);\n }\n}\n\n/**\n * This class represents the online state for all clients participating in\n * multi-tab. The online state is only written to by the primary client, and\n * used in secondary clients to update their query views.\n */ class vu {\n constructor(t, e) {\n this.clientId = t, this.onlineState = e;\n }\n /**\n * Parses a SharedOnlineState from its JSON representation in WebStorage.\n * Logs a warning and returns null if the format of the data is not valid.\n */ static ar(t) {\n const e = JSON.parse(t);\n return \"object\" == typeof e && -1 !== [ \"Unknown\", \"Online\", \"Offline\" ].indexOf(e.onlineState) && \"string\" == typeof e.clientId ? new vu(e.clientId, e.onlineState) : (k(\"SharedClientState\", `Failed to parse online state: ${t}`), \n null);\n }\n}\n\n/**\n * Metadata state of the local client. Unlike `RemoteClientState`, this class is\n * mutable and keeps track of all pending mutations, which allows us to\n * update the range of pending mutation batch IDs as new mutations are added or\n * removed.\n *\n * The data in `LocalClientState` is not read from WebStorage and instead\n * updated via its instance methods. The updated state can be serialized via\n * `toWebStorageJSON()`.\n */\n// Visible for testing.\nclass Ru {\n constructor() {\n this.activeTargetIds = ps();\n }\n lr(t) {\n this.activeTargetIds = this.activeTargetIds.add(t);\n }\n dr(t) {\n this.activeTargetIds = this.activeTargetIds.delete(t);\n }\n /**\n * Converts this entry into a JSON-encoded format we can use for WebStorage.\n * Does not encode `clientId` as it is part of the key in WebStorage.\n */ hr() {\n const t = {\n activeTargetIds: this.activeTargetIds.toArray(),\n updateTimeMs: Date.now()\n };\n return JSON.stringify(t);\n }\n}\n\n/**\n * `WebStorageSharedClientState` uses WebStorage (window.localStorage) as the\n * backing store for the SharedClientState. It keeps track of all active\n * clients and supports modifications of the local client's data.\n */ class Pu {\n constructor(t, e, n, s, i) {\n this.window = t, this.ii = e, this.persistenceKey = n, this.wr = s, this.syncEngine = null, \n this.onlineStateHandler = null, this.sequenceNumberHandler = null, this._r = this.mr.bind(this), \n this.gr = new pe(et), this.started = !1, \n /**\n * Captures WebStorage events that occur before `start()` is called. These\n * events are replayed once `WebStorageSharedClientState` is started.\n */\n this.yr = [];\n // Escape the special characters mentioned here:\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions\n const r = n.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n this.storage = this.window.localStorage, this.currentUser = i, this.pr = yu(this.persistenceKey, this.wr), \n this.Ir = \n /** Assembles the key for the current sequence number. */\n function(t) {\n return `firestore_sequence_number_${t}`;\n }\n /**\n * @license\n * Copyright 2018 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */ (this.persistenceKey), this.gr = this.gr.insert(this.wr, new Ru), this.Tr = new RegExp(`^firestore_clients_${r}_([^_]*)$`), \n this.Er = new RegExp(`^firestore_mutations_${r}_(\\\\d+)(?:_(.*))?$`), this.Ar = new RegExp(`^firestore_targets_${r}_(\\\\d+)$`), \n this.vr = \n /** Assembles the key for the online state of the primary tab. */\n function(t) {\n return `firestore_online_state_${t}`;\n }\n // The WebStorage prefix that plays as a event to indicate the remote documents\n // might have changed due to some secondary tabs loading a bundle.\n // format of the key is:\n // firestore_bundle_loaded_v2_\n // The version ending with \"v2\" stores the list of modified collection groups.\n (this.persistenceKey), this.Rr = function(t) {\n return `firestore_bundle_loaded_v2_${t}`;\n }\n // The WebStorage key prefix for the key that stores the last sequence number allocated. The key\n // looks like 'firestore_sequence_number_'.\n (this.persistenceKey), \n // Rather than adding the storage observer during start(), we add the\n // storage observer during initialization. This ensures that we collect\n // events before other components populate their initial state (during their\n // respective start() calls). Otherwise, we might for example miss a\n // mutation that is added after LocalStore's start() processed the existing\n // mutations but before we observe WebStorage events.\n this.window.addEventListener(\"storage\", this._r);\n }\n /** Returns 'true' if WebStorage is available in the current environment. */ static D(t) {\n return !(!t || !t.localStorage);\n }\n async start() {\n // Retrieve the list of existing clients to backfill the data in\n // SharedClientState.\n const t = await this.syncEngine.$i();\n for (const e of t) {\n if (e === this.wr) continue;\n const t = this.getItem(yu(this.persistenceKey, e));\n if (t) {\n const n = Au.ar(e, t);\n n && (this.gr = this.gr.insert(n.clientId, n));\n }\n }\n this.Pr();\n // Check if there is an existing online state and call the callback handler\n // if applicable.\n const e = this.storage.getItem(this.vr);\n if (e) {\n const t = this.br(e);\n t && this.Vr(t);\n }\n for (const t of this.yr) this.mr(t);\n this.yr = [], \n // Register a window unload hook to remove the client metadata entry from\n // WebStorage even if `shutdown()` was not called.\n this.window.addEventListener(\"pagehide\", (() => this.shutdown())), this.started = !0;\n }\n writeSequenceNumber(t) {\n this.setItem(this.Ir, JSON.stringify(t));\n }\n getAllActiveQueryTargets() {\n return this.Sr(this.gr);\n }\n isActiveQueryTarget(t) {\n let e = !1;\n return this.gr.forEach(((n, s) => {\n s.activeTargetIds.has(t) && (e = !0);\n })), e;\n }\n addPendingMutation(t) {\n this.Dr(t, \"pending\");\n }\n updateMutationState(t, e, n) {\n this.Dr(t, e, n), \n // Once a final mutation result is observed by other clients, they no longer\n // access the mutation's metadata entry. Since WebStorage replays events\n // in order, it is safe to delete the entry right after updating it.\n this.Cr(t);\n }\n addLocalQueryTarget(t) {\n let e = \"not-current\";\n // Lookup an existing query state if the target ID was already registered\n // by another tab\n if (this.isActiveQueryTarget(t)) {\n const n = this.storage.getItem(Iu(this.persistenceKey, t));\n if (n) {\n const s = Eu.ar(t, n);\n s && (e = s.state);\n }\n }\n return this.Nr.lr(t), this.Pr(), e;\n }\n removeLocalQueryTarget(t) {\n this.Nr.dr(t), this.Pr();\n }\n isLocalQueryTarget(t) {\n return this.Nr.activeTargetIds.has(t);\n }\n clearQueryState(t) {\n this.removeItem(Iu(this.persistenceKey, t));\n }\n updateQueryState(t, e, n) {\n this.kr(t, e, n);\n }\n handleUserChange(t, e, n) {\n e.forEach((t => {\n this.Cr(t);\n })), this.currentUser = t, n.forEach((t => {\n this.addPendingMutation(t);\n }));\n }\n setOnlineState(t) {\n this.Mr(t);\n }\n notifyBundleLoaded(t) {\n this.$r(t);\n }\n shutdown() {\n this.started && (this.window.removeEventListener(\"storage\", this._r), this.removeItem(this.pr), \n this.started = !1);\n }\n getItem(t) {\n const e = this.storage.getItem(t);\n return N(\"SharedClientState\", \"READ\", t, e), e;\n }\n setItem(t, e) {\n N(\"SharedClientState\", \"SET\", t, e), this.storage.setItem(t, e);\n }\n removeItem(t) {\n N(\"SharedClientState\", \"REMOVE\", t), this.storage.removeItem(t);\n }\n mr(t) {\n // Note: The function is typed to take Event to be interface-compatible with\n // `Window.addEventListener`.\n const e = t;\n if (e.storageArea === this.storage) {\n if (N(\"SharedClientState\", \"EVENT\", e.key, e.newValue), e.key === this.pr) return void k(\"Received WebStorage notification for local change. Another client might have garbage-collected our state\");\n this.ii.enqueueRetryable((async () => {\n if (this.started) {\n if (null !== e.key) if (this.Tr.test(e.key)) {\n if (null == e.newValue) {\n const t = this.Or(e.key);\n return this.Fr(t, null);\n }\n {\n const t = this.Br(e.key, e.newValue);\n if (t) return this.Fr(t.clientId, t);\n }\n } else if (this.Er.test(e.key)) {\n if (null !== e.newValue) {\n const t = this.Lr(e.key, e.newValue);\n if (t) return this.qr(t);\n }\n } else if (this.Ar.test(e.key)) {\n if (null !== e.newValue) {\n const t = this.Ur(e.key, e.newValue);\n if (t) return this.Kr(t);\n }\n } else if (e.key === this.vr) {\n if (null !== e.newValue) {\n const t = this.br(e.newValue);\n if (t) return this.Vr(t);\n }\n } else if (e.key === this.Ir) {\n const t = function(t) {\n let e = Ot.ct;\n if (null != t) try {\n const n = JSON.parse(t);\n F(\"number\" == typeof n), e = n;\n } catch (t) {\n k(\"SharedClientState\", \"Failed to read sequence number from WebStorage\", t);\n }\n return e;\n }\n /**\n * `MemorySharedClientState` is a simple implementation of SharedClientState for\n * clients using memory persistence. The state in this class remains fully\n * isolated and no synchronization is performed.\n */ (e.newValue);\n t !== Ot.ct && this.sequenceNumberHandler(t);\n } else if (e.key === this.Rr) {\n const t = this.Gr(e.newValue);\n await Promise.all(t.map((t => this.syncEngine.Qr(t))));\n }\n } else this.yr.push(e);\n }));\n }\n }\n get Nr() {\n return this.gr.get(this.wr);\n }\n Pr() {\n this.setItem(this.pr, this.Nr.hr());\n }\n Dr(t, e, n) {\n const s = new Tu(this.currentUser, t, e, n), i = pu(this.persistenceKey, this.currentUser, t);\n this.setItem(i, s.hr());\n }\n Cr(t) {\n const e = pu(this.persistenceKey, this.currentUser, t);\n this.removeItem(e);\n }\n Mr(t) {\n const e = {\n clientId: this.wr,\n onlineState: t\n };\n this.storage.setItem(this.vr, JSON.stringify(e));\n }\n kr(t, e, n) {\n const s = Iu(this.persistenceKey, t), i = new Eu(t, e, n);\n this.setItem(s, i.hr());\n }\n $r(t) {\n const e = JSON.stringify(Array.from(t));\n this.setItem(this.Rr, e);\n }\n /**\n * Parses a client state key in WebStorage. Returns null if the key does not\n * match the expected key format.\n */ Or(t) {\n const e = this.Tr.exec(t);\n return e ? e[1] : null;\n }\n /**\n * Parses a client state in WebStorage. Returns 'null' if the value could not\n * be parsed.\n */ Br(t, e) {\n const n = this.Or(t);\n return Au.ar(n, e);\n }\n /**\n * Parses a mutation batch state in WebStorage. Returns 'null' if the value\n * could not be parsed.\n */ Lr(t, e) {\n const n = this.Er.exec(t), s = Number(n[1]), i = void 0 !== n[2] ? n[2] : null;\n return Tu.ar(new V(i), s, e);\n }\n /**\n * Parses a query target state from WebStorage. Returns 'null' if the value\n * could not be parsed.\n */ Ur(t, e) {\n const n = this.Ar.exec(t), s = Number(n[1]);\n return Eu.ar(s, e);\n }\n /**\n * Parses an online state from WebStorage. Returns 'null' if the value\n * could not be parsed.\n */ br(t) {\n return vu.ar(t);\n }\n Gr(t) {\n return JSON.parse(t);\n }\n async qr(t) {\n if (t.user.uid === this.currentUser.uid) return this.syncEngine.jr(t.batchId, t.state, t.error);\n N(\"SharedClientState\", `Ignoring mutation for non-active user ${t.user.uid}`);\n }\n Kr(t) {\n return this.syncEngine.zr(t.targetId, t.state, t.error);\n }\n Fr(t, e) {\n const n = e ? this.gr.insert(t, e) : this.gr.remove(t), s = this.Sr(this.gr), i = this.Sr(n), r = [], o = [];\n return i.forEach((t => {\n s.has(t) || r.push(t);\n })), s.forEach((t => {\n i.has(t) || o.push(t);\n })), this.syncEngine.Wr(r, o).then((() => {\n this.gr = n;\n }));\n }\n Vr(t) {\n // We check whether the client that wrote this online state is still active\n // by comparing its client ID to the list of clients kept active in\n // IndexedDb. If a client does not update their IndexedDb client state\n // within 5 seconds, it is considered inactive and we don't emit an online\n // state event.\n this.gr.get(t.clientId) && this.onlineStateHandler(t.onlineState);\n }\n Sr(t) {\n let e = ps();\n return t.forEach(((t, n) => {\n e = e.unionWith(n.activeTargetIds);\n })), e;\n }\n}\n\nclass bu {\n constructor() {\n this.Hr = new Ru, this.Jr = {}, this.onlineStateHandler = null, this.sequenceNumberHandler = null;\n }\n addPendingMutation(t) {\n // No op.\n }\n updateMutationState(t, e, n) {\n // No op.\n }\n addLocalQueryTarget(t) {\n return this.Hr.lr(t), this.Jr[t] || \"not-current\";\n }\n updateQueryState(t, e, n) {\n this.Jr[t] = e;\n }\n removeLocalQueryTarget(t) {\n this.Hr.dr(t);\n }\n isLocalQueryTarget(t) {\n return this.Hr.activeTargetIds.has(t);\n }\n clearQueryState(t) {\n delete this.Jr[t];\n }\n getAllActiveQueryTargets() {\n return this.Hr.activeTargetIds;\n }\n isActiveQueryTarget(t) {\n return this.Hr.activeTargetIds.has(t);\n }\n start() {\n return this.Hr = new Ru, Promise.resolve();\n }\n handleUserChange(t, e, n) {\n // No op.\n }\n setOnlineState(t) {\n // No op.\n }\n shutdown() {}\n writeSequenceNumber(t) {}\n notifyBundleLoaded(t) {\n // No op.\n }\n}\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */ class Vu {\n Yr(t) {\n // No-op.\n }\n shutdown() {\n // No-op.\n }\n}\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// References to `window` are guarded by BrowserConnectivityMonitor.isAvailable()\n/* eslint-disable no-restricted-globals */\n/**\n * Browser implementation of ConnectivityMonitor.\n */\nclass Su {\n constructor() {\n this.Xr = () => this.Zr(), this.eo = () => this.no(), this.so = [], this.io();\n }\n Yr(t) {\n this.so.push(t);\n }\n shutdown() {\n window.removeEventListener(\"online\", this.Xr), window.removeEventListener(\"offline\", this.eo);\n }\n io() {\n window.addEventListener(\"online\", this.Xr), window.addEventListener(\"offline\", this.eo);\n }\n Zr() {\n N(\"ConnectivityMonitor\", \"Network connectivity changed: AVAILABLE\");\n for (const t of this.so) t(0 /* NetworkStatus.AVAILABLE */);\n }\n no() {\n N(\"ConnectivityMonitor\", \"Network connectivity changed: UNAVAILABLE\");\n for (const t of this.so) t(1 /* NetworkStatus.UNAVAILABLE */);\n }\n // TODO(chenbrian): Consider passing in window either into this component or\n // here for testing via FakeWindow.\n /** Checks that all used attributes of window are available. */\n static D() {\n return \"undefined\" != typeof window && void 0 !== window.addEventListener && void 0 !== window.removeEventListener;\n }\n}\n\n/**\n * @license\n * Copyright 2023 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * The value returned from the most recent invocation of\n * `generateUniqueDebugId()`, or null if it has never been invoked.\n */ let Du = null;\n\n/**\n * Generates and returns an initial value for `lastUniqueDebugId`.\n *\n * The returned value is randomly selected from a range of integers that are\n * represented as 8 hexadecimal digits. This means that (within reason) any\n * numbers generated by incrementing the returned number by 1 will also be\n * represented by 8 hexadecimal digits. This leads to all \"IDs\" having the same\n * length when converted to a hexadecimal string, making reading logs containing\n * these IDs easier to follow. And since the return value is randomly selected\n * it will help to differentiate between logs from different executions.\n */\n/**\n * Generates and returns a unique ID as a hexadecimal string.\n *\n * The returned ID is intended to be used in debug logging messages to help\n * correlate log messages that may be spatially separated in the logs, but\n * logically related. For example, a network connection could include the same\n * \"debug ID\" string in all of its log messages to help trace a specific\n * connection over time.\n *\n * @return the 10-character generated ID (e.g. \"0xa1b2c3d4\").\n */\nfunction Cu() {\n return null === Du ? Du = 268435456 + Math.round(2147483648 * Math.random()) : Du++, \n \"0x\" + Du.toString(16);\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */ const xu = {\n BatchGetDocuments: \"batchGet\",\n Commit: \"commit\",\n RunQuery: \"runQuery\",\n RunAggregationQuery: \"runAggregationQuery\"\n};\n\n/**\n * Maps RPC names to the corresponding REST endpoint name.\n *\n * We use array notation to avoid mangling.\n */\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Provides a simple helper class that implements the Stream interface to\n * bridge to other implementations that are streams but do not implement the\n * interface. The stream callbacks are invoked with the callOn... methods.\n */\nclass Nu {\n constructor(t) {\n this.ro = t.ro, this.oo = t.oo;\n }\n uo(t) {\n this.co = t;\n }\n ao(t) {\n this.ho = t;\n }\n onMessage(t) {\n this.lo = t;\n }\n close() {\n this.oo();\n }\n send(t) {\n this.ro(t);\n }\n fo() {\n this.co();\n }\n wo(t) {\n this.ho(t);\n }\n _o(t) {\n this.lo(t);\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */ const ku = \"WebChannelConnection\";\n\nclass Mu extends \n/**\n * Base class for all Rest-based connections to the backend (WebChannel and\n * HTTP).\n */\nclass {\n constructor(t) {\n this.databaseInfo = t, this.databaseId = t.databaseId;\n const e = t.ssl ? \"https\" : \"http\";\n this.mo = e + \"://\" + t.host, this.yo = \"projects/\" + this.databaseId.projectId + \"/databases/\" + this.databaseId.database + \"/documents\";\n }\n get po() {\n // Both `invokeRPC()` and `invokeStreamingRPC()` use their `path` arguments to determine\n // where to run the query, and expect the `request` to NOT specify the \"path\".\n return !1;\n }\n Io(t, e, n, s, i) {\n const r = Cu(), o = this.To(t, e);\n N(\"RestConnection\", `Sending RPC '${t}' ${r}:`, o, n);\n const u = {};\n return this.Eo(u, s, i), this.Ao(t, o, u, n).then((e => (N(\"RestConnection\", `Received RPC '${t}' ${r}: `, e), \n e)), (e => {\n throw M(\"RestConnection\", `RPC '${t}' ${r} failed with error: `, e, \"url: \", o, \"request:\", n), \n e;\n }));\n }\n vo(t, e, n, s, i, r) {\n // The REST API automatically aggregates all of the streamed results, so we\n // can just use the normal invoke() method.\n return this.Io(t, e, n, s, i);\n }\n /**\n * Modifies the headers for a request, adding any authorization token if\n * present and any additional headers for the request.\n */ Eo(t, e, n) {\n t[\"X-Goog-Api-Client\"] = \"gl-js/ fire/\" + S, \n // Content-Type: text/plain will avoid preflight requests which might\n // mess with CORS and redirects by proxies. If we add custom headers\n // we will need to change this code to potentially use the $httpOverwrite\n // parameter supported by ESF to avoid triggering preflight requests.\n t[\"Content-Type\"] = \"text/plain\", this.databaseInfo.appId && (t[\"X-Firebase-GMPID\"] = this.databaseInfo.appId), \n e && e.headers.forEach(((e, n) => t[n] = e)), n && n.headers.forEach(((e, n) => t[n] = e));\n }\n To(t, e) {\n const n = xu[t];\n return `${this.mo}/v1/${e}:${n}`;\n }\n} {\n constructor(t) {\n super(t), this.forceLongPolling = t.forceLongPolling, this.autoDetectLongPolling = t.autoDetectLongPolling, \n this.useFetchStreams = t.useFetchStreams, this.longPollingOptions = t.longPollingOptions;\n }\n Ao(t, e, n, s) {\n const i = Cu();\n return new Promise(((r, o) => {\n const u = new XhrIo;\n u.setWithCredentials(!0), u.listenOnce(EventType.COMPLETE, (() => {\n try {\n switch (u.getLastErrorCode()) {\n case ErrorCode.NO_ERROR:\n const e = u.getResponseJson();\n N(ku, `XHR for RPC '${t}' ${i} received:`, JSON.stringify(e)), r(e);\n break;\n\n case ErrorCode.TIMEOUT:\n N(ku, `RPC '${t}' ${i} timed out`), o(new U(q.DEADLINE_EXCEEDED, \"Request time out\"));\n break;\n\n case ErrorCode.HTTP_ERROR:\n const n = u.getStatus();\n if (N(ku, `RPC '${t}' ${i} failed with status:`, n, \"response text:\", u.getResponseText()), \n n > 0) {\n let t = u.getResponseJson();\n Array.isArray(t) && (t = t[0]);\n const e = null == t ? void 0 : t.error;\n if (e && e.status && e.message) {\n const t = function(t) {\n const e = t.toLowerCase().replace(/_/g, \"-\");\n return Object.values(q).indexOf(e) >= 0 ? e : q.UNKNOWN;\n }(e.status);\n o(new U(t, e.message));\n } else o(new U(q.UNKNOWN, \"Server responded with status \" + u.getStatus()));\n } else \n // If we received an HTTP_ERROR but there's no status code,\n // it's most probably a connection issue\n o(new U(q.UNAVAILABLE, \"Connection failed.\"));\n break;\n\n default:\n O();\n }\n } finally {\n N(ku, `RPC '${t}' ${i} completed.`);\n }\n }));\n const c = JSON.stringify(s);\n N(ku, `RPC '${t}' ${i} sending request:`, s), u.send(e, \"POST\", c, n, 15);\n }));\n }\n Ro(t, e, n) {\n const s = Cu(), i = [ this.mo, \"/\", \"google.firestore.v1.Firestore\", \"/\", t, \"/channel\" ], r = createWebChannelTransport(), o = getStatEventTarget(), u = {\n // Required for backend stickiness, routing behavior is based on this\n // parameter.\n httpSessionIdParam: \"gsessionid\",\n initMessageHeaders: {},\n messageUrlParams: {\n // This param is used to improve routing and project isolation by the\n // backend and must be included in every request.\n database: `projects/${this.databaseId.projectId}/databases/${this.databaseId.database}`\n },\n sendRawJson: !0,\n supportsCrossDomainXhr: !0,\n internalChannelParams: {\n // Override the default timeout (randomized between 10-20 seconds) since\n // a large write batch on a slow internet connection may take a long\n // time to send to the backend. Rather than have WebChannel impose a\n // tight timeout which could lead to infinite timeouts and retries, we\n // set it very large (5-10 minutes) and rely on the browser's builtin\n // timeouts to kick in if the request isn't working.\n forwardChannelRequestTimeoutMs: 6e5\n },\n forceLongPolling: this.forceLongPolling,\n detectBufferingProxy: this.autoDetectLongPolling\n }, c = this.longPollingOptions.timeoutSeconds;\n void 0 !== c && (u.longPollingTimeout = Math.round(1e3 * c)), this.useFetchStreams && (u.xmlHttpFactory = new FetchXmlHttpFactory({})), \n this.Eo(u.initMessageHeaders, e, n), \n // Sending the custom headers we just added to request.initMessageHeaders\n // (Authorization, etc.) will trigger the browser to make a CORS preflight\n // request because the XHR will no longer meet the criteria for a \"simple\"\n // CORS request:\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#Simple_requests\n // Therefore to avoid the CORS preflight request (an extra network\n // roundtrip), we use the encodeInitMessageHeaders option to specify that\n // the headers should instead be encoded in the request's POST payload,\n // which is recognized by the webchannel backend.\n u.encodeInitMessageHeaders = !0;\n const a = i.join(\"\");\n N(ku, `Creating RPC '${t}' stream ${s}: ${a}`, u);\n const h = r.createWebChannel(a, u);\n // WebChannel supports sending the first message with the handshake - saving\n // a network round trip. However, it will have to call send in the same\n // JS event loop as open. In order to enforce this, we delay actually\n // opening the WebChannel until send is called. Whether we have called\n // open is tracked with this variable.\n let l = !1, f = !1;\n // A flag to determine whether the stream was closed (by us or through an\n // error/close event) to avoid delivering multiple close events or sending\n // on a closed stream\n const d = new Nu({\n ro: e => {\n f ? N(ku, `Not sending because RPC '${t}' stream ${s} is closed:`, e) : (l || (N(ku, `Opening RPC '${t}' stream ${s} transport.`), \n h.open(), l = !0), N(ku, `RPC '${t}' stream ${s} sending:`, e), h.send(e));\n },\n oo: () => h.close()\n }), w = (t, e, n) => {\n // TODO(dimond): closure typing seems broken because WebChannel does\n // not implement goog.events.Listenable\n t.listen(e, (t => {\n try {\n n(t);\n } catch (t) {\n setTimeout((() => {\n throw t;\n }), 0);\n }\n }));\n };\n // Closure events are guarded and exceptions are swallowed, so catch any\n // exception and rethrow using a setTimeout so they become visible again.\n // Note that eventually this function could go away if we are confident\n // enough the code is exception free.\n return w(h, WebChannel.EventType.OPEN, (() => {\n f || N(ku, `RPC '${t}' stream ${s} transport opened.`);\n })), w(h, WebChannel.EventType.CLOSE, (() => {\n f || (f = !0, N(ku, `RPC '${t}' stream ${s} transport closed`), d.wo());\n })), w(h, WebChannel.EventType.ERROR, (e => {\n f || (f = !0, M(ku, `RPC '${t}' stream ${s} transport errored:`, e), d.wo(new U(q.UNAVAILABLE, \"The operation could not be completed\")));\n })), w(h, WebChannel.EventType.MESSAGE, (e => {\n var n;\n if (!f) {\n const i = e.data[0];\n F(!!i);\n // TODO(b/35143891): There is a bug in One Platform that caused errors\n // (and only errors) to be wrapped in an extra array. To be forward\n // compatible with the bug we need to check either condition. The latter\n // can be removed once the fix has been rolled out.\n // Use any because msgData.error is not typed.\n const r = i, o = r.error || (null === (n = r[0]) || void 0 === n ? void 0 : n.error);\n if (o) {\n N(ku, `RPC '${t}' stream ${s} received error:`, o);\n // error.status will be a string like 'OK' or 'NOT_FOUND'.\n const e = o.status;\n let n = \n /**\n * Maps an error Code from a GRPC status identifier like 'NOT_FOUND'.\n *\n * @returns The Code equivalent to the given status string or undefined if\n * there is no match.\n */\n function(t) {\n // lookup by string\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const e = ii[t];\n if (void 0 !== e) return ui(e);\n }(e), i = o.message;\n void 0 === n && (n = q.INTERNAL, i = \"Unknown error status: \" + e + \" with message \" + o.message), \n // Mark closed so no further events are propagated\n f = !0, d.wo(new U(n, i)), h.close();\n } else N(ku, `RPC '${t}' stream ${s} received:`, i), d._o(i);\n }\n })), w(o, Event.STAT_EVENT, (e => {\n e.stat === Stat.PROXY ? N(ku, `RPC '${t}' stream ${s} detected buffering proxy`) : e.stat === Stat.NOPROXY && N(ku, `RPC '${t}' stream ${s} detected no buffering proxy`);\n })), setTimeout((() => {\n // Technically we could/should wait for the WebChannel opened event,\n // but because we want to send the first message with the WebChannel\n // handshake we pretend the channel opened here (asynchronously), and\n // then delay the actual open until the first message is sent.\n d.fo();\n }), 0), d;\n }\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/** Initializes the WebChannelConnection for the browser. */\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/** The Platform's 'window' implementation or null if not available. */\nfunction $u() {\n // `window` is not always available, e.g. in ReactNative and WebWorkers.\n // eslint-disable-next-line no-restricted-globals\n return \"undefined\" != typeof window ? window : null;\n}\n\n/** The Platform's 'document' implementation or null if not available. */ function Ou() {\n // `document` is not always available, e.g. in ReactNative and WebWorkers.\n // eslint-disable-next-line no-restricted-globals\n return \"undefined\" != typeof document ? document : null;\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */ function Fu(t) {\n return new Vi(t, /* useProto3Json= */ !0);\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A helper for running delayed tasks following an exponential backoff curve\n * between attempts.\n *\n * Each delay is made up of a \"base\" delay which follows the exponential\n * backoff curve, and a +/- 50% \"jitter\" that is calculated and added to the\n * base delay. This prevents clients from accidentally synchronizing their\n * delays causing spikes of load to the backend.\n */\nclass Bu {\n constructor(\n /**\n * The AsyncQueue to run backoff operations on.\n */\n t, \n /**\n * The ID to use when scheduling backoff operations on the AsyncQueue.\n */\n e, \n /**\n * The initial delay (used as the base delay on the first retry attempt).\n * Note that jitter will still be applied, so the actual delay could be as\n * little as 0.5*initialDelayMs.\n */\n n = 1e3\n /**\n * The multiplier to use to determine the extended base delay after each\n * attempt.\n */ , s = 1.5\n /**\n * The maximum base delay after which no further backoff is performed.\n * Note that jitter will still be applied, so the actual delay could be as\n * much as 1.5*maxDelayMs.\n */ , i = 6e4) {\n this.ii = t, this.timerId = e, this.Po = n, this.bo = s, this.Vo = i, this.So = 0, \n this.Do = null, \n /** The last backoff attempt, as epoch milliseconds. */\n this.Co = Date.now(), this.reset();\n }\n /**\n * Resets the backoff delay.\n *\n * The very next backoffAndWait() will have no delay. If it is called again\n * (i.e. due to an error), initialDelayMs (plus jitter) will be used, and\n * subsequent ones will increase according to the backoffFactor.\n */ reset() {\n this.So = 0;\n }\n /**\n * Resets the backoff delay to the maximum delay (e.g. for use after a\n * RESOURCE_EXHAUSTED error).\n */ xo() {\n this.So = this.Vo;\n }\n /**\n * Returns a promise that resolves after currentDelayMs, and increases the\n * delay for any subsequent attempts. If there was a pending backoff operation\n * already, it will be canceled.\n */ No(t) {\n // Cancel any pending backoff operation.\n this.cancel();\n // First schedule using the current base (which may be 0 and should be\n // honored as such).\n const e = Math.floor(this.So + this.ko()), n = Math.max(0, Date.now() - this.Co), s = Math.max(0, e - n);\n // Guard against lastAttemptTime being in the future due to a clock change.\n s > 0 && N(\"ExponentialBackoff\", `Backing off for ${s} ms (base delay: ${this.So} ms, delay with jitter: ${e} ms, last attempt: ${n} ms ago)`), \n this.Do = this.ii.enqueueAfterDelay(this.timerId, s, (() => (this.Co = Date.now(), \n t()))), \n // Apply backoff factor to determine next delay and ensure it is within\n // bounds.\n this.So *= this.bo, this.So < this.Po && (this.So = this.Po), this.So > this.Vo && (this.So = this.Vo);\n }\n Mo() {\n null !== this.Do && (this.Do.skipDelay(), this.Do = null);\n }\n cancel() {\n null !== this.Do && (this.Do.cancel(), this.Do = null);\n }\n /** Returns a random value in the range [-currentBaseMs/2, currentBaseMs/2] */ ko() {\n return (Math.random() - .5) * this.So;\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A PersistentStream is an abstract base class that represents a streaming RPC\n * to the Firestore backend. It's built on top of the connections own support\n * for streaming RPCs, and adds several critical features for our clients:\n *\n * - Exponential backoff on failure\n * - Authentication via CredentialsProvider\n * - Dispatching all callbacks into the shared worker queue\n * - Closing idle streams after 60 seconds of inactivity\n *\n * Subclasses of PersistentStream implement serialization of models to and\n * from the JSON representation of the protocol buffers for a specific\n * streaming RPC.\n *\n * ## Starting and Stopping\n *\n * Streaming RPCs are stateful and need to be start()ed before messages can\n * be sent and received. The PersistentStream will call the onOpen() function\n * of the listener once the stream is ready to accept requests.\n *\n * Should a start() fail, PersistentStream will call the registered onClose()\n * listener with a FirestoreError indicating what went wrong.\n *\n * A PersistentStream can be started and stopped repeatedly.\n *\n * Generic types:\n * SendType: The type of the outgoing message of the underlying\n * connection stream\n * ReceiveType: The type of the incoming message of the underlying\n * connection stream\n * ListenerType: The type of the listener that will be used for callbacks\n */\nclass Lu {\n constructor(t, e, n, s, i, r, o, u) {\n this.ii = t, this.$o = n, this.Oo = s, this.connection = i, this.authCredentialsProvider = r, \n this.appCheckCredentialsProvider = o, this.listener = u, this.state = 0 /* PersistentStreamState.Initial */ , \n /**\n * A close count that's incremented every time the stream is closed; used by\n * getCloseGuardedDispatcher() to invalidate callbacks that happen after\n * close.\n */\n this.Fo = 0, this.Bo = null, this.Lo = null, this.stream = null, this.qo = new Bu(t, e);\n }\n /**\n * Returns true if start() has been called and no error has occurred. True\n * indicates the stream is open or in the process of opening (which\n * encompasses respecting backoff, getting auth tokens, and starting the\n * actual RPC). Use isOpen() to determine if the stream is open and ready for\n * outbound requests.\n */ Uo() {\n return 1 /* PersistentStreamState.Starting */ === this.state || 5 /* PersistentStreamState.Backoff */ === this.state || this.Ko();\n }\n /**\n * Returns true if the underlying RPC is open (the onOpen() listener has been\n * called) and the stream is ready for outbound requests.\n */ Ko() {\n return 2 /* PersistentStreamState.Open */ === this.state || 3 /* PersistentStreamState.Healthy */ === this.state;\n }\n /**\n * Starts the RPC. Only allowed if isStarted() returns false. The stream is\n * not immediately ready for use: onOpen() will be invoked when the RPC is\n * ready for outbound requests, at which point isOpen() will return true.\n *\n * When start returns, isStarted() will return true.\n */ start() {\n 4 /* PersistentStreamState.Error */ !== this.state ? this.auth() : this.Go();\n }\n /**\n * Stops the RPC. This call is idempotent and allowed regardless of the\n * current isStarted() state.\n *\n * When stop returns, isStarted() and isOpen() will both return false.\n */ async stop() {\n this.Uo() && await this.close(0 /* PersistentStreamState.Initial */);\n }\n /**\n * After an error the stream will usually back off on the next attempt to\n * start it. If the error warrants an immediate restart of the stream, the\n * sender can use this to indicate that the receiver should not back off.\n *\n * Each error will call the onClose() listener. That function can decide to\n * inhibit backoff if required.\n */ Qo() {\n this.state = 0 /* PersistentStreamState.Initial */ , this.qo.reset();\n }\n /**\n * Marks this stream as idle. If no further actions are performed on the\n * stream for one minute, the stream will automatically close itself and\n * notify the stream's onClose() handler with Status.OK. The stream will then\n * be in a !isStarted() state, requiring the caller to start the stream again\n * before further use.\n *\n * Only streams that are in state 'Open' can be marked idle, as all other\n * states imply pending network operations.\n */ jo() {\n // Starts the idle time if we are in state 'Open' and are not yet already\n // running a timer (in which case the previous idle timeout still applies).\n this.Ko() && null === this.Bo && (this.Bo = this.ii.enqueueAfterDelay(this.$o, 6e4, (() => this.zo())));\n }\n /** Sends a message to the underlying stream. */ Wo(t) {\n this.Ho(), this.stream.send(t);\n }\n /** Called by the idle timer when the stream should close due to inactivity. */ async zo() {\n if (this.Ko()) \n // When timing out an idle stream there's no reason to force the stream into backoff when\n // it restarts so set the stream state to Initial instead of Error.\n return this.close(0 /* PersistentStreamState.Initial */);\n }\n /** Marks the stream as active again. */ Ho() {\n this.Bo && (this.Bo.cancel(), this.Bo = null);\n }\n /** Cancels the health check delayed operation. */ Jo() {\n this.Lo && (this.Lo.cancel(), this.Lo = null);\n }\n /**\n * Closes the stream and cleans up as necessary:\n *\n * * closes the underlying GRPC stream;\n * * calls the onClose handler with the given 'error';\n * * sets internal stream state to 'finalState';\n * * adjusts the backoff timer based on the error\n *\n * A new stream can be opened by calling start().\n *\n * @param finalState - the intended state of the stream after closing.\n * @param error - the error the connection was closed with.\n */ async close(t, e) {\n // Cancel any outstanding timers (they're guaranteed not to execute).\n this.Ho(), this.Jo(), this.qo.cancel(), \n // Invalidates any stream-related callbacks (e.g. from auth or the\n // underlying stream), guaranteeing they won't execute.\n this.Fo++, 4 /* PersistentStreamState.Error */ !== t ? \n // If this is an intentional close ensure we don't delay our next connection attempt.\n this.qo.reset() : e && e.code === q.RESOURCE_EXHAUSTED ? (\n // Log the error. (Probably either 'quota exceeded' or 'max queue length reached'.)\n k(e.toString()), k(\"Using maximum backoff delay to prevent overloading the backend.\"), \n this.qo.xo()) : e && e.code === q.UNAUTHENTICATED && 3 /* PersistentStreamState.Healthy */ !== this.state && (\n // \"unauthenticated\" error means the token was rejected. This should rarely\n // happen since both Auth and AppCheck ensure a sufficient TTL when we\n // request a token. If a user manually resets their system clock this can\n // fail, however. In this case, we should get a Code.UNAUTHENTICATED error\n // before we received the first message and we need to invalidate the token\n // to ensure that we fetch a new token.\n this.authCredentialsProvider.invalidateToken(), this.appCheckCredentialsProvider.invalidateToken()), \n // Clean up the underlying stream because we are no longer interested in events.\n null !== this.stream && (this.Yo(), this.stream.close(), this.stream = null), \n // This state must be assigned before calling onClose() to allow the callback to\n // inhibit backoff or otherwise manipulate the state in its non-started state.\n this.state = t, \n // Notify the listener that the stream closed.\n await this.listener.ao(e);\n }\n /**\n * Can be overridden to perform additional cleanup before the stream is closed.\n * Calling super.tearDown() is not required.\n */ Yo() {}\n auth() {\n this.state = 1 /* PersistentStreamState.Starting */;\n const t = this.Xo(this.Fo), e = this.Fo;\n // TODO(mikelehen): Just use dispatchIfNotClosed, but see TODO below.\n Promise.all([ this.authCredentialsProvider.getToken(), this.appCheckCredentialsProvider.getToken() ]).then((([t, n]) => {\n // Stream can be stopped while waiting for authentication.\n // TODO(mikelehen): We really should just use dispatchIfNotClosed\n // and let this dispatch onto the queue, but that opened a spec test can\n // of worms that I don't want to deal with in this PR.\n this.Fo === e && \n // Normally we'd have to schedule the callback on the AsyncQueue.\n // However, the following calls are safe to be called outside the\n // AsyncQueue since they don't chain asynchronous calls\n this.Zo(t, n);\n }), (e => {\n t((() => {\n const t = new U(q.UNKNOWN, \"Fetching auth token failed: \" + e.message);\n return this.tu(t);\n }));\n }));\n }\n Zo(t, e) {\n const n = this.Xo(this.Fo);\n this.stream = this.eu(t, e), this.stream.uo((() => {\n n((() => (this.state = 2 /* PersistentStreamState.Open */ , this.Lo = this.ii.enqueueAfterDelay(this.Oo, 1e4, (() => (this.Ko() && (this.state = 3 /* PersistentStreamState.Healthy */), \n Promise.resolve()))), this.listener.uo())));\n })), this.stream.ao((t => {\n n((() => this.tu(t)));\n })), this.stream.onMessage((t => {\n n((() => this.onMessage(t)));\n }));\n }\n Go() {\n this.state = 5 /* PersistentStreamState.Backoff */ , this.qo.No((async () => {\n this.state = 0 /* PersistentStreamState.Initial */ , this.start();\n }));\n }\n // Visible for tests\n tu(t) {\n // In theory the stream could close cleanly, however, in our current model\n // we never expect this to happen because if we stop a stream ourselves,\n // this callback will never be called. To prevent cases where we retry\n // without a backoff accidentally, we set the stream to error in all cases.\n return N(\"PersistentStream\", `close with error: ${t}`), this.stream = null, this.close(4 /* PersistentStreamState.Error */ , t);\n }\n /**\n * Returns a \"dispatcher\" function that dispatches operations onto the\n * AsyncQueue but only runs them if closeCount remains unchanged. This allows\n * us to turn auth / stream callbacks into no-ops if the stream is closed /\n * re-opened, etc.\n */ Xo(t) {\n return e => {\n this.ii.enqueueAndForget((() => this.Fo === t ? e() : (N(\"PersistentStream\", \"stream callback skipped by getCloseGuardedDispatcher.\"), \n Promise.resolve())));\n };\n }\n}\n\n/**\n * A PersistentStream that implements the Listen RPC.\n *\n * Once the Listen stream has called the onOpen() listener, any number of\n * listen() and unlisten() calls can be made to control what changes will be\n * sent from the server for ListenResponses.\n */ class qu extends Lu {\n constructor(t, e, n, s, i, r) {\n super(t, \"listen_stream_connection_backoff\" /* TimerId.ListenStreamConnectionBackoff */ , \"listen_stream_idle\" /* TimerId.ListenStreamIdle */ , \"health_check_timeout\" /* TimerId.HealthCheckTimeout */ , e, n, s, r), \n this.serializer = i;\n }\n eu(t, e) {\n return this.connection.Ro(\"Listen\", t, e);\n }\n onMessage(t) {\n // A successful response means the stream is healthy\n this.qo.reset();\n const e = Qi(this.serializer, t), n = function(t) {\n // We have only reached a consistent snapshot for the entire stream if there\n // is a read_time set and it applies to all targets (i.e. the list of\n // targets is empty). The backend is guaranteed to send such responses.\n if (!(\"targetChange\" in t)) return rt.min();\n const e = t.targetChange;\n return e.targetIds && e.targetIds.length ? rt.min() : e.readTime ? Ni(e.readTime) : rt.min();\n }(t);\n return this.listener.nu(e, n);\n }\n /**\n * Registers interest in the results of the given target. If the target\n * includes a resumeToken it will be included in the request. Results that\n * affect the target will be streamed back as WatchChange messages that\n * reference the targetId.\n */ su(t) {\n const e = {};\n e.database = Li(this.serializer), e.addTarget = function(t, e) {\n let n;\n const s = e.target;\n if (n = Fn(s) ? {\n documents: Hi(t, s)\n } : {\n query: Ji(t, s)\n }, n.targetId = e.targetId, e.resumeToken.approximateByteSize() > 0) {\n n.resumeToken = Ci(t, e.resumeToken);\n const s = Si(t, e.expectedCount);\n null !== s && (n.expectedCount = s);\n } else if (e.snapshotVersion.compareTo(rt.min()) > 0) {\n // TODO(wuandy): Consider removing above check because it is most likely true.\n // Right now, many tests depend on this behaviour though (leaving min() out\n // of serialization).\n n.readTime = Di(t, e.snapshotVersion.toTimestamp());\n const s = Si(t, e.expectedCount);\n null !== s && (n.expectedCount = s);\n }\n return n;\n }(this.serializer, t);\n const n = Xi(this.serializer, t);\n n && (e.labels = n), this.Wo(e);\n }\n /**\n * Unregisters interest in the results of the target associated with the\n * given targetId.\n */ iu(t) {\n const e = {};\n e.database = Li(this.serializer), e.removeTarget = t, this.Wo(e);\n }\n}\n\n/**\n * A Stream that implements the Write RPC.\n *\n * The Write RPC requires the caller to maintain special streamToken\n * state in between calls, to help the server understand which responses the\n * client has processed by the time the next request is made. Every response\n * will contain a streamToken; this value must be passed to the next\n * request.\n *\n * After calling start() on this stream, the next request must be a handshake,\n * containing whatever streamToken is on hand. Once a response to this\n * request is received, all pending mutations may be submitted. When\n * submitting multiple batches of mutations at the same time, it's\n * okay to use the same streamToken for the calls to writeMutations.\n *\n * TODO(b/33271235): Use proto types\n */ class Uu extends Lu {\n constructor(t, e, n, s, i, r) {\n super(t, \"write_stream_connection_backoff\" /* TimerId.WriteStreamConnectionBackoff */ , \"write_stream_idle\" /* TimerId.WriteStreamIdle */ , \"health_check_timeout\" /* TimerId.HealthCheckTimeout */ , e, n, s, r), \n this.serializer = i, this.ru = !1;\n }\n /**\n * Tracks whether or not a handshake has been successfully exchanged and\n * the stream is ready to accept mutations.\n */ get ou() {\n return this.ru;\n }\n // Override of PersistentStream.start\n start() {\n this.ru = !1, this.lastStreamToken = void 0, super.start();\n }\n Yo() {\n this.ru && this.uu([]);\n }\n eu(t, e) {\n return this.connection.Ro(\"Write\", t, e);\n }\n onMessage(t) {\n if (\n // Always capture the last stream token.\n F(!!t.streamToken), this.lastStreamToken = t.streamToken, this.ru) {\n // A successful first write response means the stream is healthy,\n // Note, that we could consider a successful handshake healthy, however,\n // the write itself might be causing an error we want to back off from.\n this.qo.reset();\n const e = Wi(t.writeResults, t.commitTime), n = Ni(t.commitTime);\n return this.listener.cu(n, e);\n }\n // The first response is always the handshake response\n return F(!t.writeResults || 0 === t.writeResults.length), this.ru = !0, this.listener.au();\n }\n /**\n * Sends an initial streamToken to the server, performing the handshake\n * required to make the StreamingWrite RPC work. Subsequent\n * calls should wait until onHandshakeComplete was called.\n */ hu() {\n // TODO(dimond): Support stream resumption. We intentionally do not set the\n // stream token on the handshake, ignoring any stream token we might have.\n const t = {};\n t.database = Li(this.serializer), this.Wo(t);\n }\n /** Sends a group of mutations to the Firestore backend to apply. */ uu(t) {\n const e = {\n streamToken: this.lastStreamToken,\n writes: t.map((t => ji(this.serializer, t)))\n };\n this.Wo(e);\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Datastore and its related methods are a wrapper around the external Google\n * Cloud Datastore grpc API, which provides an interface that is more convenient\n * for the rest of the client SDK architecture to consume.\n */\n/**\n * An implementation of Datastore that exposes additional state for internal\n * consumption.\n */\nclass Ku extends class {} {\n constructor(t, e, n, s) {\n super(), this.authCredentials = t, this.appCheckCredentials = e, this.connection = n, \n this.serializer = s, this.lu = !1;\n }\n fu() {\n if (this.lu) throw new U(q.FAILED_PRECONDITION, \"The client has already been terminated.\");\n }\n /** Invokes the provided RPC with auth and AppCheck tokens. */ Io(t, e, n) {\n return this.fu(), Promise.all([ this.authCredentials.getToken(), this.appCheckCredentials.getToken() ]).then((([s, i]) => this.connection.Io(t, e, n, s, i))).catch((t => {\n throw \"FirebaseError\" === t.name ? (t.code === q.UNAUTHENTICATED && (this.authCredentials.invalidateToken(), \n this.appCheckCredentials.invalidateToken()), t) : new U(q.UNKNOWN, t.toString());\n }));\n }\n /** Invokes the provided RPC with streamed results with auth and AppCheck tokens. */ vo(t, e, n, s) {\n return this.fu(), Promise.all([ this.authCredentials.getToken(), this.appCheckCredentials.getToken() ]).then((([i, r]) => this.connection.vo(t, e, n, i, r, s))).catch((t => {\n throw \"FirebaseError\" === t.name ? (t.code === q.UNAUTHENTICATED && (this.authCredentials.invalidateToken(), \n this.appCheckCredentials.invalidateToken()), t) : new U(q.UNKNOWN, t.toString());\n }));\n }\n terminate() {\n this.lu = !0;\n }\n}\n\n// TODO(firestorexp): Make sure there is only one Datastore instance per\n// firestore-exp client.\nasync function Gu(t, e, n) {\n var s;\n const i = L(t), {request: r, du: o} = function(t, e, n) {\n const s = Ji(t, e), i = {}, r = [];\n let o = 0;\n return n.forEach((t => {\n // Map all client-side aliases to a unique short-form\n // alias. This avoids issues with client-side aliases that\n // exceed the 1500-byte string size limit.\n const e = \"aggregate_\" + o++;\n i[e] = t.alias, \"count\" === t.yt ? r.push({\n alias: e,\n count: {}\n }) : \"avg\" === t.yt ? r.push({\n alias: e,\n avg: {\n field: sr(t.fieldPath)\n }\n }) : \"sum\" === t.yt && r.push({\n alias: e,\n sum: {\n field: sr(t.fieldPath)\n }\n });\n })), {\n request: {\n structuredAggregationQuery: {\n aggregations: r,\n structuredQuery: s.structuredQuery\n },\n parent: s.parent\n },\n du: i\n };\n }(i.serializer, Jn(e), n), u = r.parent;\n i.connection.po || delete r.parent;\n const c = (await i.vo(\"RunAggregationQuery\", u, r, /*expectedResponseCount=*/ 1)).filter((t => !!t.result));\n // Omit RunAggregationQueryResponse that only contain readTimes.\n F(1 === c.length);\n // Remap the short-form aliases that were sent to the server\n // to the client-side aliases. Users will access the results\n // using the client-side alias.\n const a = null === (s = c[0].result) || void 0 === s ? void 0 : s.aggregateFields;\n return Object.keys(a).reduce(((t, e) => (t[o[e]] = a[e], t)), {});\n}\n\n/**\n * A component used by the RemoteStore to track the OnlineState (that is,\n * whether or not the client as a whole should be considered to be online or\n * offline), implementing the appropriate heuristics.\n *\n * In particular, when the client is trying to connect to the backend, we\n * allow up to MAX_WATCH_STREAM_FAILURES within ONLINE_STATE_TIMEOUT_MS for\n * a connection to succeed. If we have too many failures or the timeout elapses,\n * then we set the OnlineState to Offline, and the client will behave as if\n * it is offline (get()s will return cached data, etc.).\n */\nclass Qu {\n constructor(t, e) {\n this.asyncQueue = t, this.onlineStateHandler = e, \n /** The current OnlineState. */\n this.state = \"Unknown\" /* OnlineState.Unknown */ , \n /**\n * A count of consecutive failures to open the stream. If it reaches the\n * maximum defined by MAX_WATCH_STREAM_FAILURES, we'll set the OnlineState to\n * Offline.\n */\n this.wu = 0, \n /**\n * A timer that elapses after ONLINE_STATE_TIMEOUT_MS, at which point we\n * transition from OnlineState.Unknown to OnlineState.Offline without waiting\n * for the stream to actually fail (MAX_WATCH_STREAM_FAILURES times).\n */\n this._u = null, \n /**\n * Whether the client should log a warning message if it fails to connect to\n * the backend (initially true, cleared after a successful stream, or if we've\n * logged the message already).\n */\n this.mu = !0;\n }\n /**\n * Called by RemoteStore when a watch stream is started (including on each\n * backoff attempt).\n *\n * If this is the first attempt, it sets the OnlineState to Unknown and starts\n * the onlineStateTimer.\n */ gu() {\n 0 === this.wu && (this.yu(\"Unknown\" /* OnlineState.Unknown */), this._u = this.asyncQueue.enqueueAfterDelay(\"online_state_timeout\" /* TimerId.OnlineStateTimeout */ , 1e4, (() => (this._u = null, \n this.pu(\"Backend didn't respond within 10 seconds.\"), this.yu(\"Offline\" /* OnlineState.Offline */), \n Promise.resolve()))));\n }\n /**\n * Updates our OnlineState as appropriate after the watch stream reports a\n * failure. The first failure moves us to the 'Unknown' state. We then may\n * allow multiple failures (based on MAX_WATCH_STREAM_FAILURES) before we\n * actually transition to the 'Offline' state.\n */ Iu(t) {\n \"Online\" /* OnlineState.Online */ === this.state ? this.yu(\"Unknown\" /* OnlineState.Unknown */) : (this.wu++, \n this.wu >= 1 && (this.Tu(), this.pu(`Connection failed 1 times. Most recent error: ${t.toString()}`), \n this.yu(\"Offline\" /* OnlineState.Offline */)));\n }\n /**\n * Explicitly sets the OnlineState to the specified state.\n *\n * Note that this resets our timers / failure counters, etc. used by our\n * Offline heuristics, so must not be used in place of\n * handleWatchStreamStart() and handleWatchStreamFailure().\n */ set(t) {\n this.Tu(), this.wu = 0, \"Online\" /* OnlineState.Online */ === t && (\n // We've connected to watch at least once. Don't warn the developer\n // about being offline going forward.\n this.mu = !1), this.yu(t);\n }\n yu(t) {\n t !== this.state && (this.state = t, this.onlineStateHandler(t));\n }\n pu(t) {\n const e = `Could not reach Cloud Firestore backend. ${t}\\nThis typically indicates that your device does not have a healthy Internet connection at the moment. The client will operate in offline mode until it is able to successfully connect to the backend.`;\n this.mu ? (k(e), this.mu = !1) : N(\"OnlineStateTracker\", e);\n }\n Tu() {\n null !== this._u && (this._u.cancel(), this._u = null);\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */ class ju {\n constructor(\n /**\n * The local store, used to fill the write pipeline with outbound mutations.\n */\n t, \n /** The client-side proxy for interacting with the backend. */\n e, n, s, i) {\n this.localStore = t, this.datastore = e, this.asyncQueue = n, this.remoteSyncer = {}, \n /**\n * A list of up to MAX_PENDING_WRITES writes that we have fetched from the\n * LocalStore via fillWritePipeline() and have or will send to the write\n * stream.\n *\n * Whenever writePipeline.length > 0 the RemoteStore will attempt to start or\n * restart the write stream. When the stream is established the writes in the\n * pipeline will be sent in order.\n *\n * Writes remain in writePipeline until they are acknowledged by the backend\n * and thus will automatically be re-sent if the stream is interrupted /\n * restarted before they're acknowledged.\n *\n * Write responses from the backend are linked to their originating request\n * purely based on order, and so we can just shift() writes from the front of\n * the writePipeline as we receive responses.\n */\n this.Eu = [], \n /**\n * A mapping of watched targets that the client cares about tracking and the\n * user has explicitly called a 'listen' for this target.\n *\n * These targets may or may not have been sent to or acknowledged by the\n * server. On re-establishing the listen stream, these targets should be sent\n * to the server. The targets removed with unlistens are removed eagerly\n * without waiting for confirmation from the listen stream.\n */\n this.Au = new Map, \n /**\n * A set of reasons for why the RemoteStore may be offline. If empty, the\n * RemoteStore may start its network connections.\n */\n this.vu = new Set, \n /**\n * Event handlers that get called when the network is disabled or enabled.\n *\n * PORTING NOTE: These functions are used on the Web client to create the\n * underlying streams (to support tree-shakeable streams). On Android and iOS,\n * the streams are created during construction of RemoteStore.\n */\n this.Ru = [], this.Pu = i, this.Pu.Yr((t => {\n n.enqueueAndForget((async () => {\n // Porting Note: Unlike iOS, `restartNetwork()` is called even when the\n // network becomes unreachable as we don't have any other way to tear\n // down our streams.\n ec(this) && (N(\"RemoteStore\", \"Restarting streams for network reachability change.\"), \n await async function(t) {\n const e = L(t);\n e.vu.add(4 /* OfflineCause.ConnectivityChange */), await Wu(e), e.bu.set(\"Unknown\" /* OnlineState.Unknown */), \n e.vu.delete(4 /* OfflineCause.ConnectivityChange */), await zu(e);\n }(this));\n }));\n })), this.bu = new Qu(n, s);\n }\n}\n\nasync function zu(t) {\n if (ec(t)) for (const e of t.Ru) await e(/* enabled= */ !0);\n}\n\n/**\n * Temporarily disables the network. The network can be re-enabled using\n * enableNetwork().\n */ async function Wu(t) {\n for (const e of t.Ru) await e(/* enabled= */ !1);\n}\n\n/**\n * Starts new listen for the given target. Uses resume token if provided. It\n * is a no-op if the target of given `TargetData` is already being listened to.\n */\nfunction Hu(t, e) {\n const n = L(t);\n n.Au.has(e.targetId) || (\n // Mark this as something the client is currently listening for.\n n.Au.set(e.targetId, e), tc(n) ? \n // The listen will be sent in onWatchStreamOpen\n Zu(n) : pc(n).Ko() && Yu(n, e));\n}\n\n/**\n * Removes the listen from server. It is a no-op if the given target id is\n * not being listened to.\n */ function Ju(t, e) {\n const n = L(t), s = pc(n);\n n.Au.delete(e), s.Ko() && Xu(n, e), 0 === n.Au.size && (s.Ko() ? s.jo() : ec(n) && \n // Revert to OnlineState.Unknown if the watch stream is not open and we\n // have no listeners, since without any listens to send we cannot\n // confirm if the stream is healthy and upgrade to OnlineState.Online.\n n.bu.set(\"Unknown\" /* OnlineState.Unknown */));\n}\n\n/**\n * We need to increment the the expected number of pending responses we're due\n * from watch so we wait for the ack to process any messages from this target.\n */ function Yu(t, e) {\n if (t.Vu.qt(e.targetId), e.resumeToken.approximateByteSize() > 0 || e.snapshotVersion.compareTo(rt.min()) > 0) {\n const n = t.remoteSyncer.getRemoteKeysForTarget(e.targetId).size;\n e = e.withExpectedCount(n);\n }\n pc(t).su(e);\n}\n\n/**\n * We need to increment the expected number of pending responses we're due\n * from watch so we wait for the removal on the server before we process any\n * messages from this target.\n */ function Xu(t, e) {\n t.Vu.qt(e), pc(t).iu(e);\n}\n\nfunction Zu(t) {\n t.Vu = new Ei({\n getRemoteKeysForTarget: e => t.remoteSyncer.getRemoteKeysForTarget(e),\n le: e => t.Au.get(e) || null,\n ue: () => t.datastore.serializer.databaseId\n }), pc(t).start(), t.bu.gu();\n}\n\n/**\n * Returns whether the watch stream should be started because it's necessary\n * and has not yet been started.\n */ function tc(t) {\n return ec(t) && !pc(t).Uo() && t.Au.size > 0;\n}\n\nfunction ec(t) {\n return 0 === L(t).vu.size;\n}\n\nfunction nc(t) {\n t.Vu = void 0;\n}\n\nasync function sc(t) {\n t.Au.forEach(((e, n) => {\n Yu(t, e);\n }));\n}\n\nasync function ic(t, e) {\n nc(t), \n // If we still need the watch stream, retry the connection.\n tc(t) ? (t.bu.Iu(e), Zu(t)) : \n // No need to restart watch stream because there are no active targets.\n // The online state is set to unknown because there is no active attempt\n // at establishing a connection\n t.bu.set(\"Unknown\" /* OnlineState.Unknown */);\n}\n\nasync function rc(t, e, n) {\n if (\n // Mark the client as online since we got a message from the server\n t.bu.set(\"Online\" /* OnlineState.Online */), e instanceof Ii && 2 /* WatchTargetChangeState.Removed */ === e.state && e.cause) \n // There was an error on a target, don't wait for a consistent snapshot\n // to raise events\n try {\n await \n /** Handles an error on a target */\n async function(t, e) {\n const n = e.cause;\n for (const s of e.targetIds) \n // A watched target might have been removed already.\n t.Au.has(s) && (await t.remoteSyncer.rejectListen(s, n), t.Au.delete(s), t.Vu.removeTarget(s));\n }\n /**\n * Attempts to fill our write pipeline with writes from the LocalStore.\n *\n * Called internally to bootstrap or refill the write pipeline and by\n * SyncEngine whenever there are new mutations to process.\n *\n * Starts the write stream if necessary.\n */ (t, e);\n } catch (n) {\n N(\"RemoteStore\", \"Failed to remove targets %s: %s \", e.targetIds.join(\",\"), n), \n await oc(t, n);\n } else if (e instanceof yi ? t.Vu.Ht(e) : e instanceof pi ? t.Vu.ne(e) : t.Vu.Xt(e), \n !n.isEqual(rt.min())) try {\n const e = await ou(t.localStore);\n n.compareTo(e) >= 0 && \n // We have received a target change with a global snapshot if the snapshot\n // version is not equal to SnapshotVersion.min().\n await \n /**\n * Takes a batch of changes from the Datastore, repackages them as a\n * RemoteEvent, and passes that on to the listener, which is typically the\n * SyncEngine.\n */\n function(t, e) {\n const n = t.Vu.ce(e);\n // Update in-memory resume tokens. LocalStore will update the\n // persistent view of these when applying the completed RemoteEvent.\n return n.targetChanges.forEach(((n, s) => {\n if (n.resumeToken.approximateByteSize() > 0) {\n const i = t.Au.get(s);\n // A watched target might have been removed already.\n i && t.Au.set(s, i.withResumeToken(n.resumeToken, e));\n }\n })), \n // Re-establish listens for the targets that have been invalidated by\n // existence filter mismatches.\n n.targetMismatches.forEach(((e, n) => {\n const s = t.Au.get(e);\n if (!s) \n // A watched target might have been removed already.\n return;\n // Clear the resume token for the target, since we're in a known mismatch\n // state.\n t.Au.set(e, s.withResumeToken(Ve.EMPTY_BYTE_STRING, s.snapshotVersion)), \n // Cause a hard reset by unwatching and rewatching immediately, but\n // deliberately don't send a resume token so that we get a full update.\n Xu(t, e);\n // Mark the target we send as being on behalf of an existence filter\n // mismatch, but don't actually retain that in listenTargets. This ensures\n // that we flag the first re-listen this way without impacting future\n // listens of this target (that might happen e.g. on reconnect).\n const i = new cr(s.target, e, n, s.sequenceNumber);\n Yu(t, i);\n })), t.remoteSyncer.applyRemoteEvent(n);\n }(t, n);\n } catch (e) {\n N(\"RemoteStore\", \"Failed to raise snapshot:\", e), await oc(t, e);\n }\n}\n\n/**\n * Recovery logic for IndexedDB errors that takes the network offline until\n * `op` succeeds. Retries are scheduled with backoff using\n * `enqueueRetryable()`. If `op()` is not provided, IndexedDB access is\n * validated via a generic operation.\n *\n * The returned Promise is resolved once the network is disabled and before\n * any retry attempt.\n */ async function oc(t, e, n) {\n if (!Dt(e)) throw e;\n t.vu.add(1 /* OfflineCause.IndexedDbFailed */), \n // Disable network and raise offline snapshots\n await Wu(t), t.bu.set(\"Offline\" /* OnlineState.Offline */), n || (\n // Use a simple read operation to determine if IndexedDB recovered.\n // Ideally, we would expose a health check directly on SimpleDb, but\n // RemoteStore only has access to persistence through LocalStore.\n n = () => ou(t.localStore)), \n // Probe IndexedDB periodically and re-enable network\n t.asyncQueue.enqueueRetryable((async () => {\n N(\"RemoteStore\", \"Retrying IndexedDB access\"), await n(), t.vu.delete(1 /* OfflineCause.IndexedDbFailed */), \n await zu(t);\n }));\n}\n\n/**\n * Executes `op`. If `op` fails, takes the network offline until `op`\n * succeeds. Returns after the first attempt.\n */ function uc(t, e) {\n return e().catch((n => oc(t, n, e)));\n}\n\nasync function cc(t) {\n const e = L(t), n = Ic(e);\n let s = e.Eu.length > 0 ? e.Eu[e.Eu.length - 1].batchId : -1;\n for (;ac(e); ) try {\n const t = await au(e.localStore, s);\n if (null === t) {\n 0 === e.Eu.length && n.jo();\n break;\n }\n s = t.batchId, hc(e, t);\n } catch (t) {\n await oc(e, t);\n }\n lc(e) && fc(e);\n}\n\n/**\n * Returns true if we can add to the write pipeline (i.e. the network is\n * enabled and the write pipeline is not full).\n */ function ac(t) {\n return ec(t) && t.Eu.length < 10;\n}\n\n/**\n * Queues additional writes to be sent to the write stream, sending them\n * immediately if the write stream is established.\n */ function hc(t, e) {\n t.Eu.push(e);\n const n = Ic(t);\n n.Ko() && n.ou && n.uu(e.mutations);\n}\n\nfunction lc(t) {\n return ec(t) && !Ic(t).Uo() && t.Eu.length > 0;\n}\n\nfunction fc(t) {\n Ic(t).start();\n}\n\nasync function dc(t) {\n Ic(t).hu();\n}\n\nasync function wc(t) {\n const e = Ic(t);\n // Send the write pipeline now that the stream is established.\n for (const n of t.Eu) e.uu(n.mutations);\n}\n\nasync function _c(t, e, n) {\n const s = t.Eu.shift(), i = ti.from(s, e, n);\n await uc(t, (() => t.remoteSyncer.applySuccessfulWrite(i))), \n // It's possible that with the completion of this mutation another\n // slot has freed up.\n await cc(t);\n}\n\nasync function mc(t, e) {\n // If the write stream closed after the write handshake completes, a write\n // operation failed and we fail the pending operation.\n e && Ic(t).ou && \n // This error affects the actual write.\n await async function(t, e) {\n // Only handle permanent errors here. If it's transient, just let the retry\n // logic kick in.\n if (n = e.code, oi(n) && n !== q.ABORTED) {\n // This was a permanent error, the request itself was the problem\n // so it's not going to succeed if we resend it.\n const n = t.Eu.shift();\n // In this case it's also unlikely that the server itself is melting\n // down -- this was just a bad request so inhibit backoff on the next\n // restart.\n Ic(t).Qo(), await uc(t, (() => t.remoteSyncer.rejectFailedWrite(n.batchId, e))), \n // It's possible that with the completion of this mutation\n // another slot has freed up.\n await cc(t);\n }\n var n;\n }(t, e), \n // The write stream might have been started by refilling the write\n // pipeline for failed writes\n lc(t) && fc(t);\n}\n\nasync function gc(t, e) {\n const n = L(t);\n n.asyncQueue.verifyOperationInProgress(), N(\"RemoteStore\", \"RemoteStore received new credentials\");\n const s = ec(n);\n // Tear down and re-create our network streams. This will ensure we get a\n // fresh auth token for the new user and re-fill the write pipeline with\n // new mutations from the LocalStore (since mutations are per-user).\n n.vu.add(3 /* OfflineCause.CredentialChange */), await Wu(n), s && \n // Don't set the network status to Unknown if we are offline.\n n.bu.set(\"Unknown\" /* OnlineState.Unknown */), await n.remoteSyncer.handleCredentialChange(e), \n n.vu.delete(3 /* OfflineCause.CredentialChange */), await zu(n);\n}\n\n/**\n * Toggles the network state when the client gains or loses its primary lease.\n */ async function yc(t, e) {\n const n = L(t);\n e ? (n.vu.delete(2 /* OfflineCause.IsSecondary */), await zu(n)) : e || (n.vu.add(2 /* OfflineCause.IsSecondary */), \n await Wu(n), n.bu.set(\"Unknown\" /* OnlineState.Unknown */));\n}\n\n/**\n * If not yet initialized, registers the WatchStream and its network state\n * callback with `remoteStoreImpl`. Returns the existing stream if one is\n * already available.\n *\n * PORTING NOTE: On iOS and Android, the WatchStream gets registered on startup.\n * This is not done on Web to allow it to be tree-shaken.\n */ function pc(t) {\n return t.Su || (\n // Create stream (but note that it is not started yet).\n t.Su = function(t, e, n) {\n const s = L(t);\n return s.fu(), new qu(e, s.connection, s.authCredentials, s.appCheckCredentials, s.serializer, n);\n }\n /**\n * @license\n * Copyright 2018 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */ (t.datastore, t.asyncQueue, {\n uo: sc.bind(null, t),\n ao: ic.bind(null, t),\n nu: rc.bind(null, t)\n }), t.Ru.push((async e => {\n e ? (t.Su.Qo(), tc(t) ? Zu(t) : t.bu.set(\"Unknown\" /* OnlineState.Unknown */)) : (await t.Su.stop(), \n nc(t));\n }))), t.Su;\n}\n\n/**\n * If not yet initialized, registers the WriteStream and its network state\n * callback with `remoteStoreImpl`. Returns the existing stream if one is\n * already available.\n *\n * PORTING NOTE: On iOS and Android, the WriteStream gets registered on startup.\n * This is not done on Web to allow it to be tree-shaken.\n */ function Ic(t) {\n return t.Du || (\n // Create stream (but note that it is not started yet).\n t.Du = function(t, e, n) {\n const s = L(t);\n return s.fu(), new Uu(e, s.connection, s.authCredentials, s.appCheckCredentials, s.serializer, n);\n }(t.datastore, t.asyncQueue, {\n uo: dc.bind(null, t),\n ao: mc.bind(null, t),\n au: wc.bind(null, t),\n cu: _c.bind(null, t)\n }), t.Ru.push((async e => {\n e ? (t.Du.Qo(), \n // This will start the write stream if necessary.\n await cc(t)) : (await t.Du.stop(), t.Eu.length > 0 && (N(\"RemoteStore\", `Stopping write stream with ${t.Eu.length} pending writes`), \n t.Eu = []));\n }))), t.Du;\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Represents an operation scheduled to be run in the future on an AsyncQueue.\n *\n * It is created via DelayedOperation.createAndSchedule().\n *\n * Supports cancellation (via cancel()) and early execution (via skipDelay()).\n *\n * Note: We implement `PromiseLike` instead of `Promise`, as the `Promise` type\n * in newer versions of TypeScript defines `finally`, which is not available in\n * IE.\n */\nclass Tc {\n constructor(t, e, n, s, i) {\n this.asyncQueue = t, this.timerId = e, this.targetTimeMs = n, this.op = s, this.removalCallback = i, \n this.deferred = new K, this.then = this.deferred.promise.then.bind(this.deferred.promise), \n // It's normal for the deferred promise to be canceled (due to cancellation)\n // and so we attach a dummy catch callback to avoid\n // 'UnhandledPromiseRejectionWarning' log spam.\n this.deferred.promise.catch((t => {}));\n }\n /**\n * Creates and returns a DelayedOperation that has been scheduled to be\n * executed on the provided asyncQueue after the provided delayMs.\n *\n * @param asyncQueue - The queue to schedule the operation on.\n * @param id - A Timer ID identifying the type of operation this is.\n * @param delayMs - The delay (ms) before the operation should be scheduled.\n * @param op - The operation to run.\n * @param removalCallback - A callback to be called synchronously once the\n * operation is executed or canceled, notifying the AsyncQueue to remove it\n * from its delayedOperations list.\n * PORTING NOTE: This exists to prevent making removeDelayedOperation() and\n * the DelayedOperation class public.\n */ static createAndSchedule(t, e, n, s, i) {\n const r = Date.now() + n, o = new Tc(t, e, r, s, i);\n return o.start(n), o;\n }\n /**\n * Starts the timer. This is called immediately after construction by\n * createAndSchedule().\n */ start(t) {\n this.timerHandle = setTimeout((() => this.handleDelayElapsed()), t);\n }\n /**\n * Queues the operation to run immediately (if it hasn't already been run or\n * canceled).\n */ skipDelay() {\n return this.handleDelayElapsed();\n }\n /**\n * Cancels the operation if it hasn't already been executed or canceled. The\n * promise will be rejected.\n *\n * As long as the operation has not yet been run, calling cancel() provides a\n * guarantee that the operation will not be run.\n */ cancel(t) {\n null !== this.timerHandle && (this.clearTimeout(), this.deferred.reject(new U(q.CANCELLED, \"Operation cancelled\" + (t ? \": \" + t : \"\"))));\n }\n handleDelayElapsed() {\n this.asyncQueue.enqueueAndForget((() => null !== this.timerHandle ? (this.clearTimeout(), \n this.op().then((t => this.deferred.resolve(t)))) : Promise.resolve()));\n }\n clearTimeout() {\n null !== this.timerHandle && (this.removalCallback(this), clearTimeout(this.timerHandle), \n this.timerHandle = null);\n }\n}\n\n/**\n * Returns a FirestoreError that can be surfaced to the user if the provided\n * error is an IndexedDbTransactionError. Re-throws the error otherwise.\n */ function Ec(t, e) {\n if (k(\"AsyncQueue\", `${e}: ${t}`), Dt(t)) return new U(q.UNAVAILABLE, `${e}: ${t}`);\n throw t;\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * DocumentSet is an immutable (copy-on-write) collection that holds documents\n * in order specified by the provided comparator. We always add a document key\n * comparator on top of what is provided to guarantee document equality based on\n * the key.\n */ class Ac {\n /** The default ordering is by key if the comparator is omitted */\n constructor(t) {\n // We are adding document key comparator to the end as it's the only\n // guaranteed unique property of a document.\n this.comparator = t ? (e, n) => t(e, n) || ht.comparator(e.key, n.key) : (t, e) => ht.comparator(t.key, e.key), \n this.keyedMap = hs(), this.sortedSet = new pe(this.comparator);\n }\n /**\n * Returns an empty copy of the existing DocumentSet, using the same\n * comparator.\n */ static emptySet(t) {\n return new Ac(t.comparator);\n }\n has(t) {\n return null != this.keyedMap.get(t);\n }\n get(t) {\n return this.keyedMap.get(t);\n }\n first() {\n return this.sortedSet.minKey();\n }\n last() {\n return this.sortedSet.maxKey();\n }\n isEmpty() {\n return this.sortedSet.isEmpty();\n }\n /**\n * Returns the index of the provided key in the document set, or -1 if the\n * document key is not present in the set;\n */ indexOf(t) {\n const e = this.keyedMap.get(t);\n return e ? this.sortedSet.indexOf(e) : -1;\n }\n get size() {\n return this.sortedSet.size;\n }\n /** Iterates documents in order defined by \"comparator\" */ forEach(t) {\n this.sortedSet.inorderTraversal(((e, n) => (t(e), !1)));\n }\n /** Inserts or updates a document with the same key */ add(t) {\n // First remove the element if we have it.\n const e = this.delete(t.key);\n return e.copy(e.keyedMap.insert(t.key, t), e.sortedSet.insert(t, null));\n }\n /** Deletes a document with a given key */ delete(t) {\n const e = this.get(t);\n return e ? this.copy(this.keyedMap.remove(t), this.sortedSet.remove(e)) : this;\n }\n isEqual(t) {\n if (!(t instanceof Ac)) return !1;\n if (this.size !== t.size) return !1;\n const e = this.sortedSet.getIterator(), n = t.sortedSet.getIterator();\n for (;e.hasNext(); ) {\n const t = e.getNext().key, s = n.getNext().key;\n if (!t.isEqual(s)) return !1;\n }\n return !0;\n }\n toString() {\n const t = [];\n return this.forEach((e => {\n t.push(e.toString());\n })), 0 === t.length ? \"DocumentSet ()\" : \"DocumentSet (\\n \" + t.join(\" \\n\") + \"\\n)\";\n }\n copy(t, e) {\n const n = new Ac;\n return n.comparator = this.comparator, n.keyedMap = t, n.sortedSet = e, n;\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * DocumentChangeSet keeps track of a set of changes to docs in a query, merging\n * duplicate events for the same doc.\n */ class vc {\n constructor() {\n this.Cu = new pe(ht.comparator);\n }\n track(t) {\n const e = t.doc.key, n = this.Cu.get(e);\n n ? \n // Merge the new change with the existing change.\n 0 /* ChangeType.Added */ !== t.type && 3 /* ChangeType.Metadata */ === n.type ? this.Cu = this.Cu.insert(e, t) : 3 /* ChangeType.Metadata */ === t.type && 1 /* ChangeType.Removed */ !== n.type ? this.Cu = this.Cu.insert(e, {\n type: n.type,\n doc: t.doc\n }) : 2 /* ChangeType.Modified */ === t.type && 2 /* ChangeType.Modified */ === n.type ? this.Cu = this.Cu.insert(e, {\n type: 2 /* ChangeType.Modified */ ,\n doc: t.doc\n }) : 2 /* ChangeType.Modified */ === t.type && 0 /* ChangeType.Added */ === n.type ? this.Cu = this.Cu.insert(e, {\n type: 0 /* ChangeType.Added */ ,\n doc: t.doc\n }) : 1 /* ChangeType.Removed */ === t.type && 0 /* ChangeType.Added */ === n.type ? this.Cu = this.Cu.remove(e) : 1 /* ChangeType.Removed */ === t.type && 2 /* ChangeType.Modified */ === n.type ? this.Cu = this.Cu.insert(e, {\n type: 1 /* ChangeType.Removed */ ,\n doc: n.doc\n }) : 0 /* ChangeType.Added */ === t.type && 1 /* ChangeType.Removed */ === n.type ? this.Cu = this.Cu.insert(e, {\n type: 2 /* ChangeType.Modified */ ,\n doc: t.doc\n }) : \n // This includes these cases, which don't make sense:\n // Added->Added\n // Removed->Removed\n // Modified->Added\n // Removed->Modified\n // Metadata->Added\n // Removed->Metadata\n O() : this.Cu = this.Cu.insert(e, t);\n }\n xu() {\n const t = [];\n return this.Cu.inorderTraversal(((e, n) => {\n t.push(n);\n })), t;\n }\n}\n\nclass Rc {\n constructor(t, e, n, s, i, r, o, u, c) {\n this.query = t, this.docs = e, this.oldDocs = n, this.docChanges = s, this.mutatedKeys = i, \n this.fromCache = r, this.syncStateChanged = o, this.excludesMetadataChanges = u, \n this.hasCachedResults = c;\n }\n /** Returns a view snapshot as if all documents in the snapshot were added. */ static fromInitialDocuments(t, e, n, s, i) {\n const r = [];\n return e.forEach((t => {\n r.push({\n type: 0 /* ChangeType.Added */ ,\n doc: t\n });\n })), new Rc(t, e, Ac.emptySet(e), r, n, s, \n /* syncStateChanged= */ !0, \n /* excludesMetadataChanges= */ !1, i);\n }\n get hasPendingWrites() {\n return !this.mutatedKeys.isEmpty();\n }\n isEqual(t) {\n if (!(this.fromCache === t.fromCache && this.hasCachedResults === t.hasCachedResults && this.syncStateChanged === t.syncStateChanged && this.mutatedKeys.isEqual(t.mutatedKeys) && Zn(this.query, t.query) && this.docs.isEqual(t.docs) && this.oldDocs.isEqual(t.oldDocs))) return !1;\n const e = this.docChanges, n = t.docChanges;\n if (e.length !== n.length) return !1;\n for (let t = 0; t < e.length; t++) if (e[t].type !== n[t].type || !e[t].doc.isEqual(n[t].doc)) return !1;\n return !0;\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Holds the listeners and the last received ViewSnapshot for a query being\n * tracked by EventManager.\n */ class Pc {\n constructor() {\n this.Nu = void 0, this.listeners = [];\n }\n}\n\nclass bc {\n constructor() {\n this.queries = new os((t => ts(t)), Zn), this.onlineState = \"Unknown\" /* OnlineState.Unknown */ , \n this.ku = new Set;\n }\n}\n\nasync function Vc(t, e) {\n const n = L(t), s = e.query;\n let i = !1, r = n.queries.get(s);\n if (r || (i = !0, r = new Pc), i) try {\n r.Nu = await n.onListen(s);\n } catch (t) {\n const n = Ec(t, `Initialization of query '${es(e.query)}' failed`);\n return void e.onError(n);\n }\n if (n.queries.set(s, r), r.listeners.push(e), \n // Run global snapshot listeners if a consistent snapshot has been emitted.\n e.Mu(n.onlineState), r.Nu) {\n e.$u(r.Nu) && xc(n);\n }\n}\n\nasync function Sc(t, e) {\n const n = L(t), s = e.query;\n let i = !1;\n const r = n.queries.get(s);\n if (r) {\n const t = r.listeners.indexOf(e);\n t >= 0 && (r.listeners.splice(t, 1), i = 0 === r.listeners.length);\n }\n if (i) return n.queries.delete(s), n.onUnlisten(s);\n}\n\nfunction Dc(t, e) {\n const n = L(t);\n let s = !1;\n for (const t of e) {\n const e = t.query, i = n.queries.get(e);\n if (i) {\n for (const e of i.listeners) e.$u(t) && (s = !0);\n i.Nu = t;\n }\n }\n s && xc(n);\n}\n\nfunction Cc(t, e, n) {\n const s = L(t), i = s.queries.get(e);\n if (i) for (const t of i.listeners) t.onError(n);\n // Remove all listeners. NOTE: We don't need to call syncEngine.unlisten()\n // after an error.\n s.queries.delete(e);\n}\n\n// Call all global snapshot listeners that have been set.\nfunction xc(t) {\n t.ku.forEach((t => {\n t.next();\n }));\n}\n\n/**\n * QueryListener takes a series of internal view snapshots and determines\n * when to raise the event.\n *\n * It uses an Observer to dispatch events.\n */ class Nc {\n constructor(t, e, n) {\n this.query = t, this.Ou = e, \n /**\n * Initial snapshots (e.g. from cache) may not be propagated to the wrapped\n * observer. This flag is set to true once we've actually raised an event.\n */\n this.Fu = !1, this.Bu = null, this.onlineState = \"Unknown\" /* OnlineState.Unknown */ , \n this.options = n || {};\n }\n /**\n * Applies the new ViewSnapshot to this listener, raising a user-facing event\n * if applicable (depending on what changed, whether the user has opted into\n * metadata-only changes, etc.). Returns true if a user-facing event was\n * indeed raised.\n */ $u(t) {\n if (!this.options.includeMetadataChanges) {\n // Remove the metadata only changes.\n const e = [];\n for (const n of t.docChanges) 3 /* ChangeType.Metadata */ !== n.type && e.push(n);\n t = new Rc(t.query, t.docs, t.oldDocs, e, t.mutatedKeys, t.fromCache, t.syncStateChanged, \n /* excludesMetadataChanges= */ !0, t.hasCachedResults);\n }\n let e = !1;\n return this.Fu ? this.Lu(t) && (this.Ou.next(t), e = !0) : this.qu(t, this.onlineState) && (this.Uu(t), \n e = !0), this.Bu = t, e;\n }\n onError(t) {\n this.Ou.error(t);\n }\n /** Returns whether a snapshot was raised. */ Mu(t) {\n this.onlineState = t;\n let e = !1;\n return this.Bu && !this.Fu && this.qu(this.Bu, t) && (this.Uu(this.Bu), e = !0), \n e;\n }\n qu(t, e) {\n // Always raise the first event when we're synced\n if (!t.fromCache) return !0;\n // NOTE: We consider OnlineState.Unknown as online (it should become Offline\n // or Online if we wait long enough).\n const n = \"Offline\" /* OnlineState.Offline */ !== e;\n // Don't raise the event if we're online, aren't synced yet (checked\n // above) and are waiting for a sync.\n return (!this.options.Ku || !n) && (!t.docs.isEmpty() || t.hasCachedResults || \"Offline\" /* OnlineState.Offline */ === e);\n // Raise data from cache if we have any documents, have cached results before,\n // or we are offline.\n }\n Lu(t) {\n // We don't need to handle includeDocumentMetadataChanges here because\n // the Metadata only changes have already been stripped out if needed.\n // At this point the only changes we will see are the ones we should\n // propagate.\n if (t.docChanges.length > 0) return !0;\n const e = this.Bu && this.Bu.hasPendingWrites !== t.hasPendingWrites;\n return !(!t.syncStateChanged && !e) && !0 === this.options.includeMetadataChanges;\n // Generally we should have hit one of the cases above, but it's possible\n // to get here if there were only metadata docChanges and they got\n // stripped out.\n }\n Uu(t) {\n t = Rc.fromInitialDocuments(t.query, t.docs, t.mutatedKeys, t.fromCache, t.hasCachedResults), \n this.Fu = !0, this.Ou.next(t);\n }\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A complete element in the bundle stream, together with the byte length it\n * occupies in the stream.\n */ class kc {\n constructor(t, \n // How many bytes this element takes to store in the bundle.\n e) {\n this.Gu = t, this.byteLength = e;\n }\n Qu() {\n return \"metadata\" in this.Gu;\n }\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Helper to convert objects from bundles to model objects in the SDK.\n */ class Mc {\n constructor(t) {\n this.serializer = t;\n }\n rr(t) {\n return Oi(this.serializer, t);\n }\n /**\n * Converts a BundleDocument to a MutableDocument.\n */ ur(t) {\n return t.metadata.exists ? Ki(this.serializer, t.document, !1) : an.newNoDocument(this.rr(t.metadata.name), this.cr(t.metadata.readTime));\n }\n cr(t) {\n return Ni(t);\n }\n}\n\n/**\n * A class to process the elements from a bundle, load them into local\n * storage and provide progress update while loading.\n */ class $c {\n constructor(t, e, n) {\n this.ju = t, this.localStore = e, this.serializer = n, \n /** Batched queries to be saved into storage */\n this.queries = [], \n /** Batched documents to be saved into storage */\n this.documents = [], \n /** The collection groups affected by this bundle. */\n this.collectionGroups = new Set, this.progress = Oc(t);\n }\n /**\n * Adds an element from the bundle to the loader.\n *\n * Returns a new progress if adding the element leads to a new progress,\n * otherwise returns null.\n */ zu(t) {\n this.progress.bytesLoaded += t.byteLength;\n let e = this.progress.documentsLoaded;\n if (t.Gu.namedQuery) this.queries.push(t.Gu.namedQuery); else if (t.Gu.documentMetadata) {\n this.documents.push({\n metadata: t.Gu.documentMetadata\n }), t.Gu.documentMetadata.exists || ++e;\n const n = ut.fromString(t.Gu.documentMetadata.name);\n this.collectionGroups.add(n.get(n.length - 2));\n } else t.Gu.document && (this.documents[this.documents.length - 1].document = t.Gu.document, \n ++e);\n return e !== this.progress.documentsLoaded ? (this.progress.documentsLoaded = e, \n Object.assign({}, this.progress)) : null;\n }\n Wu(t) {\n const e = new Map, n = new Mc(this.serializer);\n for (const s of t) if (s.metadata.queries) {\n const t = n.rr(s.metadata.name);\n for (const n of s.metadata.queries) {\n const s = (e.get(n) || gs()).add(t);\n e.set(n, s);\n }\n }\n return e;\n }\n /**\n * Update the progress to 'Success' and return the updated progress.\n */ async complete() {\n const t = await mu(this.localStore, new Mc(this.serializer), this.documents, this.ju.id), e = this.Wu(this.documents);\n for (const t of this.queries) await gu(this.localStore, t, e.get(t.name));\n return this.progress.taskState = \"Success\", {\n progress: this.progress,\n Hu: this.collectionGroups,\n Ju: t\n };\n }\n}\n\n/**\n * Returns a `LoadBundleTaskProgress` representing the initial progress of\n * loading a bundle.\n */ function Oc(t) {\n return {\n taskState: \"Running\",\n documentsLoaded: 0,\n bytesLoaded: 0,\n totalDocuments: t.totalDocuments,\n totalBytes: t.totalBytes\n };\n}\n\n/**\n * Returns a `LoadBundleTaskProgress` representing the progress that the loading\n * has succeeded.\n */\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nclass Fc {\n constructor(t) {\n this.key = t;\n }\n}\n\nclass Bc {\n constructor(t) {\n this.key = t;\n }\n}\n\n/**\n * View is responsible for computing the final merged truth of what docs are in\n * a query. It gets notified of local and remote changes to docs, and applies\n * the query filters and limits to determine the most correct possible results.\n */ class Lc {\n constructor(t, \n /** Documents included in the remote target */\n e) {\n this.query = t, this.Yu = e, this.Xu = null, this.hasCachedResults = !1, \n /**\n * A flag whether the view is current with the backend. A view is considered\n * current after it has seen the current flag from the backend and did not\n * lose consistency within the watch stream (e.g. because of an existence\n * filter mismatch).\n */\n this.current = !1, \n /** Documents in the view but not in the remote target */\n this.Zu = gs(), \n /** Document Keys that have local changes */\n this.mutatedKeys = gs(), this.tc = is(t), this.ec = new Ac(this.tc);\n }\n /**\n * The set of remote documents that the server has told us belongs to the target associated with\n * this view.\n */ get nc() {\n return this.Yu;\n }\n /**\n * Iterates over a set of doc changes, applies the query limit, and computes\n * what the new results should be, what the changes were, and whether we may\n * need to go back to the local cache for more results. Does not make any\n * changes to the view.\n * @param docChanges - The doc changes to apply to this view.\n * @param previousChanges - If this is being called with a refill, then start\n * with this set of docs and changes instead of the current view.\n * @returns a new set of docs, changes, and refill flag.\n */ sc(t, e) {\n const n = e ? e.ic : new vc, s = e ? e.ec : this.ec;\n let i = e ? e.mutatedKeys : this.mutatedKeys, r = s, o = !1;\n // Track the last doc in a (full) limit. This is necessary, because some\n // update (a delete, or an update moving a doc past the old limit) might\n // mean there is some other document in the local cache that either should\n // come (1) between the old last limit doc and the new last document, in the\n // case of updates, or (2) after the new last document, in the case of\n // deletes. So we keep this doc at the old limit to compare the updates to.\n // Note that this should never get used in a refill (when previousChanges is\n // set), because there will only be adds -- no deletes or updates.\n const u = \"F\" /* LimitType.First */ === this.query.limitType && s.size === this.query.limit ? s.last() : null, c = \"L\" /* LimitType.Last */ === this.query.limitType && s.size === this.query.limit ? s.first() : null;\n // Drop documents out to meet limit/limitToLast requirement.\n if (t.inorderTraversal(((t, e) => {\n const a = s.get(t), h = ns(this.query, e) ? e : null, l = !!a && this.mutatedKeys.has(a.key), f = !!h && (h.hasLocalMutations || \n // We only consider committed mutations for documents that were\n // mutated during the lifetime of the view.\n this.mutatedKeys.has(h.key) && h.hasCommittedMutations);\n let d = !1;\n // Calculate change\n if (a && h) {\n a.data.isEqual(h.data) ? l !== f && (n.track({\n type: 3 /* ChangeType.Metadata */ ,\n doc: h\n }), d = !0) : this.rc(a, h) || (n.track({\n type: 2 /* ChangeType.Modified */ ,\n doc: h\n }), d = !0, (u && this.tc(h, u) > 0 || c && this.tc(h, c) < 0) && (\n // This doc moved from inside the limit to outside the limit.\n // That means there may be some other doc in the local cache\n // that should be included instead.\n o = !0));\n } else !a && h ? (n.track({\n type: 0 /* ChangeType.Added */ ,\n doc: h\n }), d = !0) : a && !h && (n.track({\n type: 1 /* ChangeType.Removed */ ,\n doc: a\n }), d = !0, (u || c) && (\n // A doc was removed from a full limit query. We'll need to\n // requery from the local cache to see if we know about some other\n // doc that should be in the results.\n o = !0));\n d && (h ? (r = r.add(h), i = f ? i.add(t) : i.delete(t)) : (r = r.delete(t), i = i.delete(t)));\n })), null !== this.query.limit) for (;r.size > this.query.limit; ) {\n const t = \"F\" /* LimitType.First */ === this.query.limitType ? r.last() : r.first();\n r = r.delete(t.key), i = i.delete(t.key), n.track({\n type: 1 /* ChangeType.Removed */ ,\n doc: t\n });\n }\n return {\n ec: r,\n ic: n,\n zi: o,\n mutatedKeys: i\n };\n }\n rc(t, e) {\n // We suppress the initial change event for documents that were modified as\n // part of a write acknowledgment (e.g. when the value of a server transform\n // is applied) as Watch will send us the same document again.\n // By suppressing the event, we only raise two user visible events (one with\n // `hasPendingWrites` and the final state of the document) instead of three\n // (one with `hasPendingWrites`, the modified document with\n // `hasPendingWrites` and the final state of the document).\n return t.hasLocalMutations && e.hasCommittedMutations && !e.hasLocalMutations;\n }\n /**\n * Updates the view with the given ViewDocumentChanges and optionally updates\n * limbo docs and sync state from the provided target change.\n * @param docChanges - The set of changes to make to the view's docs.\n * @param updateLimboDocuments - Whether to update limbo documents based on\n * this change.\n * @param targetChange - A target change to apply for computing limbo docs and\n * sync state.\n * @returns A new ViewChange with the given docs, changes, and sync state.\n */\n // PORTING NOTE: The iOS/Android clients always compute limbo document changes.\n applyChanges(t, e, n) {\n const s = this.ec;\n this.ec = t.ec, this.mutatedKeys = t.mutatedKeys;\n // Sort changes based on type and query comparator\n const i = t.ic.xu();\n i.sort(((t, e) => function(t, e) {\n const n = t => {\n switch (t) {\n case 0 /* ChangeType.Added */ :\n return 1;\n\n case 2 /* ChangeType.Modified */ :\n case 3 /* ChangeType.Metadata */ :\n // A metadata change is converted to a modified change at the public\n // api layer. Since we sort by document key and then change type,\n // metadata and modified changes must be sorted equivalently.\n return 2;\n\n case 1 /* ChangeType.Removed */ :\n return 0;\n\n default:\n return O();\n }\n };\n return n(t) - n(e);\n }\n /**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */ (t.type, e.type) || this.tc(t.doc, e.doc))), this.oc(n);\n const r = e ? this.uc() : [], o = 0 === this.Zu.size && this.current ? 1 /* SyncState.Synced */ : 0 /* SyncState.Local */ , u = o !== this.Xu;\n if (this.Xu = o, 0 !== i.length || u) {\n return {\n snapshot: new Rc(this.query, t.ec, s, i, t.mutatedKeys, 0 /* SyncState.Local */ === o, u, \n /* excludesMetadataChanges= */ !1, !!n && n.resumeToken.approximateByteSize() > 0),\n cc: r\n };\n }\n // no changes\n return {\n cc: r\n };\n }\n /**\n * Applies an OnlineState change to the view, potentially generating a\n * ViewChange if the view's syncState changes as a result.\n */ Mu(t) {\n return this.current && \"Offline\" /* OnlineState.Offline */ === t ? (\n // If we're offline, set `current` to false and then call applyChanges()\n // to refresh our syncState and generate a ViewChange as appropriate. We\n // are guaranteed to get a new TargetChange that sets `current` back to\n // true once the client is back online.\n this.current = !1, this.applyChanges({\n ec: this.ec,\n ic: new vc,\n mutatedKeys: this.mutatedKeys,\n zi: !1\n }, \n /* updateLimboDocuments= */ !1)) : {\n cc: []\n };\n }\n /**\n * Returns whether the doc for the given key should be in limbo.\n */ ac(t) {\n // If the remote end says it's part of this query, it's not in limbo.\n return !this.Yu.has(t) && (\n // The local store doesn't think it's a result, so it shouldn't be in limbo.\n !!this.ec.has(t) && !this.ec.get(t).hasLocalMutations);\n }\n /**\n * Updates syncedDocuments, current, and limbo docs based on the given change.\n * Returns the list of changes to which docs are in limbo.\n */ oc(t) {\n t && (t.addedDocuments.forEach((t => this.Yu = this.Yu.add(t))), t.modifiedDocuments.forEach((t => {})), \n t.removedDocuments.forEach((t => this.Yu = this.Yu.delete(t))), this.current = t.current);\n }\n uc() {\n // We can only determine limbo documents when we're in-sync with the server.\n if (!this.current) return [];\n // TODO(klimt): Do this incrementally so that it's not quadratic when\n // updating many documents.\n const t = this.Zu;\n this.Zu = gs(), this.ec.forEach((t => {\n this.ac(t.key) && (this.Zu = this.Zu.add(t.key));\n }));\n // Diff the new limbo docs with the old limbo docs.\n const e = [];\n return t.forEach((t => {\n this.Zu.has(t) || e.push(new Bc(t));\n })), this.Zu.forEach((n => {\n t.has(n) || e.push(new Fc(n));\n })), e;\n }\n /**\n * Update the in-memory state of the current view with the state read from\n * persistence.\n *\n * We update the query view whenever a client's primary status changes:\n * - When a client transitions from primary to secondary, it can miss\n * LocalStorage updates and its query views may temporarily not be\n * synchronized with the state on disk.\n * - For secondary to primary transitions, the client needs to update the list\n * of `syncedDocuments` since secondary clients update their query views\n * based purely on synthesized RemoteEvents.\n *\n * @param queryResult.documents - The documents that match the query according\n * to the LocalStore.\n * @param queryResult.remoteKeys - The keys of the documents that match the\n * query according to the backend.\n *\n * @returns The ViewChange that resulted from this synchronization.\n */\n // PORTING NOTE: Multi-tab only.\n hc(t) {\n this.Yu = t.ir, this.Zu = gs();\n const e = this.sc(t.documents);\n return this.applyChanges(e, /*updateLimboDocuments=*/ !0);\n }\n /**\n * Returns a view snapshot as if this query was just listened to. Contains\n * a document add for every existing document and the `fromCache` and\n * `hasPendingWrites` status of the already established view.\n */\n // PORTING NOTE: Multi-tab only.\n lc() {\n return Rc.fromInitialDocuments(this.query, this.ec, this.mutatedKeys, 0 /* SyncState.Local */ === this.Xu, this.hasCachedResults);\n }\n}\n\n/**\n * QueryView contains all of the data that SyncEngine needs to keep track of for\n * a particular query.\n */\nclass qc {\n constructor(\n /**\n * The query itself.\n */\n t, \n /**\n * The target number created by the client that is used in the watch\n * stream to identify this query.\n */\n e, \n /**\n * The view is responsible for computing the final merged truth of what\n * docs are in the query. It gets notified of local and remote changes,\n * and applies the query filters and limits to determine the most correct\n * possible results.\n */\n n) {\n this.query = t, this.targetId = e, this.view = n;\n }\n}\n\n/** Tracks a limbo resolution. */ class Uc {\n constructor(t) {\n this.key = t, \n /**\n * Set to true once we've received a document. This is used in\n * getRemoteKeysForTarget() and ultimately used by WatchChangeAggregator to\n * decide whether it needs to manufacture a delete event for the target once\n * the target is CURRENT.\n */\n this.fc = !1;\n }\n}\n\n/**\n * An implementation of `SyncEngine` coordinating with other parts of SDK.\n *\n * The parts of SyncEngine that act as a callback to RemoteStore need to be\n * registered individually. This is done in `syncEngineWrite()` and\n * `syncEngineListen()` (as well as `applyPrimaryState()`) as these methods\n * serve as entry points to RemoteStore's functionality.\n *\n * Note: some field defined in this class might have public access level, but\n * the class is not exported so they are only accessible from this module.\n * This is useful to implement optional features (like bundles) in free\n * functions, such that they are tree-shakeable.\n */ class Kc {\n constructor(t, e, n, \n // PORTING NOTE: Manages state synchronization in multi-tab environments.\n s, i, r) {\n this.localStore = t, this.remoteStore = e, this.eventManager = n, this.sharedClientState = s, \n this.currentUser = i, this.maxConcurrentLimboResolutions = r, this.dc = {}, this.wc = new os((t => ts(t)), Zn), \n this._c = new Map, \n /**\n * The keys of documents that are in limbo for which we haven't yet started a\n * limbo resolution query. The strings in this set are the result of calling\n * `key.path.canonicalString()` where `key` is a `DocumentKey` object.\n *\n * The `Set` type was chosen because it provides efficient lookup and removal\n * of arbitrary elements and it also maintains insertion order, providing the\n * desired queue-like FIFO semantics.\n */\n this.mc = new Set, \n /**\n * Keeps track of the target ID for each document that is in limbo with an\n * active target.\n */\n this.gc = new pe(ht.comparator), \n /**\n * Keeps track of the information about an active limbo resolution for each\n * active target ID that was started for the purpose of limbo resolution.\n */\n this.yc = new Map, this.Ic = new Oo, \n /** Stores user completion handlers, indexed by User and BatchId. */\n this.Tc = {}, \n /** Stores user callbacks waiting for all pending writes to be acknowledged. */\n this.Ec = new Map, this.Ac = lo.Mn(), this.onlineState = \"Unknown\" /* OnlineState.Unknown */ , \n // The primary state is set to `true` or `false` immediately after Firestore\n // startup. In the interim, a client should only be considered primary if\n // `isPrimary` is true.\n this.vc = void 0;\n }\n get isPrimaryClient() {\n return !0 === this.vc;\n }\n}\n\n/**\n * Initiates the new listen, resolves promise when listen enqueued to the\n * server. All the subsequent view snapshots or errors are sent to the\n * subscribed handlers. Returns the initial snapshot.\n */\nasync function Gc(t, e) {\n const n = pa(t);\n let s, i;\n const r = n.wc.get(e);\n if (r) \n // PORTING NOTE: With Multi-Tab Web, it is possible that a query view\n // already exists when EventManager calls us for the first time. This\n // happens when the primary tab is already listening to this query on\n // behalf of another tab and the user of the primary also starts listening\n // to the query. EventManager will not have an assigned target ID in this\n // case and calls `listen` to obtain this ID.\n s = r.targetId, n.sharedClientState.addLocalQueryTarget(s), i = r.view.lc(); else {\n const t = await hu(n.localStore, Jn(e)), r = n.sharedClientState.addLocalQueryTarget(t.targetId);\n s = t.targetId, i = await Qc(n, e, s, \"current\" === r, t.resumeToken), n.isPrimaryClient && Hu(n.remoteStore, t);\n }\n return i;\n}\n\n/**\n * Registers a view for a previously unknown query and computes its initial\n * snapshot.\n */ async function Qc(t, e, n, s, i) {\n // PORTING NOTE: On Web only, we inject the code that registers new Limbo\n // targets based on view changes. This allows us to only depend on Limbo\n // changes when user code includes queries.\n t.Rc = (e, n, s) => async function(t, e, n, s) {\n let i = e.view.sc(n);\n i.zi && (\n // The query has a limit and some docs were removed, so we need\n // to re-run the query against the local store to make sure we\n // didn't lose any good docs that had been past the limit.\n i = await fu(t.localStore, e.query, \n /* usePreviousResults= */ !1).then((({documents: t}) => e.view.sc(t, i))));\n const r = s && s.targetChanges.get(e.targetId), o = e.view.applyChanges(i, \n /* updateLimboDocuments= */ t.isPrimaryClient, r);\n return ia(t, e.targetId, o.cc), o.snapshot;\n }(t, e, n, s);\n const r = await fu(t.localStore, e, \n /* usePreviousResults= */ !0), o = new Lc(e, r.ir), u = o.sc(r.documents), c = gi.createSynthesizedTargetChangeForCurrentChange(n, s && \"Offline\" /* OnlineState.Offline */ !== t.onlineState, i), a = o.applyChanges(u, \n /* updateLimboDocuments= */ t.isPrimaryClient, c);\n ia(t, n, a.cc);\n const h = new qc(e, n, o);\n return t.wc.set(e, h), t._c.has(n) ? t._c.get(n).push(e) : t._c.set(n, [ e ]), a.snapshot;\n}\n\n/** Stops listening to the query. */ async function jc(t, e) {\n const n = L(t), s = n.wc.get(e), i = n._c.get(s.targetId);\n if (i.length > 1) return n._c.set(s.targetId, i.filter((t => !Zn(t, e)))), void n.wc.delete(e);\n // No other queries are mapped to the target, clean up the query and the target.\n if (n.isPrimaryClient) {\n // We need to remove the local query target first to allow us to verify\n // whether any other client is still interested in this target.\n n.sharedClientState.removeLocalQueryTarget(s.targetId);\n n.sharedClientState.isActiveQueryTarget(s.targetId) || await lu(n.localStore, s.targetId, \n /*keepPersistedTargetData=*/ !1).then((() => {\n n.sharedClientState.clearQueryState(s.targetId), Ju(n.remoteStore, s.targetId), \n na(n, s.targetId);\n })).catch(vt);\n } else na(n, s.targetId), await lu(n.localStore, s.targetId, \n /*keepPersistedTargetData=*/ !0);\n}\n\n/**\n * Initiates the write of local mutation batch which involves adding the\n * writes to the mutation queue, notifying the remote store about new\n * mutations and raising events for any changes this write caused.\n *\n * The promise returned by this call is resolved when the above steps\n * have completed, *not* when the write was acked by the backend. The\n * userCallback is resolved once the write was acked/rejected by the\n * backend (or failed locally for any other reason).\n */ async function zc(t, e, n) {\n const s = Ia(t);\n try {\n const t = await function(t, e) {\n const n = L(t), s = it.now(), i = e.reduce(((t, e) => t.add(e.key)), gs());\n let r, o;\n return n.persistence.runTransaction(\"Locally write mutations\", \"readwrite\", (t => {\n // Figure out which keys do not have a remote version in the cache, this\n // is needed to create the right overlay mutation: if no remote version\n // presents, we do not need to create overlays as patch mutations.\n // TODO(Overlay): Is there a better way to determine this? Using the\n // document version does not work because local mutations set them back\n // to 0.\n let u = cs(), c = gs();\n return n.Zi.getEntries(t, i).next((t => {\n u = t, u.forEach(((t, e) => {\n e.isValidDocument() || (c = c.add(t));\n }));\n })).next((() => n.localDocuments.getOverlayedDocuments(t, u))).next((i => {\n r = i;\n // For non-idempotent mutations (such as `FieldValue.increment()`),\n // we record the base state in a separate patch mutation. This is\n // later used to guarantee consistent values and prevents flicker\n // even if the backend sends us an update that already includes our\n // transform.\n const o = [];\n for (const t of e) {\n const e = Gs(t, r.get(t.key).overlayedDocument);\n null != e && \n // NOTE: The base state should only be applied if there's some\n // existing document to override, so use a Precondition of\n // exists=true\n o.push(new zs(t.key, e, cn(e.value.mapValue), Fs.exists(!0)));\n }\n return n.mutationQueue.addMutationBatch(t, s, o, e);\n })).next((e => {\n o = e;\n const s = e.applyToLocalDocumentSet(r, c);\n return n.documentOverlayCache.saveOverlays(t, e.batchId, s);\n }));\n })).then((() => ({\n batchId: o.batchId,\n changes: ls(r)\n })));\n }(s.localStore, e);\n s.sharedClientState.addPendingMutation(t.batchId), function(t, e, n) {\n let s = t.Tc[t.currentUser.toKey()];\n s || (s = new pe(et));\n s = s.insert(e, n), t.Tc[t.currentUser.toKey()] = s;\n }\n /**\n * Resolves or rejects the user callback for the given batch and then discards\n * it.\n */ (s, t.batchId, n), await ua(s, t.changes), await cc(s.remoteStore);\n } catch (t) {\n // If we can't persist the mutation, we reject the user callback and\n // don't send the mutation. The user can then retry the write.\n const e = Ec(t, \"Failed to persist write\");\n n.reject(e);\n }\n}\n\n/**\n * Applies one remote event to the sync engine, notifying any views of the\n * changes, and releasing any pending mutation batches that would become\n * visible because of the snapshot version the remote event contains.\n */ async function Wc(t, e) {\n const n = L(t);\n try {\n const t = await uu(n.localStore, e);\n // Update `receivedDocument` as appropriate for any limbo targets.\n e.targetChanges.forEach(((t, e) => {\n const s = n.yc.get(e);\n s && (\n // Since this is a limbo resolution lookup, it's for a single document\n // and it could be added, modified, or removed, but not a combination.\n F(t.addedDocuments.size + t.modifiedDocuments.size + t.removedDocuments.size <= 1), \n t.addedDocuments.size > 0 ? s.fc = !0 : t.modifiedDocuments.size > 0 ? F(s.fc) : t.removedDocuments.size > 0 && (F(s.fc), \n s.fc = !1));\n })), await ua(n, t, e);\n } catch (t) {\n await vt(t);\n }\n}\n\n/**\n * Applies an OnlineState change to the sync engine and notifies any views of\n * the change.\n */ function Hc(t, e, n) {\n const s = L(t);\n // If we are the secondary client, we explicitly ignore the remote store's\n // online state (the local client may go offline, even though the primary\n // tab remains online) and only apply the primary tab's online state from\n // SharedClientState.\n if (s.isPrimaryClient && 0 /* OnlineStateSource.RemoteStore */ === n || !s.isPrimaryClient && 1 /* OnlineStateSource.SharedClientState */ === n) {\n const t = [];\n s.wc.forEach(((n, s) => {\n const i = s.view.Mu(e);\n i.snapshot && t.push(i.snapshot);\n })), function(t, e) {\n const n = L(t);\n n.onlineState = e;\n let s = !1;\n n.queries.forEach(((t, n) => {\n for (const t of n.listeners) \n // Run global snapshot listeners if a consistent snapshot has been emitted.\n t.Mu(e) && (s = !0);\n })), s && xc(n);\n }(s.eventManager, e), t.length && s.dc.nu(t), s.onlineState = e, s.isPrimaryClient && s.sharedClientState.setOnlineState(e);\n }\n}\n\n/**\n * Rejects the listen for the given targetID. This can be triggered by the\n * backend for any active target.\n *\n * @param syncEngine - The sync engine implementation.\n * @param targetId - The targetID corresponds to one previously initiated by the\n * user as part of TargetData passed to listen() on RemoteStore.\n * @param err - A description of the condition that has forced the rejection.\n * Nearly always this will be an indication that the user is no longer\n * authorized to see the data matching the target.\n */ async function Jc(t, e, n) {\n const s = L(t);\n // PORTING NOTE: Multi-tab only.\n s.sharedClientState.updateQueryState(e, \"rejected\", n);\n const i = s.yc.get(e), r = i && i.key;\n if (r) {\n // TODO(klimt): We really only should do the following on permission\n // denied errors, but we don't have the cause code here.\n // It's a limbo doc. Create a synthetic event saying it was deleted.\n // This is kind of a hack. Ideally, we would have a method in the local\n // store to purge a document. However, it would be tricky to keep all of\n // the local store's invariants with another method.\n let t = new pe(ht.comparator);\n // TODO(b/217189216): This limbo document should ideally have a read time,\n // so that it is picked up by any read-time based scans. The backend,\n // however, does not send a read time for target removals.\n t = t.insert(r, an.newNoDocument(r, rt.min()));\n const n = gs().add(r), i = new mi(rt.min(), \n /* targetChanges= */ new Map, \n /* targetMismatches= */ new pe(et), t, n);\n await Wc(s, i), \n // Since this query failed, we won't want to manually unlisten to it.\n // We only remove it from bookkeeping after we successfully applied the\n // RemoteEvent. If `applyRemoteEvent()` throws, we want to re-listen to\n // this query when the RemoteStore restarts the Watch stream, which should\n // re-trigger the target failure.\n s.gc = s.gc.remove(r), s.yc.delete(e), oa(s);\n } else await lu(s.localStore, e, \n /* keepPersistedTargetData */ !1).then((() => na(s, e, n))).catch(vt);\n}\n\nasync function Yc(t, e) {\n const n = L(t), s = e.batch.batchId;\n try {\n const t = await ru(n.localStore, e);\n // The local store may or may not be able to apply the write result and\n // raise events immediately (depending on whether the watcher is caught\n // up), so we raise user callbacks first so that they consistently happen\n // before listen events.\n ea(n, s, /*error=*/ null), ta(n, s), n.sharedClientState.updateMutationState(s, \"acknowledged\"), \n await ua(n, t);\n } catch (t) {\n await vt(t);\n }\n}\n\nasync function Xc(t, e, n) {\n const s = L(t);\n try {\n const t = await function(t, e) {\n const n = L(t);\n return n.persistence.runTransaction(\"Reject batch\", \"readwrite-primary\", (t => {\n let s;\n return n.mutationQueue.lookupMutationBatch(t, e).next((e => (F(null !== e), s = e.keys(), \n n.mutationQueue.removeMutationBatch(t, e)))).next((() => n.mutationQueue.performConsistencyCheck(t))).next((() => n.documentOverlayCache.removeOverlaysForBatchId(t, s, e))).next((() => n.localDocuments.recalculateAndSaveOverlaysForDocumentKeys(t, s))).next((() => n.localDocuments.getDocuments(t, s)));\n }));\n }\n /**\n * Returns the largest (latest) batch id in mutation queue that is pending\n * server response.\n *\n * Returns `BATCHID_UNKNOWN` if the queue is empty.\n */ (s.localStore, e);\n // The local store may or may not be able to apply the write result and\n // raise events immediately (depending on whether the watcher is caught up),\n // so we raise user callbacks first so that they consistently happen before\n // listen events.\n ea(s, e, n), ta(s, e), s.sharedClientState.updateMutationState(e, \"rejected\", n), \n await ua(s, t);\n } catch (n) {\n await vt(n);\n }\n}\n\n/**\n * Registers a user callback that resolves when all pending mutations at the moment of calling\n * are acknowledged .\n */ async function Zc(t, e) {\n const n = L(t);\n ec(n.remoteStore) || N(\"SyncEngine\", \"The network is disabled. The task returned by 'awaitPendingWrites()' will not complete until the network is enabled.\");\n try {\n const t = await function(t) {\n const e = L(t);\n return e.persistence.runTransaction(\"Get highest unacknowledged batch id\", \"readonly\", (t => e.mutationQueue.getHighestUnacknowledgedBatchId(t)));\n }(n.localStore);\n if (-1 === t) \n // Trigger the callback right away if there is no pending writes at the moment.\n return void e.resolve();\n const s = n.Ec.get(t) || [];\n s.push(e), n.Ec.set(t, s);\n } catch (t) {\n const n = Ec(t, \"Initialization of waitForPendingWrites() operation failed\");\n e.reject(n);\n }\n}\n\n/**\n * Triggers the callbacks that are waiting for this batch id to get acknowledged by server,\n * if there are any.\n */ function ta(t, e) {\n (t.Ec.get(e) || []).forEach((t => {\n t.resolve();\n })), t.Ec.delete(e);\n}\n\n/** Reject all outstanding callbacks waiting for pending writes to complete. */ function ea(t, e, n) {\n const s = L(t);\n let i = s.Tc[s.currentUser.toKey()];\n // NOTE: Mutations restored from persistence won't have callbacks, so it's\n // okay for there to be no callback for this ID.\n if (i) {\n const t = i.get(e);\n t && (n ? t.reject(n) : t.resolve(), i = i.remove(e)), s.Tc[s.currentUser.toKey()] = i;\n }\n}\n\nfunction na(t, e, n = null) {\n t.sharedClientState.removeLocalQueryTarget(e);\n for (const s of t._c.get(e)) t.wc.delete(s), n && t.dc.Pc(s, n);\n if (t._c.delete(e), t.isPrimaryClient) {\n t.Ic.Is(e).forEach((e => {\n t.Ic.containsKey(e) || \n // We removed the last reference for this key\n sa(t, e);\n }));\n }\n}\n\nfunction sa(t, e) {\n t.mc.delete(e.path.canonicalString());\n // It's possible that the target already got removed because the query failed. In that case,\n // the key won't exist in `limboTargetsByKey`. Only do the cleanup if we still have the target.\n const n = t.gc.get(e);\n null !== n && (Ju(t.remoteStore, n), t.gc = t.gc.remove(e), t.yc.delete(n), oa(t));\n}\n\nfunction ia(t, e, n) {\n for (const s of n) if (s instanceof Fc) t.Ic.addReference(s.key, e), ra(t, s); else if (s instanceof Bc) {\n N(\"SyncEngine\", \"Document no longer in limbo: \" + s.key), t.Ic.removeReference(s.key, e);\n t.Ic.containsKey(s.key) || \n // We removed the last reference for this key\n sa(t, s.key);\n } else O();\n}\n\nfunction ra(t, e) {\n const n = e.key, s = n.path.canonicalString();\n t.gc.get(n) || t.mc.has(s) || (N(\"SyncEngine\", \"New document in limbo: \" + n), t.mc.add(s), \n oa(t));\n}\n\n/**\n * Starts listens for documents in limbo that are enqueued for resolution,\n * subject to a maximum number of concurrent resolutions.\n *\n * Without bounding the number of concurrent resolutions, the server can fail\n * with \"resource exhausted\" errors which can lead to pathological client\n * behavior as seen in https://github.com/firebase/firebase-js-sdk/issues/2683.\n */ function oa(t) {\n for (;t.mc.size > 0 && t.gc.size < t.maxConcurrentLimboResolutions; ) {\n const e = t.mc.values().next().value;\n t.mc.delete(e);\n const n = new ht(ut.fromString(e)), s = t.Ac.next();\n t.yc.set(s, new Uc(n)), t.gc = t.gc.insert(n, s), Hu(t.remoteStore, new cr(Jn(Gn(n.path)), s, \"TargetPurposeLimboResolution\" /* TargetPurpose.LimboResolution */ , Ot.ct));\n }\n}\n\nasync function ua(t, e, n) {\n const s = L(t), i = [], r = [], o = [];\n s.wc.isEmpty() || (s.wc.forEach(((t, u) => {\n o.push(s.Rc(u, e, n).then((t => {\n // Update views if there are actual changes.\n if (\n // If there are changes, or we are handling a global snapshot, notify\n // secondary clients to update query state.\n (t || n) && s.isPrimaryClient && s.sharedClientState.updateQueryState(u.targetId, (null == t ? void 0 : t.fromCache) ? \"not-current\" : \"current\"), \n t) {\n i.push(t);\n const e = tu.Li(u.targetId, t);\n r.push(e);\n }\n })));\n })), await Promise.all(o), s.dc.nu(i), await async function(t, e) {\n const n = L(t);\n try {\n await n.persistence.runTransaction(\"notifyLocalViewChanges\", \"readwrite\", (t => Rt.forEach(e, (e => Rt.forEach(e.Fi, (s => n.persistence.referenceDelegate.addReference(t, e.targetId, s))).next((() => Rt.forEach(e.Bi, (s => n.persistence.referenceDelegate.removeReference(t, e.targetId, s)))))))));\n } catch (t) {\n if (!Dt(t)) throw t;\n // If `notifyLocalViewChanges` fails, we did not advance the sequence\n // number for the documents that were included in this transaction.\n // This might trigger them to be deleted earlier than they otherwise\n // would have, but it should not invalidate the integrity of the data.\n N(\"LocalStore\", \"Failed to update sequence numbers: \" + t);\n }\n for (const t of e) {\n const e = t.targetId;\n if (!t.fromCache) {\n const t = n.Ji.get(e), s = t.snapshotVersion, i = t.withLastLimboFreeSnapshotVersion(s);\n // Advance the last limbo free snapshot version\n n.Ji = n.Ji.insert(e, i);\n }\n }\n }(s.localStore, r));\n}\n\nasync function ca(t, e) {\n const n = L(t);\n if (!n.currentUser.isEqual(e)) {\n N(\"SyncEngine\", \"User change. New user:\", e.toKey());\n const t = await iu(n.localStore, e);\n n.currentUser = e, \n // Fails tasks waiting for pending writes requested by previous user.\n function(t, e) {\n t.Ec.forEach((t => {\n t.forEach((t => {\n t.reject(new U(q.CANCELLED, e));\n }));\n })), t.Ec.clear();\n }(n, \"'waitForPendingWrites' promise is rejected due to a user change.\"), \n // TODO(b/114226417): Consider calling this only in the primary tab.\n n.sharedClientState.handleUserChange(e, t.removedBatchIds, t.addedBatchIds), await ua(n, t.er);\n }\n}\n\nfunction aa(t, e) {\n const n = L(t), s = n.yc.get(e);\n if (s && s.fc) return gs().add(s.key);\n {\n let t = gs();\n const s = n._c.get(e);\n if (!s) return t;\n for (const e of s) {\n const s = n.wc.get(e);\n t = t.unionWith(s.view.nc);\n }\n return t;\n }\n}\n\n/**\n * Reconcile the list of synced documents in an existing view with those\n * from persistence.\n */ async function ha(t, e) {\n const n = L(t), s = await fu(n.localStore, e.query, \n /* usePreviousResults= */ !0), i = e.view.hc(s);\n return n.isPrimaryClient && ia(n, e.targetId, i.cc), i;\n}\n\n/**\n * Retrieves newly changed documents from remote document cache and raises\n * snapshots if needed.\n */\n// PORTING NOTE: Multi-Tab only.\nasync function la(t, e) {\n const n = L(t);\n return wu(n.localStore, e).then((t => ua(n, t)));\n}\n\n/** Applies a mutation state to an existing batch. */\n// PORTING NOTE: Multi-Tab only.\nasync function fa(t, e, n, s) {\n const i = L(t), r = await function(t, e) {\n const n = L(t), s = L(n.mutationQueue);\n return n.persistence.runTransaction(\"Lookup mutation documents\", \"readonly\", (t => s.Sn(t, e).next((e => e ? n.localDocuments.getDocuments(t, e) : Rt.resolve(null)))));\n }\n // PORTING NOTE: Multi-Tab only.\n (i.localStore, e);\n null !== r ? (\"pending\" === n ? \n // If we are the primary client, we need to send this write to the\n // backend. Secondary clients will ignore these writes since their remote\n // connection is disabled.\n await cc(i.remoteStore) : \"acknowledged\" === n || \"rejected\" === n ? (\n // NOTE: Both these methods are no-ops for batches that originated from\n // other clients.\n ea(i, e, s || null), ta(i, e), function(t, e) {\n L(L(t).mutationQueue).Cn(e);\n }\n // PORTING NOTE: Multi-Tab only.\n (i.localStore, e)) : O(), await ua(i, r)) : \n // A throttled tab may not have seen the mutation before it was completed\n // and removed from the mutation queue, in which case we won't have cached\n // the affected documents. In this case we can safely ignore the update\n // since that means we didn't apply the mutation locally at all (if we\n // had, we would have cached the affected documents), and so we will just\n // see any resulting document changes via normal remote document updates\n // as applicable.\n N(\"SyncEngine\", \"Cannot apply mutation batch with id: \" + e);\n}\n\n/** Applies a query target change from a different tab. */\n// PORTING NOTE: Multi-Tab only.\nasync function da(t, e) {\n const n = L(t);\n if (pa(n), Ia(n), !0 === e && !0 !== n.vc) {\n // Secondary tabs only maintain Views for their local listeners and the\n // Views internal state may not be 100% populated (in particular\n // secondary tabs don't track syncedDocuments, the set of documents the\n // server considers to be in the target). So when a secondary becomes\n // primary, we need to need to make sure that all views for all targets\n // match the state on disk.\n const t = n.sharedClientState.getAllActiveQueryTargets(), e = await wa(n, t.toArray());\n n.vc = !0, await yc(n.remoteStore, !0);\n for (const t of e) Hu(n.remoteStore, t);\n } else if (!1 === e && !1 !== n.vc) {\n const t = [];\n let e = Promise.resolve();\n n._c.forEach(((s, i) => {\n n.sharedClientState.isLocalQueryTarget(i) ? t.push(i) : e = e.then((() => (na(n, i), \n lu(n.localStore, i, \n /*keepPersistedTargetData=*/ !0)))), Ju(n.remoteStore, i);\n })), await e, await wa(n, t), \n // PORTING NOTE: Multi-Tab only.\n function(t) {\n const e = L(t);\n e.yc.forEach(((t, n) => {\n Ju(e.remoteStore, n);\n })), e.Ic.Ts(), e.yc = new Map, e.gc = new pe(ht.comparator);\n }\n /**\n * Reconcile the query views of the provided query targets with the state from\n * persistence. Raises snapshots for any changes that affect the local\n * client and returns the updated state of all target's query data.\n *\n * @param syncEngine - The sync engine implementation\n * @param targets - the list of targets with views that need to be recomputed\n * @param transitionToPrimary - `true` iff the tab transitions from a secondary\n * tab to a primary tab\n */\n // PORTING NOTE: Multi-Tab only.\n (n), n.vc = !1, await yc(n.remoteStore, !1);\n }\n}\n\nasync function wa(t, e, n) {\n const s = L(t), i = [], r = [];\n for (const t of e) {\n let e;\n const n = s._c.get(t);\n if (n && 0 !== n.length) {\n // For queries that have a local View, we fetch their current state\n // from LocalStore (as the resume token and the snapshot version\n // might have changed) and reconcile their views with the persisted\n // state (the list of syncedDocuments may have gotten out of sync).\n e = await hu(s.localStore, Jn(n[0]));\n for (const t of n) {\n const e = s.wc.get(t), n = await ha(s, e);\n n.snapshot && r.push(n.snapshot);\n }\n } else {\n // For queries that never executed on this client, we need to\n // allocate the target in LocalStore and initialize a new View.\n const n = await du(s.localStore, t);\n e = await hu(s.localStore, n), await Qc(s, _a(n), t, \n /*current=*/ !1, e.resumeToken);\n }\n i.push(e);\n }\n return s.dc.nu(r), i;\n}\n\n/**\n * Creates a `Query` object from the specified `Target`. There is no way to\n * obtain the original `Query`, so we synthesize a `Query` from the `Target`\n * object.\n *\n * The synthesized result might be different from the original `Query`, but\n * since the synthesized `Query` should return the same results as the\n * original one (only the presentation of results might differ), the potential\n * difference will not cause issues.\n */\n// PORTING NOTE: Multi-Tab only.\nfunction _a(t) {\n return Kn(t.path, t.collectionGroup, t.orderBy, t.filters, t.limit, \"F\" /* LimitType.First */ , t.startAt, t.endAt);\n}\n\n/** Returns the IDs of the clients that are currently active. */\n// PORTING NOTE: Multi-Tab only.\nfunction ma(t) {\n const e = L(t);\n return L(L(e.localStore).persistence).$i();\n}\n\n/** Applies a query target change from a different tab. */\n// PORTING NOTE: Multi-Tab only.\nasync function ga(t, e, n, s) {\n const i = L(t);\n if (i.vc) \n // If we receive a target state notification via WebStorage, we are\n // either already secondary or another tab has taken the primary lease.\n return void N(\"SyncEngine\", \"Ignoring unexpected query state notification.\");\n const r = i._c.get(e);\n if (r && r.length > 0) switch (n) {\n case \"current\":\n case \"not-current\":\n {\n const t = await wu(i.localStore, ss(r[0])), s = mi.createSynthesizedRemoteEventForCurrentChange(e, \"current\" === n, Ve.EMPTY_BYTE_STRING);\n await ua(i, t, s);\n break;\n }\n\n case \"rejected\":\n await lu(i.localStore, e, \n /* keepPersistedTargetData */ !0), na(i, e, s);\n break;\n\n default:\n O();\n }\n}\n\n/** Adds or removes Watch targets for queries from different tabs. */ async function ya(t, e, n) {\n const s = pa(t);\n if (s.vc) {\n for (const t of e) {\n if (s._c.has(t)) {\n // A target might have been added in a previous attempt\n N(\"SyncEngine\", \"Adding an already active target \" + t);\n continue;\n }\n const e = await du(s.localStore, t), n = await hu(s.localStore, e);\n await Qc(s, _a(e), n.targetId, \n /*current=*/ !1, n.resumeToken), Hu(s.remoteStore, n);\n }\n for (const t of n) \n // Check that the target is still active since the target might have been\n // removed if it has been rejected by the backend.\n s._c.has(t) && \n // Release queries that are still active.\n await lu(s.localStore, t, \n /* keepPersistedTargetData */ !1).then((() => {\n Ju(s.remoteStore, t), na(s, t);\n })).catch(vt);\n }\n}\n\nfunction pa(t) {\n const e = L(t);\n return e.remoteStore.remoteSyncer.applyRemoteEvent = Wc.bind(null, e), e.remoteStore.remoteSyncer.getRemoteKeysForTarget = aa.bind(null, e), \n e.remoteStore.remoteSyncer.rejectListen = Jc.bind(null, e), e.dc.nu = Dc.bind(null, e.eventManager), \n e.dc.Pc = Cc.bind(null, e.eventManager), e;\n}\n\nfunction Ia(t) {\n const e = L(t);\n return e.remoteStore.remoteSyncer.applySuccessfulWrite = Yc.bind(null, e), e.remoteStore.remoteSyncer.rejectFailedWrite = Xc.bind(null, e), \n e;\n}\n\n/**\n * Loads a Firestore bundle into the SDK. The returned promise resolves when\n * the bundle finished loading.\n *\n * @param syncEngine - SyncEngine to use.\n * @param bundleReader - Bundle to load into the SDK.\n * @param task - LoadBundleTask used to update the loading progress to public API.\n */ function Ta(t, e, n) {\n const s = L(t);\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n (\n /** Loads a bundle and returns the list of affected collection groups. */\n async function(t, e, n) {\n try {\n const s = await e.getMetadata();\n if (await function(t, e) {\n const n = L(t), s = Ni(e.createTime);\n return n.persistence.runTransaction(\"hasNewerBundle\", \"readonly\", (t => n.qs.getBundleMetadata(t, e.id))).then((t => !!t && t.createTime.compareTo(s) >= 0));\n }\n /**\n * Saves the given `BundleMetadata` to local persistence.\n */ (t.localStore, s)) return await e.close(), n._completeWith(function(t) {\n return {\n taskState: \"Success\",\n documentsLoaded: t.totalDocuments,\n bytesLoaded: t.totalBytes,\n totalDocuments: t.totalDocuments,\n totalBytes: t.totalBytes\n };\n }(s)), Promise.resolve(new Set);\n n._updateProgress(Oc(s));\n const i = new $c(s, t.localStore, e.serializer);\n let r = await e.bc();\n for (;r; ) {\n const t = await i.zu(r);\n t && n._updateProgress(t), r = await e.bc();\n }\n const o = await i.complete();\n return await ua(t, o.Ju, \n /* remoteEvent */ void 0), \n // Save metadata, so loading the same bundle will skip.\n await function(t, e) {\n const n = L(t);\n return n.persistence.runTransaction(\"Save bundle\", \"readwrite\", (t => n.qs.saveBundleMetadata(t, e)));\n }\n /**\n * Returns a promise of a `NamedQuery` associated with given query name. Promise\n * resolves to undefined if no persisted data can be found.\n */ (t.localStore, s), n._completeWith(o.progress), Promise.resolve(o.Hu);\n } catch (t) {\n return M(\"SyncEngine\", `Loading bundle failed with ${t}`), n._failWith(t), Promise.resolve(new Set);\n }\n }\n /**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n /**\n * Provides all components needed for Firestore with in-memory persistence.\n * Uses EagerGC garbage collection.\n */)(s, e, n).then((t => {\n s.sharedClientState.notifyBundleLoaded(t);\n }));\n}\n\nclass Ea {\n constructor() {\n this.synchronizeTabs = !1;\n }\n async initialize(t) {\n this.serializer = Fu(t.databaseInfo.databaseId), this.sharedClientState = this.createSharedClientState(t), \n this.persistence = this.createPersistence(t), await this.persistence.start(), this.localStore = this.createLocalStore(t), \n this.gcScheduler = this.createGarbageCollectionScheduler(t, this.localStore), this.indexBackfillerScheduler = this.createIndexBackfillerScheduler(t, this.localStore);\n }\n createGarbageCollectionScheduler(t, e) {\n return null;\n }\n createIndexBackfillerScheduler(t, e) {\n return null;\n }\n createLocalStore(t) {\n return su(this.persistence, new eu, t.initialUser, this.serializer);\n }\n createPersistence(t) {\n return new Ko(Qo.zs, this.serializer);\n }\n createSharedClientState(t) {\n return new bu;\n }\n async terminate() {\n this.gcScheduler && this.gcScheduler.stop(), await this.sharedClientState.shutdown(), \n await this.persistence.shutdown();\n }\n}\n\nclass Aa extends Ea {\n constructor(t) {\n super(), this.cacheSizeBytes = t;\n }\n createGarbageCollectionScheduler(t, e) {\n F(this.persistence.referenceDelegate instanceof jo);\n const n = this.persistence.referenceDelegate.garbageCollector;\n return new po(n, t.asyncQueue, e);\n }\n createPersistence(t) {\n const e = void 0 !== this.cacheSizeBytes ? so.withCacheSize(this.cacheSizeBytes) : so.DEFAULT;\n return new Ko((t => jo.zs(t, e)), this.serializer);\n }\n}\n\n/**\n * Provides all components needed for Firestore with IndexedDB persistence.\n */ class va extends Ea {\n constructor(t, e, n) {\n super(), this.Vc = t, this.cacheSizeBytes = e, this.forceOwnership = n, this.synchronizeTabs = !1;\n }\n async initialize(t) {\n await super.initialize(t), await this.Vc.initialize(this, t), \n // Enqueue writes from a previous session\n await Ia(this.Vc.syncEngine), await cc(this.Vc.remoteStore), \n // NOTE: This will immediately call the listener, so we make sure to\n // set it after localStore / remoteStore are started.\n await this.persistence.Ii((() => (this.gcScheduler && !this.gcScheduler.started && this.gcScheduler.start(), \n this.indexBackfillerScheduler && !this.indexBackfillerScheduler.started && this.indexBackfillerScheduler.start(), \n Promise.resolve())));\n }\n createLocalStore(t) {\n return su(this.persistence, new eu, t.initialUser, this.serializer);\n }\n createGarbageCollectionScheduler(t, e) {\n const n = this.persistence.referenceDelegate.garbageCollector;\n return new po(n, t.asyncQueue, e);\n }\n createIndexBackfillerScheduler(t, e) {\n const n = new $t(e, this.persistence);\n return new Mt(t.asyncQueue, n);\n }\n createPersistence(t) {\n const e = Zo(t.databaseInfo.databaseId, t.databaseInfo.persistenceKey), n = void 0 !== this.cacheSizeBytes ? so.withCacheSize(this.cacheSizeBytes) : so.DEFAULT;\n return new Jo(this.synchronizeTabs, e, t.clientId, n, t.asyncQueue, $u(), Ou(), this.serializer, this.sharedClientState, !!this.forceOwnership);\n }\n createSharedClientState(t) {\n return new bu;\n }\n}\n\n/**\n * Provides all components needed for Firestore with multi-tab IndexedDB\n * persistence.\n *\n * In the legacy client, this provider is used to provide both multi-tab and\n * non-multi-tab persistence since we cannot tell at build time whether\n * `synchronizeTabs` will be enabled.\n */ class Ra extends va {\n constructor(t, e) {\n super(t, e, /* forceOwnership= */ !1), this.Vc = t, this.cacheSizeBytes = e, this.synchronizeTabs = !0;\n }\n async initialize(t) {\n await super.initialize(t);\n const e = this.Vc.syncEngine;\n this.sharedClientState instanceof Pu && (this.sharedClientState.syncEngine = {\n jr: fa.bind(null, e),\n zr: ga.bind(null, e),\n Wr: ya.bind(null, e),\n $i: ma.bind(null, e),\n Qr: la.bind(null, e)\n }, await this.sharedClientState.start()), \n // NOTE: This will immediately call the listener, so we make sure to\n // set it after localStore / remoteStore are started.\n await this.persistence.Ii((async t => {\n await da(this.Vc.syncEngine, t), this.gcScheduler && (t && !this.gcScheduler.started ? this.gcScheduler.start() : t || this.gcScheduler.stop()), \n this.indexBackfillerScheduler && (t && !this.indexBackfillerScheduler.started ? this.indexBackfillerScheduler.start() : t || this.indexBackfillerScheduler.stop());\n }));\n }\n createSharedClientState(t) {\n const e = $u();\n if (!Pu.D(e)) throw new U(q.UNIMPLEMENTED, \"IndexedDB persistence is only available on platforms that support LocalStorage.\");\n const n = Zo(t.databaseInfo.databaseId, t.databaseInfo.persistenceKey);\n return new Pu(e, t.asyncQueue, n, t.clientId, t.initialUser);\n }\n}\n\n/**\n * Initializes and wires the components that are needed to interface with the\n * network.\n */ class Pa {\n async initialize(t, e) {\n this.localStore || (this.localStore = t.localStore, this.sharedClientState = t.sharedClientState, \n this.datastore = this.createDatastore(e), this.remoteStore = this.createRemoteStore(e), \n this.eventManager = this.createEventManager(e), this.syncEngine = this.createSyncEngine(e, \n /* startAsPrimary=*/ !t.synchronizeTabs), this.sharedClientState.onlineStateHandler = t => Hc(this.syncEngine, t, 1 /* OnlineStateSource.SharedClientState */), \n this.remoteStore.remoteSyncer.handleCredentialChange = ca.bind(null, this.syncEngine), \n await yc(this.remoteStore, this.syncEngine.isPrimaryClient));\n }\n createEventManager(t) {\n return new bc;\n }\n createDatastore(t) {\n const e = Fu(t.databaseInfo.databaseId), n = (s = t.databaseInfo, new Mu(s));\n var s;\n /** Return the Platform-specific connectivity monitor. */ return function(t, e, n, s) {\n return new Ku(t, e, n, s);\n }(t.authCredentials, t.appCheckCredentials, n, e);\n }\n createRemoteStore(t) {\n return e = this.localStore, n = this.datastore, s = t.asyncQueue, i = t => Hc(this.syncEngine, t, 0 /* OnlineStateSource.RemoteStore */), \n r = Su.D() ? new Su : new Vu, new ju(e, n, s, i, r);\n var e, n, s, i, r;\n /** Re-enables the network. Idempotent. */ }\n createSyncEngine(t, e) {\n return function(t, e, n, \n // PORTING NOTE: Manages state synchronization in multi-tab environments.\n s, i, r, o) {\n const u = new Kc(t, e, n, s, i, r);\n return o && (u.vc = !0), u;\n }(this.localStore, this.remoteStore, this.eventManager, this.sharedClientState, t.initialUser, t.maxConcurrentLimboResolutions, e);\n }\n terminate() {\n return async function(t) {\n const e = L(t);\n N(\"RemoteStore\", \"RemoteStore shutting down.\"), e.vu.add(5 /* OfflineCause.Shutdown */), \n await Wu(e), e.Pu.shutdown(), \n // Set the OnlineState to Unknown (rather than Offline) to avoid potentially\n // triggering spurious listener events with cached data, etc.\n e.bu.set(\"Unknown\" /* OnlineState.Unknown */);\n }(this.remoteStore);\n }\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * How many bytes to read each time when `ReadableStreamReader.read()` is\n * called. Only applicable for byte streams that we control (e.g. those backed\n * by an UInt8Array).\n */\n/**\n * Builds a `ByteStreamReader` from a UInt8Array.\n * @param source - The data source to use.\n * @param bytesPerRead - How many bytes each `read()` from the returned reader\n * will read.\n */\nfunction ba(t, e = 10240) {\n let n = 0;\n // The TypeScript definition for ReadableStreamReader changed. We use\n // `any` here to allow this code to compile with different versions.\n // See https://github.com/microsoft/TypeScript/issues/42970\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n async read() {\n if (n < t.byteLength) {\n const s = {\n value: t.slice(n, n + e),\n done: !1\n };\n return n += e, s;\n }\n return {\n done: !0\n };\n },\n async cancel() {},\n releaseLock() {},\n closed: Promise.resolve()\n };\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * On web, a `ReadableStream` is wrapped around by a `ByteStreamReader`.\n */\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/*\n * A wrapper implementation of Observer that will dispatch events\n * asynchronously. To allow immediate silencing, a mute call is added which\n * causes events scheduled to no longer be raised.\n */\nclass Va {\n constructor(t) {\n this.observer = t, \n /**\n * When set to true, will not raise future events. Necessary to deal with\n * async detachment of listener.\n */\n this.muted = !1;\n }\n next(t) {\n this.observer.next && this.Sc(this.observer.next, t);\n }\n error(t) {\n this.observer.error ? this.Sc(this.observer.error, t) : k(\"Uncaught Error in snapshot listener:\", t.toString());\n }\n Dc() {\n this.muted = !0;\n }\n Sc(t, e) {\n this.muted || setTimeout((() => {\n this.muted || t(e);\n }), 0);\n }\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A class representing a bundle.\n *\n * Takes a bundle stream or buffer, and presents abstractions to read bundled\n * elements out of the underlying content.\n */ class Sa {\n constructor(\n /** The reader to read from underlying binary bundle data source. */\n t, e) {\n this.Cc = t, this.serializer = e, \n /** Cached bundle metadata. */\n this.metadata = new K, \n /**\n * Internal buffer to hold bundle content, accumulating incomplete element\n * content.\n */\n this.buffer = new Uint8Array, this.xc = new TextDecoder(\"utf-8\"), \n // Read the metadata (which is the first element).\n this.Nc().then((t => {\n t && t.Qu() ? this.metadata.resolve(t.Gu.metadata) : this.metadata.reject(new Error(`The first element of the bundle is not a metadata, it is\\n ${JSON.stringify(null == t ? void 0 : t.Gu)}`));\n }), (t => this.metadata.reject(t)));\n }\n close() {\n return this.Cc.cancel();\n }\n async getMetadata() {\n return this.metadata.promise;\n }\n async bc() {\n // Makes sure metadata is read before proceeding.\n return await this.getMetadata(), this.Nc();\n }\n /**\n * Reads from the head of internal buffer, and pulling more data from\n * underlying stream if a complete element cannot be found, until an\n * element(including the prefixed length and the JSON string) is found.\n *\n * Once a complete element is read, it is dropped from internal buffer.\n *\n * Returns either the bundled element, or null if we have reached the end of\n * the stream.\n */ async Nc() {\n const t = await this.kc();\n if (null === t) return null;\n const e = this.xc.decode(t), n = Number(e);\n isNaN(n) && this.Mc(`length string (${e}) is not valid number`);\n const s = await this.$c(n);\n return new kc(JSON.parse(s), t.length + n);\n }\n /** First index of '{' from the underlying buffer. */ Oc() {\n return this.buffer.findIndex((t => t === \"{\".charCodeAt(0)));\n }\n /**\n * Reads from the beginning of the internal buffer, until the first '{', and\n * return the content.\n *\n * If reached end of the stream, returns a null.\n */ async kc() {\n for (;this.Oc() < 0; ) {\n if (await this.Fc()) break;\n }\n // Broke out of the loop because underlying stream is closed, and there\n // happens to be no more data to process.\n if (0 === this.buffer.length) return null;\n const t = this.Oc();\n // Broke out of the loop because underlying stream is closed, but still\n // cannot find an open bracket.\n t < 0 && this.Mc(\"Reached the end of bundle when a length string is expected.\");\n const e = this.buffer.slice(0, t);\n // Update the internal buffer to drop the read length.\n return this.buffer = this.buffer.slice(t), e;\n }\n /**\n * Reads from a specified position from the internal buffer, for a specified\n * number of bytes, pulling more data from the underlying stream if needed.\n *\n * Returns a string decoded from the read bytes.\n */ async $c(t) {\n for (;this.buffer.length < t; ) {\n await this.Fc() && this.Mc(\"Reached the end of bundle when more is expected.\");\n }\n const e = this.xc.decode(this.buffer.slice(0, t));\n // Update the internal buffer to drop the read json string.\n return this.buffer = this.buffer.slice(t), e;\n }\n Mc(t) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n throw this.Cc.cancel(), new Error(`Invalid bundle format: ${t}`);\n }\n /**\n * Pulls more data from underlying stream to internal buffer.\n * Returns a boolean indicating whether the stream is finished.\n */ async Fc() {\n const t = await this.Cc.read();\n if (!t.done) {\n const e = new Uint8Array(this.buffer.length + t.value.length);\n e.set(this.buffer), e.set(t.value, this.buffer.length), this.buffer = e;\n }\n return t.done;\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Internal transaction object responsible for accumulating the mutations to\n * perform and the base versions for any documents read.\n */\nclass Da {\n constructor(t) {\n this.datastore = t, \n // The version of each document that was read during this transaction.\n this.readVersions = new Map, this.mutations = [], this.committed = !1, \n /**\n * A deferred usage error that occurred previously in this transaction that\n * will cause the transaction to fail once it actually commits.\n */\n this.lastWriteError = null, \n /**\n * Set of documents that have been written in the transaction.\n *\n * When there's more than one write to the same key in a transaction, any\n * writes after the first are handled differently.\n */\n this.writtenDocs = new Set;\n }\n async lookup(t) {\n if (this.ensureCommitNotCalled(), this.mutations.length > 0) throw new U(q.INVALID_ARGUMENT, \"Firestore transactions require all reads to be executed before all writes.\");\n const e = await async function(t, e) {\n const n = L(t), s = Li(n.serializer) + \"/documents\", i = {\n documents: e.map((t => $i(n.serializer, t)))\n }, r = await n.vo(\"BatchGetDocuments\", s, i, e.length), o = new Map;\n r.forEach((t => {\n const e = Gi(n.serializer, t);\n o.set(e.key.toString(), e);\n }));\n const u = [];\n return e.forEach((t => {\n const e = o.get(t.toString());\n F(!!e), u.push(e);\n })), u;\n }(this.datastore, t);\n return e.forEach((t => this.recordVersion(t))), e;\n }\n set(t, e) {\n this.write(e.toMutation(t, this.precondition(t))), this.writtenDocs.add(t.toString());\n }\n update(t, e) {\n try {\n this.write(e.toMutation(t, this.preconditionForUpdate(t)));\n } catch (t) {\n this.lastWriteError = t;\n }\n this.writtenDocs.add(t.toString());\n }\n delete(t) {\n this.write(new Ys(t, this.precondition(t))), this.writtenDocs.add(t.toString());\n }\n async commit() {\n if (this.ensureCommitNotCalled(), this.lastWriteError) throw this.lastWriteError;\n const t = this.readVersions;\n // For each mutation, note that the doc was written.\n this.mutations.forEach((e => {\n t.delete(e.key.toString());\n })), \n // For each document that was read but not written to, we want to perform\n // a `verify` operation.\n t.forEach(((t, e) => {\n const n = ht.fromPath(e);\n this.mutations.push(new Xs(n, this.precondition(n)));\n })), await async function(t, e) {\n const n = L(t), s = Li(n.serializer) + \"/documents\", i = {\n writes: e.map((t => ji(n.serializer, t)))\n };\n await n.Io(\"Commit\", s, i);\n }(this.datastore, this.mutations), this.committed = !0;\n }\n recordVersion(t) {\n let e;\n if (t.isFoundDocument()) e = t.version; else {\n if (!t.isNoDocument()) throw O();\n // Represent a deleted doc using SnapshotVersion.min().\n e = rt.min();\n }\n const n = this.readVersions.get(t.key.toString());\n if (n) {\n if (!e.isEqual(n)) \n // This transaction will fail no matter what.\n throw new U(q.ABORTED, \"Document version changed between two reads.\");\n } else this.readVersions.set(t.key.toString(), e);\n }\n /**\n * Returns the version of this document when it was read in this transaction,\n * as a precondition, or no precondition if it was not read.\n */ precondition(t) {\n const e = this.readVersions.get(t.toString());\n return !this.writtenDocs.has(t.toString()) && e ? e.isEqual(rt.min()) ? Fs.exists(!1) : Fs.updateTime(e) : Fs.none();\n }\n /**\n * Returns the precondition for a document if the operation is an update.\n */ preconditionForUpdate(t) {\n const e = this.readVersions.get(t.toString());\n // The first time a document is written, we want to take into account the\n // read time and existence\n if (!this.writtenDocs.has(t.toString()) && e) {\n if (e.isEqual(rt.min())) \n // The document doesn't exist, so fail the transaction.\n // This has to be validated locally because you can't send a\n // precondition that a document does not exist without changing the\n // semantics of the backend write to be an insert. This is the reverse\n // of what we want, since we want to assert that the document doesn't\n // exist but then send the update and have it fail. Since we can't\n // express that to the backend, we have to validate locally.\n // Note: this can change once we can send separate verify writes in the\n // transaction.\n throw new U(q.INVALID_ARGUMENT, \"Can't update a document that doesn't exist.\");\n // Document exists, base precondition on document update time.\n return Fs.updateTime(e);\n }\n // Document was not read, so we just use the preconditions for a blind\n // update.\n return Fs.exists(!0);\n }\n write(t) {\n this.ensureCommitNotCalled(), this.mutations.push(t);\n }\n ensureCommitNotCalled() {}\n}\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * TransactionRunner encapsulates the logic needed to run and retry transactions\n * with backoff.\n */ class Ca {\n constructor(t, e, n, s, i) {\n this.asyncQueue = t, this.datastore = e, this.options = n, this.updateFunction = s, \n this.deferred = i, this.Bc = n.maxAttempts, this.qo = new Bu(this.asyncQueue, \"transaction_retry\" /* TimerId.TransactionRetry */);\n }\n /** Runs the transaction and sets the result on deferred. */ run() {\n this.Bc -= 1, this.Lc();\n }\n Lc() {\n this.qo.No((async () => {\n const t = new Da(this.datastore), e = this.qc(t);\n e && e.then((e => {\n this.asyncQueue.enqueueAndForget((() => t.commit().then((() => {\n this.deferred.resolve(e);\n })).catch((t => {\n this.Uc(t);\n }))));\n })).catch((t => {\n this.Uc(t);\n }));\n }));\n }\n qc(t) {\n try {\n const e = this.updateFunction(t);\n return !Ft(e) && e.catch && e.then ? e : (this.deferred.reject(Error(\"Transaction callback must return a Promise\")), \n null);\n } catch (t) {\n // Do not retry errors thrown by user provided updateFunction.\n return this.deferred.reject(t), null;\n }\n }\n Uc(t) {\n this.Bc > 0 && this.Kc(t) ? (this.Bc -= 1, this.asyncQueue.enqueueAndForget((() => (this.Lc(), \n Promise.resolve())))) : this.deferred.reject(t);\n }\n Kc(t) {\n if (\"FirebaseError\" === t.name) {\n // In transactions, the backend will fail outdated reads with FAILED_PRECONDITION and\n // non-matching document versions with ABORTED. These errors should be retried.\n const e = t.code;\n return \"aborted\" === e || \"failed-precondition\" === e || \"already-exists\" === e || !oi(e);\n }\n return !1;\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * FirestoreClient is a top-level class that constructs and owns all of the //\n * pieces of the client SDK architecture. It is responsible for creating the //\n * async queue that is shared by all of the other components in the system. //\n */\nclass xa {\n constructor(t, e, \n /**\n * Asynchronous queue responsible for all of our internal processing. When\n * we get incoming work from the user (via public API) or the network\n * (incoming GRPC messages), we should always schedule onto this queue.\n * This ensures all of our work is properly serialized (e.g. we don't\n * start processing a new operation while the previous one is waiting for\n * an async I/O to complete).\n */\n n, s) {\n this.authCredentials = t, this.appCheckCredentials = e, this.asyncQueue = n, this.databaseInfo = s, \n this.user = V.UNAUTHENTICATED, this.clientId = tt.A(), this.authCredentialListener = () => Promise.resolve(), \n this.appCheckCredentialListener = () => Promise.resolve(), this.authCredentials.start(n, (async t => {\n N(\"FirestoreClient\", \"Received user=\", t.uid), await this.authCredentialListener(t), \n this.user = t;\n })), this.appCheckCredentials.start(n, (t => (N(\"FirestoreClient\", \"Received new app check token=\", t), \n this.appCheckCredentialListener(t, this.user))));\n }\n async getConfiguration() {\n return {\n asyncQueue: this.asyncQueue,\n databaseInfo: this.databaseInfo,\n clientId: this.clientId,\n authCredentials: this.authCredentials,\n appCheckCredentials: this.appCheckCredentials,\n initialUser: this.user,\n maxConcurrentLimboResolutions: 100\n };\n }\n setCredentialChangeListener(t) {\n this.authCredentialListener = t;\n }\n setAppCheckTokenChangeListener(t) {\n this.appCheckCredentialListener = t;\n }\n /**\n * Checks that the client has not been terminated. Ensures that other methods on //\n * this class cannot be called after the client is terminated. //\n */ verifyNotTerminated() {\n if (this.asyncQueue.isShuttingDown) throw new U(q.FAILED_PRECONDITION, \"The client has already been terminated.\");\n }\n terminate() {\n this.asyncQueue.enterRestrictedMode();\n const t = new K;\n return this.asyncQueue.enqueueAndForgetEvenWhileRestricted((async () => {\n try {\n this._onlineComponents && await this._onlineComponents.terminate(), this._offlineComponents && await this._offlineComponents.terminate(), \n // The credentials provider must be terminated after shutting down the\n // RemoteStore as it will prevent the RemoteStore from retrieving auth\n // tokens.\n this.authCredentials.shutdown(), this.appCheckCredentials.shutdown(), t.resolve();\n } catch (e) {\n const n = Ec(e, \"Failed to shutdown persistence\");\n t.reject(n);\n }\n })), t.promise;\n }\n}\n\nasync function Na(t, e) {\n t.asyncQueue.verifyOperationInProgress(), N(\"FirestoreClient\", \"Initializing OfflineComponentProvider\");\n const n = await t.getConfiguration();\n await e.initialize(n);\n let s = n.initialUser;\n t.setCredentialChangeListener((async t => {\n s.isEqual(t) || (await iu(e.localStore, t), s = t);\n })), \n // When a user calls clearPersistence() in one client, all other clients\n // need to be terminated to allow the delete to succeed.\n e.persistence.setDatabaseDeletedListener((() => t.terminate())), t._offlineComponents = e;\n}\n\nasync function ka(t, e) {\n t.asyncQueue.verifyOperationInProgress();\n const n = await $a(t);\n N(\"FirestoreClient\", \"Initializing OnlineComponentProvider\");\n const s = await t.getConfiguration();\n await e.initialize(n, s), \n // The CredentialChangeListener of the online component provider takes\n // precedence over the offline component provider.\n t.setCredentialChangeListener((t => gc(e.remoteStore, t))), t.setAppCheckTokenChangeListener(((t, n) => gc(e.remoteStore, n))), \n t._onlineComponents = e;\n}\n\n/**\n * Decides whether the provided error allows us to gracefully disable\n * persistence (as opposed to crashing the client).\n */ function Ma(t) {\n return \"FirebaseError\" === t.name ? t.code === q.FAILED_PRECONDITION || t.code === q.UNIMPLEMENTED : !(\"undefined\" != typeof DOMException && t instanceof DOMException) || (\n // When the browser is out of quota we could get either quota exceeded\n // or an aborted error depending on whether the error happened during\n // schema migration.\n 22 === t.code || 20 === t.code || \n // Firefox Private Browsing mode disables IndexedDb and returns\n // INVALID_STATE for any usage.\n 11 === t.code);\n}\n\nasync function $a(t) {\n if (!t._offlineComponents) if (t._uninitializedComponentsProvider) {\n N(\"FirestoreClient\", \"Using user provided OfflineComponentProvider\");\n try {\n await Na(t, t._uninitializedComponentsProvider._offline);\n } catch (e) {\n const n = e;\n if (!Ma(n)) throw n;\n M(\"Error using user provided cache. Falling back to memory cache: \" + n), await Na(t, new Ea);\n }\n } else N(\"FirestoreClient\", \"Using default OfflineComponentProvider\"), await Na(t, new Ea);\n return t._offlineComponents;\n}\n\nasync function Oa(t) {\n return t._onlineComponents || (t._uninitializedComponentsProvider ? (N(\"FirestoreClient\", \"Using user provided OnlineComponentProvider\"), \n await ka(t, t._uninitializedComponentsProvider._online)) : (N(\"FirestoreClient\", \"Using default OnlineComponentProvider\"), \n await ka(t, new Pa))), t._onlineComponents;\n}\n\nfunction Fa(t) {\n return $a(t).then((t => t.persistence));\n}\n\nfunction Ba(t) {\n return $a(t).then((t => t.localStore));\n}\n\nfunction La(t) {\n return Oa(t).then((t => t.remoteStore));\n}\n\nfunction qa(t) {\n return Oa(t).then((t => t.syncEngine));\n}\n\nfunction Ua(t) {\n return Oa(t).then((t => t.datastore));\n}\n\nasync function Ka(t) {\n const e = await Oa(t), n = e.eventManager;\n return n.onListen = Gc.bind(null, e.syncEngine), n.onUnlisten = jc.bind(null, e.syncEngine), \n n;\n}\n\n/** Enables the network connection and re-enqueues all pending operations. */ function Ga(t) {\n return t.asyncQueue.enqueue((async () => {\n const e = await Fa(t), n = await La(t);\n return e.setNetworkEnabled(!0), function(t) {\n const e = L(t);\n return e.vu.delete(0 /* OfflineCause.UserDisabled */), zu(e);\n }(n);\n }));\n}\n\n/** Disables the network connection. Pending operations will not complete. */ function Qa(t) {\n return t.asyncQueue.enqueue((async () => {\n const e = await Fa(t), n = await La(t);\n return e.setNetworkEnabled(!1), async function(t) {\n const e = L(t);\n e.vu.add(0 /* OfflineCause.UserDisabled */), await Wu(e), \n // Set the OnlineState to Offline so get()s return from cache, etc.\n e.bu.set(\"Offline\" /* OnlineState.Offline */);\n }(n);\n }));\n}\n\n/**\n * Returns a Promise that resolves when all writes that were pending at the time\n * this method was called received server acknowledgement. An acknowledgement\n * can be either acceptance or rejection.\n */ function ja(t, e) {\n const n = new K;\n return t.asyncQueue.enqueueAndForget((async () => async function(t, e, n) {\n try {\n const s = await function(t, e) {\n const n = L(t);\n return n.persistence.runTransaction(\"read document\", \"readonly\", (t => n.localDocuments.getDocument(t, e)));\n }(t, e);\n s.isFoundDocument() ? n.resolve(s) : s.isNoDocument() ? n.resolve(null) : n.reject(new U(q.UNAVAILABLE, \"Failed to get document from cache. (However, this document may exist on the server. Run again without setting 'source' in the GetOptions to attempt to retrieve the document from the server.)\"));\n } catch (t) {\n const s = Ec(t, `Failed to get document '${e} from cache`);\n n.reject(s);\n }\n }\n /**\n * Retrieves a latency-compensated document from the backend via a\n * SnapshotListener.\n */ (await Ba(t), e, n))), n.promise;\n}\n\nfunction za(t, e, n = {}) {\n const s = new K;\n return t.asyncQueue.enqueueAndForget((async () => function(t, e, n, s, i) {\n const r = new Va({\n next: r => {\n // Remove query first before passing event to user to avoid\n // user actions affecting the now stale query.\n e.enqueueAndForget((() => Sc(t, o)));\n const u = r.docs.has(n);\n !u && r.fromCache ? \n // TODO(dimond): If we're online and the document doesn't\n // exist then we resolve with a doc.exists set to false. If\n // we're offline however, we reject the Promise in this\n // case. Two options: 1) Cache the negative response from\n // the server so we can deliver that even when you're\n // offline 2) Actually reject the Promise in the online case\n // if the document doesn't exist.\n i.reject(new U(q.UNAVAILABLE, \"Failed to get document because the client is offline.\")) : u && r.fromCache && s && \"server\" === s.source ? i.reject(new U(q.UNAVAILABLE, 'Failed to get document from server. (However, this document does exist in the local cache. Run again without setting source to \"server\" to retrieve the cached document.)')) : i.resolve(r);\n },\n error: t => i.reject(t)\n }), o = new Nc(Gn(n.path), r, {\n includeMetadataChanges: !0,\n Ku: !0\n });\n return Vc(t, o);\n }(await Ka(t), t.asyncQueue, e, n, s))), s.promise;\n}\n\nfunction Wa(t, e) {\n const n = new K;\n return t.asyncQueue.enqueueAndForget((async () => async function(t, e, n) {\n try {\n const s = await fu(t, e, \n /* usePreviousResults= */ !0), i = new Lc(e, s.ir), r = i.sc(s.documents), o = i.applyChanges(r, \n /* updateLimboDocuments= */ !1);\n n.resolve(o.snapshot);\n } catch (t) {\n const s = Ec(t, `Failed to execute query '${e} against cache`);\n n.reject(s);\n }\n }\n /**\n * Retrieves a latency-compensated query snapshot from the backend via a\n * SnapshotListener.\n */ (await Ba(t), e, n))), n.promise;\n}\n\nfunction Ha(t, e, n = {}) {\n const s = new K;\n return t.asyncQueue.enqueueAndForget((async () => function(t, e, n, s, i) {\n const r = new Va({\n next: n => {\n // Remove query first before passing event to user to avoid\n // user actions affecting the now stale query.\n e.enqueueAndForget((() => Sc(t, o))), n.fromCache && \"server\" === s.source ? i.reject(new U(q.UNAVAILABLE, 'Failed to get documents from server. (However, these documents may exist in the local cache. Run again without setting source to \"server\" to retrieve the cached documents.)')) : i.resolve(n);\n },\n error: t => i.reject(t)\n }), o = new Nc(n, r, {\n includeMetadataChanges: !0,\n Ku: !0\n });\n return Vc(t, o);\n }(await Ka(t), t.asyncQueue, e, n, s))), s.promise;\n}\n\nfunction Ja(t, e) {\n const n = new Va(e);\n return t.asyncQueue.enqueueAndForget((async () => function(t, e) {\n L(t).ku.add(e), \n // Immediately fire an initial event, indicating all existing listeners\n // are in-sync.\n e.next();\n }(await Ka(t), n))), () => {\n n.Dc(), t.asyncQueue.enqueueAndForget((async () => function(t, e) {\n L(t).ku.delete(e);\n }(await Ka(t), n)));\n };\n}\n\n/**\n * Takes an updateFunction in which a set of reads and writes can be performed\n * atomically. In the updateFunction, the client can read and write values\n * using the supplied transaction object. After the updateFunction, all\n * changes will be committed. If a retryable error occurs (ex: some other\n * client has changed any of the data referenced), then the updateFunction\n * will be called again after a backoff. If the updateFunction still fails\n * after all retries, then the transaction will be rejected.\n *\n * The transaction object passed to the updateFunction contains methods for\n * accessing documents and collections. Unlike other datastore access, data\n * accessed with the transaction will not reflect local changes that have not\n * been committed. For this reason, it is required that all reads are\n * performed before any writes. Transactions must be performed while online.\n */ function Ya(t, e, n, s) {\n const i = function(t, e) {\n let n;\n n = \"string\" == typeof t ? hi().encode(t) : t;\n return function(t, e) {\n return new Sa(t, e);\n }(function(t, e) {\n if (t instanceof Uint8Array) return ba(t, e);\n if (t instanceof ArrayBuffer) return ba(new Uint8Array(t), e);\n if (t instanceof ReadableStream) return t.getReader();\n throw new Error(\"Source of `toByteStreamReader` has to be a ArrayBuffer or ReadableStream\");\n }(n), e);\n }(n, Fu(e));\n t.asyncQueue.enqueueAndForget((async () => {\n Ta(await qa(t), i, s);\n }));\n}\n\nfunction Xa(t, e) {\n return t.asyncQueue.enqueue((async () => function(t, e) {\n const n = L(t);\n return n.persistence.runTransaction(\"Get named query\", \"readonly\", (t => n.qs.getNamedQuery(t, e)));\n }(await Ba(t), e)));\n}\n\nfunction Za(t, e) {\n return t.asyncQueue.enqueue((async () => async function(t, e) {\n const n = L(t), s = n.indexManager, i = [];\n return n.persistence.runTransaction(\"Configure indexes\", \"readwrite\", (t => s.getFieldIndexes(t).next((n => \n /**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n /**\n * Compares two array for equality using comparator. The method computes the\n * intersection and invokes `onAdd` for every element that is in `after` but not\n * `before`. `onRemove` is invoked for every element in `before` but missing\n * from `after`.\n *\n * The method creates a copy of both `before` and `after` and runs in O(n log\n * n), where n is the size of the two lists.\n *\n * @param before - The elements that exist in the original array.\n * @param after - The elements to diff against the original array.\n * @param comparator - The comparator for the elements in before and after.\n * @param onAdd - A function to invoke for every element that is part of `\n * after` but not `before`.\n * @param onRemove - A function to invoke for every element that is part of\n * `before` but not `after`.\n */\n function(t, e, n, s, i) {\n t = [ ...t ], e = [ ...e ], t.sort(n), e.sort(n);\n const r = t.length, o = e.length;\n let u = 0, c = 0;\n for (;u < o && c < r; ) {\n const r = n(t[c], e[u]);\n r < 0 ? \n // The element was removed if the next element in our ordered\n // walkthrough is only in `before`.\n i(t[c++]) : r > 0 ? \n // The element was added if the next element in our ordered walkthrough\n // is only in `after`.\n s(e[u++]) : (u++, c++);\n }\n for (;u < o; ) s(e[u++]);\n for (;c < r; ) i(t[c++]);\n }(n, e, wt, (e => {\n i.push(s.addFieldIndex(t, e));\n }), (e => {\n i.push(s.deleteFieldIndex(t, e));\n })))).next((() => Rt.waitFor(i)))));\n }\n /**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n // The format of the LocalStorage key that stores the client state is:\n // firestore_clients__\n (await Ba(t), e)));\n}\n\n/**\n * @license\n * Copyright 2023 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Compares two `ExperimentalLongPollingOptions` objects for equality.\n */\n/**\n * Creates and returns a new `ExperimentalLongPollingOptions` with the same\n * option values as the given instance.\n */\nfunction th(t) {\n const e = {};\n return void 0 !== t.timeoutSeconds && (e.timeoutSeconds = t.timeoutSeconds), e;\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */ const eh = new Map;\n\n/**\n * An instance map that ensures only one Datastore exists per Firestore\n * instance.\n */\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction nh(t, e, n) {\n if (!n) throw new U(q.INVALID_ARGUMENT, `Function ${t}() cannot be called with an empty ${e}.`);\n}\n\n/**\n * Validates that two boolean options are not set at the same time.\n * @internal\n */ function sh(t, e, n, s) {\n if (!0 === e && !0 === s) throw new U(q.INVALID_ARGUMENT, `${t} and ${n} cannot be used together.`);\n}\n\n/**\n * Validates that `path` refers to a document (indicated by the fact it contains\n * an even numbers of segments).\n */ function ih(t) {\n if (!ht.isDocumentKey(t)) throw new U(q.INVALID_ARGUMENT, `Invalid document reference. Document references must have an even number of segments, but ${t} has ${t.length}.`);\n}\n\n/**\n * Validates that `path` refers to a collection (indicated by the fact it\n * contains an odd numbers of segments).\n */ function rh(t) {\n if (ht.isDocumentKey(t)) throw new U(q.INVALID_ARGUMENT, `Invalid collection reference. Collection references must have an odd number of segments, but ${t} has ${t.length}.`);\n}\n\n/**\n * Returns true if it's a non-null object without a custom prototype\n * (i.e. excludes Array, Date, etc.).\n */\n/** Returns a string describing the type / value of the provided input. */\nfunction oh(t) {\n if (void 0 === t) return \"undefined\";\n if (null === t) return \"null\";\n if (\"string\" == typeof t) return t.length > 20 && (t = `${t.substring(0, 20)}...`), \n JSON.stringify(t);\n if (\"number\" == typeof t || \"boolean\" == typeof t) return \"\" + t;\n if (\"object\" == typeof t) {\n if (t instanceof Array) return \"an array\";\n {\n const e = \n /** try to get the constructor name for an object. */\n function(t) {\n if (t.constructor) return t.constructor.name;\n return null;\n }\n /**\n * Casts `obj` to `T`, optionally unwrapping Compat types to expose the\n * underlying instance. Throws if `obj` is not an instance of `T`.\n *\n * This cast is used in the Lite and Full SDK to verify instance types for\n * arguments passed to the public API.\n * @internal\n */ (t);\n return e ? `a custom ${e} object` : \"an object\";\n }\n }\n return \"function\" == typeof t ? \"a function\" : O();\n}\n\nfunction uh(t, \n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ne) {\n if (\"_delegate\" in t && (\n // Unwrap Compat types\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n t = t._delegate), !(t instanceof e)) {\n if (e.name === t.constructor.name) throw new U(q.INVALID_ARGUMENT, \"Type does not match the expected instance. Did you pass a reference from a different Firestore SDK?\");\n {\n const n = oh(t);\n throw new U(q.INVALID_ARGUMENT, `Expected type '${e.name}', but it was: ${n}`);\n }\n }\n return t;\n}\n\nfunction ch(t, e) {\n if (e <= 0) throw new U(q.INVALID_ARGUMENT, `Function ${t}() requires a positive number, but it was: ${e}.`);\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// settings() defaults:\n/**\n * A concrete type describing all the values that can be applied via a\n * user-supplied `FirestoreSettings` object. This is a separate type so that\n * defaults can be supplied and the value can be checked for equality.\n */\nclass ah {\n constructor(t) {\n var e, n;\n if (void 0 === t.host) {\n if (void 0 !== t.ssl) throw new U(q.INVALID_ARGUMENT, \"Can't provide ssl option if host option is not set\");\n this.host = \"firestore.googleapis.com\", this.ssl = true;\n } else this.host = t.host, this.ssl = null === (e = t.ssl) || void 0 === e || e;\n if (this.credentials = t.credentials, this.ignoreUndefinedProperties = !!t.ignoreUndefinedProperties, \n this.cache = t.localCache, void 0 === t.cacheSizeBytes) this.cacheSizeBytes = 41943040; else {\n if (-1 !== t.cacheSizeBytes && t.cacheSizeBytes < 1048576) throw new U(q.INVALID_ARGUMENT, \"cacheSizeBytes must be at least 1048576\");\n this.cacheSizeBytes = t.cacheSizeBytes;\n }\n sh(\"experimentalForceLongPolling\", t.experimentalForceLongPolling, \"experimentalAutoDetectLongPolling\", t.experimentalAutoDetectLongPolling), \n this.experimentalForceLongPolling = !!t.experimentalForceLongPolling, this.experimentalForceLongPolling ? this.experimentalAutoDetectLongPolling = !1 : void 0 === t.experimentalAutoDetectLongPolling ? this.experimentalAutoDetectLongPolling = true : \n // For backwards compatibility, coerce the value to boolean even though\n // the TypeScript compiler has narrowed the type to boolean already.\n // noinspection PointlessBooleanExpressionJS\n this.experimentalAutoDetectLongPolling = !!t.experimentalAutoDetectLongPolling, \n this.experimentalLongPollingOptions = th(null !== (n = t.experimentalLongPollingOptions) && void 0 !== n ? n : {}), \n function(t) {\n if (void 0 !== t.timeoutSeconds) {\n if (isNaN(t.timeoutSeconds)) throw new U(q.INVALID_ARGUMENT, `invalid long polling timeout: ${t.timeoutSeconds} (must not be NaN)`);\n if (t.timeoutSeconds < 5) throw new U(q.INVALID_ARGUMENT, `invalid long polling timeout: ${t.timeoutSeconds} (minimum allowed value is 5)`);\n if (t.timeoutSeconds > 30) throw new U(q.INVALID_ARGUMENT, `invalid long polling timeout: ${t.timeoutSeconds} (maximum allowed value is 30)`);\n }\n }\n /**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n /**\n * The Cloud Firestore service interface.\n *\n * Do not call this constructor directly. Instead, use {@link (getFirestore:1)}.\n */ (this.experimentalLongPollingOptions), this.useFetchStreams = !!t.useFetchStreams;\n }\n isEqual(t) {\n return this.host === t.host && this.ssl === t.ssl && this.credentials === t.credentials && this.cacheSizeBytes === t.cacheSizeBytes && this.experimentalForceLongPolling === t.experimentalForceLongPolling && this.experimentalAutoDetectLongPolling === t.experimentalAutoDetectLongPolling && (e = this.experimentalLongPollingOptions, \n n = t.experimentalLongPollingOptions, e.timeoutSeconds === n.timeoutSeconds) && this.ignoreUndefinedProperties === t.ignoreUndefinedProperties && this.useFetchStreams === t.useFetchStreams;\n var e, n;\n }\n}\n\nclass hh {\n /** @hideconstructor */\n constructor(t, e, n, s) {\n this._authCredentials = t, this._appCheckCredentials = e, this._databaseId = n, \n this._app = s, \n /**\n * Whether it's a Firestore or Firestore Lite instance.\n */\n this.type = \"firestore-lite\", this._persistenceKey = \"(lite)\", this._settings = new ah({}), \n this._settingsFrozen = !1;\n }\n /**\n * The {@link @firebase/app#FirebaseApp} associated with this `Firestore` service\n * instance.\n */ get app() {\n if (!this._app) throw new U(q.FAILED_PRECONDITION, \"Firestore was not initialized using the Firebase SDK. 'app' is not available\");\n return this._app;\n }\n get _initialized() {\n return this._settingsFrozen;\n }\n get _terminated() {\n return void 0 !== this._terminateTask;\n }\n _setSettings(t) {\n if (this._settingsFrozen) throw new U(q.FAILED_PRECONDITION, \"Firestore has already been started and its settings can no longer be changed. You can only modify settings before calling any other methods on a Firestore object.\");\n this._settings = new ah(t), void 0 !== t.credentials && (this._authCredentials = function(t) {\n if (!t) return new Q;\n switch (t.type) {\n case \"firstParty\":\n return new H(t.sessionIndex || \"0\", t.iamToken || null, t.authTokenFactory || null);\n\n case \"provider\":\n return t.client;\n\n default:\n throw new U(q.INVALID_ARGUMENT, \"makeAuthCredentialsProvider failed due to invalid credential type\");\n }\n }(t.credentials));\n }\n _getSettings() {\n return this._settings;\n }\n _freezeSettings() {\n return this._settingsFrozen = !0, this._settings;\n }\n _delete() {\n return this._terminateTask || (this._terminateTask = this._terminate()), this._terminateTask;\n }\n /** Returns a JSON-serializable representation of this `Firestore` instance. */ toJSON() {\n return {\n app: this._app,\n databaseId: this._databaseId,\n settings: this._settings\n };\n }\n /**\n * Terminates all components used by this client. Subclasses can override\n * this method to clean up their own dependencies, but must also call this\n * method.\n *\n * Only ever called once.\n */ _terminate() {\n /**\n * Removes all components associated with the provided instance. Must be called\n * when the `Firestore` instance is terminated.\n */\n return function(t) {\n const e = eh.get(t);\n e && (N(\"ComponentProvider\", \"Removing Datastore\"), eh.delete(t), e.terminate());\n }(this), Promise.resolve();\n }\n}\n\n/**\n * Modify this instance to communicate with the Cloud Firestore emulator.\n *\n * Note: This must be called before this instance has been used to do any\n * operations.\n *\n * @param firestore - The `Firestore` instance to configure to connect to the\n * emulator.\n * @param host - the emulator host (ex: localhost).\n * @param port - the emulator port (ex: 9000).\n * @param options.mockUserToken - the mock auth token to use for unit testing\n * Security Rules.\n */ function lh(t, e, n, s = {}) {\n var i;\n const r = (t = uh(t, hh))._getSettings(), o = `${e}:${n}`;\n if (\"firestore.googleapis.com\" !== r.host && r.host !== o && M(\"Host has been set in both settings() and connectFirestoreEmulator(), emulator host will be used.\"), \n t._setSettings(Object.assign(Object.assign({}, r), {\n host: o,\n ssl: !1\n })), s.mockUserToken) {\n let e, n;\n if (\"string\" == typeof s.mockUserToken) e = s.mockUserToken, n = V.MOCK_USER; else {\n // Let createMockUserToken validate first (catches common mistakes like\n // invalid field \"uid\" and missing field \"sub\" / \"user_id\".)\n e = createMockUserToken(s.mockUserToken, null === (i = t._app) || void 0 === i ? void 0 : i.options.projectId);\n const r = s.mockUserToken.sub || s.mockUserToken.user_id;\n if (!r) throw new U(q.INVALID_ARGUMENT, \"mockUserToken must contain 'sub' or 'user_id' field!\");\n n = new V(r);\n }\n t._authCredentials = new j(new G(e, n));\n }\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A `DocumentReference` refers to a document location in a Firestore database\n * and can be used to write, read, or listen to the location. The document at\n * the referenced location may or may not exist.\n */ class fh {\n /** @hideconstructor */\n constructor(t, \n /**\n * If provided, the `FirestoreDataConverter` associated with this instance.\n */\n e, n) {\n this.converter = e, this._key = n, \n /** The type of this Firestore reference. */\n this.type = \"document\", this.firestore = t;\n }\n get _path() {\n return this._key.path;\n }\n /**\n * The document's identifier within its collection.\n */ get id() {\n return this._key.path.lastSegment();\n }\n /**\n * A string representing the path of the referenced document (relative\n * to the root of the database).\n */ get path() {\n return this._key.path.canonicalString();\n }\n /**\n * The collection this `DocumentReference` belongs to.\n */ get parent() {\n return new wh(this.firestore, this.converter, this._key.path.popLast());\n }\n withConverter(t) {\n return new fh(this.firestore, t, this._key);\n }\n}\n\n/**\n * A `Query` refers to a query which you can read or listen to. You can also\n * construct refined `Query` objects by adding filters and ordering.\n */ class dh {\n // This is the lite version of the Query class in the main SDK.\n /** @hideconstructor protected */\n constructor(t, \n /**\n * If provided, the `FirestoreDataConverter` associated with this instance.\n */\n e, n) {\n this.converter = e, this._query = n, \n /** The type of this Firestore reference. */\n this.type = \"query\", this.firestore = t;\n }\n withConverter(t) {\n return new dh(this.firestore, t, this._query);\n }\n}\n\n/**\n * A `CollectionReference` object can be used for adding documents, getting\n * document references, and querying for documents (using {@link (query:1)}).\n */ class wh extends dh {\n /** @hideconstructor */\n constructor(t, e, n) {\n super(t, e, Gn(n)), this._path = n, \n /** The type of this Firestore reference. */\n this.type = \"collection\";\n }\n /** The collection's identifier. */ get id() {\n return this._query.path.lastSegment();\n }\n /**\n * A string representing the path of the referenced collection (relative\n * to the root of the database).\n */ get path() {\n return this._query.path.canonicalString();\n }\n /**\n * A reference to the containing `DocumentReference` if this is a\n * subcollection. If this isn't a subcollection, the reference is null.\n */ get parent() {\n const t = this._path.popLast();\n return t.isEmpty() ? null : new fh(this.firestore, \n /* converter= */ null, new ht(t));\n }\n withConverter(t) {\n return new wh(this.firestore, t, this._path);\n }\n}\n\nfunction _h(t, e, ...n) {\n if (t = getModularInstance(t), nh(\"collection\", \"path\", e), t instanceof hh) {\n const s = ut.fromString(e, ...n);\n return rh(s), new wh(t, /* converter= */ null, s);\n }\n {\n if (!(t instanceof fh || t instanceof wh)) throw new U(q.INVALID_ARGUMENT, \"Expected first argument to collection() to be a CollectionReference, a DocumentReference or FirebaseFirestore\");\n const s = t._path.child(ut.fromString(e, ...n));\n return rh(s), new wh(t.firestore, \n /* converter= */ null, s);\n }\n}\n\n// TODO(firestorelite): Consider using ErrorFactory -\n// https://github.com/firebase/firebase-js-sdk/blob/0131e1f/packages/util/src/errors.ts#L106\n/**\n * Creates and returns a new `Query` instance that includes all documents in the\n * database that are contained in a collection or subcollection with the\n * given `collectionId`.\n *\n * @param firestore - A reference to the root `Firestore` instance.\n * @param collectionId - Identifies the collections to query over. Every\n * collection or subcollection with this ID as the last segment of its path\n * will be included. Cannot contain a slash.\n * @returns The created `Query`.\n */ function mh(t, e) {\n if (t = uh(t, hh), nh(\"collectionGroup\", \"collection id\", e), e.indexOf(\"/\") >= 0) throw new U(q.INVALID_ARGUMENT, `Invalid collection ID '${e}' passed to function collectionGroup(). Collection IDs must not contain '/'.`);\n return new dh(t, \n /* converter= */ null, function(t) {\n return new Un(ut.emptyPath(), t);\n }(e));\n}\n\nfunction gh(t, e, ...n) {\n if (t = getModularInstance(t), \n // We allow omission of 'pathString' but explicitly prohibit passing in both\n // 'undefined' and 'null'.\n 1 === arguments.length && (e = tt.A()), nh(\"doc\", \"path\", e), t instanceof hh) {\n const s = ut.fromString(e, ...n);\n return ih(s), new fh(t, \n /* converter= */ null, new ht(s));\n }\n {\n if (!(t instanceof fh || t instanceof wh)) throw new U(q.INVALID_ARGUMENT, \"Expected first argument to collection() to be a CollectionReference, a DocumentReference or FirebaseFirestore\");\n const s = t._path.child(ut.fromString(e, ...n));\n return ih(s), new fh(t.firestore, t instanceof wh ? t.converter : null, new ht(s));\n }\n}\n\n/**\n * Returns true if the provided references are equal.\n *\n * @param left - A reference to compare.\n * @param right - A reference to compare.\n * @returns true if the references point to the same location in the same\n * Firestore database.\n */ function yh(t, e) {\n return t = getModularInstance(t), e = getModularInstance(e), (t instanceof fh || t instanceof wh) && (e instanceof fh || e instanceof wh) && (t.firestore === e.firestore && t.path === e.path && t.converter === e.converter);\n}\n\n/**\n * Returns true if the provided queries point to the same collection and apply\n * the same constraints.\n *\n * @param left - A `Query` to compare.\n * @param right - A `Query` to compare.\n * @returns true if the references point to the same location in the same\n * Firestore database.\n */ function ph(t, e) {\n return t = getModularInstance(t), e = getModularInstance(e), t instanceof dh && e instanceof dh && (t.firestore === e.firestore && Zn(t._query, e._query) && t.converter === e.converter);\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */ class Ih {\n constructor() {\n // The last promise in the queue.\n this.Gc = Promise.resolve(), \n // A list of retryable operations. Retryable operations are run in order and\n // retried with backoff.\n this.Qc = [], \n // Is this AsyncQueue being shut down? Once it is set to true, it will not\n // be changed again.\n this.jc = !1, \n // Operations scheduled to be queued in the future. Operations are\n // automatically removed after they are run or canceled.\n this.zc = [], \n // visible for testing\n this.Wc = null, \n // Flag set while there's an outstanding AsyncQueue operation, used for\n // assertion sanity-checks.\n this.Hc = !1, \n // Enabled during shutdown on Safari to prevent future access to IndexedDB.\n this.Jc = !1, \n // List of TimerIds to fast-forward delays for.\n this.Yc = [], \n // Backoff timer used to schedule retries for retryable operations\n this.qo = new Bu(this, \"async_queue_retry\" /* TimerId.AsyncQueueRetry */), \n // Visibility handler that triggers an immediate retry of all retryable\n // operations. Meant to speed up recovery when we regain file system access\n // after page comes into foreground.\n this.Xc = () => {\n const t = Ou();\n t && N(\"AsyncQueue\", \"Visibility state changed to \" + t.visibilityState), this.qo.Mo();\n };\n const t = Ou();\n t && \"function\" == typeof t.addEventListener && t.addEventListener(\"visibilitychange\", this.Xc);\n }\n get isShuttingDown() {\n return this.jc;\n }\n /**\n * Adds a new operation to the queue without waiting for it to complete (i.e.\n * we ignore the Promise result).\n */ enqueueAndForget(t) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.enqueue(t);\n }\n enqueueAndForgetEvenWhileRestricted(t) {\n this.Zc(), \n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.ta(t);\n }\n enterRestrictedMode(t) {\n if (!this.jc) {\n this.jc = !0, this.Jc = t || !1;\n const e = Ou();\n e && \"function\" == typeof e.removeEventListener && e.removeEventListener(\"visibilitychange\", this.Xc);\n }\n }\n enqueue(t) {\n if (this.Zc(), this.jc) \n // Return a Promise which never resolves.\n return new Promise((() => {}));\n // Create a deferred Promise that we can return to the callee. This\n // allows us to return a \"hanging Promise\" only to the callee and still\n // advance the queue even when the operation is not run.\n const e = new K;\n return this.ta((() => this.jc && this.Jc ? Promise.resolve() : (t().then(e.resolve, e.reject), \n e.promise))).then((() => e.promise));\n }\n enqueueRetryable(t) {\n this.enqueueAndForget((() => (this.Qc.push(t), this.ea())));\n }\n /**\n * Runs the next operation from the retryable queue. If the operation fails,\n * reschedules with backoff.\n */ async ea() {\n if (0 !== this.Qc.length) {\n try {\n await this.Qc[0](), this.Qc.shift(), this.qo.reset();\n } catch (t) {\n if (!Dt(t)) throw t;\n // Failure will be handled by AsyncQueue\n N(\"AsyncQueue\", \"Operation failed with retryable error: \" + t);\n }\n this.Qc.length > 0 && \n // If there are additional operations, we re-schedule `retryNextOp()`.\n // This is necessary to run retryable operations that failed during\n // their initial attempt since we don't know whether they are already\n // enqueued. If, for example, `op1`, `op2`, `op3` are enqueued and `op1`\n // needs to be re-run, we will run `op1`, `op1`, `op2` using the\n // already enqueued calls to `retryNextOp()`. `op3()` will then run in the\n // call scheduled here.\n // Since `backoffAndRun()` cancels an existing backoff and schedules a\n // new backoff on every call, there is only ever a single additional\n // operation in the queue.\n this.qo.No((() => this.ea()));\n }\n }\n ta(t) {\n const e = this.Gc.then((() => (this.Hc = !0, t().catch((t => {\n this.Wc = t, this.Hc = !1;\n const e = \n /**\n * Chrome includes Error.message in Error.stack. Other browsers do not.\n * This returns expected output of message + stack when available.\n * @param error - Error or FirestoreError\n */\n function(t) {\n let e = t.message || \"\";\n t.stack && (e = t.stack.includes(t.message) ? t.stack : t.message + \"\\n\" + t.stack);\n return e;\n }\n /**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */ (t);\n // Re-throw the error so that this.tail becomes a rejected Promise and\n // all further attempts to chain (via .then) will just short-circuit\n // and return the rejected Promise.\n throw k(\"INTERNAL UNHANDLED ERROR: \", e), t;\n })).then((t => (this.Hc = !1, t))))));\n return this.Gc = e, e;\n }\n enqueueAfterDelay(t, e, n) {\n this.Zc(), \n // Fast-forward delays for timerIds that have been overriden.\n this.Yc.indexOf(t) > -1 && (e = 0);\n const s = Tc.createAndSchedule(this, t, e, n, (t => this.na(t)));\n return this.zc.push(s), s;\n }\n Zc() {\n this.Wc && O();\n }\n verifyOperationInProgress() {}\n /**\n * Waits until all currently queued tasks are finished executing. Delayed\n * operations are not run.\n */ async sa() {\n // Operations in the queue prior to draining may have enqueued additional\n // operations. Keep draining the queue until the tail is no longer advanced,\n // which indicates that no more new operations were enqueued and that all\n // operations were executed.\n let t;\n do {\n t = this.Gc, await t;\n } while (t !== this.Gc);\n }\n /**\n * For Tests: Determine if a delayed operation with a particular TimerId\n * exists.\n */ ia(t) {\n for (const e of this.zc) if (e.timerId === t) return !0;\n return !1;\n }\n /**\n * For Tests: Runs some or all delayed operations early.\n *\n * @param lastTimerId - Delayed operations up to and including this TimerId\n * will be drained. Pass TimerId.All to run all delayed operations.\n * @returns a Promise that resolves once all operations have been run.\n */ ra(t) {\n // Note that draining may generate more delayed ops, so we do that first.\n return this.sa().then((() => {\n // Run ops in the same order they'd run if they ran naturally.\n this.zc.sort(((t, e) => t.targetTimeMs - e.targetTimeMs));\n for (const e of this.zc) if (e.skipDelay(), \"all\" /* TimerId.All */ !== t && e.timerId === t) break;\n return this.sa();\n }));\n }\n /**\n * For Tests: Skip all subsequent delays for a timer id.\n */ oa(t) {\n this.Yc.push(t);\n }\n /** Called once a DelayedOperation is run or canceled. */ na(t) {\n // NOTE: indexOf / slice are O(n), but delayedOperations is expected to be small.\n const e = this.zc.indexOf(t);\n this.zc.splice(e, 1);\n }\n}\n\nfunction Th(t) {\n /**\n * Returns true if obj is an object and contains at least one of the specified\n * methods.\n */\n return function(t, e) {\n if (\"object\" != typeof t || null === t) return !1;\n const n = t;\n for (const t of e) if (t in n && \"function\" == typeof n[t]) return !0;\n return !1;\n }\n /**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n /**\n * Represents the task of loading a Firestore bundle. It provides progress of bundle\n * loading, as well as task completion and error events.\n *\n * The API is compatible with `Promise`.\n */ (t, [ \"next\", \"error\", \"complete\" ]);\n}\n\nclass Eh {\n constructor() {\n this._progressObserver = {}, this._taskCompletionResolver = new K, this._lastProgress = {\n taskState: \"Running\",\n totalBytes: 0,\n totalDocuments: 0,\n bytesLoaded: 0,\n documentsLoaded: 0\n };\n }\n /**\n * Registers functions to listen to bundle loading progress events.\n * @param next - Called when there is a progress update from bundle loading. Typically `next` calls occur\n * each time a Firestore document is loaded from the bundle.\n * @param error - Called when an error occurs during bundle loading. The task aborts after reporting the\n * error, and there should be no more updates after this.\n * @param complete - Called when the loading task is complete.\n */ onProgress(t, e, n) {\n this._progressObserver = {\n next: t,\n error: e,\n complete: n\n };\n }\n /**\n * Implements the `Promise.catch` interface.\n *\n * @param onRejected - Called when an error occurs during bundle loading.\n */ catch(t) {\n return this._taskCompletionResolver.promise.catch(t);\n }\n /**\n * Implements the `Promise.then` interface.\n *\n * @param onFulfilled - Called on the completion of the loading task with a final `LoadBundleTaskProgress` update.\n * The update will always have its `taskState` set to `\"Success\"`.\n * @param onRejected - Called when an error occurs during bundle loading.\n */ then(t, e) {\n return this._taskCompletionResolver.promise.then(t, e);\n }\n /**\n * Notifies all observers that bundle loading has completed, with a provided\n * `LoadBundleTaskProgress` object.\n *\n * @private\n */ _completeWith(t) {\n this._updateProgress(t), this._progressObserver.complete && this._progressObserver.complete(), \n this._taskCompletionResolver.resolve(t);\n }\n /**\n * Notifies all observers that bundle loading has failed, with a provided\n * `Error` as the reason.\n *\n * @private\n */ _failWith(t) {\n this._lastProgress.taskState = \"Error\", this._progressObserver.next && this._progressObserver.next(this._lastProgress), \n this._progressObserver.error && this._progressObserver.error(t), this._taskCompletionResolver.reject(t);\n }\n /**\n * Notifies a progress update of loading a bundle.\n * @param progress - The new progress.\n *\n * @private\n */ _updateProgress(t) {\n this._lastProgress = t, this._progressObserver.next && this._progressObserver.next(t);\n }\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Constant used to indicate the LRU garbage collection should be disabled.\n * Set this value as the `cacheSizeBytes` on the settings passed to the\n * {@link Firestore} instance.\n */ const Ah = -1;\n\n/**\n * The Cloud Firestore service interface.\n *\n * Do not call this constructor directly. Instead, use {@link (getFirestore:1)}.\n */ class vh extends hh {\n /** @hideconstructor */\n constructor(t, e, n, s) {\n super(t, e, n, s), \n /**\n * Whether it's a {@link Firestore} or Firestore Lite instance.\n */\n this.type = \"firestore\", this._queue = new Ih, this._persistenceKey = (null == s ? void 0 : s.name) || \"[DEFAULT]\";\n }\n _terminate() {\n return this._firestoreClient || \n // The client must be initialized to ensure that all subsequent API\n // usage throws an exception.\n Vh(this), this._firestoreClient.terminate();\n }\n}\n\n/**\n * Initializes a new instance of {@link Firestore} with the provided settings.\n * Can only be called before any other function, including\n * {@link (getFirestore:1)}. If the custom settings are empty, this function is\n * equivalent to calling {@link (getFirestore:1)}.\n *\n * @param app - The {@link @firebase/app#FirebaseApp} with which the {@link Firestore} instance will\n * be associated.\n * @param settings - A settings object to configure the {@link Firestore} instance.\n * @param databaseId - The name of the database.\n * @returns A newly initialized {@link Firestore} instance.\n */ function Rh(t, e, n) {\n n || (n = \"(default)\");\n const s = _getProvider(t, \"firestore\");\n if (s.isInitialized(n)) {\n const t = s.getImmediate({\n identifier: n\n }), i = s.getOptions(n);\n if (deepEqual(i, e)) return t;\n throw new U(q.FAILED_PRECONDITION, \"initializeFirestore() has already been called with different options. To avoid this error, call initializeFirestore() with the same options as when it was originally called, or call getFirestore() to return the already initialized instance.\");\n }\n if (void 0 !== e.cacheSizeBytes && void 0 !== e.localCache) throw new U(q.INVALID_ARGUMENT, \"cache and cacheSizeBytes cannot be specified at the same time as cacheSizeBytes willbe deprecated. Instead, specify the cache size in the cache object\");\n if (void 0 !== e.cacheSizeBytes && -1 !== e.cacheSizeBytes && e.cacheSizeBytes < 1048576) throw new U(q.INVALID_ARGUMENT, \"cacheSizeBytes must be at least 1048576\");\n return s.initialize({\n options: e,\n instanceIdentifier: n\n });\n}\n\nfunction Ph(e, n) {\n const s = \"object\" == typeof e ? e : getApp(), i = \"string\" == typeof e ? e : n || \"(default)\", r = _getProvider(s, \"firestore\").getImmediate({\n identifier: i\n });\n if (!r._initialized) {\n const t = getDefaultEmulatorHostnameAndPort(\"firestore\");\n t && lh(r, ...t);\n }\n return r;\n}\n\n/**\n * @internal\n */ function bh(t) {\n return t._firestoreClient || Vh(t), t._firestoreClient.verifyNotTerminated(), t._firestoreClient;\n}\n\nfunction Vh(t) {\n var e, n, s;\n const i = t._freezeSettings(), r = function(t, e, n, s) {\n return new $e(t, e, n, s.host, s.ssl, s.experimentalForceLongPolling, s.experimentalAutoDetectLongPolling, th(s.experimentalLongPollingOptions), s.useFetchStreams);\n }(t._databaseId, (null === (e = t._app) || void 0 === e ? void 0 : e.options.appId) || \"\", t._persistenceKey, i);\n t._firestoreClient = new xa(t._authCredentials, t._appCheckCredentials, t._queue, r), \n (null === (n = i.cache) || void 0 === n ? void 0 : n._offlineComponentProvider) && (null === (s = i.cache) || void 0 === s ? void 0 : s._onlineComponentProvider) && (t._firestoreClient._uninitializedComponentsProvider = {\n _offlineKind: i.cache.kind,\n _offline: i.cache._offlineComponentProvider,\n _online: i.cache._onlineComponentProvider\n });\n}\n\n/**\n * Attempts to enable persistent storage, if possible.\n *\n * Must be called before any other functions (other than\n * {@link initializeFirestore}, {@link (getFirestore:1)} or\n * {@link clearIndexedDbPersistence}.\n *\n * If this fails, `enableIndexedDbPersistence()` will reject the promise it\n * returns. Note that even after this failure, the {@link Firestore} instance will\n * remain usable, however offline persistence will be disabled.\n *\n * There are several reasons why this can fail, which can be identified by\n * the `code` on the error.\n *\n * * failed-precondition: The app is already open in another browser tab.\n * * unimplemented: The browser is incompatible with the offline\n * persistence implementation.\n *\n * Persistence cannot be used in a Node.js environment.\n *\n * @param firestore - The {@link Firestore} instance to enable persistence for.\n * @param persistenceSettings - Optional settings object to configure\n * persistence.\n * @returns A `Promise` that represents successfully enabling persistent storage.\n * @deprecated This function will be removed in a future major release. Instead, set\n * `FirestoreSettings.cache` to an instance of `IndexedDbLocalCache` to\n * turn on IndexedDb cache. Calling this function when `FirestoreSettings.cache`\n * is already specified will throw an exception.\n */ function Sh(t, e) {\n Bh(t = uh(t, vh));\n const n = bh(t);\n if (n._uninitializedComponentsProvider) throw new U(q.FAILED_PRECONDITION, \"SDK cache is already specified.\");\n M(\"enableIndexedDbPersistence() will be deprecated in the future, you can use `FirestoreSettings.cache` instead.\");\n const s = t._freezeSettings(), i = new Pa;\n return Ch(n, i, new va(i, s.cacheSizeBytes, null == e ? void 0 : e.forceOwnership));\n}\n\n/**\n * Attempts to enable multi-tab persistent storage, if possible. If enabled\n * across all tabs, all operations share access to local persistence, including\n * shared execution of queries and latency-compensated local document updates\n * across all connected instances.\n *\n * If this fails, `enableMultiTabIndexedDbPersistence()` will reject the promise\n * it returns. Note that even after this failure, the {@link Firestore} instance will\n * remain usable, however offline persistence will be disabled.\n *\n * There are several reasons why this can fail, which can be identified by\n * the `code` on the error.\n *\n * * failed-precondition: The app is already open in another browser tab and\n * multi-tab is not enabled.\n * * unimplemented: The browser is incompatible with the offline\n * persistence implementation.\n *\n * @param firestore - The {@link Firestore} instance to enable persistence for.\n * @returns A `Promise` that represents successfully enabling persistent\n * storage.\n * @deprecated This function will be removed in a future major release. Instead, set\n * `FirestoreSettings.cache` to an instance of `IndexedDbLocalCache` to\n * turn on indexeddb cache. Calling this function when `FirestoreSettings.cache`\n * is already specified will throw an exception.\n */ function Dh(t) {\n Bh(t = uh(t, vh));\n const e = bh(t);\n if (e._uninitializedComponentsProvider) throw new U(q.FAILED_PRECONDITION, \"SDK cache is already specified.\");\n M(\"enableMultiTabIndexedDbPersistence() will be deprecated in the future, you can use `FirestoreSettings.cache` instead.\");\n const n = t._freezeSettings(), s = new Pa;\n return Ch(e, s, new Ra(s, n.cacheSizeBytes));\n}\n\n/**\n * Registers both the `OfflineComponentProvider` and `OnlineComponentProvider`.\n * If the operation fails with a recoverable error (see\n * `canRecoverFromIndexedDbError()` below), the returned Promise is rejected\n * but the client remains usable.\n */ function Ch(t, e, n) {\n const s = new K;\n return t.asyncQueue.enqueue((async () => {\n try {\n await Na(t, n), await ka(t, e), s.resolve();\n } catch (t) {\n const e = t;\n if (!Ma(e)) throw e;\n M(\"Error enabling indexeddb cache. Falling back to memory cache: \" + e), s.reject(e);\n }\n })).then((() => s.promise));\n}\n\n/**\n * Clears the persistent storage. This includes pending writes and cached\n * documents.\n *\n * Must be called while the {@link Firestore} instance is not started (after the app is\n * terminated or when the app is first initialized). On startup, this function\n * must be called before other functions (other than {@link\n * initializeFirestore} or {@link (getFirestore:1)})). If the {@link Firestore}\n * instance is still running, the promise will be rejected with the error code\n * of `failed-precondition`.\n *\n * Note: `clearIndexedDbPersistence()` is primarily intended to help write\n * reliable tests that use Cloud Firestore. It uses an efficient mechanism for\n * dropping existing data but does not attempt to securely overwrite or\n * otherwise make cached data unrecoverable. For applications that are sensitive\n * to the disclosure of cached data in between user sessions, we strongly\n * recommend not enabling persistence at all.\n *\n * @param firestore - The {@link Firestore} instance to clear persistence for.\n * @returns A `Promise` that is resolved when the persistent storage is\n * cleared. Otherwise, the promise is rejected with an error.\n */ function xh(t) {\n if (t._initialized && !t._terminated) throw new U(q.FAILED_PRECONDITION, \"Persistence can only be cleared before a Firestore instance is initialized or after it is terminated.\");\n const e = new K;\n return t._queue.enqueueAndForgetEvenWhileRestricted((async () => {\n try {\n await async function(t) {\n if (!bt.D()) return Promise.resolve();\n const e = t + \"main\";\n await bt.delete(e);\n }(Zo(t._databaseId, t._persistenceKey)), e.resolve();\n } catch (t) {\n e.reject(t);\n }\n })), e.promise;\n}\n\n/**\n * Waits until all currently pending writes for the active user have been\n * acknowledged by the backend.\n *\n * The returned promise resolves immediately if there are no outstanding writes.\n * Otherwise, the promise waits for all previously issued writes (including\n * those written in a previous app session), but it does not wait for writes\n * that were added after the function is called. If you want to wait for\n * additional writes, call `waitForPendingWrites()` again.\n *\n * Any outstanding `waitForPendingWrites()` promises are rejected during user\n * changes.\n *\n * @returns A `Promise` which resolves when all currently pending writes have been\n * acknowledged by the backend.\n */ function Nh(t) {\n return function(t) {\n const e = new K;\n return t.asyncQueue.enqueueAndForget((async () => Zc(await qa(t), e))), e.promise;\n }(bh(t = uh(t, vh)));\n}\n\n/**\n * Re-enables use of the network for this {@link Firestore} instance after a prior\n * call to {@link disableNetwork}.\n *\n * @returns A `Promise` that is resolved once the network has been enabled.\n */ function kh(t) {\n return Ga(bh(t = uh(t, vh)));\n}\n\n/**\n * Disables network usage for this instance. It can be re-enabled via {@link\n * enableNetwork}. While the network is disabled, any snapshot listeners,\n * `getDoc()` or `getDocs()` calls will return results from cache, and any write\n * operations will be queued until the network is restored.\n *\n * @returns A `Promise` that is resolved once the network has been disabled.\n */ function Mh(t) {\n return Qa(bh(t = uh(t, vh)));\n}\n\n/**\n * Terminates the provided {@link Firestore} instance.\n *\n * After calling `terminate()` only the `clearIndexedDbPersistence()` function\n * may be used. Any other function will throw a `FirestoreError`.\n *\n * To restart after termination, create a new instance of FirebaseFirestore with\n * {@link (getFirestore:1)}.\n *\n * Termination does not cancel any pending writes, and any promises that are\n * awaiting a response from the server will not be resolved. If you have\n * persistence enabled, the next time you start this instance, it will resume\n * sending these writes to the server.\n *\n * Note: Under normal circumstances, calling `terminate()` is not required. This\n * function is useful only when you want to force this instance to release all\n * of its resources or in combination with `clearIndexedDbPersistence()` to\n * ensure that all local state is destroyed between test runs.\n *\n * @returns A `Promise` that is resolved when the instance has been successfully\n * terminated.\n */ function $h(t) {\n return _removeServiceInstance(t.app, \"firestore\", t._databaseId.database), t._delete();\n}\n\n/**\n * Loads a Firestore bundle into the local cache.\n *\n * @param firestore - The {@link Firestore} instance to load bundles for.\n * @param bundleData - An object representing the bundle to be loaded. Valid\n * objects are `ArrayBuffer`, `ReadableStream` or `string`.\n *\n * @returns A `LoadBundleTask` object, which notifies callers with progress\n * updates, and completion or error events. It can be used as a\n * `Promise`.\n */ function Oh(t, e) {\n const n = bh(t = uh(t, vh)), s = new Eh;\n return Ya(n, t._databaseId, e, s), s;\n}\n\n/**\n * Reads a Firestore {@link Query} from local cache, identified by the given\n * name.\n *\n * The named queries are packaged into bundles on the server side (along\n * with resulting documents), and loaded to local cache using `loadBundle`. Once\n * in local cache, use this method to extract a {@link Query} by name.\n *\n * @param firestore - The {@link Firestore} instance to read the query from.\n * @param name - The name of the query.\n * @returns A `Promise` that is resolved with the Query or `null`.\n */ function Fh(t, e) {\n return Xa(bh(t = uh(t, vh)), e).then((e => e ? new dh(t, null, e.query) : null));\n}\n\nfunction Bh(t) {\n if (t._initialized || t._terminated) throw new U(q.FAILED_PRECONDITION, \"Firestore has already been started and persistence can no longer be enabled. You can only enable persistence before calling any other methods on a Firestore object.\");\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Represents an aggregation that can be performed by Firestore.\n */\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nclass Lh {\n /**\n * Create a new AggregateField\n * @param _aggregateType Specifies the type of aggregation operation to perform.\n * @param _internalFieldPath Optionally specifies the field that is aggregated.\n * @internal\n */\n constructor(\n // TODO (sum/avg) make aggregateType public when the feature is supported\n t = \"count\", e) {\n this._aggregateType = t, this._internalFieldPath = e, \n /** A type string to uniquely identify instances of this class. */\n this.type = \"AggregateField\";\n }\n}\n\n/**\n * The results of executing an aggregation query.\n */ class qh {\n /** @hideconstructor */\n constructor(t, e, n) {\n this._userDataWriter = e, this._data = n, \n /** A type string to uniquely identify instances of this class. */\n this.type = \"AggregateQuerySnapshot\", this.query = t;\n }\n /**\n * Returns the results of the aggregations performed over the underlying\n * query.\n *\n * The keys of the returned object will be the same as those of the\n * `AggregateSpec` object specified to the aggregation method, and the values\n * will be the corresponding aggregation result.\n *\n * @returns The results of the aggregations performed over the underlying\n * query.\n */ data() {\n return this._userDataWriter.convertObjectMap(this._data);\n }\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * An immutable object representing an array of bytes.\n */ class Uh {\n /** @hideconstructor */\n constructor(t) {\n this._byteString = t;\n }\n /**\n * Creates a new `Bytes` object from the given Base64 string, converting it to\n * bytes.\n *\n * @param base64 - The Base64 string used to create the `Bytes` object.\n */ static fromBase64String(t) {\n try {\n return new Uh(Ve.fromBase64String(t));\n } catch (t) {\n throw new U(q.INVALID_ARGUMENT, \"Failed to construct data from Base64 string: \" + t);\n }\n }\n /**\n * Creates a new `Bytes` object from the given Uint8Array.\n *\n * @param array - The Uint8Array used to create the `Bytes` object.\n */ static fromUint8Array(t) {\n return new Uh(Ve.fromUint8Array(t));\n }\n /**\n * Returns the underlying bytes as a Base64-encoded string.\n *\n * @returns The Base64-encoded string created from the `Bytes` object.\n */ toBase64() {\n return this._byteString.toBase64();\n }\n /**\n * Returns the underlying bytes in a new `Uint8Array`.\n *\n * @returns The Uint8Array created from the `Bytes` object.\n */ toUint8Array() {\n return this._byteString.toUint8Array();\n }\n /**\n * Returns a string representation of the `Bytes` object.\n *\n * @returns A string representation of the `Bytes` object.\n */ toString() {\n return \"Bytes(base64: \" + this.toBase64() + \")\";\n }\n /**\n * Returns true if this `Bytes` object is equal to the provided one.\n *\n * @param other - The `Bytes` object to compare against.\n * @returns true if this `Bytes` object is equal to the provided one.\n */ isEqual(t) {\n return this._byteString.isEqual(t._byteString);\n }\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A `FieldPath` refers to a field in a document. The path may consist of a\n * single field name (referring to a top-level field in the document), or a\n * list of field names (referring to a nested field in the document).\n *\n * Create a `FieldPath` by providing field names. If more than one field\n * name is provided, the path will point to a nested field in a document.\n */ class Kh {\n /**\n * Creates a `FieldPath` from the provided field names. If more than one field\n * name is provided, the path will point to a nested field in a document.\n *\n * @param fieldNames - A list of field names.\n */\n constructor(...t) {\n for (let e = 0; e < t.length; ++e) if (0 === t[e].length) throw new U(q.INVALID_ARGUMENT, \"Invalid field name at argument $(i + 1). Field names must not be empty.\");\n this._internalPath = new at(t);\n }\n /**\n * Returns true if this `FieldPath` is equal to the provided one.\n *\n * @param other - The `FieldPath` to compare against.\n * @returns true if this `FieldPath` is equal to the provided one.\n */ isEqual(t) {\n return this._internalPath.isEqual(t._internalPath);\n }\n}\n\n/**\n * Returns a special sentinel `FieldPath` to refer to the ID of a document.\n * It can be used in queries to sort or filter by the document ID.\n */ function Gh() {\n return new Kh(\"__name__\");\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Sentinel values that can be used when writing document fields with `set()`\n * or `update()`.\n */ class Qh {\n /**\n * @param _methodName - The public API endpoint that returns this class.\n * @hideconstructor\n */\n constructor(t) {\n this._methodName = t;\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * An immutable object representing a geographic location in Firestore. The\n * location is represented as latitude/longitude pair.\n *\n * Latitude values are in the range of [-90, 90].\n * Longitude values are in the range of [-180, 180].\n */ class jh {\n /**\n * Creates a new immutable `GeoPoint` object with the provided latitude and\n * longitude values.\n * @param latitude - The latitude as number between -90 and 90.\n * @param longitude - The longitude as number between -180 and 180.\n */\n constructor(t, e) {\n if (!isFinite(t) || t < -90 || t > 90) throw new U(q.INVALID_ARGUMENT, \"Latitude must be a number between -90 and 90, but was: \" + t);\n if (!isFinite(e) || e < -180 || e > 180) throw new U(q.INVALID_ARGUMENT, \"Longitude must be a number between -180 and 180, but was: \" + e);\n this._lat = t, this._long = e;\n }\n /**\n * The latitude of this `GeoPoint` instance.\n */ get latitude() {\n return this._lat;\n }\n /**\n * The longitude of this `GeoPoint` instance.\n */ get longitude() {\n return this._long;\n }\n /**\n * Returns true if this `GeoPoint` is equal to the provided one.\n *\n * @param other - The `GeoPoint` to compare against.\n * @returns true if this `GeoPoint` is equal to the provided one.\n */ isEqual(t) {\n return this._lat === t._lat && this._long === t._long;\n }\n /** Returns a JSON-serializable representation of this GeoPoint. */ toJSON() {\n return {\n latitude: this._lat,\n longitude: this._long\n };\n }\n /**\n * Actually private to JS consumers of our API, so this function is prefixed\n * with an underscore.\n */ _compareTo(t) {\n return et(this._lat, t._lat) || et(this._long, t._long);\n }\n}\n\n/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */ const zh = /^__.*__$/;\n\n/** The result of parsing document data (e.g. for a setData call). */ class Wh {\n constructor(t, e, n) {\n this.data = t, this.fieldMask = e, this.fieldTransforms = n;\n }\n toMutation(t, e) {\n return null !== this.fieldMask ? new zs(t, this.data, this.fieldMask, e, this.fieldTransforms) : new js(t, this.data, e, this.fieldTransforms);\n }\n}\n\n/** The result of parsing \"update\" data (i.e. for an updateData call). */ class Hh {\n constructor(t, \n // The fieldMask does not include document transforms.\n e, n) {\n this.data = t, this.fieldMask = e, this.fieldTransforms = n;\n }\n toMutation(t, e) {\n return new zs(t, this.data, this.fieldMask, e, this.fieldTransforms);\n }\n}\n\nfunction Jh(t) {\n switch (t) {\n case 0 /* UserDataSource.Set */ :\n // fall through\n case 2 /* UserDataSource.MergeSet */ :\n // fall through\n case 1 /* UserDataSource.Update */ :\n return !0;\n\n case 3 /* UserDataSource.Argument */ :\n case 4 /* UserDataSource.ArrayArgument */ :\n return !1;\n\n default:\n throw O();\n }\n}\n\n/** A \"context\" object passed around while parsing user data. */ class Yh {\n /**\n * Initializes a ParseContext with the given source and path.\n *\n * @param settings - The settings for the parser.\n * @param databaseId - The database ID of the Firestore instance.\n * @param serializer - The serializer to use to generate the Value proto.\n * @param ignoreUndefinedProperties - Whether to ignore undefined properties\n * rather than throw.\n * @param fieldTransforms - A mutable list of field transforms encountered\n * while parsing the data.\n * @param fieldMask - A mutable list of field paths encountered while parsing\n * the data.\n *\n * TODO(b/34871131): We don't support array paths right now, so path can be\n * null to indicate the context represents any location within an array (in\n * which case certain features will not work and errors will be somewhat\n * compromised).\n */\n constructor(t, e, n, s, i, r) {\n this.settings = t, this.databaseId = e, this.serializer = n, this.ignoreUndefinedProperties = s, \n // Minor hack: If fieldTransforms is undefined, we assume this is an\n // external call and we need to validate the entire path.\n void 0 === i && this.ua(), this.fieldTransforms = i || [], this.fieldMask = r || [];\n }\n get path() {\n return this.settings.path;\n }\n get ca() {\n return this.settings.ca;\n }\n /** Returns a new context with the specified settings overwritten. */ aa(t) {\n return new Yh(Object.assign(Object.assign({}, this.settings), t), this.databaseId, this.serializer, this.ignoreUndefinedProperties, this.fieldTransforms, this.fieldMask);\n }\n ha(t) {\n var e;\n const n = null === (e = this.path) || void 0 === e ? void 0 : e.child(t), s = this.aa({\n path: n,\n la: !1\n });\n return s.fa(t), s;\n }\n da(t) {\n var e;\n const n = null === (e = this.path) || void 0 === e ? void 0 : e.child(t), s = this.aa({\n path: n,\n la: !1\n });\n return s.ua(), s;\n }\n wa(t) {\n // TODO(b/34871131): We don't support array paths right now; so make path\n // undefined.\n return this.aa({\n path: void 0,\n la: !0\n });\n }\n _a(t) {\n return gl(t, this.settings.methodName, this.settings.ma || !1, this.path, this.settings.ga);\n }\n /** Returns 'true' if 'fieldPath' was traversed when creating this context. */ contains(t) {\n return void 0 !== this.fieldMask.find((e => t.isPrefixOf(e))) || void 0 !== this.fieldTransforms.find((e => t.isPrefixOf(e.field)));\n }\n ua() {\n // TODO(b/34871131): Remove null check once we have proper paths for fields\n // within arrays.\n if (this.path) for (let t = 0; t < this.path.length; t++) this.fa(this.path.get(t));\n }\n fa(t) {\n if (0 === t.length) throw this._a(\"Document fields must not be empty\");\n if (Jh(this.ca) && zh.test(t)) throw this._a('Document fields cannot begin and end with \"__\"');\n }\n}\n\n/**\n * Helper for parsing raw user input (provided via the API) into internal model\n * classes.\n */ class Xh {\n constructor(t, e, n) {\n this.databaseId = t, this.ignoreUndefinedProperties = e, this.serializer = n || Fu(t);\n }\n /** Creates a new top-level parse context. */ ya(t, e, n, s = !1) {\n return new Yh({\n ca: t,\n methodName: e,\n ga: n,\n path: at.emptyPath(),\n la: !1,\n ma: s\n }, this.databaseId, this.serializer, this.ignoreUndefinedProperties);\n }\n}\n\nfunction Zh(t) {\n const e = t._freezeSettings(), n = Fu(t._databaseId);\n return new Xh(t._databaseId, !!e.ignoreUndefinedProperties, n);\n}\n\n/** Parse document data from a set() call. */ function tl(t, e, n, s, i, r = {}) {\n const o = t.ya(r.merge || r.mergeFields ? 2 /* UserDataSource.MergeSet */ : 0 /* UserDataSource.Set */ , e, n, i);\n dl(\"Data must be an object, but it was:\", o, s);\n const u = ll(s, o);\n let c, a;\n if (r.merge) c = new Re(o.fieldMask), a = o.fieldTransforms; else if (r.mergeFields) {\n const t = [];\n for (const s of r.mergeFields) {\n const i = wl(e, s, n);\n if (!o.contains(i)) throw new U(q.INVALID_ARGUMENT, `Field '${i}' is specified in your field mask but missing from your input data.`);\n yl(t, i) || t.push(i);\n }\n c = new Re(t), a = o.fieldTransforms.filter((t => c.covers(t.field)));\n } else c = null, a = o.fieldTransforms;\n return new Wh(new un(u), c, a);\n}\n\nclass el extends Qh {\n _toFieldTransform(t) {\n if (2 /* UserDataSource.MergeSet */ !== t.ca) throw 1 /* UserDataSource.Update */ === t.ca ? t._a(`${this._methodName}() can only appear at the top level of your update data`) : t._a(`${this._methodName}() cannot be used with set() unless you pass {merge:true}`);\n // No transform to add for a delete, but we need to add it to our\n // fieldMask so it gets deleted.\n return t.fieldMask.push(t.path), null;\n }\n isEqual(t) {\n return t instanceof el;\n }\n}\n\n/**\n * Creates a child context for parsing SerializableFieldValues.\n *\n * This is different than calling `ParseContext.contextWith` because it keeps\n * the fieldTransforms and fieldMask separate.\n *\n * The created context has its `dataSource` set to `UserDataSource.Argument`.\n * Although these values are used with writes, any elements in these FieldValues\n * are not considered writes since they cannot contain any FieldValue sentinels,\n * etc.\n *\n * @param fieldValue - The sentinel FieldValue for which to create a child\n * context.\n * @param context - The parent context.\n * @param arrayElement - Whether or not the FieldValue has an array.\n */ function nl(t, e, n) {\n return new Yh({\n ca: 3 /* UserDataSource.Argument */ ,\n ga: e.settings.ga,\n methodName: t._methodName,\n la: n\n }, e.databaseId, e.serializer, e.ignoreUndefinedProperties);\n}\n\nclass sl extends Qh {\n _toFieldTransform(t) {\n return new Ms(t.path, new bs);\n }\n isEqual(t) {\n return t instanceof sl;\n }\n}\n\nclass il extends Qh {\n constructor(t, e) {\n super(t), this.pa = e;\n }\n _toFieldTransform(t) {\n const e = nl(this, t, \n /*array=*/ !0), n = this.pa.map((t => hl(t, e))), s = new Vs(n);\n return new Ms(t.path, s);\n }\n isEqual(t) {\n // TODO(mrschmidt): Implement isEquals\n return this === t;\n }\n}\n\nclass rl extends Qh {\n constructor(t, e) {\n super(t), this.pa = e;\n }\n _toFieldTransform(t) {\n const e = nl(this, t, \n /*array=*/ !0), n = this.pa.map((t => hl(t, e))), s = new Ds(n);\n return new Ms(t.path, s);\n }\n isEqual(t) {\n // TODO(mrschmidt): Implement isEquals\n return this === t;\n }\n}\n\nclass ol extends Qh {\n constructor(t, e) {\n super(t), this.Ia = e;\n }\n _toFieldTransform(t) {\n const e = new xs(t.serializer, Es(t.serializer, this.Ia));\n return new Ms(t.path, e);\n }\n isEqual(t) {\n // TODO(mrschmidt): Implement isEquals\n return this === t;\n }\n}\n\n/** Parse update data from an update() call. */ function ul(t, e, n, s) {\n const i = t.ya(1 /* UserDataSource.Update */ , e, n);\n dl(\"Data must be an object, but it was:\", i, s);\n const r = [], o = un.empty();\n ge(s, ((t, s) => {\n const u = ml(e, t, n);\n // For Compat types, we have to \"extract\" the underlying types before\n // performing validation.\n s = getModularInstance(s);\n const c = i.da(u);\n if (s instanceof el) \n // Add it to the field mask, but don't add anything to updateData.\n r.push(u); else {\n const t = hl(s, c);\n null != t && (r.push(u), o.set(u, t));\n }\n }));\n const u = new Re(r);\n return new Hh(o, u, i.fieldTransforms);\n}\n\n/** Parse update data from a list of field/value arguments. */ function cl(t, e, n, s, i, r) {\n const o = t.ya(1 /* UserDataSource.Update */ , e, n), u = [ wl(e, s, n) ], c = [ i ];\n if (r.length % 2 != 0) throw new U(q.INVALID_ARGUMENT, `Function ${e}() needs to be called with an even number of arguments that alternate between field names and values.`);\n for (let t = 0; t < r.length; t += 2) u.push(wl(e, r[t])), c.push(r[t + 1]);\n const a = [], h = un.empty();\n // We iterate in reverse order to pick the last value for a field if the\n // user specified the field multiple times.\n for (let t = u.length - 1; t >= 0; --t) if (!yl(a, u[t])) {\n const e = u[t];\n let n = c[t];\n // For Compat types, we have to \"extract\" the underlying types before\n // performing validation.\n n = getModularInstance(n);\n const s = o.da(e);\n if (n instanceof el) \n // Add it to the field mask, but don't add anything to updateData.\n a.push(e); else {\n const t = hl(n, s);\n null != t && (a.push(e), h.set(e, t));\n }\n }\n const l = new Re(a);\n return new Hh(h, l, o.fieldTransforms);\n}\n\n/**\n * Parse a \"query value\" (e.g. value in a where filter or a value in a cursor\n * bound).\n *\n * @param allowArrays - Whether the query value is an array that may directly\n * contain additional arrays (e.g. the operand of an `in` query).\n */ function al(t, e, n, s = !1) {\n return hl(n, t.ya(s ? 4 /* UserDataSource.ArrayArgument */ : 3 /* UserDataSource.Argument */ , e));\n}\n\n/**\n * Parses user data to Protobuf Values.\n *\n * @param input - Data to be parsed.\n * @param context - A context object representing the current path being parsed,\n * the source of the data being parsed, etc.\n * @returns The parsed value, or null if the value was a FieldValue sentinel\n * that should not be included in the resulting parsed data.\n */ function hl(t, e) {\n if (fl(\n // Unwrap the API type from the Compat SDK. This will return the API type\n // from firestore-exp.\n t = getModularInstance(t))) return dl(\"Unsupported field value:\", e, t), ll(t, e);\n if (t instanceof Qh) \n // FieldValues usually parse into transforms (except deleteField())\n // in which case we do not want to include this field in our parsed data\n // (as doing so will overwrite the field directly prior to the transform\n // trying to transform it). So we don't add this location to\n // context.fieldMask and we return null as our parsing result.\n /**\n * \"Parses\" the provided FieldValueImpl, adding any necessary transforms to\n * context.fieldTransforms.\n */\n return function(t, e) {\n // Sentinels are only supported with writes, and not within arrays.\n if (!Jh(e.ca)) throw e._a(`${t._methodName}() can only be used with update() and set()`);\n if (!e.path) throw e._a(`${t._methodName}() is not currently supported inside arrays`);\n const n = t._toFieldTransform(e);\n n && e.fieldTransforms.push(n);\n }\n /**\n * Helper to parse a scalar value (i.e. not an Object, Array, or FieldValue)\n *\n * @returns The parsed value\n */ (t, e), null;\n if (void 0 === t && e.ignoreUndefinedProperties) \n // If the input is undefined it can never participate in the fieldMask, so\n // don't handle this below. If `ignoreUndefinedProperties` is false,\n // `parseScalarValue` will reject an undefined value.\n return null;\n if (\n // If context.path is null we are inside an array and we don't support\n // field mask paths more granular than the top-level array.\n e.path && e.fieldMask.push(e.path), t instanceof Array) {\n // TODO(b/34871131): Include the path containing the array in the error\n // message.\n // In the case of IN queries, the parsed data is an array (representing\n // the set of values to be included for the IN query) that may directly\n // contain additional arrays (each representing an individual field\n // value), so we disable this validation.\n if (e.settings.la && 4 /* UserDataSource.ArrayArgument */ !== e.ca) throw e._a(\"Nested arrays are not supported\");\n return function(t, e) {\n const n = [];\n let s = 0;\n for (const i of t) {\n let t = hl(i, e.wa(s));\n null == t && (\n // Just include nulls in the array for fields being replaced with a\n // sentinel.\n t = {\n nullValue: \"NULL_VALUE\"\n }), n.push(t), s++;\n }\n return {\n arrayValue: {\n values: n\n }\n };\n }(t, e);\n }\n return function(t, e) {\n if (null === (t = getModularInstance(t))) return {\n nullValue: \"NULL_VALUE\"\n };\n if (\"number\" == typeof t) return Es(e.serializer, t);\n if (\"boolean\" == typeof t) return {\n booleanValue: t\n };\n if (\"string\" == typeof t) return {\n stringValue: t\n };\n if (t instanceof Date) {\n const n = it.fromDate(t);\n return {\n timestampValue: Di(e.serializer, n)\n };\n }\n if (t instanceof it) {\n // Firestore backend truncates precision down to microseconds. To ensure\n // offline mode works the same with regards to truncation, perform the\n // truncation immediately without waiting for the backend to do that.\n const n = new it(t.seconds, 1e3 * Math.floor(t.nanoseconds / 1e3));\n return {\n timestampValue: Di(e.serializer, n)\n };\n }\n if (t instanceof jh) return {\n geoPointValue: {\n latitude: t.latitude,\n longitude: t.longitude\n }\n };\n if (t instanceof Uh) return {\n bytesValue: Ci(e.serializer, t._byteString)\n };\n if (t instanceof fh) {\n const n = e.databaseId, s = t.firestore._databaseId;\n if (!s.isEqual(n)) throw e._a(`Document reference is for database ${s.projectId}/${s.database} but should be for database ${n.projectId}/${n.database}`);\n return {\n referenceValue: ki(t.firestore._databaseId || e.databaseId, t._key.path)\n };\n }\n throw e._a(`Unsupported field value: ${oh(t)}`);\n }\n /**\n * Checks whether an object looks like a JSON object that should be converted\n * into a struct. Normal class/prototype instances are considered to look like\n * JSON objects since they should be converted to a struct value. Arrays, Dates,\n * GeoPoints, etc. are not considered to look like JSON objects since they map\n * to specific FieldValue types other than ObjectValue.\n */ (t, e);\n}\n\nfunction ll(t, e) {\n const n = {};\n return ye(t) ? \n // If we encounter an empty object, we explicitly add it to the update\n // mask to ensure that the server creates a map entry.\n e.path && e.path.length > 0 && e.fieldMask.push(e.path) : ge(t, ((t, s) => {\n const i = hl(s, e.ha(t));\n null != i && (n[t] = i);\n })), {\n mapValue: {\n fields: n\n }\n };\n}\n\nfunction fl(t) {\n return !(\"object\" != typeof t || null === t || t instanceof Array || t instanceof Date || t instanceof it || t instanceof jh || t instanceof Uh || t instanceof fh || t instanceof Qh);\n}\n\nfunction dl(t, e, n) {\n if (!fl(n) || !function(t) {\n return \"object\" == typeof t && null !== t && (Object.getPrototypeOf(t) === Object.prototype || null === Object.getPrototypeOf(t));\n }(n)) {\n const s = oh(n);\n throw \"an object\" === s ? e._a(t + \" a custom object\") : e._a(t + \" \" + s);\n }\n}\n\n/**\n * Helper that calls fromDotSeparatedString() but wraps any error thrown.\n */ function wl(t, e, n) {\n if ((\n // If required, replace the FieldPath Compat class with with the firestore-exp\n // FieldPath.\n e = getModularInstance(e)) instanceof Kh) return e._internalPath;\n if (\"string\" == typeof e) return ml(t, e);\n throw gl(\"Field path arguments must be of type string or \", t, \n /* hasConverter= */ !1, \n /* path= */ void 0, n);\n}\n\n/**\n * Matches any characters in a field path string that are reserved.\n */ const _l = new RegExp(\"[~\\\\*/\\\\[\\\\]]\");\n\n/**\n * Wraps fromDotSeparatedString with an error message about the method that\n * was thrown.\n * @param methodName - The publicly visible method name\n * @param path - The dot-separated string form of a field path which will be\n * split on dots.\n * @param targetDoc - The document against which the field path will be\n * evaluated.\n */ function ml(t, e, n) {\n if (e.search(_l) >= 0) throw gl(`Invalid field path (${e}). Paths must not contain '~', '*', '/', '[', or ']'`, t, \n /* hasConverter= */ !1, \n /* path= */ void 0, n);\n try {\n return new Kh(...e.split(\".\"))._internalPath;\n } catch (s) {\n throw gl(`Invalid field path (${e}). Paths must not be empty, begin with '.', end with '.', or contain '..'`, t, \n /* hasConverter= */ !1, \n /* path= */ void 0, n);\n }\n}\n\nfunction gl(t, e, n, s, i) {\n const r = s && !s.isEmpty(), o = void 0 !== i;\n let u = `Function ${e}() called with invalid data`;\n n && (u += \" (via `toFirestore()`)\"), u += \". \";\n let c = \"\";\n return (r || o) && (c += \" (found\", r && (c += ` in field ${s}`), o && (c += ` in document ${i}`), \n c += \")\"), new U(q.INVALID_ARGUMENT, u + t + c);\n}\n\n/** Checks `haystack` if FieldPath `needle` is present. Runs in O(n). */ function yl(t, e) {\n return t.some((t => t.isEqual(e)));\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A `DocumentSnapshot` contains data read from a document in your Firestore\n * database. The data can be extracted with `.data()` or `.get()` to\n * get a specific field.\n *\n * For a `DocumentSnapshot` that points to a non-existing document, any data\n * access will return 'undefined'. You can use the `exists()` method to\n * explicitly verify a document's existence.\n */ class pl {\n // Note: This class is stripped down version of the DocumentSnapshot in\n // the legacy SDK. The changes are:\n // - No support for SnapshotMetadata.\n // - No support for SnapshotOptions.\n /** @hideconstructor protected */\n constructor(t, e, n, s, i) {\n this._firestore = t, this._userDataWriter = e, this._key = n, this._document = s, \n this._converter = i;\n }\n /** Property of the `DocumentSnapshot` that provides the document's ID. */ get id() {\n return this._key.path.lastSegment();\n }\n /**\n * The `DocumentReference` for the document included in the `DocumentSnapshot`.\n */ get ref() {\n return new fh(this._firestore, this._converter, this._key);\n }\n /**\n * Signals whether or not the document at the snapshot's location exists.\n *\n * @returns true if the document exists.\n */ exists() {\n return null !== this._document;\n }\n /**\n * Retrieves all fields in the document as an `Object`. Returns `undefined` if\n * the document doesn't exist.\n *\n * @returns An `Object` containing all fields in the document or `undefined`\n * if the document doesn't exist.\n */ data() {\n if (this._document) {\n if (this._converter) {\n // We only want to use the converter and create a new DocumentSnapshot\n // if a converter has been provided.\n const t = new Il(this._firestore, this._userDataWriter, this._key, this._document, \n /* converter= */ null);\n return this._converter.fromFirestore(t);\n }\n return this._userDataWriter.convertValue(this._document.data.value);\n }\n }\n /**\n * Retrieves the field specified by `fieldPath`. Returns `undefined` if the\n * document or field doesn't exist.\n *\n * @param fieldPath - The path (for example 'foo' or 'foo.bar') to a specific\n * field.\n * @returns The data at the specified field location or undefined if no such\n * field exists in the document.\n */\n // We are using `any` here to avoid an explicit cast by our users.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n get(t) {\n if (this._document) {\n const e = this._document.data.field(Tl(\"DocumentSnapshot.get\", t));\n if (null !== e) return this._userDataWriter.convertValue(e);\n }\n }\n}\n\n/**\n * A `QueryDocumentSnapshot` contains data read from a document in your\n * Firestore database as part of a query. The document is guaranteed to exist\n * and its data can be extracted with `.data()` or `.get()` to get a\n * specific field.\n *\n * A `QueryDocumentSnapshot` offers the same API surface as a\n * `DocumentSnapshot`. Since query results contain only existing documents, the\n * `exists` property will always be true and `data()` will never return\n * 'undefined'.\n */ class Il extends pl {\n /**\n * Retrieves all fields in the document as an `Object`.\n *\n * @override\n * @returns An `Object` containing all fields in the document.\n */\n data() {\n return super.data();\n }\n}\n\n/**\n * Helper that calls `fromDotSeparatedString()` but wraps any error thrown.\n */ function Tl(t, e) {\n return \"string\" == typeof e ? ml(t, e) : e instanceof Kh ? e._internalPath : e._delegate._internalPath;\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */ function El(t) {\n if (\"L\" /* LimitType.Last */ === t.limitType && 0 === t.explicitOrderBy.length) throw new U(q.UNIMPLEMENTED, \"limitToLast() queries require specifying at least one orderBy() clause\");\n}\n\n/**\n * An `AppliableConstraint` is an abstraction of a constraint that can be applied\n * to a Firestore query.\n */ class Al {}\n\n/**\n * A `QueryConstraint` is used to narrow the set of documents returned by a\n * Firestore query. `QueryConstraint`s are created by invoking {@link where},\n * {@link orderBy}, {@link (startAt:1)}, {@link (startAfter:1)}, {@link\n * (endBefore:1)}, {@link (endAt:1)}, {@link limit}, {@link limitToLast} and\n * can then be passed to {@link (query:1)} to create a new query instance that\n * also contains this `QueryConstraint`.\n */ class vl extends Al {}\n\nfunction Rl(t, e, ...n) {\n let s = [];\n e instanceof Al && s.push(e), s = s.concat(n), function(t) {\n const e = t.filter((t => t instanceof Vl)).length, n = t.filter((t => t instanceof Pl)).length;\n if (e > 1 || e > 0 && n > 0) throw new U(q.INVALID_ARGUMENT, \"InvalidQuery. When using composite filters, you cannot use more than one filter at the top level. Consider nesting the multiple filters within an `and(...)` statement. For example: change `query(query, where(...), or(...))` to `query(query, and(where(...), or(...)))`.\");\n }\n /**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n /**\n * Converts Firestore's internal types to the JavaScript types that we expose\n * to the user.\n *\n * @internal\n */ (s);\n for (const e of s) t = e._apply(t);\n return t;\n}\n\n/**\n * A `QueryFieldFilterConstraint` is used to narrow the set of documents returned by\n * a Firestore query by filtering on one or more document fields.\n * `QueryFieldFilterConstraint`s are created by invoking {@link where} and can then\n * be passed to {@link (query:1)} to create a new query instance that also contains\n * this `QueryFieldFilterConstraint`.\n */ class Pl extends vl {\n /**\n * @internal\n */\n constructor(t, e, n) {\n super(), this._field = t, this._op = e, this._value = n, \n /** The type of this query constraint */\n this.type = \"where\";\n }\n static _create(t, e, n) {\n return new Pl(t, e, n);\n }\n _apply(t) {\n const e = this._parse(t);\n return Ql(t._query, e), new dh(t.firestore, t.converter, Yn(t._query, e));\n }\n _parse(t) {\n const e = Zh(t.firestore), n = function(t, e, n, s, i, r, o) {\n let u;\n if (i.isKeyField()) {\n if (\"array-contains\" /* Operator.ARRAY_CONTAINS */ === r || \"array-contains-any\" /* Operator.ARRAY_CONTAINS_ANY */ === r) throw new U(q.INVALID_ARGUMENT, `Invalid Query. You can't perform '${r}' queries on documentId().`);\n if (\"in\" /* Operator.IN */ === r || \"not-in\" /* Operator.NOT_IN */ === r) {\n Gl(o, r);\n const e = [];\n for (const n of o) e.push(Kl(s, t, n));\n u = {\n arrayValue: {\n values: e\n }\n };\n } else u = Kl(s, t, o);\n } else \"in\" /* Operator.IN */ !== r && \"not-in\" /* Operator.NOT_IN */ !== r && \"array-contains-any\" /* Operator.ARRAY_CONTAINS_ANY */ !== r || Gl(o, r), \n u = al(n, e, o, \n /* allowArrays= */ \"in\" /* Operator.IN */ === r || \"not-in\" /* Operator.NOT_IN */ === r);\n return mn.create(i, r, u);\n }(t._query, \"where\", e, t.firestore._databaseId, this._field, this._op, this._value);\n return n;\n }\n}\n\n/**\n * Creates a {@link QueryFieldFilterConstraint} that enforces that documents\n * must contain the specified field and that the value should satisfy the\n * relation constraint provided.\n *\n * @param fieldPath - The path to compare\n * @param opStr - The operation string (e.g \"<\", \"<=\", \"==\", \"<\",\n * \"<=\", \"!=\").\n * @param value - The value for comparison\n * @returns The created {@link QueryFieldFilterConstraint}.\n */ function bl(t, e, n) {\n const s = e, i = Tl(\"where\", t);\n return Pl._create(i, s, n);\n}\n\n/**\n * A `QueryCompositeFilterConstraint` is used to narrow the set of documents\n * returned by a Firestore query by performing the logical OR or AND of multiple\n * {@link QueryFieldFilterConstraint}s or {@link QueryCompositeFilterConstraint}s.\n * `QueryCompositeFilterConstraint`s are created by invoking {@link or} or\n * {@link and} and can then be passed to {@link (query:1)} to create a new query\n * instance that also contains the `QueryCompositeFilterConstraint`.\n */ class Vl extends Al {\n /**\n * @internal\n */\n constructor(\n /** The type of this query constraint */\n t, e) {\n super(), this.type = t, this._queryConstraints = e;\n }\n static _create(t, e) {\n return new Vl(t, e);\n }\n _parse(t) {\n const e = this._queryConstraints.map((e => e._parse(t))).filter((t => t.getFilters().length > 0));\n return 1 === e.length ? e[0] : gn.create(e, this._getOperator());\n }\n _apply(t) {\n const e = this._parse(t);\n return 0 === e.getFilters().length ? t : (function(t, e) {\n let n = t;\n const s = e.getFlattenedFilters();\n for (const t of s) Ql(n, t), n = Yn(n, t);\n }\n // Checks if any of the provided filter operators are included in the given list of filters and\n // returns the first one that is, or null if none are.\n (t._query, e), new dh(t.firestore, t.converter, Yn(t._query, e)));\n }\n _getQueryConstraints() {\n return this._queryConstraints;\n }\n _getOperator() {\n return \"and\" === this.type ? \"and\" /* CompositeOperator.AND */ : \"or\" /* CompositeOperator.OR */;\n }\n}\n\n/**\n * Creates a new {@link QueryCompositeFilterConstraint} that is a disjunction of\n * the given filter constraints. A disjunction filter includes a document if it\n * satisfies any of the given filters.\n *\n * @param queryConstraints - Optional. The list of\n * {@link QueryFilterConstraint}s to perform a disjunction for. These must be\n * created with calls to {@link where}, {@link or}, or {@link and}.\n * @returns The newly created {@link QueryCompositeFilterConstraint}.\n */ function Sl(...t) {\n // Only support QueryFilterConstraints\n return t.forEach((t => zl(\"or\", t))), Vl._create(\"or\" /* CompositeOperator.OR */ , t);\n}\n\n/**\n * Creates a new {@link QueryCompositeFilterConstraint} that is a conjunction of\n * the given filter constraints. A conjunction filter includes a document if it\n * satisfies all of the given filters.\n *\n * @param queryConstraints - Optional. The list of\n * {@link QueryFilterConstraint}s to perform a conjunction for. These must be\n * created with calls to {@link where}, {@link or}, or {@link and}.\n * @returns The newly created {@link QueryCompositeFilterConstraint}.\n */ function Dl(...t) {\n // Only support QueryFilterConstraints\n return t.forEach((t => zl(\"and\", t))), Vl._create(\"and\" /* CompositeOperator.AND */ , t);\n}\n\n/**\n * A `QueryOrderByConstraint` is used to sort the set of documents returned by a\n * Firestore query. `QueryOrderByConstraint`s are created by invoking\n * {@link orderBy} and can then be passed to {@link (query:1)} to create a new query\n * instance that also contains this `QueryOrderByConstraint`.\n *\n * Note: Documents that do not contain the orderBy field will not be present in\n * the query result.\n */ class Cl extends vl {\n /**\n * @internal\n */\n constructor(t, e) {\n super(), this._field = t, this._direction = e, \n /** The type of this query constraint */\n this.type = \"orderBy\";\n }\n static _create(t, e) {\n return new Cl(t, e);\n }\n _apply(t) {\n const e = function(t, e, n) {\n if (null !== t.startAt) throw new U(q.INVALID_ARGUMENT, \"Invalid query. You must not call startAt() or startAfter() before calling orderBy().\");\n if (null !== t.endAt) throw new U(q.INVALID_ARGUMENT, \"Invalid query. You must not call endAt() or endBefore() before calling orderBy().\");\n const s = new dn(e, n);\n return function(t, e) {\n if (null === jn(t)) {\n // This is the first order by. It must match any inequality.\n const n = zn(t);\n null !== n && jl(t, n, e.field);\n }\n }(t, s), s;\n }\n /**\n * Create a `Bound` from a query and a document.\n *\n * Note that the `Bound` will always include the key of the document\n * and so only the provided document will compare equal to the returned\n * position.\n *\n * Will throw if the document does not contain all fields of the order by\n * of the query or if any of the fields in the order by are an uncommitted\n * server timestamp.\n */ (t._query, this._field, this._direction);\n return new dh(t.firestore, t.converter, function(t, e) {\n // TODO(dimond): validate that orderBy does not list the same key twice.\n const n = t.explicitOrderBy.concat([ e ]);\n return new Un(t.path, t.collectionGroup, n, t.filters.slice(), t.limit, t.limitType, t.startAt, t.endAt);\n }(t._query, e));\n }\n}\n\n/**\n * Creates a {@link QueryOrderByConstraint} that sorts the query result by the\n * specified field, optionally in descending order instead of ascending.\n *\n * Note: Documents that do not contain the specified field will not be present\n * in the query result.\n *\n * @param fieldPath - The field to sort by.\n * @param directionStr - Optional direction to sort by ('asc' or 'desc'). If\n * not specified, order will be ascending.\n * @returns The created {@link QueryOrderByConstraint}.\n */ function xl(t, e = \"asc\") {\n const n = e, s = Tl(\"orderBy\", t);\n return Cl._create(s, n);\n}\n\n/**\n * A `QueryLimitConstraint` is used to limit the number of documents returned by\n * a Firestore query.\n * `QueryLimitConstraint`s are created by invoking {@link limit} or\n * {@link limitToLast} and can then be passed to {@link (query:1)} to create a new\n * query instance that also contains this `QueryLimitConstraint`.\n */ class Nl extends vl {\n /**\n * @internal\n */\n constructor(\n /** The type of this query constraint */\n t, e, n) {\n super(), this.type = t, this._limit = e, this._limitType = n;\n }\n static _create(t, e, n) {\n return new Nl(t, e, n);\n }\n _apply(t) {\n return new dh(t.firestore, t.converter, Xn(t._query, this._limit, this._limitType));\n }\n}\n\n/**\n * Creates a {@link QueryLimitConstraint} that only returns the first matching\n * documents.\n *\n * @param limit - The maximum number of items to return.\n * @returns The created {@link QueryLimitConstraint}.\n */ function kl(t) {\n return ch(\"limit\", t), Nl._create(\"limit\", t, \"F\" /* LimitType.First */);\n}\n\n/**\n * Creates a {@link QueryLimitConstraint} that only returns the last matching\n * documents.\n *\n * You must specify at least one `orderBy` clause for `limitToLast` queries,\n * otherwise an exception will be thrown during execution.\n *\n * @param limit - The maximum number of items to return.\n * @returns The created {@link QueryLimitConstraint}.\n */ function Ml(t) {\n return ch(\"limitToLast\", t), Nl._create(\"limitToLast\", t, \"L\" /* LimitType.Last */);\n}\n\n/**\n * A `QueryStartAtConstraint` is used to exclude documents from the start of a\n * result set returned by a Firestore query.\n * `QueryStartAtConstraint`s are created by invoking {@link (startAt:1)} or\n * {@link (startAfter:1)} and can then be passed to {@link (query:1)} to create a\n * new query instance that also contains this `QueryStartAtConstraint`.\n */ class $l extends vl {\n /**\n * @internal\n */\n constructor(\n /** The type of this query constraint */\n t, e, n) {\n super(), this.type = t, this._docOrFields = e, this._inclusive = n;\n }\n static _create(t, e, n) {\n return new $l(t, e, n);\n }\n _apply(t) {\n const e = Ul(t, this.type, this._docOrFields, this._inclusive);\n return new dh(t.firestore, t.converter, function(t, e) {\n return new Un(t.path, t.collectionGroup, t.explicitOrderBy.slice(), t.filters.slice(), t.limit, t.limitType, e, t.endAt);\n }(t._query, e));\n }\n}\n\nfunction Ol(...t) {\n return $l._create(\"startAt\", t, \n /*inclusive=*/ !0);\n}\n\nfunction Fl(...t) {\n return $l._create(\"startAfter\", t, \n /*inclusive=*/ !1);\n}\n\n/**\n * A `QueryEndAtConstraint` is used to exclude documents from the end of a\n * result set returned by a Firestore query.\n * `QueryEndAtConstraint`s are created by invoking {@link (endAt:1)} or\n * {@link (endBefore:1)} and can then be passed to {@link (query:1)} to create a new\n * query instance that also contains this `QueryEndAtConstraint`.\n */ class Bl extends vl {\n /**\n * @internal\n */\n constructor(\n /** The type of this query constraint */\n t, e, n) {\n super(), this.type = t, this._docOrFields = e, this._inclusive = n;\n }\n static _create(t, e, n) {\n return new Bl(t, e, n);\n }\n _apply(t) {\n const e = Ul(t, this.type, this._docOrFields, this._inclusive);\n return new dh(t.firestore, t.converter, function(t, e) {\n return new Un(t.path, t.collectionGroup, t.explicitOrderBy.slice(), t.filters.slice(), t.limit, t.limitType, t.startAt, e);\n }(t._query, e));\n }\n}\n\nfunction Ll(...t) {\n return Bl._create(\"endBefore\", t, \n /*inclusive=*/ !1);\n}\n\nfunction ql(...t) {\n return Bl._create(\"endAt\", t, \n /*inclusive=*/ !0);\n}\n\n/** Helper function to create a bound from a document or fields */ function Ul(t, e, n, s) {\n if (n[0] = getModularInstance(n[0]), n[0] instanceof pl) return function(t, e, n, s, i) {\n if (!s) throw new U(q.NOT_FOUND, `Can't use a DocumentSnapshot that doesn't exist for ${n}().`);\n const r = [];\n // Because people expect to continue/end a query at the exact document\n // provided, we need to use the implicit sort order rather than the explicit\n // sort order, because it's guaranteed to contain the document key. That way\n // the position becomes unambiguous and the query continues/ends exactly at\n // the provided document. Without the key (by using the explicit sort\n // orders), multiple documents could match the position, yielding duplicate\n // results.\n for (const n of Hn(t)) if (n.field.isKeyField()) r.push(We(e, s.key)); else {\n const t = s.data.field(n.field);\n if (Ne(t)) throw new U(q.INVALID_ARGUMENT, 'Invalid query. You are trying to start or end a query using a document for which the field \"' + n.field + '\" is an uncommitted server timestamp. (Since the value of this field is unknown, you cannot start/end a query with it.)');\n if (null === t) {\n const t = n.field.canonicalString();\n throw new U(q.INVALID_ARGUMENT, `Invalid query. You are trying to start or end a query using a document for which the field '${t}' (used as the orderBy) does not exist.`);\n }\n r.push(t);\n }\n return new hn(r, i);\n }\n /**\n * Converts a list of field values to a `Bound` for the given query.\n */ (t._query, t.firestore._databaseId, e, n[0]._document, s);\n {\n const i = Zh(t.firestore);\n return function(t, e, n, s, i, r) {\n // Use explicit order by's because it has to match the query the user made\n const o = t.explicitOrderBy;\n if (i.length > o.length) throw new U(q.INVALID_ARGUMENT, `Too many arguments provided to ${s}(). The number of arguments must be less than or equal to the number of orderBy() clauses`);\n const u = [];\n for (let r = 0; r < i.length; r++) {\n const c = i[r];\n if (o[r].field.isKeyField()) {\n if (\"string\" != typeof c) throw new U(q.INVALID_ARGUMENT, `Invalid query. Expected a string for document ID in ${s}(), but got a ${typeof c}`);\n if (!Wn(t) && -1 !== c.indexOf(\"/\")) throw new U(q.INVALID_ARGUMENT, `Invalid query. When querying a collection and ordering by documentId(), the value passed to ${s}() must be a plain document ID, but '${c}' contains a slash.`);\n const n = t.path.child(ut.fromString(c));\n if (!ht.isDocumentKey(n)) throw new U(q.INVALID_ARGUMENT, `Invalid query. When querying a collection group and ordering by documentId(), the value passed to ${s}() must result in a valid document path, but '${n}' is not because it contains an odd number of segments.`);\n const i = new ht(n);\n u.push(We(e, i));\n } else {\n const t = al(n, s, c);\n u.push(t);\n }\n }\n return new hn(u, r);\n }\n /**\n * Parses the given `documentIdValue` into a `ReferenceValue`, throwing\n * appropriate errors if the value is anything other than a `DocumentReference`\n * or `string`, or if the string is malformed.\n */ (t._query, t.firestore._databaseId, i, e, n, s);\n }\n}\n\nfunction Kl(t, e, n) {\n if (\"string\" == typeof (n = getModularInstance(n))) {\n if (\"\" === n) throw new U(q.INVALID_ARGUMENT, \"Invalid query. When querying with documentId(), you must provide a valid document ID, but it was an empty string.\");\n if (!Wn(e) && -1 !== n.indexOf(\"/\")) throw new U(q.INVALID_ARGUMENT, `Invalid query. When querying a collection by documentId(), you must provide a plain document ID, but '${n}' contains a '/' character.`);\n const s = e.path.child(ut.fromString(n));\n if (!ht.isDocumentKey(s)) throw new U(q.INVALID_ARGUMENT, `Invalid query. When querying a collection group by documentId(), the value provided must result in a valid document path, but '${s}' is not because it has an odd number of segments (${s.length}).`);\n return We(t, new ht(s));\n }\n if (n instanceof fh) return We(t, n._key);\n throw new U(q.INVALID_ARGUMENT, `Invalid query. When querying with documentId(), you must provide a valid string or a DocumentReference, but it was: ${oh(n)}.`);\n}\n\n/**\n * Validates that the value passed into a disjunctive filter satisfies all\n * array requirements.\n */ function Gl(t, e) {\n if (!Array.isArray(t) || 0 === t.length) throw new U(q.INVALID_ARGUMENT, `Invalid Query. A non-empty array is required for '${e.toString()}' filters.`);\n}\n\n/**\n * Given an operator, returns the set of operators that cannot be used with it.\n *\n * This is not a comprehensive check, and this function should be removed in the\n * long term. Validations should occur in the Firestore backend.\n *\n * Operators in a query must adhere to the following set of rules:\n * 1. Only one inequality per query.\n * 2. `NOT_IN` cannot be used with array, disjunctive, or `NOT_EQUAL` operators.\n */ function Ql(t, e) {\n if (e.isInequality()) {\n const n = zn(t), s = e.field;\n if (null !== n && !n.isEqual(s)) throw new U(q.INVALID_ARGUMENT, `Invalid query. All where filters with an inequality (<, <=, !=, not-in, >, or >=) must be on the same field. But you have inequality filters on '${n.toString()}' and '${s.toString()}'`);\n const i = jn(t);\n null !== i && jl(t, s, i);\n }\n const n = function(t, e) {\n for (const n of t) for (const t of n.getFlattenedFilters()) if (e.indexOf(t.op) >= 0) return t.op;\n return null;\n }(t.filters, function(t) {\n switch (t) {\n case \"!=\" /* Operator.NOT_EQUAL */ :\n return [ \"!=\" /* Operator.NOT_EQUAL */ , \"not-in\" /* Operator.NOT_IN */ ];\n\n case \"array-contains-any\" /* Operator.ARRAY_CONTAINS_ANY */ :\n case \"in\" /* Operator.IN */ :\n return [ \"not-in\" /* Operator.NOT_IN */ ];\n\n case \"not-in\" /* Operator.NOT_IN */ :\n return [ \"array-contains-any\" /* Operator.ARRAY_CONTAINS_ANY */ , \"in\" /* Operator.IN */ , \"not-in\" /* Operator.NOT_IN */ , \"!=\" /* Operator.NOT_EQUAL */ ];\n\n default:\n return [];\n }\n }(e.op));\n if (null !== n) \n // Special case when it's a duplicate op to give a slightly clearer error message.\n throw n === e.op ? new U(q.INVALID_ARGUMENT, `Invalid query. You cannot use more than one '${e.op.toString()}' filter.`) : new U(q.INVALID_ARGUMENT, `Invalid query. You cannot use '${e.op.toString()}' filters with '${n.toString()}' filters.`);\n}\n\nfunction jl(t, e, n) {\n if (!n.isEqual(e)) throw new U(q.INVALID_ARGUMENT, `Invalid query. You have a where filter with an inequality (<, <=, !=, not-in, >, or >=) on field '${e.toString()}' and so you must also use '${e.toString()}' as your first argument to orderBy(), but your first orderBy() is on field '${n.toString()}' instead.`);\n}\n\nfunction zl(t, e) {\n if (!(e instanceof Pl || e instanceof Vl)) throw new U(q.INVALID_ARGUMENT, `Function ${t}() requires AppliableConstraints created with a call to 'where(...)', 'or(...)', or 'and(...)'.`);\n}\n\nclass Wl {\n convertValue(t, e = \"none\") {\n switch (Le(t)) {\n case 0 /* TypeOrder.NullValue */ :\n return null;\n\n case 1 /* TypeOrder.BooleanValue */ :\n return t.booleanValue;\n\n case 2 /* TypeOrder.NumberValue */ :\n return Ce(t.integerValue || t.doubleValue);\n\n case 3 /* TypeOrder.TimestampValue */ :\n return this.convertTimestamp(t.timestampValue);\n\n case 4 /* TypeOrder.ServerTimestampValue */ :\n return this.convertServerTimestamp(t, e);\n\n case 5 /* TypeOrder.StringValue */ :\n return t.stringValue;\n\n case 6 /* TypeOrder.BlobValue */ :\n return this.convertBytes(xe(t.bytesValue));\n\n case 7 /* TypeOrder.RefValue */ :\n return this.convertReference(t.referenceValue);\n\n case 8 /* TypeOrder.GeoPointValue */ :\n return this.convertGeoPoint(t.geoPointValue);\n\n case 9 /* TypeOrder.ArrayValue */ :\n return this.convertArray(t.arrayValue, e);\n\n case 10 /* TypeOrder.ObjectValue */ :\n return this.convertObject(t.mapValue, e);\n\n default:\n throw O();\n }\n }\n convertObject(t, e) {\n return this.convertObjectMap(t.fields, e);\n }\n /**\n * @internal\n */ convertObjectMap(t, e = \"none\") {\n const n = {};\n return ge(t, ((t, s) => {\n n[t] = this.convertValue(s, e);\n })), n;\n }\n convertGeoPoint(t) {\n return new jh(Ce(t.latitude), Ce(t.longitude));\n }\n convertArray(t, e) {\n return (t.values || []).map((t => this.convertValue(t, e)));\n }\n convertServerTimestamp(t, e) {\n switch (e) {\n case \"previous\":\n const n = ke(t);\n return null == n ? null : this.convertValue(n, e);\n\n case \"estimate\":\n return this.convertTimestamp(Me(t));\n\n default:\n return null;\n }\n }\n convertTimestamp(t) {\n const e = De(t);\n return new it(e.seconds, e.nanos);\n }\n convertDocumentKey(t, e) {\n const n = ut.fromString(t);\n F(ur(n));\n const s = new Oe(n.get(1), n.get(3)), i = new ht(n.popFirst(5));\n return s.isEqual(e) || \n // TODO(b/64130202): Somehow support foreign references.\n k(`Document ${i} contains a document reference within a different database (${s.projectId}/${s.database}) which is not supported. It will be treated as a reference in the current database (${e.projectId}/${e.database}) instead.`), \n i;\n }\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Converts custom model object of type T into `DocumentData` by applying the\n * converter if it exists.\n *\n * This function is used when converting user objects to `DocumentData`\n * because we want to provide the user with a more specific error message if\n * their `set()` or fails due to invalid data originating from a `toFirestore()`\n * call.\n */ function Hl(t, e, n) {\n let s;\n // Cast to `any` in order to satisfy the union type constraint on\n // toFirestore().\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return s = t ? n && (n.merge || n.mergeFields) ? t.toFirestore(e, n) : t.toFirestore(e) : e, \n s;\n}\n\nclass Jl extends Wl {\n constructor(t) {\n super(), this.firestore = t;\n }\n convertBytes(t) {\n return new Uh(t);\n }\n convertReference(t) {\n const e = this.convertDocumentKey(t, this.firestore._databaseId);\n return new fh(this.firestore, /* converter= */ null, e);\n }\n}\n\n/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Create an AggregateField object that can be used to compute the sum of\n * a specified field over a range of documents in the result set of a query.\n * @param field Specifies the field to sum across the result set.\n * @internal TODO (sum/avg) remove when public\n */ function Yl(t) {\n return new Lh(\"sum\", wl(\"sum\", t));\n}\n\n/**\n * Create an AggregateField object that can be used to compute the average of\n * a specified field over a range of documents in the result set of a query.\n * @param field Specifies the field to average across the result set.\n * @internal TODO (sum/avg) remove when public\n */ function Xl(t) {\n return new Lh(\"avg\", wl(\"average\", t));\n}\n\n/**\n * Create an AggregateField object that can be used to compute the count of\n * documents in the result set of a query.\n * @internal TODO (sum/avg) remove when public\n */ function Zl() {\n return new Lh(\"count\");\n}\n\n/**\n * Compares two 'AggregateField` instances for equality.\n *\n * @param left Compare this AggregateField to the `right`.\n * @param right Compare this AggregateField to the `left`.\n * @internal TODO (sum/avg) remove when public\n */ function tf(t, e) {\n var n, s;\n return t instanceof Lh && e instanceof Lh && t._aggregateType === e._aggregateType && (null === (n = t._internalFieldPath) || void 0 === n ? void 0 : n.canonicalString()) === (null === (s = e._internalFieldPath) || void 0 === s ? void 0 : s.canonicalString());\n}\n\n/**\n * Compares two `AggregateQuerySnapshot` instances for equality.\n *\n * Two `AggregateQuerySnapshot` instances are considered \"equal\" if they have\n * underlying queries that compare equal, and the same data.\n *\n * @param left - The first `AggregateQuerySnapshot` to compare.\n * @param right - The second `AggregateQuerySnapshot` to compare.\n *\n * @returns `true` if the objects are \"equal\", as defined above, or `false`\n * otherwise.\n */ function ef(t, e) {\n return ph(t.query, e.query) && deepEqual(t.data(), e.data());\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Metadata about a snapshot, describing the state of the snapshot.\n */ class nf {\n /** @hideconstructor */\n constructor(t, e) {\n this.hasPendingWrites = t, this.fromCache = e;\n }\n /**\n * Returns true if this `SnapshotMetadata` is equal to the provided one.\n *\n * @param other - The `SnapshotMetadata` to compare against.\n * @returns true if this `SnapshotMetadata` is equal to the provided one.\n */ isEqual(t) {\n return this.hasPendingWrites === t.hasPendingWrites && this.fromCache === t.fromCache;\n }\n}\n\n/**\n * A `DocumentSnapshot` contains data read from a document in your Firestore\n * database. The data can be extracted with `.data()` or `.get()` to\n * get a specific field.\n *\n * For a `DocumentSnapshot` that points to a non-existing document, any data\n * access will return 'undefined'. You can use the `exists()` method to\n * explicitly verify a document's existence.\n */ class sf extends pl {\n /** @hideconstructor protected */\n constructor(t, e, n, s, i, r) {\n super(t, e, n, s, r), this._firestore = t, this._firestoreImpl = t, this.metadata = i;\n }\n /**\n * Returns whether or not the data exists. True if the document exists.\n */ exists() {\n return super.exists();\n }\n /**\n * Retrieves all fields in the document as an `Object`. Returns `undefined` if\n * the document doesn't exist.\n *\n * By default, `serverTimestamp()` values that have not yet been\n * set to their final value will be returned as `null`. You can override\n * this by passing an options object.\n *\n * @param options - An options object to configure how data is retrieved from\n * the snapshot (for example the desired behavior for server timestamps that\n * have not yet been set to their final value).\n * @returns An `Object` containing all fields in the document or `undefined` if\n * the document doesn't exist.\n */ data(t = {}) {\n if (this._document) {\n if (this._converter) {\n // We only want to use the converter and create a new DocumentSnapshot\n // if a converter has been provided.\n const e = new rf(this._firestore, this._userDataWriter, this._key, this._document, this.metadata, \n /* converter= */ null);\n return this._converter.fromFirestore(e, t);\n }\n return this._userDataWriter.convertValue(this._document.data.value, t.serverTimestamps);\n }\n }\n /**\n * Retrieves the field specified by `fieldPath`. Returns `undefined` if the\n * document or field doesn't exist.\n *\n * By default, a `serverTimestamp()` that has not yet been set to\n * its final value will be returned as `null`. You can override this by\n * passing an options object.\n *\n * @param fieldPath - The path (for example 'foo' or 'foo.bar') to a specific\n * field.\n * @param options - An options object to configure how the field is retrieved\n * from the snapshot (for example the desired behavior for server timestamps\n * that have not yet been set to their final value).\n * @returns The data at the specified field location or undefined if no such\n * field exists in the document.\n */\n // We are using `any` here to avoid an explicit cast by our users.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n get(t, e = {}) {\n if (this._document) {\n const n = this._document.data.field(Tl(\"DocumentSnapshot.get\", t));\n if (null !== n) return this._userDataWriter.convertValue(n, e.serverTimestamps);\n }\n }\n}\n\n/**\n * A `QueryDocumentSnapshot` contains data read from a document in your\n * Firestore database as part of a query. The document is guaranteed to exist\n * and its data can be extracted with `.data()` or `.get()` to get a\n * specific field.\n *\n * A `QueryDocumentSnapshot` offers the same API surface as a\n * `DocumentSnapshot`. Since query results contain only existing documents, the\n * `exists` property will always be true and `data()` will never return\n * 'undefined'.\n */ class rf extends sf {\n /**\n * Retrieves all fields in the document as an `Object`.\n *\n * By default, `serverTimestamp()` values that have not yet been\n * set to their final value will be returned as `null`. You can override\n * this by passing an options object.\n *\n * @override\n * @param options - An options object to configure how data is retrieved from\n * the snapshot (for example the desired behavior for server timestamps that\n * have not yet been set to their final value).\n * @returns An `Object` containing all fields in the document.\n */\n data(t = {}) {\n return super.data(t);\n }\n}\n\n/**\n * A `QuerySnapshot` contains zero or more `DocumentSnapshot` objects\n * representing the results of a query. The documents can be accessed as an\n * array via the `docs` property or enumerated using the `forEach` method. The\n * number of documents can be determined via the `empty` and `size`\n * properties.\n */ class of {\n /** @hideconstructor */\n constructor(t, e, n, s) {\n this._firestore = t, this._userDataWriter = e, this._snapshot = s, this.metadata = new nf(s.hasPendingWrites, s.fromCache), \n this.query = n;\n }\n /** An array of all the documents in the `QuerySnapshot`. */ get docs() {\n const t = [];\n return this.forEach((e => t.push(e))), t;\n }\n /** The number of documents in the `QuerySnapshot`. */ get size() {\n return this._snapshot.docs.size;\n }\n /** True if there are no documents in the `QuerySnapshot`. */ get empty() {\n return 0 === this.size;\n }\n /**\n * Enumerates all of the documents in the `QuerySnapshot`.\n *\n * @param callback - A callback to be called with a `QueryDocumentSnapshot` for\n * each document in the snapshot.\n * @param thisArg - The `this` binding for the callback.\n */ forEach(t, e) {\n this._snapshot.docs.forEach((n => {\n t.call(e, new rf(this._firestore, this._userDataWriter, n.key, n, new nf(this._snapshot.mutatedKeys.has(n.key), this._snapshot.fromCache), this.query.converter));\n }));\n }\n /**\n * Returns an array of the documents changes since the last snapshot. If this\n * is the first snapshot, all documents will be in the list as 'added'\n * changes.\n *\n * @param options - `SnapshotListenOptions` that control whether metadata-only\n * changes (i.e. only `DocumentSnapshot.metadata` changed) should trigger\n * snapshot events.\n */ docChanges(t = {}) {\n const e = !!t.includeMetadataChanges;\n if (e && this._snapshot.excludesMetadataChanges) throw new U(q.INVALID_ARGUMENT, \"To include metadata changes with your document changes, you must also pass { includeMetadataChanges:true } to onSnapshot().\");\n return this._cachedChanges && this._cachedChangesIncludeMetadataChanges === e || (this._cachedChanges = \n /** Calculates the array of `DocumentChange`s for a given `ViewSnapshot`. */\n function(t, e) {\n if (t._snapshot.oldDocs.isEmpty()) {\n let e = 0;\n return t._snapshot.docChanges.map((n => {\n const s = new rf(t._firestore, t._userDataWriter, n.doc.key, n.doc, new nf(t._snapshot.mutatedKeys.has(n.doc.key), t._snapshot.fromCache), t.query.converter);\n return n.doc, {\n type: \"added\",\n doc: s,\n oldIndex: -1,\n newIndex: e++\n };\n }));\n }\n {\n // A `DocumentSet` that is updated incrementally as changes are applied to use\n // to lookup the index of a document.\n let n = t._snapshot.oldDocs;\n return t._snapshot.docChanges.filter((t => e || 3 /* ChangeType.Metadata */ !== t.type)).map((e => {\n const s = new rf(t._firestore, t._userDataWriter, e.doc.key, e.doc, new nf(t._snapshot.mutatedKeys.has(e.doc.key), t._snapshot.fromCache), t.query.converter);\n let i = -1, r = -1;\n return 0 /* ChangeType.Added */ !== e.type && (i = n.indexOf(e.doc.key), n = n.delete(e.doc.key)), \n 1 /* ChangeType.Removed */ !== e.type && (n = n.add(e.doc), r = n.indexOf(e.doc.key)), \n {\n type: uf(e.type),\n doc: s,\n oldIndex: i,\n newIndex: r\n };\n }));\n }\n }(this, e), this._cachedChangesIncludeMetadataChanges = e), this._cachedChanges;\n }\n}\n\nfunction uf(t) {\n switch (t) {\n case 0 /* ChangeType.Added */ :\n return \"added\";\n\n case 2 /* ChangeType.Modified */ :\n case 3 /* ChangeType.Metadata */ :\n return \"modified\";\n\n case 1 /* ChangeType.Removed */ :\n return \"removed\";\n\n default:\n return O();\n }\n}\n\n// TODO(firestoreexp): Add tests for snapshotEqual with different snapshot\n// metadata\n/**\n * Returns true if the provided snapshots are equal.\n *\n * @param left - A snapshot to compare.\n * @param right - A snapshot to compare.\n * @returns true if the snapshots are equal.\n */ function cf(t, e) {\n return t instanceof sf && e instanceof sf ? t._firestore === e._firestore && t._key.isEqual(e._key) && (null === t._document ? null === e._document : t._document.isEqual(e._document)) && t._converter === e._converter : t instanceof of && e instanceof of && (t._firestore === e._firestore && ph(t.query, e.query) && t.metadata.isEqual(e.metadata) && t._snapshot.isEqual(e._snapshot));\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Reads the document referred to by this `DocumentReference`.\n *\n * Note: `getDoc()` attempts to provide up-to-date data when possible by waiting\n * for data from the server, but it may return cached data or fail if you are\n * offline and the server cannot be reached. To specify this behavior, invoke\n * {@link getDocFromCache} or {@link getDocFromServer}.\n *\n * @param reference - The reference of the document to fetch.\n * @returns A Promise resolved with a `DocumentSnapshot` containing the\n * current document contents.\n */ function af(t) {\n t = uh(t, fh);\n const e = uh(t.firestore, vh);\n return za(bh(e), t._key).then((n => Af(e, t, n)));\n}\n\nclass hf extends Wl {\n constructor(t) {\n super(), this.firestore = t;\n }\n convertBytes(t) {\n return new Uh(t);\n }\n convertReference(t) {\n const e = this.convertDocumentKey(t, this.firestore._databaseId);\n return new fh(this.firestore, /* converter= */ null, e);\n }\n}\n\n/**\n * Reads the document referred to by this `DocumentReference` from cache.\n * Returns an error if the document is not currently cached.\n *\n * @returns A `Promise` resolved with a `DocumentSnapshot` containing the\n * current document contents.\n */ function lf(t) {\n t = uh(t, fh);\n const e = uh(t.firestore, vh), n = bh(e), s = new hf(e);\n return ja(n, t._key).then((n => new sf(e, s, t._key, n, new nf(null !== n && n.hasLocalMutations, \n /* fromCache= */ !0), t.converter)));\n}\n\n/**\n * Reads the document referred to by this `DocumentReference` from the server.\n * Returns an error if the network is not available.\n *\n * @returns A `Promise` resolved with a `DocumentSnapshot` containing the\n * current document contents.\n */ function ff(t) {\n t = uh(t, fh);\n const e = uh(t.firestore, vh);\n return za(bh(e), t._key, {\n source: \"server\"\n }).then((n => Af(e, t, n)));\n}\n\n/**\n * Executes the query and returns the results as a `QuerySnapshot`.\n *\n * Note: `getDocs()` attempts to provide up-to-date data when possible by\n * waiting for data from the server, but it may return cached data or fail if\n * you are offline and the server cannot be reached. To specify this behavior,\n * invoke {@link getDocsFromCache} or {@link getDocsFromServer}.\n *\n * @returns A `Promise` that will be resolved with the results of the query.\n */ function df(t) {\n t = uh(t, dh);\n const e = uh(t.firestore, vh), n = bh(e), s = new hf(e);\n return El(t._query), Ha(n, t._query).then((n => new of(e, s, t, n)));\n}\n\n/**\n * Executes the query and returns the results as a `QuerySnapshot` from cache.\n * Returns an empty result set if no documents matching the query are currently\n * cached.\n *\n * @returns A `Promise` that will be resolved with the results of the query.\n */ function wf(t) {\n t = uh(t, dh);\n const e = uh(t.firestore, vh), n = bh(e), s = new hf(e);\n return Wa(n, t._query).then((n => new of(e, s, t, n)));\n}\n\n/**\n * Executes the query and returns the results as a `QuerySnapshot` from the\n * server. Returns an error if the network is not available.\n *\n * @returns A `Promise` that will be resolved with the results of the query.\n */ function _f(t) {\n t = uh(t, dh);\n const e = uh(t.firestore, vh), n = bh(e), s = new hf(e);\n return Ha(n, t._query, {\n source: \"server\"\n }).then((n => new of(e, s, t, n)));\n}\n\nfunction mf(t, e, n) {\n t = uh(t, fh);\n const s = uh(t.firestore, vh), i = Hl(t.converter, e, n);\n return Ef(s, [ tl(Zh(s), \"setDoc\", t._key, i, null !== t.converter, n).toMutation(t._key, Fs.none()) ]);\n}\n\nfunction gf(t, e, n, ...s) {\n t = uh(t, fh);\n const i = uh(t.firestore, vh), r = Zh(i);\n let o;\n o = \"string\" == typeof (\n // For Compat types, we have to \"extract\" the underlying types before\n // performing validation.\n e = getModularInstance(e)) || e instanceof Kh ? cl(r, \"updateDoc\", t._key, e, n, s) : ul(r, \"updateDoc\", t._key, e);\n return Ef(i, [ o.toMutation(t._key, Fs.exists(!0)) ]);\n}\n\n/**\n * Deletes the document referred to by the specified `DocumentReference`.\n *\n * @param reference - A reference to the document to delete.\n * @returns A Promise resolved once the document has been successfully\n * deleted from the backend (note that it won't resolve while you're offline).\n */ function yf(t) {\n return Ef(uh(t.firestore, vh), [ new Ys(t._key, Fs.none()) ]);\n}\n\n/**\n * Add a new document to specified `CollectionReference` with the given data,\n * assigning it a document ID automatically.\n *\n * @param reference - A reference to the collection to add this document to.\n * @param data - An Object containing the data for the new document.\n * @returns A `Promise` resolved with a `DocumentReference` pointing to the\n * newly created document after it has been written to the backend (Note that it\n * won't resolve while you're offline).\n */ function pf(t, e) {\n const n = uh(t.firestore, vh), s = gh(t), i = Hl(t.converter, e);\n return Ef(n, [ tl(Zh(t.firestore), \"addDoc\", s._key, i, null !== t.converter, {}).toMutation(s._key, Fs.exists(!1)) ]).then((() => s));\n}\n\nfunction If(t, ...e) {\n var n, s, i;\n t = getModularInstance(t);\n let r = {\n includeMetadataChanges: !1\n }, o = 0;\n \"object\" != typeof e[o] || Th(e[o]) || (r = e[o], o++);\n const u = {\n includeMetadataChanges: r.includeMetadataChanges\n };\n if (Th(e[o])) {\n const t = e[o];\n e[o] = null === (n = t.next) || void 0 === n ? void 0 : n.bind(t), e[o + 1] = null === (s = t.error) || void 0 === s ? void 0 : s.bind(t), \n e[o + 2] = null === (i = t.complete) || void 0 === i ? void 0 : i.bind(t);\n }\n let c, a, h;\n if (t instanceof fh) a = uh(t.firestore, vh), h = Gn(t._key.path), c = {\n next: n => {\n e[o] && e[o](Af(a, t, n));\n },\n error: e[o + 1],\n complete: e[o + 2]\n }; else {\n const n = uh(t, dh);\n a = uh(n.firestore, vh), h = n._query;\n const s = new hf(a);\n c = {\n next: t => {\n e[o] && e[o](new of(a, s, n, t));\n },\n error: e[o + 1],\n complete: e[o + 2]\n }, El(t._query);\n }\n return function(t, e, n, s) {\n const i = new Va(s), r = new Nc(e, i, n);\n return t.asyncQueue.enqueueAndForget((async () => Vc(await Ka(t), r))), () => {\n i.Dc(), t.asyncQueue.enqueueAndForget((async () => Sc(await Ka(t), r)));\n };\n }(bh(a), h, u, c);\n}\n\nfunction Tf(t, e) {\n return Ja(bh(t = uh(t, vh)), Th(e) ? e : {\n next: e\n });\n}\n\n/**\n * Locally writes `mutations` on the async queue.\n * @internal\n */ function Ef(t, e) {\n return function(t, e) {\n const n = new K;\n return t.asyncQueue.enqueueAndForget((async () => zc(await qa(t), e, n))), n.promise;\n }(bh(t), e);\n}\n\n/**\n * Converts a {@link ViewSnapshot} that contains the single document specified by `ref`\n * to a {@link DocumentSnapshot}.\n */ function Af(t, e, n) {\n const s = n.docs.get(e._key), i = new hf(t);\n return new sf(t, i, e._key, s, new nf(n.hasPendingWrites, n.fromCache), e.converter);\n}\n\n/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Calculates the number of documents in the result set of the given query,\n * without actually downloading the documents.\n *\n * Using this function to count the documents is efficient because only the\n * final count, not the documents' data, is downloaded. This function can even\n * count the documents if the result set would be prohibitively large to\n * download entirely (e.g. thousands of documents).\n *\n * The result received from the server is presented, unaltered, without\n * considering any local state. That is, documents in the local cache are not\n * taken into consideration, neither are local modifications not yet\n * synchronized with the server. Previously-downloaded results, if any, are not\n * used: every request using this source necessarily involves a round trip to\n * the server.\n *\n * @param query - The query whose result set size to calculate.\n * @returns A Promise that will be resolved with the count; the count can be\n * retrieved from `snapshot.data().count`, where `snapshot` is the\n * `AggregateQuerySnapshot` to which the returned Promise resolves.\n */ function vf(t) {\n return Rf(t, {\n count: Zl()\n });\n}\n\n/**\n * Calculates the specified aggregations over the documents in the result\n * set of the given query, without actually downloading the documents.\n *\n * Using this function to perform aggregations is efficient because only the\n * final aggregation values, not the documents' data, is downloaded. This\n * function can even perform aggregations of the documents if the result set\n * would be prohibitively large to download entirely (e.g. thousands of documents).\n *\n * The result received from the server is presented, unaltered, without\n * considering any local state. That is, documents in the local cache are not\n * taken into consideration, neither are local modifications not yet\n * synchronized with the server. Previously-downloaded results, if any, are not\n * used: every request using this source necessarily involves a round trip to\n * the server.\n *\n * @param query The query whose result set to aggregate over.\n * @param aggregateSpec An `AggregateSpec` object that specifies the aggregates\n * to perform over the result set. The AggregateSpec specifies aliases for each\n * aggregate, which can be used to retrieve the aggregate result.\n * @example\n * ```typescript\n * const aggregateSnapshot = await getAggregateFromServer(query, {\n * countOfDocs: count(),\n * totalHours: sum('hours'),\n * averageScore: average('score')\n * });\n *\n * const countOfDocs: number = aggregateSnapshot.data().countOfDocs;\n * const totalHours: number = aggregateSnapshot.data().totalHours;\n * const averageScore: number | null = aggregateSnapshot.data().averageScore;\n * ```\n * @internal TODO (sum/avg) remove when public\n */ function Rf(t, e) {\n const n = uh(t.firestore, vh), s = bh(n), i = function(t, e) {\n const n = [];\n for (const s in t) Object.prototype.hasOwnProperty.call(t, s) && n.push(e(t[s], s, t));\n return n;\n }(e, ((t, e) => new ni(e, t._aggregateType, t._internalFieldPath)));\n // Run the aggregation and convert the results\n return function(t, e, n) {\n const s = new K;\n return t.asyncQueue.enqueueAndForget((async () => {\n // TODO (sum/avg) should we update this to use the event manager?\n // Implement and call executeAggregateQueryViaSnapshotListener, similar\n // to the implementation in firestoreClientGetDocumentsViaSnapshotListener\n // above\n try {\n // TODO(b/277628384): check `canUseNetwork()` and handle multi-tab.\n const i = await Ua(t);\n s.resolve(Gu(i, e, n));\n } catch (t) {\n s.reject(t);\n }\n })), s.promise;\n }(s, t._query, i).then((e => \n /**\n * Converts the core aggregration result to an `AggregateQuerySnapshot`\n * that can be returned to the consumer.\n * @param query\n * @param aggregateResult Core aggregation result\n * @internal\n */\n function(t, e, n) {\n const s = new hf(t);\n return new qh(e, s, n);\n }\n /**\n * @license\n * Copyright 2023 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */ (n, t, e)));\n}\n\nclass Pf {\n constructor(t) {\n this.kind = \"memory\", this._onlineComponentProvider = new Pa, (null == t ? void 0 : t.garbageCollector) ? this._offlineComponentProvider = t.garbageCollector._offlineComponentProvider : this._offlineComponentProvider = new Ea;\n }\n toJSON() {\n return {\n kind: this.kind\n };\n }\n}\n\nclass bf {\n constructor(t) {\n let e;\n this.kind = \"persistent\", (null == t ? void 0 : t.tabManager) ? (t.tabManager._initialize(t), \n e = t.tabManager) : (e = $f(void 0), e._initialize(t)), this._onlineComponentProvider = e._onlineComponentProvider, \n this._offlineComponentProvider = e._offlineComponentProvider;\n }\n toJSON() {\n return {\n kind: this.kind\n };\n }\n}\n\nclass Vf {\n constructor() {\n this.kind = \"memoryEager\", this._offlineComponentProvider = new Ea;\n }\n toJSON() {\n return {\n kind: this.kind\n };\n }\n}\n\nclass Sf {\n constructor(t) {\n this.kind = \"memoryLru\", this._offlineComponentProvider = new Aa(t);\n }\n toJSON() {\n return {\n kind: this.kind\n };\n }\n}\n\n/**\n * Creates an instance of `MemoryEagerGarbageCollector`. This is also the\n * default garbage collector unless it is explicitly specified otherwise.\n */ function Df() {\n return new Vf;\n}\n\n/**\n * Creates an instance of `MemoryLruGarbageCollector`.\n *\n * A target size can be specified as part of the setting parameter. The\n * collector will start deleting documents once the cache size exceeds\n * the given size. The default cache size is 40MB (40 * 1024 * 1024 bytes).\n */ function Cf(t) {\n return new Sf(null == t ? void 0 : t.cacheSizeBytes);\n}\n\n/**\n * Creates an instance of `MemoryLocalCache`. The instance can be set to\n * `FirestoreSettings.cache` to tell the SDK which cache layer to use.\n */ function xf(t) {\n return new Pf(t);\n}\n\n/**\n * Creates an instance of `PersistentLocalCache`. The instance can be set to\n * `FirestoreSettings.cache` to tell the SDK which cache layer to use.\n *\n * Persistent cache cannot be used in a Node.js environment.\n */ function Nf(t) {\n return new bf(t);\n}\n\nclass kf {\n constructor(t) {\n this.forceOwnership = t, this.kind = \"persistentSingleTab\";\n }\n toJSON() {\n return {\n kind: this.kind\n };\n }\n /**\n * @internal\n */ _initialize(t) {\n this._onlineComponentProvider = new Pa, this._offlineComponentProvider = new va(this._onlineComponentProvider, null == t ? void 0 : t.cacheSizeBytes, this.forceOwnership);\n }\n}\n\nclass Mf {\n constructor() {\n this.kind = \"PersistentMultipleTab\";\n }\n toJSON() {\n return {\n kind: this.kind\n };\n }\n /**\n * @internal\n */ _initialize(t) {\n this._onlineComponentProvider = new Pa, this._offlineComponentProvider = new Ra(this._onlineComponentProvider, null == t ? void 0 : t.cacheSizeBytes);\n }\n}\n\n/**\n * Creates an instance of `PersistentSingleTabManager`.\n *\n * @param settings Configures the created tab manager.\n */ function $f(t) {\n return new kf(null == t ? void 0 : t.forceOwnership);\n}\n\n/**\n * Creates an instance of `PersistentMultipleTabManager`.\n */ function Of() {\n return new Mf;\n}\n\n/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */ const Ff = {\n maxAttempts: 5\n};\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A write batch, used to perform multiple writes as a single atomic unit.\n *\n * A `WriteBatch` object can be acquired by calling {@link writeBatch}. It\n * provides methods for adding writes to the write batch. None of the writes\n * will be committed (or visible locally) until {@link WriteBatch.commit} is\n * called.\n */\nclass Bf {\n /** @hideconstructor */\n constructor(t, e) {\n this._firestore = t, this._commitHandler = e, this._mutations = [], this._committed = !1, \n this._dataReader = Zh(t);\n }\n set(t, e, n) {\n this._verifyNotCommitted();\n const s = Lf(t, this._firestore), i = Hl(s.converter, e, n), r = tl(this._dataReader, \"WriteBatch.set\", s._key, i, null !== s.converter, n);\n return this._mutations.push(r.toMutation(s._key, Fs.none())), this;\n }\n update(t, e, n, ...s) {\n this._verifyNotCommitted();\n const i = Lf(t, this._firestore);\n // For Compat types, we have to \"extract\" the underlying types before\n // performing validation.\n let r;\n return r = \"string\" == typeof (e = getModularInstance(e)) || e instanceof Kh ? cl(this._dataReader, \"WriteBatch.update\", i._key, e, n, s) : ul(this._dataReader, \"WriteBatch.update\", i._key, e), \n this._mutations.push(r.toMutation(i._key, Fs.exists(!0))), this;\n }\n /**\n * Deletes the document referred to by the provided {@link DocumentReference}.\n *\n * @param documentRef - A reference to the document to be deleted.\n * @returns This `WriteBatch` instance. Used for chaining method calls.\n */ delete(t) {\n this._verifyNotCommitted();\n const e = Lf(t, this._firestore);\n return this._mutations = this._mutations.concat(new Ys(e._key, Fs.none())), this;\n }\n /**\n * Commits all of the writes in this write batch as a single atomic unit.\n *\n * The result of these writes will only be reflected in document reads that\n * occur after the returned promise resolves. If the client is offline, the\n * write fails. If you would like to see local modifications or buffer writes\n * until the client is online, use the full Firestore SDK.\n *\n * @returns A `Promise` resolved once all of the writes in the batch have been\n * successfully written to the backend as an atomic unit (note that it won't\n * resolve while you're offline).\n */ commit() {\n return this._verifyNotCommitted(), this._committed = !0, this._mutations.length > 0 ? this._commitHandler(this._mutations) : Promise.resolve();\n }\n _verifyNotCommitted() {\n if (this._committed) throw new U(q.FAILED_PRECONDITION, \"A write batch can no longer be used after commit() has been called.\");\n }\n}\n\nfunction Lf(t, e) {\n if ((t = getModularInstance(t)).firestore !== e) throw new U(q.INVALID_ARGUMENT, \"Provided document reference is from a different Firestore instance.\");\n return t;\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// TODO(mrschmidt) Consider using `BaseTransaction` as the base class in the\n// legacy SDK.\n/**\n * A reference to a transaction.\n *\n * The `Transaction` object passed to a transaction's `updateFunction` provides\n * the methods to read and write data within the transaction context. See\n * {@link runTransaction}.\n */\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * A reference to a transaction.\n *\n * The `Transaction` object passed to a transaction's `updateFunction` provides\n * the methods to read and write data within the transaction context. See\n * {@link runTransaction}.\n */\nclass qf extends class {\n /** @hideconstructor */\n constructor(t, e) {\n this._firestore = t, this._transaction = e, this._dataReader = Zh(t);\n }\n /**\n * Reads the document referenced by the provided {@link DocumentReference}.\n *\n * @param documentRef - A reference to the document to be read.\n * @returns A `DocumentSnapshot` with the read data.\n */ get(t) {\n const e = Lf(t, this._firestore), n = new Jl(this._firestore);\n return this._transaction.lookup([ e._key ]).then((t => {\n if (!t || 1 !== t.length) return O();\n const s = t[0];\n if (s.isFoundDocument()) return new pl(this._firestore, n, s.key, s, e.converter);\n if (s.isNoDocument()) return new pl(this._firestore, n, e._key, null, e.converter);\n throw O();\n }));\n }\n set(t, e, n) {\n const s = Lf(t, this._firestore), i = Hl(s.converter, e, n), r = tl(this._dataReader, \"Transaction.set\", s._key, i, null !== s.converter, n);\n return this._transaction.set(s._key, r), this;\n }\n update(t, e, n, ...s) {\n const i = Lf(t, this._firestore);\n // For Compat types, we have to \"extract\" the underlying types before\n // performing validation.\n let r;\n return r = \"string\" == typeof (e = getModularInstance(e)) || e instanceof Kh ? cl(this._dataReader, \"Transaction.update\", i._key, e, n, s) : ul(this._dataReader, \"Transaction.update\", i._key, e), \n this._transaction.update(i._key, r), this;\n }\n /**\n * Deletes the document referred to by the provided {@link DocumentReference}.\n *\n * @param documentRef - A reference to the document to be deleted.\n * @returns This `Transaction` instance. Used for chaining method calls.\n */ delete(t) {\n const e = Lf(t, this._firestore);\n return this._transaction.delete(e._key), this;\n }\n} {\n // This class implements the same logic as the Transaction API in the Lite SDK\n // but is subclassed in order to return its own DocumentSnapshot types.\n /** @hideconstructor */\n constructor(t, e) {\n super(t, e), this._firestore = t;\n }\n /**\n * Reads the document referenced by the provided {@link DocumentReference}.\n *\n * @param documentRef - A reference to the document to be read.\n * @returns A `DocumentSnapshot` with the read data.\n */ get(t) {\n const e = Lf(t, this._firestore), n = new hf(this._firestore);\n return super.get(t).then((t => new sf(this._firestore, n, e._key, t._document, new nf(\n /* hasPendingWrites= */ !1, \n /* fromCache= */ !1), e.converter)));\n }\n}\n\n/**\n * Executes the given `updateFunction` and then attempts to commit the changes\n * applied within the transaction. If any document read within the transaction\n * has changed, Cloud Firestore retries the `updateFunction`. If it fails to\n * commit after 5 attempts, the transaction fails.\n *\n * The maximum number of writes allowed in a single transaction is 500.\n *\n * @param firestore - A reference to the Firestore database to run this\n * transaction against.\n * @param updateFunction - The function to execute within the transaction\n * context.\n * @param options - An options object to configure maximum number of attempts to\n * commit.\n * @returns If the transaction completed successfully or was explicitly aborted\n * (the `updateFunction` returned a failed promise), the promise returned by the\n * `updateFunction `is returned here. Otherwise, if the transaction failed, a\n * rejected promise with the corresponding failure error is returned.\n */ function Uf(t, e, n) {\n t = uh(t, vh);\n const s = Object.assign(Object.assign({}, Ff), n);\n !function(t) {\n if (t.maxAttempts < 1) throw new U(q.INVALID_ARGUMENT, \"Max attempts must be at least 1\");\n }(s);\n return function(t, e, n) {\n const s = new K;\n return t.asyncQueue.enqueueAndForget((async () => {\n const i = await Ua(t);\n new Ca(t.asyncQueue, i, n, e, s).run();\n })), s.promise;\n }(bh(t), (n => e(new qf(t, n))), s);\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Returns a sentinel for use with {@link @firebase/firestore/lite#(updateDoc:1)} or\n * {@link @firebase/firestore/lite#(setDoc:1)} with `{merge: true}` to mark a field for deletion.\n */ function Kf() {\n return new el(\"deleteField\");\n}\n\n/**\n * Returns a sentinel used with {@link @firebase/firestore/lite#(setDoc:1)} or {@link @firebase/firestore/lite#(updateDoc:1)} to\n * include a server-generated timestamp in the written data.\n */ function Gf() {\n return new sl(\"serverTimestamp\");\n}\n\n/**\n * Returns a special value that can be used with {@link @firebase/firestore/lite#(setDoc:1)} or {@link\n * @firebase/firestore/lite#(updateDoc:1)} that tells the server to union the given elements with any array\n * value that already exists on the server. Each specified element that doesn't\n * already exist in the array will be added to the end. If the field being\n * modified is not already an array it will be overwritten with an array\n * containing exactly the specified elements.\n *\n * @param elements - The elements to union into the array.\n * @returns The `FieldValue` sentinel for use in a call to `setDoc()` or\n * `updateDoc()`.\n */ function Qf(...t) {\n // NOTE: We don't actually parse the data until it's used in set() or\n // update() since we'd need the Firestore instance to do this.\n return new il(\"arrayUnion\", t);\n}\n\n/**\n * Returns a special value that can be used with {@link (setDoc:1)} or {@link\n * updateDoc:1} that tells the server to remove the given elements from any\n * array value that already exists on the server. All instances of each element\n * specified will be removed from the array. If the field being modified is not\n * already an array it will be overwritten with an empty array.\n *\n * @param elements - The elements to remove from the array.\n * @returns The `FieldValue` sentinel for use in a call to `setDoc()` or\n * `updateDoc()`\n */ function jf(...t) {\n // NOTE: We don't actually parse the data until it's used in set() or\n // update() since we'd need the Firestore instance to do this.\n return new rl(\"arrayRemove\", t);\n}\n\n/**\n * Returns a special value that can be used with {@link @firebase/firestore/lite#(setDoc:1)} or {@link\n * @firebase/firestore/lite#(updateDoc:1)} that tells the server to increment the field's current value by\n * the given value.\n *\n * If either the operand or the current field value uses floating point\n * precision, all arithmetic follows IEEE 754 semantics. If both values are\n * integers, values outside of JavaScript's safe number range\n * (`Number.MIN_SAFE_INTEGER` to `Number.MAX_SAFE_INTEGER`) are also subject to\n * precision loss. Furthermore, once processed by the Firestore backend, all\n * integer operations are capped between -2^63 and 2^63-1.\n *\n * If the current field value is not of type `number`, or if the field does not\n * yet exist, the transformation sets the field to the given value.\n *\n * @param n - The value to increment by.\n * @returns The `FieldValue` sentinel for use in a call to `setDoc()` or\n * `updateDoc()`\n */ function zf(t) {\n return new ol(\"increment\", t);\n}\n\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Creates a write batch, used for performing multiple writes as a single\n * atomic operation. The maximum number of writes allowed in a single {@link WriteBatch}\n * is 500.\n *\n * Unlike transactions, write batches are persisted offline and therefore are\n * preferable when you don't need to condition your writes on read data.\n *\n * @returns A {@link WriteBatch} that can be used to atomically execute multiple\n * writes.\n */ function Wf(t) {\n return bh(t = uh(t, vh)), new Bf(t, (e => Ef(t, e)));\n}\n\n/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */ function Hf(t, e) {\n var n;\n const s = bh(t = uh(t, vh));\n if (!s._uninitializedComponentsProvider || \"memory\" === (null === (n = s._uninitializedComponentsProvider) || void 0 === n ? void 0 : n._offlineKind)) \n // PORTING NOTE: We don't return an error if the user has not enabled\n // persistence since `enableIndexeddbPersistence()` can fail on the Web.\n return M(\"Cannot enable indexes when persistence is disabled\"), Promise.resolve();\n const i = function(t) {\n const e = \"string\" == typeof t ? function(t) {\n try {\n return JSON.parse(t);\n } catch (t) {\n throw new U(q.INVALID_ARGUMENT, \"Failed to parse JSON: \" + (null == t ? void 0 : t.message));\n }\n }(t) : t, n = [];\n if (Array.isArray(e.indexes)) for (const t of e.indexes) {\n const e = Jf(t, \"collectionGroup\"), s = [];\n if (Array.isArray(t.fields)) for (const e of t.fields) {\n const t = ml(\"setIndexConfiguration\", Jf(e, \"fieldPath\"));\n \"CONTAINS\" === e.arrayConfig ? s.push(new _t(t, 2 /* IndexKind.CONTAINS */)) : \"ASCENDING\" === e.order ? s.push(new _t(t, 0 /* IndexKind.ASCENDING */)) : \"DESCENDING\" === e.order && s.push(new _t(t, 1 /* IndexKind.DESCENDING */));\n }\n n.push(new lt(lt.UNKNOWN_ID, e, s, gt.empty()));\n }\n return n;\n }(e);\n return Za(s, i);\n}\n\nfunction Jf(t, e) {\n if (\"string\" != typeof t[e]) throw new U(q.INVALID_ARGUMENT, \"Missing string value for: \" + e);\n return t[e];\n}\n\n/**\n * Cloud Firestore\n *\n * @packageDocumentation\n */ !function(t, e = !0) {\n !function(t) {\n S = t;\n }(SDK_VERSION), _registerComponent(new Component(\"firestore\", ((t, {instanceIdentifier: n, options: s}) => {\n const i = t.getProvider(\"app\").getImmediate(), r = new vh(new z(t.getProvider(\"auth-internal\")), new Y(t.getProvider(\"app-check-internal\")), function(t, e) {\n if (!Object.prototype.hasOwnProperty.apply(t.options, [ \"projectId\" ])) throw new U(q.INVALID_ARGUMENT, '\"projectId\" not provided in firebase.initializeApp.');\n return new Oe(t.options.projectId, e);\n }(i, n), i);\n return s = Object.assign({\n useFetchStreams: e\n }, s), r._setSettings(s), r;\n }), \"PUBLIC\").setMultipleInstances(!0)), registerVersion(b, \"3.13.0\", t), \n // BUILD_TARGET will be replaced by values like esm5, esm2017, cjs5, etc during the compilation\n registerVersion(b, \"3.13.0\", \"esm2017\");\n}();\n\nexport { Wl as AbstractUserDataWriter, Lh as AggregateField, qh as AggregateQuerySnapshot, Uh as Bytes, Ah as CACHE_SIZE_UNLIMITED, wh as CollectionReference, fh as DocumentReference, sf as DocumentSnapshot, Kh as FieldPath, Qh as FieldValue, vh as Firestore, U as FirestoreError, jh as GeoPoint, Eh as LoadBundleTask, dh as Query, Vl as QueryCompositeFilterConstraint, vl as QueryConstraint, rf as QueryDocumentSnapshot, Bl as QueryEndAtConstraint, Pl as QueryFieldFilterConstraint, Nl as QueryLimitConstraint, Cl as QueryOrderByConstraint, of as QuerySnapshot, $l as QueryStartAtConstraint, nf as SnapshotMetadata, it as Timestamp, qf as Transaction, Bf as WriteBatch, Oe as _DatabaseId, ht as _DocumentKey, X as _EmptyAppCheckTokenProvider, Q as _EmptyAuthCredentialsProvider, at as _FieldPath, ci as _TestingHooks, uh as _cast, B as _debugAssert, be as _isBase64Available, M as _logWarn, sh as _validateIsNotUsedTogether, pf as addDoc, tf as aggregateFieldEqual, ef as aggregateQuerySnapshotEqual, Dl as and, jf as arrayRemove, Qf as arrayUnion, Xl as average, xh as clearIndexedDbPersistence, _h as collection, mh as collectionGroup, lh as connectFirestoreEmulator, Zl as count, yf as deleteDoc, Kf as deleteField, Mh as disableNetwork, gh as doc, Gh as documentId, Sh as enableIndexedDbPersistence, Dh as enableMultiTabIndexedDbPersistence, kh as enableNetwork, ql as endAt, Ll as endBefore, bh as ensureFirestoreConfigured, Ef as executeWrite, Rf as getAggregateFromServer, vf as getCountFromServer, af as getDoc, lf as getDocFromCache, ff as getDocFromServer, df as getDocs, wf as getDocsFromCache, _f as getDocsFromServer, Ph as getFirestore, zf as increment, Rh as initializeFirestore, kl as limit, Ml as limitToLast, Oh as loadBundle, Df as memoryEagerGarbageCollector, xf as memoryLocalCache, Cf as memoryLruGarbageCollector, Fh as namedQuery, If as onSnapshot, Tf as onSnapshotsInSync, Sl as or, xl as orderBy, Nf as persistentLocalCache, Of as persistentMultipleTabManager, $f as persistentSingleTabManager, Rl as query, ph as queryEqual, yh as refEqual, Uf as runTransaction, Gf as serverTimestamp, mf as setDoc, Hf as setIndexConfiguration, x as setLogLevel, cf as snapshotEqual, Fl as startAfter, Ol as startAt, Yl as sum, $h as terminate, gf as updateDoc, Nh as waitForPendingWrites, bl as where, Wf as writeBatch };\n","import firebase from '@firebase/app-compat';\nimport { FirestoreError, Bytes, _isBase64Available, enableIndexedDbPersistence, enableMultiTabIndexedDbPersistence, clearIndexedDbPersistence, _DatabaseId, _logWarn, connectFirestoreEmulator, enableNetwork, disableNetwork, _validateIsNotUsedTogether, waitForPendingWrites, onSnapshotsInSync, collection, doc, collectionGroup, runTransaction, ensureFirestoreConfigured, WriteBatch as WriteBatch$1, executeWrite, loadBundle, namedQuery, DocumentSnapshot as DocumentSnapshot$1, DocumentReference as DocumentReference$1, _DocumentKey, refEqual, setDoc, updateDoc, deleteDoc, onSnapshot, getDocFromCache, getDocFromServer, getDoc, snapshotEqual, query, where, orderBy, limit, limitToLast, startAt, startAfter, endBefore, endAt, queryEqual, getDocsFromCache, getDocsFromServer, getDocs, QuerySnapshot as QuerySnapshot$1, addDoc, _cast, AbstractUserDataWriter, setLogLevel as setLogLevel$1, QueryDocumentSnapshot as QueryDocumentSnapshot$1, _debugAssert, FieldPath as FieldPath$1, _FieldPath, serverTimestamp, deleteField, arrayUnion, arrayRemove, increment, GeoPoint, Timestamp, CACHE_SIZE_UNLIMITED } from '@firebase/firestore';\nimport { getModularInstance } from '@firebase/util';\nimport { Component } from '@firebase/component';\n\nconst name = \"@firebase/firestore-compat\";\nconst version = \"0.3.12\";\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction validateSetOptions(methodName, options) {\r\n if (options === undefined) {\r\n return {\r\n merge: false\r\n };\r\n }\r\n if (options.mergeFields !== undefined && options.merge !== undefined) {\r\n throw new FirestoreError('invalid-argument', `Invalid options passed to function ${methodName}(): You cannot ` +\r\n 'specify both \"merge\" and \"mergeFields\".');\r\n }\r\n return options;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/** Helper function to assert Uint8Array is available at runtime. */\r\nfunction assertUint8ArrayAvailable() {\r\n if (typeof Uint8Array === 'undefined') {\r\n throw new FirestoreError('unimplemented', 'Uint8Arrays are not available in this environment.');\r\n }\r\n}\r\n/** Helper function to assert Base64 functions are available at runtime. */\r\nfunction assertBase64Available() {\r\n if (!_isBase64Available()) {\r\n throw new FirestoreError('unimplemented', 'Blobs are unavailable in Firestore in this environment.');\r\n }\r\n}\r\n/** Immutable class holding a blob (binary data) */\r\nclass Blob {\r\n constructor(_delegate) {\r\n this._delegate = _delegate;\r\n }\r\n static fromBase64String(base64) {\r\n assertBase64Available();\r\n return new Blob(Bytes.fromBase64String(base64));\r\n }\r\n static fromUint8Array(array) {\r\n assertUint8ArrayAvailable();\r\n return new Blob(Bytes.fromUint8Array(array));\r\n }\r\n toBase64() {\r\n assertBase64Available();\r\n return this._delegate.toBase64();\r\n }\r\n toUint8Array() {\r\n assertUint8ArrayAvailable();\r\n return this._delegate.toUint8Array();\r\n }\r\n isEqual(other) {\r\n return this._delegate.isEqual(other._delegate);\r\n }\r\n toString() {\r\n return 'Blob(base64: ' + this.toBase64() + ')';\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction isPartialObserver(obj) {\r\n return implementsAnyMethods(obj, ['next', 'error', 'complete']);\r\n}\r\n/**\r\n * Returns true if obj is an object and contains at least one of the specified\r\n * methods.\r\n */\r\nfunction implementsAnyMethods(obj, methods) {\r\n if (typeof obj !== 'object' || obj === null) {\r\n return false;\r\n }\r\n const object = obj;\r\n for (const method of methods) {\r\n if (method in object && typeof object[method] === 'function') {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * The persistence provider included with the full Firestore SDK.\r\n */\r\nclass IndexedDbPersistenceProvider {\r\n enableIndexedDbPersistence(firestore, forceOwnership) {\r\n return enableIndexedDbPersistence(firestore._delegate, { forceOwnership });\r\n }\r\n enableMultiTabIndexedDbPersistence(firestore) {\r\n return enableMultiTabIndexedDbPersistence(firestore._delegate);\r\n }\r\n clearIndexedDbPersistence(firestore) {\r\n return clearIndexedDbPersistence(firestore._delegate);\r\n }\r\n}\r\n/**\r\n * Compat class for Firestore. Exposes Firestore Legacy API, but delegates\r\n * to the functional API of firestore-exp.\r\n */\r\nclass Firestore {\r\n constructor(databaseIdOrApp, _delegate, _persistenceProvider) {\r\n this._delegate = _delegate;\r\n this._persistenceProvider = _persistenceProvider;\r\n this.INTERNAL = {\r\n delete: () => this.terminate()\r\n };\r\n if (!(databaseIdOrApp instanceof _DatabaseId)) {\r\n this._appCompat = databaseIdOrApp;\r\n }\r\n }\r\n get _databaseId() {\r\n return this._delegate._databaseId;\r\n }\r\n settings(settingsLiteral) {\r\n const currentSettings = this._delegate._getSettings();\r\n if (!settingsLiteral.merge &&\r\n currentSettings.host !== settingsLiteral.host) {\r\n _logWarn('You are overriding the original host. If you did not intend ' +\r\n 'to override your settings, use {merge: true}.');\r\n }\r\n if (settingsLiteral.merge) {\r\n settingsLiteral = Object.assign(Object.assign({}, currentSettings), settingsLiteral);\r\n // Remove the property from the settings once the merge is completed\r\n delete settingsLiteral.merge;\r\n }\r\n this._delegate._setSettings(settingsLiteral);\r\n }\r\n useEmulator(host, port, options = {}) {\r\n connectFirestoreEmulator(this._delegate, host, port, options);\r\n }\r\n enableNetwork() {\r\n return enableNetwork(this._delegate);\r\n }\r\n disableNetwork() {\r\n return disableNetwork(this._delegate);\r\n }\r\n enablePersistence(settings) {\r\n let synchronizeTabs = false;\r\n let experimentalForceOwningTab = false;\r\n if (settings) {\r\n synchronizeTabs = !!settings.synchronizeTabs;\r\n experimentalForceOwningTab = !!settings.experimentalForceOwningTab;\r\n _validateIsNotUsedTogether('synchronizeTabs', synchronizeTabs, 'experimentalForceOwningTab', experimentalForceOwningTab);\r\n }\r\n return synchronizeTabs\r\n ? this._persistenceProvider.enableMultiTabIndexedDbPersistence(this)\r\n : this._persistenceProvider.enableIndexedDbPersistence(this, experimentalForceOwningTab);\r\n }\r\n clearPersistence() {\r\n return this._persistenceProvider.clearIndexedDbPersistence(this);\r\n }\r\n terminate() {\r\n if (this._appCompat) {\r\n this._appCompat._removeServiceInstance('firestore-compat');\r\n this._appCompat._removeServiceInstance('firestore');\r\n }\r\n return this._delegate._delete();\r\n }\r\n waitForPendingWrites() {\r\n return waitForPendingWrites(this._delegate);\r\n }\r\n onSnapshotsInSync(arg) {\r\n return onSnapshotsInSync(this._delegate, arg);\r\n }\r\n get app() {\r\n if (!this._appCompat) {\r\n throw new FirestoreError('failed-precondition', \"Firestore was not initialized using the Firebase SDK. 'app' is \" +\r\n 'not available');\r\n }\r\n return this._appCompat;\r\n }\r\n collection(pathString) {\r\n try {\r\n return new CollectionReference(this, collection(this._delegate, pathString));\r\n }\r\n catch (e) {\r\n throw replaceFunctionName(e, 'collection()', 'Firestore.collection()');\r\n }\r\n }\r\n doc(pathString) {\r\n try {\r\n return new DocumentReference(this, doc(this._delegate, pathString));\r\n }\r\n catch (e) {\r\n throw replaceFunctionName(e, 'doc()', 'Firestore.doc()');\r\n }\r\n }\r\n collectionGroup(collectionId) {\r\n try {\r\n return new Query(this, collectionGroup(this._delegate, collectionId));\r\n }\r\n catch (e) {\r\n throw replaceFunctionName(e, 'collectionGroup()', 'Firestore.collectionGroup()');\r\n }\r\n }\r\n runTransaction(updateFunction) {\r\n return runTransaction(this._delegate, transaction => updateFunction(new Transaction(this, transaction)));\r\n }\r\n batch() {\r\n ensureFirestoreConfigured(this._delegate);\r\n return new WriteBatch(new WriteBatch$1(this._delegate, mutations => executeWrite(this._delegate, mutations)));\r\n }\r\n loadBundle(bundleData) {\r\n return loadBundle(this._delegate, bundleData);\r\n }\r\n namedQuery(name) {\r\n return namedQuery(this._delegate, name).then(expQuery => {\r\n if (!expQuery) {\r\n return null;\r\n }\r\n return new Query(this, \r\n // We can pass `expQuery` here directly since named queries don't have a UserDataConverter.\r\n // Otherwise, we would have to create a new ExpQuery and pass the old UserDataConverter.\r\n expQuery);\r\n });\r\n }\r\n}\r\nclass UserDataWriter extends AbstractUserDataWriter {\r\n constructor(firestore) {\r\n super();\r\n this.firestore = firestore;\r\n }\r\n convertBytes(bytes) {\r\n return new Blob(new Bytes(bytes));\r\n }\r\n convertReference(name) {\r\n const key = this.convertDocumentKey(name, this.firestore._databaseId);\r\n return DocumentReference.forKey(key, this.firestore, /* converter= */ null);\r\n }\r\n}\r\nfunction setLogLevel(level) {\r\n setLogLevel$1(level);\r\n}\r\n/**\r\n * A reference to a transaction.\r\n */\r\nclass Transaction {\r\n constructor(_firestore, _delegate) {\r\n this._firestore = _firestore;\r\n this._delegate = _delegate;\r\n this._userDataWriter = new UserDataWriter(_firestore);\r\n }\r\n get(documentRef) {\r\n const ref = castReference(documentRef);\r\n return this._delegate\r\n .get(ref)\r\n .then(result => new DocumentSnapshot(this._firestore, new DocumentSnapshot$1(this._firestore._delegate, this._userDataWriter, result._key, result._document, result.metadata, ref.converter)));\r\n }\r\n set(documentRef, data, options) {\r\n const ref = castReference(documentRef);\r\n if (options) {\r\n validateSetOptions('Transaction.set', options);\r\n this._delegate.set(ref, data, options);\r\n }\r\n else {\r\n this._delegate.set(ref, data);\r\n }\r\n return this;\r\n }\r\n update(documentRef, dataOrField, value, ...moreFieldsAndValues) {\r\n const ref = castReference(documentRef);\r\n if (arguments.length === 2) {\r\n this._delegate.update(ref, dataOrField);\r\n }\r\n else {\r\n this._delegate.update(ref, dataOrField, value, ...moreFieldsAndValues);\r\n }\r\n return this;\r\n }\r\n delete(documentRef) {\r\n const ref = castReference(documentRef);\r\n this._delegate.delete(ref);\r\n return this;\r\n }\r\n}\r\nclass WriteBatch {\r\n constructor(_delegate) {\r\n this._delegate = _delegate;\r\n }\r\n set(documentRef, data, options) {\r\n const ref = castReference(documentRef);\r\n if (options) {\r\n validateSetOptions('WriteBatch.set', options);\r\n this._delegate.set(ref, data, options);\r\n }\r\n else {\r\n this._delegate.set(ref, data);\r\n }\r\n return this;\r\n }\r\n update(documentRef, dataOrField, value, ...moreFieldsAndValues) {\r\n const ref = castReference(documentRef);\r\n if (arguments.length === 2) {\r\n this._delegate.update(ref, dataOrField);\r\n }\r\n else {\r\n this._delegate.update(ref, dataOrField, value, ...moreFieldsAndValues);\r\n }\r\n return this;\r\n }\r\n delete(documentRef) {\r\n const ref = castReference(documentRef);\r\n this._delegate.delete(ref);\r\n return this;\r\n }\r\n commit() {\r\n return this._delegate.commit();\r\n }\r\n}\r\n/**\r\n * Wraps a `PublicFirestoreDataConverter` translating the types from the\r\n * experimental SDK into corresponding types from the Classic SDK before passing\r\n * them to the wrapped converter.\r\n */\r\nclass FirestoreDataConverter {\r\n constructor(_firestore, _userDataWriter, _delegate) {\r\n this._firestore = _firestore;\r\n this._userDataWriter = _userDataWriter;\r\n this._delegate = _delegate;\r\n }\r\n fromFirestore(snapshot, options) {\r\n const expSnapshot = new QueryDocumentSnapshot$1(this._firestore._delegate, this._userDataWriter, snapshot._key, snapshot._document, snapshot.metadata, \r\n /* converter= */ null);\r\n return this._delegate.fromFirestore(new QueryDocumentSnapshot(this._firestore, expSnapshot), options !== null && options !== void 0 ? options : {});\r\n }\r\n toFirestore(modelObject, options) {\r\n if (!options) {\r\n return this._delegate.toFirestore(modelObject);\r\n }\r\n else {\r\n return this._delegate.toFirestore(modelObject, options);\r\n }\r\n }\r\n // Use the same instance of `FirestoreDataConverter` for the given instances\r\n // of `Firestore` and `PublicFirestoreDataConverter` so that isEqual() will\r\n // compare equal for two objects created with the same converter instance.\r\n static getInstance(firestore, converter) {\r\n const converterMapByFirestore = FirestoreDataConverter.INSTANCES;\r\n let untypedConverterByConverter = converterMapByFirestore.get(firestore);\r\n if (!untypedConverterByConverter) {\r\n untypedConverterByConverter = new WeakMap();\r\n converterMapByFirestore.set(firestore, untypedConverterByConverter);\r\n }\r\n let instance = untypedConverterByConverter.get(converter);\r\n if (!instance) {\r\n instance = new FirestoreDataConverter(firestore, new UserDataWriter(firestore), converter);\r\n untypedConverterByConverter.set(converter, instance);\r\n }\r\n return instance;\r\n }\r\n}\r\nFirestoreDataConverter.INSTANCES = new WeakMap();\r\n/**\r\n * A reference to a particular document in a collection in the database.\r\n */\r\nclass DocumentReference {\r\n constructor(firestore, _delegate) {\r\n this.firestore = firestore;\r\n this._delegate = _delegate;\r\n this._userDataWriter = new UserDataWriter(firestore);\r\n }\r\n static forPath(path, firestore, converter) {\r\n if (path.length % 2 !== 0) {\r\n throw new FirestoreError('invalid-argument', 'Invalid document reference. Document ' +\r\n 'references must have an even number of segments, but ' +\r\n `${path.canonicalString()} has ${path.length}`);\r\n }\r\n return new DocumentReference(firestore, new DocumentReference$1(firestore._delegate, converter, new _DocumentKey(path)));\r\n }\r\n static forKey(key, firestore, converter) {\r\n return new DocumentReference(firestore, new DocumentReference$1(firestore._delegate, converter, key));\r\n }\r\n get id() {\r\n return this._delegate.id;\r\n }\r\n get parent() {\r\n return new CollectionReference(this.firestore, this._delegate.parent);\r\n }\r\n get path() {\r\n return this._delegate.path;\r\n }\r\n collection(pathString) {\r\n try {\r\n return new CollectionReference(this.firestore, collection(this._delegate, pathString));\r\n }\r\n catch (e) {\r\n throw replaceFunctionName(e, 'collection()', 'DocumentReference.collection()');\r\n }\r\n }\r\n isEqual(other) {\r\n other = getModularInstance(other);\r\n if (!(other instanceof DocumentReference$1)) {\r\n return false;\r\n }\r\n return refEqual(this._delegate, other);\r\n }\r\n set(value, options) {\r\n options = validateSetOptions('DocumentReference.set', options);\r\n try {\r\n if (options) {\r\n return setDoc(this._delegate, value, options);\r\n }\r\n else {\r\n return setDoc(this._delegate, value);\r\n }\r\n }\r\n catch (e) {\r\n throw replaceFunctionName(e, 'setDoc()', 'DocumentReference.set()');\r\n }\r\n }\r\n update(fieldOrUpdateData, value, ...moreFieldsAndValues) {\r\n try {\r\n if (arguments.length === 1) {\r\n return updateDoc(this._delegate, fieldOrUpdateData);\r\n }\r\n else {\r\n return updateDoc(this._delegate, fieldOrUpdateData, value, ...moreFieldsAndValues);\r\n }\r\n }\r\n catch (e) {\r\n throw replaceFunctionName(e, 'updateDoc()', 'DocumentReference.update()');\r\n }\r\n }\r\n delete() {\r\n return deleteDoc(this._delegate);\r\n }\r\n onSnapshot(...args) {\r\n const options = extractSnapshotOptions(args);\r\n const observer = wrapObserver(args, result => new DocumentSnapshot(this.firestore, new DocumentSnapshot$1(this.firestore._delegate, this._userDataWriter, result._key, result._document, result.metadata, this._delegate.converter)));\r\n return onSnapshot(this._delegate, options, observer);\r\n }\r\n get(options) {\r\n let snap;\r\n if ((options === null || options === void 0 ? void 0 : options.source) === 'cache') {\r\n snap = getDocFromCache(this._delegate);\r\n }\r\n else if ((options === null || options === void 0 ? void 0 : options.source) === 'server') {\r\n snap = getDocFromServer(this._delegate);\r\n }\r\n else {\r\n snap = getDoc(this._delegate);\r\n }\r\n return snap.then(result => new DocumentSnapshot(this.firestore, new DocumentSnapshot$1(this.firestore._delegate, this._userDataWriter, result._key, result._document, result.metadata, this._delegate.converter)));\r\n }\r\n withConverter(converter) {\r\n return new DocumentReference(this.firestore, converter\r\n ? this._delegate.withConverter(FirestoreDataConverter.getInstance(this.firestore, converter))\r\n : this._delegate.withConverter(null));\r\n }\r\n}\r\n/**\r\n * Replaces the function name in an error thrown by the firestore-exp API\r\n * with the function names used in the classic API.\r\n */\r\nfunction replaceFunctionName(e, original, updated) {\r\n e.message = e.message.replace(original, updated);\r\n return e;\r\n}\r\n/**\r\n * Iterates the list of arguments from an `onSnapshot` call and returns the\r\n * first argument that may be an `SnapshotListenOptions` object. Returns an\r\n * empty object if none is found.\r\n */\r\nfunction extractSnapshotOptions(args) {\r\n for (const arg of args) {\r\n if (typeof arg === 'object' && !isPartialObserver(arg)) {\r\n return arg;\r\n }\r\n }\r\n return {};\r\n}\r\n/**\r\n * Creates an observer that can be passed to the firestore-exp SDK. The\r\n * observer converts all observed values into the format expected by the classic\r\n * SDK.\r\n *\r\n * @param args - The list of arguments from an `onSnapshot` call.\r\n * @param wrapper - The function that converts the firestore-exp type into the\r\n * type used by this shim.\r\n */\r\nfunction wrapObserver(args, wrapper) {\r\n var _a, _b;\r\n let userObserver;\r\n if (isPartialObserver(args[0])) {\r\n userObserver = args[0];\r\n }\r\n else if (isPartialObserver(args[1])) {\r\n userObserver = args[1];\r\n }\r\n else if (typeof args[0] === 'function') {\r\n userObserver = {\r\n next: args[0],\r\n error: args[1],\r\n complete: args[2]\r\n };\r\n }\r\n else {\r\n userObserver = {\r\n next: args[1],\r\n error: args[2],\r\n complete: args[3]\r\n };\r\n }\r\n return {\r\n next: val => {\r\n if (userObserver.next) {\r\n userObserver.next(wrapper(val));\r\n }\r\n },\r\n error: (_a = userObserver.error) === null || _a === void 0 ? void 0 : _a.bind(userObserver),\r\n complete: (_b = userObserver.complete) === null || _b === void 0 ? void 0 : _b.bind(userObserver)\r\n };\r\n}\r\nclass DocumentSnapshot {\r\n constructor(_firestore, _delegate) {\r\n this._firestore = _firestore;\r\n this._delegate = _delegate;\r\n }\r\n get ref() {\r\n return new DocumentReference(this._firestore, this._delegate.ref);\r\n }\r\n get id() {\r\n return this._delegate.id;\r\n }\r\n get metadata() {\r\n return this._delegate.metadata;\r\n }\r\n get exists() {\r\n return this._delegate.exists();\r\n }\r\n data(options) {\r\n return this._delegate.data(options);\r\n }\r\n get(fieldPath, options\r\n // We are using `any` here to avoid an explicit cast by our users.\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n ) {\r\n return this._delegate.get(fieldPath, options);\r\n }\r\n isEqual(other) {\r\n return snapshotEqual(this._delegate, other._delegate);\r\n }\r\n}\r\nclass QueryDocumentSnapshot extends DocumentSnapshot {\r\n data(options) {\r\n const data = this._delegate.data(options);\r\n _debugAssert(data !== undefined, 'Document in a QueryDocumentSnapshot should exist');\r\n return data;\r\n }\r\n}\r\nclass Query {\r\n constructor(firestore, _delegate) {\r\n this.firestore = firestore;\r\n this._delegate = _delegate;\r\n this._userDataWriter = new UserDataWriter(firestore);\r\n }\r\n where(fieldPath, opStr, value) {\r\n try {\r\n // The \"as string\" cast is a little bit of a hack. `where` accepts the\r\n // FieldPath Compat type as input, but is not typed as such in order to\r\n // not expose this via our public typings file.\r\n return new Query(this.firestore, query(this._delegate, where(fieldPath, opStr, value)));\r\n }\r\n catch (e) {\r\n throw replaceFunctionName(e, /(orderBy|where)\\(\\)/, 'Query.$1()');\r\n }\r\n }\r\n orderBy(fieldPath, directionStr) {\r\n try {\r\n // The \"as string\" cast is a little bit of a hack. `orderBy` accepts the\r\n // FieldPath Compat type as input, but is not typed as such in order to\r\n // not expose this via our public typings file.\r\n return new Query(this.firestore, query(this._delegate, orderBy(fieldPath, directionStr)));\r\n }\r\n catch (e) {\r\n throw replaceFunctionName(e, /(orderBy|where)\\(\\)/, 'Query.$1()');\r\n }\r\n }\r\n limit(n) {\r\n try {\r\n return new Query(this.firestore, query(this._delegate, limit(n)));\r\n }\r\n catch (e) {\r\n throw replaceFunctionName(e, 'limit()', 'Query.limit()');\r\n }\r\n }\r\n limitToLast(n) {\r\n try {\r\n return new Query(this.firestore, query(this._delegate, limitToLast(n)));\r\n }\r\n catch (e) {\r\n throw replaceFunctionName(e, 'limitToLast()', 'Query.limitToLast()');\r\n }\r\n }\r\n startAt(...args) {\r\n try {\r\n return new Query(this.firestore, query(this._delegate, startAt(...args)));\r\n }\r\n catch (e) {\r\n throw replaceFunctionName(e, 'startAt()', 'Query.startAt()');\r\n }\r\n }\r\n startAfter(...args) {\r\n try {\r\n return new Query(this.firestore, query(this._delegate, startAfter(...args)));\r\n }\r\n catch (e) {\r\n throw replaceFunctionName(e, 'startAfter()', 'Query.startAfter()');\r\n }\r\n }\r\n endBefore(...args) {\r\n try {\r\n return new Query(this.firestore, query(this._delegate, endBefore(...args)));\r\n }\r\n catch (e) {\r\n throw replaceFunctionName(e, 'endBefore()', 'Query.endBefore()');\r\n }\r\n }\r\n endAt(...args) {\r\n try {\r\n return new Query(this.firestore, query(this._delegate, endAt(...args)));\r\n }\r\n catch (e) {\r\n throw replaceFunctionName(e, 'endAt()', 'Query.endAt()');\r\n }\r\n }\r\n isEqual(other) {\r\n return queryEqual(this._delegate, other._delegate);\r\n }\r\n get(options) {\r\n let query;\r\n if ((options === null || options === void 0 ? void 0 : options.source) === 'cache') {\r\n query = getDocsFromCache(this._delegate);\r\n }\r\n else if ((options === null || options === void 0 ? void 0 : options.source) === 'server') {\r\n query = getDocsFromServer(this._delegate);\r\n }\r\n else {\r\n query = getDocs(this._delegate);\r\n }\r\n return query.then(result => new QuerySnapshot(this.firestore, new QuerySnapshot$1(this.firestore._delegate, this._userDataWriter, this._delegate, result._snapshot)));\r\n }\r\n onSnapshot(...args) {\r\n const options = extractSnapshotOptions(args);\r\n const observer = wrapObserver(args, snap => new QuerySnapshot(this.firestore, new QuerySnapshot$1(this.firestore._delegate, this._userDataWriter, this._delegate, snap._snapshot)));\r\n return onSnapshot(this._delegate, options, observer);\r\n }\r\n withConverter(converter) {\r\n return new Query(this.firestore, converter\r\n ? this._delegate.withConverter(FirestoreDataConverter.getInstance(this.firestore, converter))\r\n : this._delegate.withConverter(null));\r\n }\r\n}\r\nclass DocumentChange {\r\n constructor(_firestore, _delegate) {\r\n this._firestore = _firestore;\r\n this._delegate = _delegate;\r\n }\r\n get type() {\r\n return this._delegate.type;\r\n }\r\n get doc() {\r\n return new QueryDocumentSnapshot(this._firestore, this._delegate.doc);\r\n }\r\n get oldIndex() {\r\n return this._delegate.oldIndex;\r\n }\r\n get newIndex() {\r\n return this._delegate.newIndex;\r\n }\r\n}\r\nclass QuerySnapshot {\r\n constructor(_firestore, _delegate) {\r\n this._firestore = _firestore;\r\n this._delegate = _delegate;\r\n }\r\n get query() {\r\n return new Query(this._firestore, this._delegate.query);\r\n }\r\n get metadata() {\r\n return this._delegate.metadata;\r\n }\r\n get size() {\r\n return this._delegate.size;\r\n }\r\n get empty() {\r\n return this._delegate.empty;\r\n }\r\n get docs() {\r\n return this._delegate.docs.map(doc => new QueryDocumentSnapshot(this._firestore, doc));\r\n }\r\n docChanges(options) {\r\n return this._delegate\r\n .docChanges(options)\r\n .map(docChange => new DocumentChange(this._firestore, docChange));\r\n }\r\n forEach(callback, thisArg) {\r\n this._delegate.forEach(snapshot => {\r\n callback.call(thisArg, new QueryDocumentSnapshot(this._firestore, snapshot));\r\n });\r\n }\r\n isEqual(other) {\r\n return snapshotEqual(this._delegate, other._delegate);\r\n }\r\n}\r\nclass CollectionReference extends Query {\r\n constructor(firestore, _delegate) {\r\n super(firestore, _delegate);\r\n this.firestore = firestore;\r\n this._delegate = _delegate;\r\n }\r\n get id() {\r\n return this._delegate.id;\r\n }\r\n get path() {\r\n return this._delegate.path;\r\n }\r\n get parent() {\r\n const docRef = this._delegate.parent;\r\n return docRef ? new DocumentReference(this.firestore, docRef) : null;\r\n }\r\n doc(documentPath) {\r\n try {\r\n if (documentPath === undefined) {\r\n // Call `doc` without `documentPath` if `documentPath` is `undefined`\r\n // as `doc` validates the number of arguments to prevent users from\r\n // accidentally passing `undefined`.\r\n return new DocumentReference(this.firestore, doc(this._delegate));\r\n }\r\n else {\r\n return new DocumentReference(this.firestore, doc(this._delegate, documentPath));\r\n }\r\n }\r\n catch (e) {\r\n throw replaceFunctionName(e, 'doc()', 'CollectionReference.doc()');\r\n }\r\n }\r\n add(data) {\r\n return addDoc(this._delegate, data).then(docRef => new DocumentReference(this.firestore, docRef));\r\n }\r\n isEqual(other) {\r\n return refEqual(this._delegate, other._delegate);\r\n }\r\n withConverter(converter) {\r\n return new CollectionReference(this.firestore, converter\r\n ? this._delegate.withConverter(FirestoreDataConverter.getInstance(this.firestore, converter))\r\n : this._delegate.withConverter(null));\r\n }\r\n}\r\nfunction castReference(documentRef) {\r\n return _cast(documentRef, DocumentReference$1);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// The objects that are a part of this API are exposed to third-parties as\r\n// compiled javascript so we want to flag our private members with a leading\r\n// underscore to discourage their use.\r\n/**\r\n * A `FieldPath` refers to a field in a document. The path may consist of a\r\n * single field name (referring to a top-level field in the document), or a list\r\n * of field names (referring to a nested field in the document).\r\n */\r\nclass FieldPath {\r\n /**\r\n * Creates a FieldPath from the provided field names. If more than one field\r\n * name is provided, the path will point to a nested field in a document.\r\n *\r\n * @param fieldNames - A list of field names.\r\n */\r\n constructor(...fieldNames) {\r\n this._delegate = new FieldPath$1(...fieldNames);\r\n }\r\n static documentId() {\r\n /**\r\n * Internal Note: The backend doesn't technically support querying by\r\n * document ID. Instead it queries by the entire document name (full path\r\n * included), but in the cases we currently support documentId(), the net\r\n * effect is the same.\r\n */\r\n return new FieldPath(_FieldPath.keyField().canonicalString());\r\n }\r\n isEqual(other) {\r\n other = getModularInstance(other);\r\n if (!(other instanceof FieldPath$1)) {\r\n return false;\r\n }\r\n return this._delegate._internalPath.isEqual(other._internalPath);\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass FieldValue {\r\n constructor(_delegate) {\r\n this._delegate = _delegate;\r\n }\r\n static serverTimestamp() {\r\n const delegate = serverTimestamp();\r\n delegate._methodName = 'FieldValue.serverTimestamp';\r\n return new FieldValue(delegate);\r\n }\r\n static delete() {\r\n const delegate = deleteField();\r\n delegate._methodName = 'FieldValue.delete';\r\n return new FieldValue(delegate);\r\n }\r\n static arrayUnion(...elements) {\r\n const delegate = arrayUnion(...elements);\r\n delegate._methodName = 'FieldValue.arrayUnion';\r\n return new FieldValue(delegate);\r\n }\r\n static arrayRemove(...elements) {\r\n const delegate = arrayRemove(...elements);\r\n delegate._methodName = 'FieldValue.arrayRemove';\r\n return new FieldValue(delegate);\r\n }\r\n static increment(n) {\r\n const delegate = increment(n);\r\n delegate._methodName = 'FieldValue.increment';\r\n return new FieldValue(delegate);\r\n }\r\n isEqual(other) {\r\n return this._delegate.isEqual(other._delegate);\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst firestoreNamespace = {\r\n Firestore,\r\n GeoPoint,\r\n Timestamp,\r\n Blob,\r\n Transaction,\r\n WriteBatch,\r\n DocumentReference,\r\n DocumentSnapshot,\r\n Query,\r\n QueryDocumentSnapshot,\r\n QuerySnapshot,\r\n CollectionReference,\r\n FieldPath,\r\n FieldValue,\r\n setLogLevel,\r\n CACHE_SIZE_UNLIMITED\r\n};\r\n/**\r\n * Configures Firestore as part of the Firebase SDK by calling registerComponent.\r\n *\r\n * @param firebase - The FirebaseNamespace to register Firestore with\r\n * @param firestoreFactory - A factory function that returns a new Firestore\r\n * instance.\r\n */\r\nfunction configureForFirebase(firebase, firestoreFactory) {\r\n firebase.INTERNAL.registerComponent(new Component('firestore-compat', container => {\r\n const app = container.getProvider('app-compat').getImmediate();\r\n const firestoreExp = container.getProvider('firestore').getImmediate();\r\n return firestoreFactory(app, firestoreExp);\r\n }, 'PUBLIC').setServiceProps(Object.assign({}, firestoreNamespace)));\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Registers the main Firestore build with the components framework.\r\n * Persistence can be enabled via `firebase.firestore().enablePersistence()`.\r\n */\r\nfunction registerFirestore(instance) {\r\n configureForFirebase(instance, (app, firestoreExp) => new Firestore(app, firestoreExp, new IndexedDbPersistenceProvider()));\r\n instance.registerVersion(name, version);\r\n}\r\nregisterFirestore(firebase);\n\nexport { registerFirestore };\n","import * as i0 from '@angular/core';\nimport { InjectionToken, PLATFORM_ID, Injectable, Inject, Optional, NgModule } from '@angular/core';\nimport { asyncScheduler, Observable, from, of } from 'rxjs';\nimport * as i1 from '@angular/fire';\nimport { keepUnstableUntilFirst, VERSION } from '@angular/fire';\nimport { startWith, pairwise, map, scan, distinctUntilChanged, filter } from 'rxjs/operators';\nimport { ɵfirebaseAppFactory, ɵcacheInstance, FIREBASE_OPTIONS, FIREBASE_APP_NAME } from '@angular/fire/compat';\nimport { isPlatformServer } from '@angular/common';\nimport 'firebase/compat/auth';\nimport 'firebase/compat/firestore';\nimport * as i2 from '@angular/fire/compat/auth';\nimport { ɵauthFactory, USE_EMULATOR as USE_EMULATOR$1, SETTINGS as SETTINGS$1, TENANT_ID, LANGUAGE_CODE, USE_DEVICE_LANGUAGE, PERSISTENCE } from '@angular/fire/compat/auth';\nimport * as i3 from '@angular/fire/app-check';\nimport firebase from 'firebase/compat/app';\n\nfunction _fromRef(ref, scheduler = asyncScheduler) {\n return new Observable(subscriber => {\n let unsubscribe;\n if (scheduler != null) {\n scheduler.schedule(() => {\n unsubscribe = ref.onSnapshot({ includeMetadataChanges: true }, subscriber);\n });\n }\n else {\n unsubscribe = ref.onSnapshot({ includeMetadataChanges: true }, subscriber);\n }\n return () => {\n if (unsubscribe != null) {\n unsubscribe();\n }\n };\n });\n}\nfunction fromRef(ref, scheduler) {\n return _fromRef(ref, scheduler);\n}\nfunction fromDocRef(ref, scheduler) {\n return fromRef(ref, scheduler)\n .pipe(startWith(undefined), pairwise(), map(([priorPayload, payload]) => {\n if (!payload.exists) {\n return { payload, type: 'removed' };\n }\n if (!(priorPayload === null || priorPayload === void 0 ? void 0 : priorPayload.exists)) {\n return { payload, type: 'added' };\n }\n return { payload, type: 'modified' };\n }));\n}\nfunction fromCollectionRef(ref, scheduler) {\n return fromRef(ref, scheduler).pipe(map(payload => ({ payload, type: 'query' })));\n}\n\n/**\n * Return a stream of document changes on a query. These results are not in sort order but in\n * order of occurence.\n */\nfunction docChanges(query, scheduler) {\n return fromCollectionRef(query, scheduler)\n .pipe(startWith(undefined), pairwise(), map(([priorAction, action]) => {\n const docChanges = action.payload.docChanges();\n const actions = docChanges.map(change => ({ type: change.type, payload: change }));\n // the metadata has changed from the prior emission\n if (priorAction && JSON.stringify(priorAction.payload.metadata) !== JSON.stringify(action.payload.metadata)) {\n // go through all the docs in payload and figure out which ones changed\n action.payload.docs.forEach((currentDoc, currentIndex) => {\n const docChange = docChanges.find(d => d.doc.ref.isEqual(currentDoc.ref));\n const priorDoc = priorAction === null || priorAction === void 0 ? void 0 : priorAction.payload.docs.find(d => d.ref.isEqual(currentDoc.ref));\n if (docChange && JSON.stringify(docChange.doc.metadata) === JSON.stringify(currentDoc.metadata) ||\n !docChange && priorDoc && JSON.stringify(priorDoc.metadata) === JSON.stringify(currentDoc.metadata)) {\n // document doesn't appear to have changed, don't log another action\n }\n else {\n // since the actions are processed in order just push onto the array\n actions.push({\n type: 'modified',\n payload: {\n oldIndex: currentIndex,\n newIndex: currentIndex,\n type: 'modified',\n doc: currentDoc\n }\n });\n }\n });\n }\n return actions;\n }));\n}\n/**\n * Return a stream of document changes on a query. These results are in sort order.\n */\nfunction sortedChanges(query, events, scheduler) {\n return docChanges(query, scheduler)\n .pipe(scan((current, changes) => combineChanges(current, changes.map(it => it.payload), events), []), distinctUntilChanged(), // cut down on unneed change cycles\n map(changes => changes.map(c => ({ type: c.type, payload: c }))));\n}\n/**\n * Combines the total result set from the current set of changes from an incoming set\n * of changes.\n */\nfunction combineChanges(current, changes, events) {\n changes.forEach(change => {\n // skip unwanted change types\n if (events.indexOf(change.type) > -1) {\n current = combineChange(current, change);\n }\n });\n return current;\n}\n/**\n * Splice arguments on top of a sliced array, to break top-level ===\n * this is useful for change-detection\n */\nfunction sliceAndSplice(original, start, deleteCount, ...args) {\n const returnArray = original.slice();\n returnArray.splice(start, deleteCount, ...args);\n return returnArray;\n}\n/**\n * Creates a new sorted array from a new change.\n * Build our own because we allow filtering of action types ('added', 'removed', 'modified') before scanning\n * and so we have greater control over change detection (by breaking ===)\n */\nfunction combineChange(combined, change) {\n switch (change.type) {\n case 'added':\n if (combined[change.newIndex] && combined[change.newIndex].doc.ref.isEqual(change.doc.ref)) {\n // Not sure why the duplicates are getting fired\n }\n else {\n return sliceAndSplice(combined, change.newIndex, 0, change);\n }\n break;\n case 'modified':\n if (combined[change.oldIndex] == null || combined[change.oldIndex].doc.ref.isEqual(change.doc.ref)) {\n // When an item changes position we first remove it\n // and then add it's new position\n if (change.oldIndex !== change.newIndex) {\n const copiedArray = combined.slice();\n copiedArray.splice(change.oldIndex, 1);\n copiedArray.splice(change.newIndex, 0, change);\n return copiedArray;\n }\n else {\n return sliceAndSplice(combined, change.newIndex, 1, change);\n }\n }\n break;\n case 'removed':\n if (combined[change.oldIndex] && combined[change.oldIndex].doc.ref.isEqual(change.doc.ref)) {\n return sliceAndSplice(combined, change.oldIndex, 1);\n }\n break;\n }\n return combined;\n}\n\nfunction validateEventsArray(events) {\n if (!events || events.length === 0) {\n events = ['added', 'removed', 'modified'];\n }\n return events;\n}\n/**\n * AngularFirestoreCollection service\n *\n * This class creates a reference to a Firestore Collection. A reference and a query are provided in\n * in the constructor. The query can be the unqueried reference if no query is desired.The class\n * is generic which gives you type safety for data update methods and data streaming.\n *\n * This class uses Symbol.observable to transform into Observable using Observable.from().\n *\n * This class is rarely used directly and should be created from the AngularFirestore service.\n *\n * Example:\n *\n * const collectionRef = firebase.firestore.collection('stocks');\n * const query = collectionRef.where('price', '>', '0.01');\n * const fakeStock = new AngularFirestoreCollection(collectionRef, query);\n *\n * // NOTE!: the updates are performed on the reference not the query\n * await fakeStock.add({ name: 'FAKE', price: 0.01 });\n *\n * // Subscribe to changes as snapshots. This provides you data updates as well as delta updates.\n * fakeStock.valueChanges().subscribe(value => console.log(value));\n */\nclass AngularFirestoreCollection {\n /**\n * The constructor takes in a CollectionReference and Query to provide wrapper methods\n * for data operations and data streaming.\n *\n * Note: Data operation methods are done on the reference not the query. This means\n * when you update data it is not updating data to the window of your query unless\n * the data fits the criteria of the query. See the AssociatedRefence type for details\n * on this implication.\n */\n constructor(ref, query, afs) {\n this.ref = ref;\n this.query = query;\n this.afs = afs;\n }\n /**\n * Listen to the latest change in the stream. This method returns changes\n * as they occur and they are not sorted by query order. This allows you to construct\n * your own data structure.\n */\n stateChanges(events) {\n let source = docChanges(this.query, this.afs.schedulers.outsideAngular);\n if (events && events.length > 0) {\n source = source.pipe(map(actions => actions.filter(change => events.indexOf(change.type) > -1)));\n }\n return source.pipe(\n // We want to filter out empty arrays, but always emit at first, so the developer knows\n // that the collection has been resolve; even if it's empty\n startWith(undefined), pairwise(), filter(([prior, current]) => current.length > 0 || !prior), map(([prior, current]) => current), keepUnstableUntilFirst);\n }\n /**\n * Create a stream of changes as they occur it time. This method is similar to stateChanges()\n * but it collects each event in an array over time.\n */\n auditTrail(events) {\n return this.stateChanges(events).pipe(scan((current, action) => [...current, ...action], []));\n }\n /**\n * Create a stream of synchronized changes. This method keeps the local array in sorted\n * query order.\n */\n snapshotChanges(events) {\n const validatedEvents = validateEventsArray(events);\n const scheduledSortedChanges$ = sortedChanges(this.query, validatedEvents, this.afs.schedulers.outsideAngular);\n return scheduledSortedChanges$.pipe(keepUnstableUntilFirst);\n }\n valueChanges(options = {}) {\n return fromCollectionRef(this.query, this.afs.schedulers.outsideAngular)\n .pipe(map(actions => actions.payload.docs.map(a => {\n if (options.idField) {\n return Object.assign(Object.assign({}, a.data()), { [options.idField]: a.id });\n }\n else {\n return a.data();\n }\n })), keepUnstableUntilFirst);\n }\n /**\n * Retrieve the results of the query once.\n */\n get(options) {\n return from(this.query.get(options)).pipe(keepUnstableUntilFirst);\n }\n /**\n * Add data to a collection reference.\n *\n * Note: Data operation methods are done on the reference not the query. This means\n * when you update data it is not updating data to the window of your query unless\n * the data fits the criteria of the query.\n */\n add(data) {\n return this.ref.add(data);\n }\n /**\n * Create a reference to a single document in a collection.\n */\n doc(path) {\n // TODO is there a better way to solve this type issue\n return new AngularFirestoreDocument(this.ref.doc(path), this.afs);\n }\n}\n\n/**\n * AngularFirestoreDocument service\n *\n * This class creates a reference to a Firestore Document. A reference is provided in\n * in the constructor. The class is generic which gives you type safety for data update\n * methods and data streaming.\n *\n * This class uses Symbol.observable to transform into Observable using Observable.from().\n *\n * This class is rarely used directly and should be created from the AngularFirestore service.\n *\n * Example:\n *\n * const fakeStock = new AngularFirestoreDocument(doc('stocks/FAKE'));\n * await fakeStock.set({ name: 'FAKE', price: 0.01 });\n * fakeStock.valueChanges().map(snap => {\n * if(snap.exists) return snap.data();\n * return null;\n * }).subscribe(value => console.log(value));\n * // OR! Transform using Observable.from() and the data is unwrapped for you\n * Observable.from(fakeStock).subscribe(value => console.log(value));\n */\nclass AngularFirestoreDocument {\n /**\n * The constructor takes in a DocumentReference to provide wrapper methods\n * for data operations, data streaming, and Symbol.observable.\n */\n constructor(ref, afs) {\n this.ref = ref;\n this.afs = afs;\n }\n /**\n * Create or overwrite a single document.\n */\n set(data, options) {\n return this.ref.set(data, options);\n }\n /**\n * Update some fields of a document without overwriting the entire document.\n */\n update(data) {\n return this.ref.update(data);\n }\n /**\n * Delete a document.\n */\n delete() {\n return this.ref.delete();\n }\n /**\n * Create a reference to a sub-collection given a path and an optional query\n * function.\n */\n collection(path, queryFn) {\n const collectionRef = this.ref.collection(path);\n const { ref, query } = associateQuery(collectionRef, queryFn);\n return new AngularFirestoreCollection(ref, query, this.afs);\n }\n /**\n * Listen to snapshot updates from the document.\n */\n snapshotChanges() {\n const scheduledFromDocRef$ = fromDocRef(this.ref, this.afs.schedulers.outsideAngular);\n return scheduledFromDocRef$.pipe(keepUnstableUntilFirst);\n }\n valueChanges(options = {}) {\n return this.snapshotChanges().pipe(map(({ payload }) => options.idField ? Object.assign(Object.assign({}, payload.data()), { [options.idField]: payload.id }) : payload.data()));\n }\n /**\n * Retrieve the document once.\n */\n get(options) {\n return from(this.ref.get(options)).pipe(keepUnstableUntilFirst);\n }\n}\n\n/**\n * AngularFirestoreCollectionGroup service\n *\n * This class holds a reference to a Firestore Collection Group Query.\n *\n * This class uses Symbol.observable to transform into Observable using Observable.from().\n *\n * This class is rarely used directly and should be created from the AngularFirestore service.\n *\n * Example:\n *\n * const collectionGroup = firebase.firestore.collectionGroup('stocks');\n * const query = collectionRef.where('price', '>', '0.01');\n * const fakeStock = new AngularFirestoreCollectionGroup(query, afs);\n *\n * // Subscribe to changes as snapshots. This provides you data updates as well as delta updates.\n * fakeStock.valueChanges().subscribe(value => console.log(value));\n */\nclass AngularFirestoreCollectionGroup {\n /**\n * The constructor takes in a CollectionGroupQuery to provide wrapper methods\n * for data operations and data streaming.\n */\n constructor(query, afs) {\n this.query = query;\n this.afs = afs;\n }\n /**\n * Listen to the latest change in the stream. This method returns changes\n * as they occur and they are not sorted by query order. This allows you to construct\n * your own data structure.\n */\n stateChanges(events) {\n if (!events || events.length === 0) {\n return docChanges(this.query, this.afs.schedulers.outsideAngular).pipe(keepUnstableUntilFirst);\n }\n return docChanges(this.query, this.afs.schedulers.outsideAngular)\n .pipe(map(actions => actions.filter(change => events.indexOf(change.type) > -1)), filter(changes => changes.length > 0), keepUnstableUntilFirst);\n }\n /**\n * Create a stream of changes as they occur it time. This method is similar to stateChanges()\n * but it collects each event in an array over time.\n */\n auditTrail(events) {\n return this.stateChanges(events).pipe(scan((current, action) => [...current, ...action], []));\n }\n /**\n * Create a stream of synchronized changes. This method keeps the local array in sorted\n * query order.\n */\n snapshotChanges(events) {\n const validatedEvents = validateEventsArray(events);\n const scheduledSortedChanges$ = sortedChanges(this.query, validatedEvents, this.afs.schedulers.outsideAngular);\n return scheduledSortedChanges$.pipe(keepUnstableUntilFirst);\n }\n valueChanges(options = {}) {\n const fromCollectionRefScheduled$ = fromCollectionRef(this.query, this.afs.schedulers.outsideAngular);\n return fromCollectionRefScheduled$\n .pipe(map(actions => actions.payload.docs.map(a => {\n if (options.idField) {\n return Object.assign({ [options.idField]: a.id }, a.data());\n }\n else {\n return a.data();\n }\n })), keepUnstableUntilFirst);\n }\n /**\n * Retrieve the results of the query once.\n */\n get(options) {\n return from(this.query.get(options)).pipe(keepUnstableUntilFirst);\n }\n}\n\n/**\n * The value of this token determines whether or not the firestore will have persistance enabled\n */\nconst ENABLE_PERSISTENCE = new InjectionToken('angularfire2.enableFirestorePersistence');\nconst PERSISTENCE_SETTINGS = new InjectionToken('angularfire2.firestore.persistenceSettings');\nconst SETTINGS = new InjectionToken('angularfire2.firestore.settings');\nconst USE_EMULATOR = new InjectionToken('angularfire2.firestore.use-emulator');\n/**\n * A utility methods for associating a collection reference with\n * a query.\n *\n * @param collectionRef - A collection reference to query\n * @param queryFn - The callback to create a query\n *\n * Example:\n * const { query, ref } = associateQuery(docRef.collection('items'), ref => {\n * return ref.where('age', '<', 200);\n * });\n */\nfunction associateQuery(collectionRef, queryFn = ref => ref) {\n const query = queryFn(collectionRef);\n const ref = collectionRef;\n return { query, ref };\n}\n/**\n * AngularFirestore Service\n *\n * This service is the main entry point for this feature module. It provides\n * an API for creating Collection and Reference services. These services can\n * then be used to do data updates and observable streams of the data.\n *\n * Example:\n *\n * import { Component } from '@angular/core';\n * import { AngularFirestore, AngularFirestoreCollection, AngularFirestoreDocument } from '@angular/fire/firestore';\n * import { Observable } from 'rxjs/Observable';\n * import { from } from 'rxjs/observable';\n *\n * @Component({\n * selector: 'app-my-component',\n * template: `\n *

    Items for {{ (profile | async)?.name }}\n *
      \n *
    • {{ item.name }}
    • \n *
    \n *
    \n * \n * \n *
    \n * `\n * })\n * export class MyComponent implements OnInit {\n *\n * // services for data operations and data streaming\n * private readonly itemsRef: AngularFirestoreCollection;\n * private readonly profileRef: AngularFirestoreDocument;\n *\n * // observables for template\n * items: Observable;\n * profile: Observable;\n *\n * // inject main service\n * constructor(private readonly afs: AngularFirestore) {}\n *\n * ngOnInit() {\n * this.itemsRef = afs.collection('items', ref => ref.where('user', '==', 'davideast').limit(10));\n * this.items = this.itemsRef.valueChanges().map(snap => snap.docs.map(data => doc.data()));\n * // this.items = from(this.itemsRef); // you can also do this with no mapping\n *\n * this.profileRef = afs.doc('users/davideast');\n * this.profile = this.profileRef.valueChanges();\n * }\n *\n * addItem(name: string) {\n * const user = 'davideast';\n * this.itemsRef.add({ name, user });\n * }\n * }\n */\nclass AngularFirestore {\n /**\n * Each Feature of AngularFire has a FirebaseApp injected. This way we\n * don't rely on the main Firebase App instance and we can create named\n * apps and use multiple apps.\n */\n constructor(options, name, shouldEnablePersistence, settings, \n // tslint:disable-next-line:ban-types\n platformId, zone, schedulers, persistenceSettings, _useEmulator, auth, useAuthEmulator, authSettings, // can't use firebase.auth.AuthSettings here\n tenantId, languageCode, useDeviceLanguage, persistence, _appCheckInstances) {\n this.schedulers = schedulers;\n const app = ɵfirebaseAppFactory(options, zone, name);\n const useEmulator = _useEmulator;\n if (auth) {\n ɵauthFactory(app, zone, useAuthEmulator, tenantId, languageCode, useDeviceLanguage, authSettings, persistence);\n }\n [this.firestore, this.persistenceEnabled$] = ɵcacheInstance(`${app.name}.firestore`, 'AngularFirestore', app.name, () => {\n const firestore = zone.runOutsideAngular(() => app.firestore());\n if (settings) {\n firestore.settings(settings);\n }\n if (useEmulator) {\n firestore.useEmulator(...useEmulator);\n }\n if (shouldEnablePersistence && !isPlatformServer(platformId)) {\n // We need to try/catch here because not all enablePersistence() failures are caught\n // https://github.com/firebase/firebase-js-sdk/issues/608\n const enablePersistence = () => {\n try {\n return from(firestore.enablePersistence(persistenceSettings || undefined).then(() => true, () => false));\n }\n catch (e) {\n if (typeof console !== 'undefined') {\n console.warn(e);\n }\n return of(false);\n }\n };\n return [firestore, zone.runOutsideAngular(enablePersistence)];\n }\n else {\n return [firestore, of(false)];\n }\n }, [settings, useEmulator, shouldEnablePersistence]);\n }\n collection(pathOrRef, queryFn) {\n let collectionRef;\n if (typeof pathOrRef === 'string') {\n collectionRef = this.firestore.collection(pathOrRef);\n }\n else {\n collectionRef = pathOrRef;\n }\n const { ref, query } = associateQuery(collectionRef, queryFn);\n const refInZone = this.schedulers.ngZone.run(() => ref);\n return new AngularFirestoreCollection(refInZone, query, this);\n }\n /**\n * Create a reference to a Firestore Collection Group based on a collectionId\n * and an optional query function to narrow the result\n * set.\n */\n collectionGroup(collectionId, queryGroupFn) {\n const queryFn = queryGroupFn || (ref => ref);\n const collectionGroup = this.firestore.collectionGroup(collectionId);\n return new AngularFirestoreCollectionGroup(queryFn(collectionGroup), this);\n }\n doc(pathOrRef) {\n let ref;\n if (typeof pathOrRef === 'string') {\n ref = this.firestore.doc(pathOrRef);\n }\n else {\n ref = pathOrRef;\n }\n const refInZone = this.schedulers.ngZone.run(() => ref);\n return new AngularFirestoreDocument(refInZone, this);\n }\n /**\n * Returns a generated Firestore Document Id.\n */\n createId() {\n return this.firestore.collection('_').doc().id;\n }\n}\nAngularFirestore.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.1.3\", ngImport: i0, type: AngularFirestore, deps: [{ token: FIREBASE_OPTIONS }, { token: FIREBASE_APP_NAME, optional: true }, { token: ENABLE_PERSISTENCE, optional: true }, { token: SETTINGS, optional: true }, { token: PLATFORM_ID }, { token: i0.NgZone }, { token: i1.ɵAngularFireSchedulers }, { token: PERSISTENCE_SETTINGS, optional: true }, { token: USE_EMULATOR, optional: true }, { token: i2.AngularFireAuth, optional: true }, { token: USE_EMULATOR$1, optional: true }, { token: SETTINGS$1, optional: true }, { token: TENANT_ID, optional: true }, { token: LANGUAGE_CODE, optional: true }, { token: USE_DEVICE_LANGUAGE, optional: true }, { token: PERSISTENCE, optional: true }, { token: i3.AppCheckInstances, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nAngularFirestore.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.1.3\", ngImport: i0, type: AngularFirestore, providedIn: 'any' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.1.3\", ngImport: i0, type: AngularFirestore, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'any'\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [FIREBASE_OPTIONS]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [FIREBASE_APP_NAME]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ENABLE_PERSISTENCE]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [SETTINGS]\n }] }, { type: Object, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: i0.NgZone }, { type: i1.ɵAngularFireSchedulers }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [PERSISTENCE_SETTINGS]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [USE_EMULATOR]\n }] }, { type: i2.AngularFireAuth, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [USE_EMULATOR$1]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [SETTINGS$1]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [TENANT_ID]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [LANGUAGE_CODE]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [USE_DEVICE_LANGUAGE]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [PERSISTENCE]\n }] }, { type: i3.AppCheckInstances, decorators: [{\n type: Optional\n }] }]; } });\n\nclass AngularFirestoreModule {\n constructor() {\n firebase.registerVersion('angularfire', VERSION.full, 'fst-compat');\n }\n /**\n * Attempt to enable persistent storage, if possible\n */\n static enablePersistence(persistenceSettings) {\n return {\n ngModule: AngularFirestoreModule,\n providers: [\n { provide: ENABLE_PERSISTENCE, useValue: true },\n { provide: PERSISTENCE_SETTINGS, useValue: persistenceSettings },\n ]\n };\n }\n}\nAngularFirestoreModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.1.3\", ngImport: i0, type: AngularFirestoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nAngularFirestoreModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.1.3\", ngImport: i0, type: AngularFirestoreModule });\nAngularFirestoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.1.3\", ngImport: i0, type: AngularFirestoreModule, providers: [AngularFirestore] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.1.3\", ngImport: i0, type: AngularFirestoreModule, decorators: [{\n type: NgModule,\n args: [{\n providers: [AngularFirestore]\n }]\n }], ctorParameters: function () { return []; } });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AngularFirestore, AngularFirestoreCollection, AngularFirestoreCollectionGroup, AngularFirestoreDocument, AngularFirestoreModule, ENABLE_PERSISTENCE, PERSISTENCE_SETTINGS, SETTINGS, USE_EMULATOR, associateQuery, combineChange, combineChanges, docChanges, fromCollectionRef, fromDocRef, fromRef, sortedChanges, validateEventsArray };\n","import * as i0 from '@angular/core';\nimport { InjectionToken, isDevMode, NgZone, Optional, VERSION as VERSION$1, PLATFORM_ID, NgModule, Inject } from '@angular/core';\nimport firebase from 'firebase/compat/app';\nimport { VERSION } from '@angular/fire';\n\n// DEBUG quick debugger function for inline logging that typescript doesn't complain about\n// wrote it for debugging the ɵlazySDKProxy, commenting out for now; should consider exposing a\n// verbose mode for AngularFire in a future release that uses something like this in multiple places\n// usage: () => log('something') || returnValue\n// const log = (...args: any[]): false => { console.log(...args); return false }\n// The problem here are things like ngOnDestroy are missing, then triggering the service\n// rather than dig too far; I'm capturing these as I go.\nconst noopFunctions = ['ngOnDestroy'];\n// INVESTIGATE should we make the Proxy revokable and do some cleanup?\n// right now it's fairly simple but I'm sure this will grow in complexity\nconst ɵlazySDKProxy = (klass, observable, zone, options = {}) => {\n return new Proxy(klass, {\n get: (_, name) => zone.runOutsideAngular(() => {\n var _a;\n if (klass[name]) {\n if ((_a = options === null || options === void 0 ? void 0 : options.spy) === null || _a === void 0 ? void 0 : _a.get) {\n options.spy.get(name, klass[name]);\n }\n return klass[name];\n }\n if (noopFunctions.indexOf(name) > -1) {\n return () => {\n };\n }\n const promise = observable.toPromise().then(mod => {\n const ret = mod && mod[name];\n // TODO move to proper type guards\n if (typeof ret === 'function') {\n return ret.bind(mod);\n }\n else if (ret && ret.then) {\n return ret.then((res) => zone.run(() => res));\n }\n else {\n return zone.run(() => ret);\n }\n });\n // recurse the proxy\n return new Proxy(() => { }, {\n get: (_, name) => promise[name],\n // TODO handle callbacks as transparently as I can\n apply: (self, _, args) => promise.then(it => {\n var _a;\n const res = it && it(...args);\n if ((_a = options === null || options === void 0 ? void 0 : options.spy) === null || _a === void 0 ? void 0 : _a.apply) {\n options.spy.apply(name, args, res);\n }\n return res;\n })\n });\n })\n });\n};\nconst ɵapplyMixins = (derivedCtor, constructors) => {\n constructors.forEach((baseCtor) => {\n Object.getOwnPropertyNames(baseCtor.prototype || baseCtor).forEach((name) => {\n Object.defineProperty(derivedCtor.prototype, name, Object.getOwnPropertyDescriptor(baseCtor.prototype || baseCtor, name));\n });\n });\n};\n\nclass FirebaseApp {\n constructor(app) {\n return app;\n }\n}\n\nconst FIREBASE_OPTIONS = new InjectionToken('angularfire2.app.options');\nconst FIREBASE_APP_NAME = new InjectionToken('angularfire2.app.name');\nfunction ɵfirebaseAppFactory(options, zone, nameOrConfig) {\n const name = typeof nameOrConfig === 'string' && nameOrConfig || '[DEFAULT]';\n const config = typeof nameOrConfig === 'object' && nameOrConfig || {};\n config.name = config.name || name;\n // Added any due to some inconsistency between @firebase/app and firebase types\n const existingApp = firebase.apps.filter(app => app && app.name === config.name)[0];\n // We support FirebaseConfig, initializeApp's public type only accepts string; need to cast as any\n // Could be solved with https://github.com/firebase/firebase-js-sdk/pull/1206\n const app = (existingApp || zone.runOutsideAngular(() => firebase.initializeApp(options, config)));\n try {\n if (JSON.stringify(options) !== JSON.stringify(app.options)) {\n const hmr = !!module.hot;\n log$1('error', `${app.name} Firebase App already initialized with different options${hmr ? ', you may need to reload as Firebase is not HMR aware.' : '.'}`);\n }\n }\n catch (e) { }\n return new FirebaseApp(app);\n}\nconst log$1 = (level, ...args) => {\n if (isDevMode() && typeof console !== 'undefined') {\n console[level](...args);\n }\n};\nconst FIREBASE_APP_PROVIDER = {\n provide: FirebaseApp,\n useFactory: ɵfirebaseAppFactory,\n deps: [\n FIREBASE_OPTIONS,\n NgZone,\n [new Optional(), FIREBASE_APP_NAME]\n ]\n};\nclass AngularFireModule {\n // tslint:disable-next-line:ban-types\n constructor(platformId) {\n firebase.registerVersion('angularfire', VERSION.full, 'core');\n firebase.registerVersion('angularfire', VERSION.full, 'app-compat');\n firebase.registerVersion('angular', VERSION$1.full, platformId.toString());\n }\n static initializeApp(options, nameOrConfig) {\n return {\n ngModule: AngularFireModule,\n providers: [\n { provide: FIREBASE_OPTIONS, useValue: options },\n { provide: FIREBASE_APP_NAME, useValue: nameOrConfig }\n ]\n };\n }\n}\nAngularFireModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.1.3\", ngImport: i0, type: AngularFireModule, deps: [{ token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.NgModule });\nAngularFireModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.1.3\", ngImport: i0, type: AngularFireModule });\nAngularFireModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.1.3\", ngImport: i0, type: AngularFireModule, providers: [FIREBASE_APP_PROVIDER] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.1.3\", ngImport: i0, type: AngularFireModule, decorators: [{\n type: NgModule,\n args: [{\n providers: [FIREBASE_APP_PROVIDER]\n }]\n }], ctorParameters: function () { return [{ type: Object, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; } });\n\nfunction ɵcacheInstance(cacheKey, moduleName, appName, fn, deps) {\n const [, instance, cachedDeps] = globalThis.ɵAngularfireInstanceCache.find((it) => it[0] === cacheKey) || [];\n if (instance) {\n if (!matchDep(deps, cachedDeps)) {\n log('error', `${moduleName} was already initialized on the ${appName} Firebase App with different settings.${IS_HMR ? ' You may need to reload as Firebase is not HMR aware.' : ''}`);\n log('warn', { is: deps, was: cachedDeps });\n }\n return instance;\n }\n else {\n const newInstance = fn();\n globalThis.ɵAngularfireInstanceCache.push([cacheKey, newInstance, deps]);\n return newInstance;\n }\n}\nfunction matchDep(a, b) {\n try {\n return a.toString() === b.toString();\n }\n catch (_) {\n return a === b;\n }\n}\nconst IS_HMR = !!module.hot;\nconst log = (level, ...args) => {\n if (isDevMode() && typeof console !== 'undefined') {\n console[level](...args);\n }\n};\nglobalThis.ɵAngularfireInstanceCache || (globalThis.ɵAngularfireInstanceCache = []);\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AngularFireModule, FIREBASE_APP_NAME, FIREBASE_OPTIONS, FirebaseApp, ɵapplyMixins, ɵcacheInstance, ɵfirebaseAppFactory, ɵlazySDKProxy };\n","const instanceOfAny = (object, constructors) => constructors.some((c) => object instanceof c);\n\nlet idbProxyableTypes;\nlet cursorAdvanceMethods;\n// This is a function to prevent it throwing up in node environments.\nfunction getIdbProxyableTypes() {\n return (idbProxyableTypes ||\n (idbProxyableTypes = [\n IDBDatabase,\n IDBObjectStore,\n IDBIndex,\n IDBCursor,\n IDBTransaction,\n ]));\n}\n// This is a function to prevent it throwing up in node environments.\nfunction getCursorAdvanceMethods() {\n return (cursorAdvanceMethods ||\n (cursorAdvanceMethods = [\n IDBCursor.prototype.advance,\n IDBCursor.prototype.continue,\n IDBCursor.prototype.continuePrimaryKey,\n ]));\n}\nconst cursorRequestMap = new WeakMap();\nconst transactionDoneMap = new WeakMap();\nconst transactionStoreNamesMap = new WeakMap();\nconst transformCache = new WeakMap();\nconst reverseTransformCache = new WeakMap();\nfunction promisifyRequest(request) {\n const promise = new Promise((resolve, reject) => {\n const unlisten = () => {\n request.removeEventListener('success', success);\n request.removeEventListener('error', error);\n };\n const success = () => {\n resolve(wrap(request.result));\n unlisten();\n };\n const error = () => {\n reject(request.error);\n unlisten();\n };\n request.addEventListener('success', success);\n request.addEventListener('error', error);\n });\n promise\n .then((value) => {\n // Since cursoring reuses the IDBRequest (*sigh*), we cache it for later retrieval\n // (see wrapFunction).\n if (value instanceof IDBCursor) {\n cursorRequestMap.set(value, request);\n }\n // Catching to avoid \"Uncaught Promise exceptions\"\n })\n .catch(() => { });\n // This mapping exists in reverseTransformCache but doesn't doesn't exist in transformCache. This\n // is because we create many promises from a single IDBRequest.\n reverseTransformCache.set(promise, request);\n return promise;\n}\nfunction cacheDonePromiseForTransaction(tx) {\n // Early bail if we've already created a done promise for this transaction.\n if (transactionDoneMap.has(tx))\n return;\n const done = new Promise((resolve, reject) => {\n const unlisten = () => {\n tx.removeEventListener('complete', complete);\n tx.removeEventListener('error', error);\n tx.removeEventListener('abort', error);\n };\n const complete = () => {\n resolve();\n unlisten();\n };\n const error = () => {\n reject(tx.error || new DOMException('AbortError', 'AbortError'));\n unlisten();\n };\n tx.addEventListener('complete', complete);\n tx.addEventListener('error', error);\n tx.addEventListener('abort', error);\n });\n // Cache it for later retrieval.\n transactionDoneMap.set(tx, done);\n}\nlet idbProxyTraps = {\n get(target, prop, receiver) {\n if (target instanceof IDBTransaction) {\n // Special handling for transaction.done.\n if (prop === 'done')\n return transactionDoneMap.get(target);\n // Polyfill for objectStoreNames because of Edge.\n if (prop === 'objectStoreNames') {\n return target.objectStoreNames || transactionStoreNamesMap.get(target);\n }\n // Make tx.store return the only store in the transaction, or undefined if there are many.\n if (prop === 'store') {\n return receiver.objectStoreNames[1]\n ? undefined\n : receiver.objectStore(receiver.objectStoreNames[0]);\n }\n }\n // Else transform whatever we get back.\n return wrap(target[prop]);\n },\n set(target, prop, value) {\n target[prop] = value;\n return true;\n },\n has(target, prop) {\n if (target instanceof IDBTransaction &&\n (prop === 'done' || prop === 'store')) {\n return true;\n }\n return prop in target;\n },\n};\nfunction replaceTraps(callback) {\n idbProxyTraps = callback(idbProxyTraps);\n}\nfunction wrapFunction(func) {\n // Due to expected object equality (which is enforced by the caching in `wrap`), we\n // only create one new func per func.\n // Edge doesn't support objectStoreNames (booo), so we polyfill it here.\n if (func === IDBDatabase.prototype.transaction &&\n !('objectStoreNames' in IDBTransaction.prototype)) {\n return function (storeNames, ...args) {\n const tx = func.call(unwrap(this), storeNames, ...args);\n transactionStoreNamesMap.set(tx, storeNames.sort ? storeNames.sort() : [storeNames]);\n return wrap(tx);\n };\n }\n // Cursor methods are special, as the behaviour is a little more different to standard IDB. In\n // IDB, you advance the cursor and wait for a new 'success' on the IDBRequest that gave you the\n // cursor. It's kinda like a promise that can resolve with many values. That doesn't make sense\n // with real promises, so each advance methods returns a new promise for the cursor object, or\n // undefined if the end of the cursor has been reached.\n if (getCursorAdvanceMethods().includes(func)) {\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n func.apply(unwrap(this), args);\n return wrap(cursorRequestMap.get(this));\n };\n }\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n return wrap(func.apply(unwrap(this), args));\n };\n}\nfunction transformCachableValue(value) {\n if (typeof value === 'function')\n return wrapFunction(value);\n // This doesn't return, it just creates a 'done' promise for the transaction,\n // which is later returned for transaction.done (see idbObjectHandler).\n if (value instanceof IDBTransaction)\n cacheDonePromiseForTransaction(value);\n if (instanceOfAny(value, getIdbProxyableTypes()))\n return new Proxy(value, idbProxyTraps);\n // Return the same value back if we're not going to transform it.\n return value;\n}\nfunction wrap(value) {\n // We sometimes generate multiple promises from a single IDBRequest (eg when cursoring), because\n // IDB is weird and a single IDBRequest can yield many responses, so these can't be cached.\n if (value instanceof IDBRequest)\n return promisifyRequest(value);\n // If we've already transformed this value before, reuse the transformed value.\n // This is faster, but it also provides object equality.\n if (transformCache.has(value))\n return transformCache.get(value);\n const newValue = transformCachableValue(value);\n // Not all types are transformed.\n // These may be primitive types, so they can't be WeakMap keys.\n if (newValue !== value) {\n transformCache.set(value, newValue);\n reverseTransformCache.set(newValue, value);\n }\n return newValue;\n}\nconst unwrap = (value) => reverseTransformCache.get(value);\n\nexport { reverseTransformCache as a, instanceOfAny as i, replaceTraps as r, unwrap as u, wrap as w };\n","import { w as wrap, r as replaceTraps } from './wrap-idb-value.js';\nexport { u as unwrap, w as wrap } from './wrap-idb-value.js';\n\n/**\n * Open a database.\n *\n * @param name Name of the database.\n * @param version Schema version.\n * @param callbacks Additional callbacks.\n */\nfunction openDB(name, version, { blocked, upgrade, blocking, terminated } = {}) {\n const request = indexedDB.open(name, version);\n const openPromise = wrap(request);\n if (upgrade) {\n request.addEventListener('upgradeneeded', (event) => {\n upgrade(wrap(request.result), event.oldVersion, event.newVersion, wrap(request.transaction));\n });\n }\n if (blocked)\n request.addEventListener('blocked', () => blocked());\n openPromise\n .then((db) => {\n if (terminated)\n db.addEventListener('close', () => terminated());\n if (blocking)\n db.addEventListener('versionchange', () => blocking());\n })\n .catch(() => { });\n return openPromise;\n}\n/**\n * Delete a database.\n *\n * @param name Name of the database.\n */\nfunction deleteDB(name, { blocked } = {}) {\n const request = indexedDB.deleteDatabase(name);\n if (blocked)\n request.addEventListener('blocked', () => blocked());\n return wrap(request).then(() => undefined);\n}\n\nconst readMethods = ['get', 'getKey', 'getAll', 'getAllKeys', 'count'];\nconst writeMethods = ['put', 'add', 'delete', 'clear'];\nconst cachedMethods = new Map();\nfunction getMethod(target, prop) {\n if (!(target instanceof IDBDatabase &&\n !(prop in target) &&\n typeof prop === 'string')) {\n return;\n }\n if (cachedMethods.get(prop))\n return cachedMethods.get(prop);\n const targetFuncName = prop.replace(/FromIndex$/, '');\n const useIndex = prop !== targetFuncName;\n const isWrite = writeMethods.includes(targetFuncName);\n if (\n // Bail if the target doesn't exist on the target. Eg, getAll isn't in Edge.\n !(targetFuncName in (useIndex ? IDBIndex : IDBObjectStore).prototype) ||\n !(isWrite || readMethods.includes(targetFuncName))) {\n return;\n }\n const method = async function (storeName, ...args) {\n // isWrite ? 'readwrite' : undefined gzipps better, but fails in Edge :(\n const tx = this.transaction(storeName, isWrite ? 'readwrite' : 'readonly');\n let target = tx.store;\n if (useIndex)\n target = target.index(args.shift());\n // Must reject if op rejects.\n // If it's a write operation, must reject if tx.done rejects.\n // Must reject with op rejection first.\n // Must resolve with op value.\n // Must handle both promises (no unhandled rejections)\n return (await Promise.all([\n target[targetFuncName](...args),\n isWrite && tx.done,\n ]))[0];\n };\n cachedMethods.set(prop, method);\n return method;\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get: (target, prop, receiver) => getMethod(target, prop) || oldTraps.get(target, prop, receiver),\n has: (target, prop) => !!getMethod(target, prop) || oldTraps.has(target, prop),\n}));\n\nexport { deleteDB, openDB };\n","import { _getProvider, getApp, _registerComponent, registerVersion } from '@firebase/app';\nimport { Component } from '@firebase/component';\nimport { ErrorFactory, FirebaseError } from '@firebase/util';\nimport { openDB } from 'idb';\n\nconst name = \"@firebase/installations\";\nconst version = \"0.6.4\";\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst PENDING_TIMEOUT_MS = 10000;\r\nconst PACKAGE_VERSION = `w:${version}`;\r\nconst INTERNAL_AUTH_VERSION = 'FIS_v2';\r\nconst INSTALLATIONS_API_URL = 'https://firebaseinstallations.googleapis.com/v1';\r\nconst TOKEN_EXPIRATION_BUFFER = 60 * 60 * 1000; // One hour\r\nconst SERVICE = 'installations';\r\nconst SERVICE_NAME = 'Installations';\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst ERROR_DESCRIPTION_MAP = {\r\n [\"missing-app-config-values\" /* ErrorCode.MISSING_APP_CONFIG_VALUES */]: 'Missing App configuration value: \"{$valueName}\"',\r\n [\"not-registered\" /* ErrorCode.NOT_REGISTERED */]: 'Firebase Installation is not registered.',\r\n [\"installation-not-found\" /* ErrorCode.INSTALLATION_NOT_FOUND */]: 'Firebase Installation not found.',\r\n [\"request-failed\" /* ErrorCode.REQUEST_FAILED */]: '{$requestName} request failed with error \"{$serverCode} {$serverStatus}: {$serverMessage}\"',\r\n [\"app-offline\" /* ErrorCode.APP_OFFLINE */]: 'Could not process request. Application offline.',\r\n [\"delete-pending-registration\" /* ErrorCode.DELETE_PENDING_REGISTRATION */]: \"Can't delete installation while there is a pending registration request.\"\r\n};\r\nconst ERROR_FACTORY = new ErrorFactory(SERVICE, SERVICE_NAME, ERROR_DESCRIPTION_MAP);\r\n/** Returns true if error is a FirebaseError that is based on an error from the server. */\r\nfunction isServerError(error) {\r\n return (error instanceof FirebaseError &&\r\n error.code.includes(\"request-failed\" /* ErrorCode.REQUEST_FAILED */));\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction getInstallationsEndpoint({ projectId }) {\r\n return `${INSTALLATIONS_API_URL}/projects/${projectId}/installations`;\r\n}\r\nfunction extractAuthTokenInfoFromResponse(response) {\r\n return {\r\n token: response.token,\r\n requestStatus: 2 /* RequestStatus.COMPLETED */,\r\n expiresIn: getExpiresInFromResponseExpiresIn(response.expiresIn),\r\n creationTime: Date.now()\r\n };\r\n}\r\nasync function getErrorFromResponse(requestName, response) {\r\n const responseJson = await response.json();\r\n const errorData = responseJson.error;\r\n return ERROR_FACTORY.create(\"request-failed\" /* ErrorCode.REQUEST_FAILED */, {\r\n requestName,\r\n serverCode: errorData.code,\r\n serverMessage: errorData.message,\r\n serverStatus: errorData.status\r\n });\r\n}\r\nfunction getHeaders({ apiKey }) {\r\n return new Headers({\r\n 'Content-Type': 'application/json',\r\n Accept: 'application/json',\r\n 'x-goog-api-key': apiKey\r\n });\r\n}\r\nfunction getHeadersWithAuth(appConfig, { refreshToken }) {\r\n const headers = getHeaders(appConfig);\r\n headers.append('Authorization', getAuthorizationHeader(refreshToken));\r\n return headers;\r\n}\r\n/**\r\n * Calls the passed in fetch wrapper and returns the response.\r\n * If the returned response has a status of 5xx, re-runs the function once and\r\n * returns the response.\r\n */\r\nasync function retryIfServerError(fn) {\r\n const result = await fn();\r\n if (result.status >= 500 && result.status < 600) {\r\n // Internal Server Error. Retry request.\r\n return fn();\r\n }\r\n return result;\r\n}\r\nfunction getExpiresInFromResponseExpiresIn(responseExpiresIn) {\r\n // This works because the server will never respond with fractions of a second.\r\n return Number(responseExpiresIn.replace('s', '000'));\r\n}\r\nfunction getAuthorizationHeader(refreshToken) {\r\n return `${INTERNAL_AUTH_VERSION} ${refreshToken}`;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function createInstallationRequest({ appConfig, heartbeatServiceProvider }, { fid }) {\r\n const endpoint = getInstallationsEndpoint(appConfig);\r\n const headers = getHeaders(appConfig);\r\n // If heartbeat service exists, add the heartbeat string to the header.\r\n const heartbeatService = heartbeatServiceProvider.getImmediate({\r\n optional: true\r\n });\r\n if (heartbeatService) {\r\n const heartbeatsHeader = await heartbeatService.getHeartbeatsHeader();\r\n if (heartbeatsHeader) {\r\n headers.append('x-firebase-client', heartbeatsHeader);\r\n }\r\n }\r\n const body = {\r\n fid,\r\n authVersion: INTERNAL_AUTH_VERSION,\r\n appId: appConfig.appId,\r\n sdkVersion: PACKAGE_VERSION\r\n };\r\n const request = {\r\n method: 'POST',\r\n headers,\r\n body: JSON.stringify(body)\r\n };\r\n const response = await retryIfServerError(() => fetch(endpoint, request));\r\n if (response.ok) {\r\n const responseValue = await response.json();\r\n const registeredInstallationEntry = {\r\n fid: responseValue.fid || fid,\r\n registrationStatus: 2 /* RequestStatus.COMPLETED */,\r\n refreshToken: responseValue.refreshToken,\r\n authToken: extractAuthTokenInfoFromResponse(responseValue.authToken)\r\n };\r\n return registeredInstallationEntry;\r\n }\r\n else {\r\n throw await getErrorFromResponse('Create Installation', response);\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/** Returns a promise that resolves after given time passes. */\r\nfunction sleep(ms) {\r\n return new Promise(resolve => {\r\n setTimeout(resolve, ms);\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction bufferToBase64UrlSafe(array) {\r\n const b64 = btoa(String.fromCharCode(...array));\r\n return b64.replace(/\\+/g, '-').replace(/\\//g, '_');\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst VALID_FID_PATTERN = /^[cdef][\\w-]{21}$/;\r\nconst INVALID_FID = '';\r\n/**\r\n * Generates a new FID using random values from Web Crypto API.\r\n * Returns an empty string if FID generation fails for any reason.\r\n */\r\nfunction generateFid() {\r\n try {\r\n // A valid FID has exactly 22 base64 characters, which is 132 bits, or 16.5\r\n // bytes. our implementation generates a 17 byte array instead.\r\n const fidByteArray = new Uint8Array(17);\r\n const crypto = self.crypto || self.msCrypto;\r\n crypto.getRandomValues(fidByteArray);\r\n // Replace the first 4 random bits with the constant FID header of 0b0111.\r\n fidByteArray[0] = 0b01110000 + (fidByteArray[0] % 0b00010000);\r\n const fid = encode(fidByteArray);\r\n return VALID_FID_PATTERN.test(fid) ? fid : INVALID_FID;\r\n }\r\n catch (_a) {\r\n // FID generation errored\r\n return INVALID_FID;\r\n }\r\n}\r\n/** Converts a FID Uint8Array to a base64 string representation. */\r\nfunction encode(fidByteArray) {\r\n const b64String = bufferToBase64UrlSafe(fidByteArray);\r\n // Remove the 23rd character that was added because of the extra 4 bits at the\r\n // end of our 17 byte array, and the '=' padding.\r\n return b64String.substr(0, 22);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/** Returns a string key that can be used to identify the app. */\r\nfunction getKey(appConfig) {\r\n return `${appConfig.appName}!${appConfig.appId}`;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst fidChangeCallbacks = new Map();\r\n/**\r\n * Calls the onIdChange callbacks with the new FID value, and broadcasts the\r\n * change to other tabs.\r\n */\r\nfunction fidChanged(appConfig, fid) {\r\n const key = getKey(appConfig);\r\n callFidChangeCallbacks(key, fid);\r\n broadcastFidChange(key, fid);\r\n}\r\nfunction addCallback(appConfig, callback) {\r\n // Open the broadcast channel if it's not already open,\r\n // to be able to listen to change events from other tabs.\r\n getBroadcastChannel();\r\n const key = getKey(appConfig);\r\n let callbackSet = fidChangeCallbacks.get(key);\r\n if (!callbackSet) {\r\n callbackSet = new Set();\r\n fidChangeCallbacks.set(key, callbackSet);\r\n }\r\n callbackSet.add(callback);\r\n}\r\nfunction removeCallback(appConfig, callback) {\r\n const key = getKey(appConfig);\r\n const callbackSet = fidChangeCallbacks.get(key);\r\n if (!callbackSet) {\r\n return;\r\n }\r\n callbackSet.delete(callback);\r\n if (callbackSet.size === 0) {\r\n fidChangeCallbacks.delete(key);\r\n }\r\n // Close broadcast channel if there are no more callbacks.\r\n closeBroadcastChannel();\r\n}\r\nfunction callFidChangeCallbacks(key, fid) {\r\n const callbacks = fidChangeCallbacks.get(key);\r\n if (!callbacks) {\r\n return;\r\n }\r\n for (const callback of callbacks) {\r\n callback(fid);\r\n }\r\n}\r\nfunction broadcastFidChange(key, fid) {\r\n const channel = getBroadcastChannel();\r\n if (channel) {\r\n channel.postMessage({ key, fid });\r\n }\r\n closeBroadcastChannel();\r\n}\r\nlet broadcastChannel = null;\r\n/** Opens and returns a BroadcastChannel if it is supported by the browser. */\r\nfunction getBroadcastChannel() {\r\n if (!broadcastChannel && 'BroadcastChannel' in self) {\r\n broadcastChannel = new BroadcastChannel('[Firebase] FID Change');\r\n broadcastChannel.onmessage = e => {\r\n callFidChangeCallbacks(e.data.key, e.data.fid);\r\n };\r\n }\r\n return broadcastChannel;\r\n}\r\nfunction closeBroadcastChannel() {\r\n if (fidChangeCallbacks.size === 0 && broadcastChannel) {\r\n broadcastChannel.close();\r\n broadcastChannel = null;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst DATABASE_NAME = 'firebase-installations-database';\r\nconst DATABASE_VERSION = 1;\r\nconst OBJECT_STORE_NAME = 'firebase-installations-store';\r\nlet dbPromise = null;\r\nfunction getDbPromise() {\r\n if (!dbPromise) {\r\n dbPromise = openDB(DATABASE_NAME, DATABASE_VERSION, {\r\n upgrade: (db, oldVersion) => {\r\n // We don't use 'break' in this switch statement, the fall-through\r\n // behavior is what we want, because if there are multiple versions between\r\n // the old version and the current version, we want ALL the migrations\r\n // that correspond to those versions to run, not only the last one.\r\n // eslint-disable-next-line default-case\r\n switch (oldVersion) {\r\n case 0:\r\n db.createObjectStore(OBJECT_STORE_NAME);\r\n }\r\n }\r\n });\r\n }\r\n return dbPromise;\r\n}\r\n/** Assigns or overwrites the record for the given key with the given value. */\r\nasync function set(appConfig, value) {\r\n const key = getKey(appConfig);\r\n const db = await getDbPromise();\r\n const tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\r\n const objectStore = tx.objectStore(OBJECT_STORE_NAME);\r\n const oldValue = (await objectStore.get(key));\r\n await objectStore.put(value, key);\r\n await tx.done;\r\n if (!oldValue || oldValue.fid !== value.fid) {\r\n fidChanged(appConfig, value.fid);\r\n }\r\n return value;\r\n}\r\n/** Removes record(s) from the objectStore that match the given key. */\r\nasync function remove(appConfig) {\r\n const key = getKey(appConfig);\r\n const db = await getDbPromise();\r\n const tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\r\n await tx.objectStore(OBJECT_STORE_NAME).delete(key);\r\n await tx.done;\r\n}\r\n/**\r\n * Atomically updates a record with the result of updateFn, which gets\r\n * called with the current value. If newValue is undefined, the record is\r\n * deleted instead.\r\n * @return Updated value\r\n */\r\nasync function update(appConfig, updateFn) {\r\n const key = getKey(appConfig);\r\n const db = await getDbPromise();\r\n const tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\r\n const store = tx.objectStore(OBJECT_STORE_NAME);\r\n const oldValue = (await store.get(key));\r\n const newValue = updateFn(oldValue);\r\n if (newValue === undefined) {\r\n await store.delete(key);\r\n }\r\n else {\r\n await store.put(newValue, key);\r\n }\r\n await tx.done;\r\n if (newValue && (!oldValue || oldValue.fid !== newValue.fid)) {\r\n fidChanged(appConfig, newValue.fid);\r\n }\r\n return newValue;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Updates and returns the InstallationEntry from the database.\r\n * Also triggers a registration request if it is necessary and possible.\r\n */\r\nasync function getInstallationEntry(installations) {\r\n let registrationPromise;\r\n const installationEntry = await update(installations.appConfig, oldEntry => {\r\n const installationEntry = updateOrCreateInstallationEntry(oldEntry);\r\n const entryWithPromise = triggerRegistrationIfNecessary(installations, installationEntry);\r\n registrationPromise = entryWithPromise.registrationPromise;\r\n return entryWithPromise.installationEntry;\r\n });\r\n if (installationEntry.fid === INVALID_FID) {\r\n // FID generation failed. Waiting for the FID from the server.\r\n return { installationEntry: await registrationPromise };\r\n }\r\n return {\r\n installationEntry,\r\n registrationPromise\r\n };\r\n}\r\n/**\r\n * Creates a new Installation Entry if one does not exist.\r\n * Also clears timed out pending requests.\r\n */\r\nfunction updateOrCreateInstallationEntry(oldEntry) {\r\n const entry = oldEntry || {\r\n fid: generateFid(),\r\n registrationStatus: 0 /* RequestStatus.NOT_STARTED */\r\n };\r\n return clearTimedOutRequest(entry);\r\n}\r\n/**\r\n * If the Firebase Installation is not registered yet, this will trigger the\r\n * registration and return an InProgressInstallationEntry.\r\n *\r\n * If registrationPromise does not exist, the installationEntry is guaranteed\r\n * to be registered.\r\n */\r\nfunction triggerRegistrationIfNecessary(installations, installationEntry) {\r\n if (installationEntry.registrationStatus === 0 /* RequestStatus.NOT_STARTED */) {\r\n if (!navigator.onLine) {\r\n // Registration required but app is offline.\r\n const registrationPromiseWithError = Promise.reject(ERROR_FACTORY.create(\"app-offline\" /* ErrorCode.APP_OFFLINE */));\r\n return {\r\n installationEntry,\r\n registrationPromise: registrationPromiseWithError\r\n };\r\n }\r\n // Try registering. Change status to IN_PROGRESS.\r\n const inProgressEntry = {\r\n fid: installationEntry.fid,\r\n registrationStatus: 1 /* RequestStatus.IN_PROGRESS */,\r\n registrationTime: Date.now()\r\n };\r\n const registrationPromise = registerInstallation(installations, inProgressEntry);\r\n return { installationEntry: inProgressEntry, registrationPromise };\r\n }\r\n else if (installationEntry.registrationStatus === 1 /* RequestStatus.IN_PROGRESS */) {\r\n return {\r\n installationEntry,\r\n registrationPromise: waitUntilFidRegistration(installations)\r\n };\r\n }\r\n else {\r\n return { installationEntry };\r\n }\r\n}\r\n/** This will be executed only once for each new Firebase Installation. */\r\nasync function registerInstallation(installations, installationEntry) {\r\n try {\r\n const registeredInstallationEntry = await createInstallationRequest(installations, installationEntry);\r\n return set(installations.appConfig, registeredInstallationEntry);\r\n }\r\n catch (e) {\r\n if (isServerError(e) && e.customData.serverCode === 409) {\r\n // Server returned a \"FID can not be used\" error.\r\n // Generate a new ID next time.\r\n await remove(installations.appConfig);\r\n }\r\n else {\r\n // Registration failed. Set FID as not registered.\r\n await set(installations.appConfig, {\r\n fid: installationEntry.fid,\r\n registrationStatus: 0 /* RequestStatus.NOT_STARTED */\r\n });\r\n }\r\n throw e;\r\n }\r\n}\r\n/** Call if FID registration is pending in another request. */\r\nasync function waitUntilFidRegistration(installations) {\r\n // Unfortunately, there is no way of reliably observing when a value in\r\n // IndexedDB changes (yet, see https://github.com/WICG/indexed-db-observers),\r\n // so we need to poll.\r\n let entry = await updateInstallationRequest(installations.appConfig);\r\n while (entry.registrationStatus === 1 /* RequestStatus.IN_PROGRESS */) {\r\n // createInstallation request still in progress.\r\n await sleep(100);\r\n entry = await updateInstallationRequest(installations.appConfig);\r\n }\r\n if (entry.registrationStatus === 0 /* RequestStatus.NOT_STARTED */) {\r\n // The request timed out or failed in a different call. Try again.\r\n const { installationEntry, registrationPromise } = await getInstallationEntry(installations);\r\n if (registrationPromise) {\r\n return registrationPromise;\r\n }\r\n else {\r\n // if there is no registrationPromise, entry is registered.\r\n return installationEntry;\r\n }\r\n }\r\n return entry;\r\n}\r\n/**\r\n * Called only if there is a CreateInstallation request in progress.\r\n *\r\n * Updates the InstallationEntry in the DB based on the status of the\r\n * CreateInstallation request.\r\n *\r\n * Returns the updated InstallationEntry.\r\n */\r\nfunction updateInstallationRequest(appConfig) {\r\n return update(appConfig, oldEntry => {\r\n if (!oldEntry) {\r\n throw ERROR_FACTORY.create(\"installation-not-found\" /* ErrorCode.INSTALLATION_NOT_FOUND */);\r\n }\r\n return clearTimedOutRequest(oldEntry);\r\n });\r\n}\r\nfunction clearTimedOutRequest(entry) {\r\n if (hasInstallationRequestTimedOut(entry)) {\r\n return {\r\n fid: entry.fid,\r\n registrationStatus: 0 /* RequestStatus.NOT_STARTED */\r\n };\r\n }\r\n return entry;\r\n}\r\nfunction hasInstallationRequestTimedOut(installationEntry) {\r\n return (installationEntry.registrationStatus === 1 /* RequestStatus.IN_PROGRESS */ &&\r\n installationEntry.registrationTime + PENDING_TIMEOUT_MS < Date.now());\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function generateAuthTokenRequest({ appConfig, heartbeatServiceProvider }, installationEntry) {\r\n const endpoint = getGenerateAuthTokenEndpoint(appConfig, installationEntry);\r\n const headers = getHeadersWithAuth(appConfig, installationEntry);\r\n // If heartbeat service exists, add the heartbeat string to the header.\r\n const heartbeatService = heartbeatServiceProvider.getImmediate({\r\n optional: true\r\n });\r\n if (heartbeatService) {\r\n const heartbeatsHeader = await heartbeatService.getHeartbeatsHeader();\r\n if (heartbeatsHeader) {\r\n headers.append('x-firebase-client', heartbeatsHeader);\r\n }\r\n }\r\n const body = {\r\n installation: {\r\n sdkVersion: PACKAGE_VERSION,\r\n appId: appConfig.appId\r\n }\r\n };\r\n const request = {\r\n method: 'POST',\r\n headers,\r\n body: JSON.stringify(body)\r\n };\r\n const response = await retryIfServerError(() => fetch(endpoint, request));\r\n if (response.ok) {\r\n const responseValue = await response.json();\r\n const completedAuthToken = extractAuthTokenInfoFromResponse(responseValue);\r\n return completedAuthToken;\r\n }\r\n else {\r\n throw await getErrorFromResponse('Generate Auth Token', response);\r\n }\r\n}\r\nfunction getGenerateAuthTokenEndpoint(appConfig, { fid }) {\r\n return `${getInstallationsEndpoint(appConfig)}/${fid}/authTokens:generate`;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Returns a valid authentication token for the installation. Generates a new\r\n * token if one doesn't exist, is expired or about to expire.\r\n *\r\n * Should only be called if the Firebase Installation is registered.\r\n */\r\nasync function refreshAuthToken(installations, forceRefresh = false) {\r\n let tokenPromise;\r\n const entry = await update(installations.appConfig, oldEntry => {\r\n if (!isEntryRegistered(oldEntry)) {\r\n throw ERROR_FACTORY.create(\"not-registered\" /* ErrorCode.NOT_REGISTERED */);\r\n }\r\n const oldAuthToken = oldEntry.authToken;\r\n if (!forceRefresh && isAuthTokenValid(oldAuthToken)) {\r\n // There is a valid token in the DB.\r\n return oldEntry;\r\n }\r\n else if (oldAuthToken.requestStatus === 1 /* RequestStatus.IN_PROGRESS */) {\r\n // There already is a token request in progress.\r\n tokenPromise = waitUntilAuthTokenRequest(installations, forceRefresh);\r\n return oldEntry;\r\n }\r\n else {\r\n // No token or token expired.\r\n if (!navigator.onLine) {\r\n throw ERROR_FACTORY.create(\"app-offline\" /* ErrorCode.APP_OFFLINE */);\r\n }\r\n const inProgressEntry = makeAuthTokenRequestInProgressEntry(oldEntry);\r\n tokenPromise = fetchAuthTokenFromServer(installations, inProgressEntry);\r\n return inProgressEntry;\r\n }\r\n });\r\n const authToken = tokenPromise\r\n ? await tokenPromise\r\n : entry.authToken;\r\n return authToken;\r\n}\r\n/**\r\n * Call only if FID is registered and Auth Token request is in progress.\r\n *\r\n * Waits until the current pending request finishes. If the request times out,\r\n * tries once in this thread as well.\r\n */\r\nasync function waitUntilAuthTokenRequest(installations, forceRefresh) {\r\n // Unfortunately, there is no way of reliably observing when a value in\r\n // IndexedDB changes (yet, see https://github.com/WICG/indexed-db-observers),\r\n // so we need to poll.\r\n let entry = await updateAuthTokenRequest(installations.appConfig);\r\n while (entry.authToken.requestStatus === 1 /* RequestStatus.IN_PROGRESS */) {\r\n // generateAuthToken still in progress.\r\n await sleep(100);\r\n entry = await updateAuthTokenRequest(installations.appConfig);\r\n }\r\n const authToken = entry.authToken;\r\n if (authToken.requestStatus === 0 /* RequestStatus.NOT_STARTED */) {\r\n // The request timed out or failed in a different call. Try again.\r\n return refreshAuthToken(installations, forceRefresh);\r\n }\r\n else {\r\n return authToken;\r\n }\r\n}\r\n/**\r\n * Called only if there is a GenerateAuthToken request in progress.\r\n *\r\n * Updates the InstallationEntry in the DB based on the status of the\r\n * GenerateAuthToken request.\r\n *\r\n * Returns the updated InstallationEntry.\r\n */\r\nfunction updateAuthTokenRequest(appConfig) {\r\n return update(appConfig, oldEntry => {\r\n if (!isEntryRegistered(oldEntry)) {\r\n throw ERROR_FACTORY.create(\"not-registered\" /* ErrorCode.NOT_REGISTERED */);\r\n }\r\n const oldAuthToken = oldEntry.authToken;\r\n if (hasAuthTokenRequestTimedOut(oldAuthToken)) {\r\n return Object.assign(Object.assign({}, oldEntry), { authToken: { requestStatus: 0 /* RequestStatus.NOT_STARTED */ } });\r\n }\r\n return oldEntry;\r\n });\r\n}\r\nasync function fetchAuthTokenFromServer(installations, installationEntry) {\r\n try {\r\n const authToken = await generateAuthTokenRequest(installations, installationEntry);\r\n const updatedInstallationEntry = Object.assign(Object.assign({}, installationEntry), { authToken });\r\n await set(installations.appConfig, updatedInstallationEntry);\r\n return authToken;\r\n }\r\n catch (e) {\r\n if (isServerError(e) &&\r\n (e.customData.serverCode === 401 || e.customData.serverCode === 404)) {\r\n // Server returned a \"FID not found\" or a \"Invalid authentication\" error.\r\n // Generate a new ID next time.\r\n await remove(installations.appConfig);\r\n }\r\n else {\r\n const updatedInstallationEntry = Object.assign(Object.assign({}, installationEntry), { authToken: { requestStatus: 0 /* RequestStatus.NOT_STARTED */ } });\r\n await set(installations.appConfig, updatedInstallationEntry);\r\n }\r\n throw e;\r\n }\r\n}\r\nfunction isEntryRegistered(installationEntry) {\r\n return (installationEntry !== undefined &&\r\n installationEntry.registrationStatus === 2 /* RequestStatus.COMPLETED */);\r\n}\r\nfunction isAuthTokenValid(authToken) {\r\n return (authToken.requestStatus === 2 /* RequestStatus.COMPLETED */ &&\r\n !isAuthTokenExpired(authToken));\r\n}\r\nfunction isAuthTokenExpired(authToken) {\r\n const now = Date.now();\r\n return (now < authToken.creationTime ||\r\n authToken.creationTime + authToken.expiresIn < now + TOKEN_EXPIRATION_BUFFER);\r\n}\r\n/** Returns an updated InstallationEntry with an InProgressAuthToken. */\r\nfunction makeAuthTokenRequestInProgressEntry(oldEntry) {\r\n const inProgressAuthToken = {\r\n requestStatus: 1 /* RequestStatus.IN_PROGRESS */,\r\n requestTime: Date.now()\r\n };\r\n return Object.assign(Object.assign({}, oldEntry), { authToken: inProgressAuthToken });\r\n}\r\nfunction hasAuthTokenRequestTimedOut(authToken) {\r\n return (authToken.requestStatus === 1 /* RequestStatus.IN_PROGRESS */ &&\r\n authToken.requestTime + PENDING_TIMEOUT_MS < Date.now());\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Creates a Firebase Installation if there isn't one for the app and\r\n * returns the Installation ID.\r\n * @param installations - The `Installations` instance.\r\n *\r\n * @public\r\n */\r\nasync function getId(installations) {\r\n const installationsImpl = installations;\r\n const { installationEntry, registrationPromise } = await getInstallationEntry(installationsImpl);\r\n if (registrationPromise) {\r\n registrationPromise.catch(console.error);\r\n }\r\n else {\r\n // If the installation is already registered, update the authentication\r\n // token if needed.\r\n refreshAuthToken(installationsImpl).catch(console.error);\r\n }\r\n return installationEntry.fid;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Returns a Firebase Installations auth token, identifying the current\r\n * Firebase Installation.\r\n * @param installations - The `Installations` instance.\r\n * @param forceRefresh - Force refresh regardless of token expiration.\r\n *\r\n * @public\r\n */\r\nasync function getToken(installations, forceRefresh = false) {\r\n const installationsImpl = installations;\r\n await completeInstallationRegistration(installationsImpl);\r\n // At this point we either have a Registered Installation in the DB, or we've\r\n // already thrown an error.\r\n const authToken = await refreshAuthToken(installationsImpl, forceRefresh);\r\n return authToken.token;\r\n}\r\nasync function completeInstallationRegistration(installations) {\r\n const { registrationPromise } = await getInstallationEntry(installations);\r\n if (registrationPromise) {\r\n // A createInstallation request is in progress. Wait until it finishes.\r\n await registrationPromise;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function deleteInstallationRequest(appConfig, installationEntry) {\r\n const endpoint = getDeleteEndpoint(appConfig, installationEntry);\r\n const headers = getHeadersWithAuth(appConfig, installationEntry);\r\n const request = {\r\n method: 'DELETE',\r\n headers\r\n };\r\n const response = await retryIfServerError(() => fetch(endpoint, request));\r\n if (!response.ok) {\r\n throw await getErrorFromResponse('Delete Installation', response);\r\n }\r\n}\r\nfunction getDeleteEndpoint(appConfig, { fid }) {\r\n return `${getInstallationsEndpoint(appConfig)}/${fid}`;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Deletes the Firebase Installation and all associated data.\r\n * @param installations - The `Installations` instance.\r\n *\r\n * @public\r\n */\r\nasync function deleteInstallations(installations) {\r\n const { appConfig } = installations;\r\n const entry = await update(appConfig, oldEntry => {\r\n if (oldEntry && oldEntry.registrationStatus === 0 /* RequestStatus.NOT_STARTED */) {\r\n // Delete the unregistered entry without sending a deleteInstallation request.\r\n return undefined;\r\n }\r\n return oldEntry;\r\n });\r\n if (entry) {\r\n if (entry.registrationStatus === 1 /* RequestStatus.IN_PROGRESS */) {\r\n // Can't delete while trying to register.\r\n throw ERROR_FACTORY.create(\"delete-pending-registration\" /* ErrorCode.DELETE_PENDING_REGISTRATION */);\r\n }\r\n else if (entry.registrationStatus === 2 /* RequestStatus.COMPLETED */) {\r\n if (!navigator.onLine) {\r\n throw ERROR_FACTORY.create(\"app-offline\" /* ErrorCode.APP_OFFLINE */);\r\n }\r\n else {\r\n await deleteInstallationRequest(appConfig, entry);\r\n await remove(appConfig);\r\n }\r\n }\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Sets a new callback that will get called when Installation ID changes.\r\n * Returns an unsubscribe function that will remove the callback when called.\r\n * @param installations - The `Installations` instance.\r\n * @param callback - The callback function that is invoked when FID changes.\r\n * @returns A function that can be called to unsubscribe.\r\n *\r\n * @public\r\n */\r\nfunction onIdChange(installations, callback) {\r\n const { appConfig } = installations;\r\n addCallback(appConfig, callback);\r\n return () => {\r\n removeCallback(appConfig, callback);\r\n };\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Returns an instance of {@link Installations} associated with the given\r\n * {@link @firebase/app#FirebaseApp} instance.\r\n * @param app - The {@link @firebase/app#FirebaseApp} instance.\r\n *\r\n * @public\r\n */\r\nfunction getInstallations(app = getApp()) {\r\n const installationsImpl = _getProvider(app, 'installations').getImmediate();\r\n return installationsImpl;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction extractAppConfig(app) {\r\n if (!app || !app.options) {\r\n throw getMissingValueError('App Configuration');\r\n }\r\n if (!app.name) {\r\n throw getMissingValueError('App Name');\r\n }\r\n // Required app config keys\r\n const configKeys = [\r\n 'projectId',\r\n 'apiKey',\r\n 'appId'\r\n ];\r\n for (const keyName of configKeys) {\r\n if (!app.options[keyName]) {\r\n throw getMissingValueError(keyName);\r\n }\r\n }\r\n return {\r\n appName: app.name,\r\n projectId: app.options.projectId,\r\n apiKey: app.options.apiKey,\r\n appId: app.options.appId\r\n };\r\n}\r\nfunction getMissingValueError(valueName) {\r\n return ERROR_FACTORY.create(\"missing-app-config-values\" /* ErrorCode.MISSING_APP_CONFIG_VALUES */, {\r\n valueName\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst INSTALLATIONS_NAME = 'installations';\r\nconst INSTALLATIONS_NAME_INTERNAL = 'installations-internal';\r\nconst publicFactory = (container) => {\r\n const app = container.getProvider('app').getImmediate();\r\n // Throws if app isn't configured properly.\r\n const appConfig = extractAppConfig(app);\r\n const heartbeatServiceProvider = _getProvider(app, 'heartbeat');\r\n const installationsImpl = {\r\n app,\r\n appConfig,\r\n heartbeatServiceProvider,\r\n _delete: () => Promise.resolve()\r\n };\r\n return installationsImpl;\r\n};\r\nconst internalFactory = (container) => {\r\n const app = container.getProvider('app').getImmediate();\r\n // Internal FIS instance relies on public FIS instance.\r\n const installations = _getProvider(app, INSTALLATIONS_NAME).getImmediate();\r\n const installationsInternal = {\r\n getId: () => getId(installations),\r\n getToken: (forceRefresh) => getToken(installations, forceRefresh)\r\n };\r\n return installationsInternal;\r\n};\r\nfunction registerInstallations() {\r\n _registerComponent(new Component(INSTALLATIONS_NAME, publicFactory, \"PUBLIC\" /* ComponentType.PUBLIC */));\r\n _registerComponent(new Component(INSTALLATIONS_NAME_INTERNAL, internalFactory, \"PRIVATE\" /* ComponentType.PRIVATE */));\r\n}\n\n/**\r\n * Firebase Installations\r\n *\r\n * @packageDocumentation\r\n */\r\nregisterInstallations();\r\nregisterVersion(name, version);\r\n// BUILD_TARGET will be replaced by values like esm5, esm2017, cjs5, etc during the compilation\r\nregisterVersion(name, version, 'esm2017');\n\nexport { deleteInstallations, getId, getInstallations, getToken, onIdChange };\n","import { _getProvider, getApp, _registerComponent, registerVersion, SDK_VERSION } from '@firebase/app';\nimport { ErrorFactory, FirebaseError, getModularInstance, calculateBackoffMillis, isIndexedDBAvailable, validateIndexedDBOpenable } from '@firebase/util';\nimport { Component } from '@firebase/component';\nimport { LogLevel, Logger } from '@firebase/logger';\nimport '@firebase/installations';\n\nconst name = \"@firebase/remote-config\";\nconst version = \"0.4.4\";\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Shims a minimal AbortSignal.\r\n *\r\n *

    AbortController's AbortSignal conveniently decouples fetch timeout logic from other aspects\r\n * of networking, such as retries. Firebase doesn't use AbortController enough to justify a\r\n * polyfill recommendation, like we do with the Fetch API, but this minimal shim can easily be\r\n * swapped out if/when we do.\r\n */\r\nclass RemoteConfigAbortSignal {\r\n constructor() {\r\n this.listeners = [];\r\n }\r\n addEventListener(listener) {\r\n this.listeners.push(listener);\r\n }\r\n abort() {\r\n this.listeners.forEach(listener => listener());\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst RC_COMPONENT_NAME = 'remote-config';\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst ERROR_DESCRIPTION_MAP = {\r\n [\"registration-window\" /* ErrorCode.REGISTRATION_WINDOW */]: 'Undefined window object. This SDK only supports usage in a browser environment.',\r\n [\"registration-project-id\" /* ErrorCode.REGISTRATION_PROJECT_ID */]: 'Undefined project identifier. Check Firebase app initialization.',\r\n [\"registration-api-key\" /* ErrorCode.REGISTRATION_API_KEY */]: 'Undefined API key. Check Firebase app initialization.',\r\n [\"registration-app-id\" /* ErrorCode.REGISTRATION_APP_ID */]: 'Undefined app identifier. Check Firebase app initialization.',\r\n [\"storage-open\" /* ErrorCode.STORAGE_OPEN */]: 'Error thrown when opening storage. Original error: {$originalErrorMessage}.',\r\n [\"storage-get\" /* ErrorCode.STORAGE_GET */]: 'Error thrown when reading from storage. Original error: {$originalErrorMessage}.',\r\n [\"storage-set\" /* ErrorCode.STORAGE_SET */]: 'Error thrown when writing to storage. Original error: {$originalErrorMessage}.',\r\n [\"storage-delete\" /* ErrorCode.STORAGE_DELETE */]: 'Error thrown when deleting from storage. Original error: {$originalErrorMessage}.',\r\n [\"fetch-client-network\" /* ErrorCode.FETCH_NETWORK */]: 'Fetch client failed to connect to a network. Check Internet connection.' +\r\n ' Original error: {$originalErrorMessage}.',\r\n [\"fetch-timeout\" /* ErrorCode.FETCH_TIMEOUT */]: 'The config fetch request timed out. ' +\r\n ' Configure timeout using \"fetchTimeoutMillis\" SDK setting.',\r\n [\"fetch-throttle\" /* ErrorCode.FETCH_THROTTLE */]: 'The config fetch request timed out while in an exponential backoff state.' +\r\n ' Configure timeout using \"fetchTimeoutMillis\" SDK setting.' +\r\n ' Unix timestamp in milliseconds when fetch request throttling ends: {$throttleEndTimeMillis}.',\r\n [\"fetch-client-parse\" /* ErrorCode.FETCH_PARSE */]: 'Fetch client could not parse response.' +\r\n ' Original error: {$originalErrorMessage}.',\r\n [\"fetch-status\" /* ErrorCode.FETCH_STATUS */]: 'Fetch server returned an HTTP error status. HTTP status: {$httpStatus}.',\r\n [\"indexed-db-unavailable\" /* ErrorCode.INDEXED_DB_UNAVAILABLE */]: 'Indexed DB is not supported by current browser'\r\n};\r\nconst ERROR_FACTORY = new ErrorFactory('remoteconfig' /* service */, 'Remote Config' /* service name */, ERROR_DESCRIPTION_MAP);\r\n// Note how this is like typeof/instanceof, but for ErrorCode.\r\nfunction hasErrorCode(e, errorCode) {\r\n return e instanceof FirebaseError && e.code.indexOf(errorCode) !== -1;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst DEFAULT_VALUE_FOR_BOOLEAN = false;\r\nconst DEFAULT_VALUE_FOR_STRING = '';\r\nconst DEFAULT_VALUE_FOR_NUMBER = 0;\r\nconst BOOLEAN_TRUTHY_VALUES = ['1', 'true', 't', 'yes', 'y', 'on'];\r\nclass Value {\r\n constructor(_source, _value = DEFAULT_VALUE_FOR_STRING) {\r\n this._source = _source;\r\n this._value = _value;\r\n }\r\n asString() {\r\n return this._value;\r\n }\r\n asBoolean() {\r\n if (this._source === 'static') {\r\n return DEFAULT_VALUE_FOR_BOOLEAN;\r\n }\r\n return BOOLEAN_TRUTHY_VALUES.indexOf(this._value.toLowerCase()) >= 0;\r\n }\r\n asNumber() {\r\n if (this._source === 'static') {\r\n return DEFAULT_VALUE_FOR_NUMBER;\r\n }\r\n let num = Number(this._value);\r\n if (isNaN(num)) {\r\n num = DEFAULT_VALUE_FOR_NUMBER;\r\n }\r\n return num;\r\n }\r\n getSource() {\r\n return this._source;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n *\r\n * @param app - The {@link @firebase/app#FirebaseApp} instance.\r\n * @returns A {@link RemoteConfig} instance.\r\n *\r\n * @public\r\n */\r\nfunction getRemoteConfig(app = getApp()) {\r\n app = getModularInstance(app);\r\n const rcProvider = _getProvider(app, RC_COMPONENT_NAME);\r\n return rcProvider.getImmediate();\r\n}\r\n/**\r\n * Makes the last fetched config available to the getters.\r\n * @param remoteConfig - The {@link RemoteConfig} instance.\r\n * @returns A `Promise` which resolves to true if the current call activated the fetched configs.\r\n * If the fetched configs were already activated, the `Promise` will resolve to false.\r\n *\r\n * @public\r\n */\r\nasync function activate(remoteConfig) {\r\n const rc = getModularInstance(remoteConfig);\r\n const [lastSuccessfulFetchResponse, activeConfigEtag] = await Promise.all([\r\n rc._storage.getLastSuccessfulFetchResponse(),\r\n rc._storage.getActiveConfigEtag()\r\n ]);\r\n if (!lastSuccessfulFetchResponse ||\r\n !lastSuccessfulFetchResponse.config ||\r\n !lastSuccessfulFetchResponse.eTag ||\r\n lastSuccessfulFetchResponse.eTag === activeConfigEtag) {\r\n // Either there is no successful fetched config, or is the same as current active\r\n // config.\r\n return false;\r\n }\r\n await Promise.all([\r\n rc._storageCache.setActiveConfig(lastSuccessfulFetchResponse.config),\r\n rc._storage.setActiveConfigEtag(lastSuccessfulFetchResponse.eTag)\r\n ]);\r\n return true;\r\n}\r\n/**\r\n * Ensures the last activated config are available to the getters.\r\n * @param remoteConfig - The {@link RemoteConfig} instance.\r\n *\r\n * @returns A `Promise` that resolves when the last activated config is available to the getters.\r\n * @public\r\n */\r\nfunction ensureInitialized(remoteConfig) {\r\n const rc = getModularInstance(remoteConfig);\r\n if (!rc._initializePromise) {\r\n rc._initializePromise = rc._storageCache.loadFromStorage().then(() => {\r\n rc._isInitializationComplete = true;\r\n });\r\n }\r\n return rc._initializePromise;\r\n}\r\n/**\r\n * Fetches and caches configuration from the Remote Config service.\r\n * @param remoteConfig - The {@link RemoteConfig} instance.\r\n * @public\r\n */\r\nasync function fetchConfig(remoteConfig) {\r\n const rc = getModularInstance(remoteConfig);\r\n // Aborts the request after the given timeout, causing the fetch call to\r\n // reject with an `AbortError`.\r\n //\r\n //

    Aborting after the request completes is a no-op, so we don't need a\r\n // corresponding `clearTimeout`.\r\n //\r\n // Locating abort logic here because:\r\n // * it uses a developer setting (timeout)\r\n // * it applies to all retries (like curl's max-time arg)\r\n // * it is consistent with the Fetch API's signal input\r\n const abortSignal = new RemoteConfigAbortSignal();\r\n setTimeout(async () => {\r\n // Note a very low delay, eg < 10ms, can elapse before listeners are initialized.\r\n abortSignal.abort();\r\n }, rc.settings.fetchTimeoutMillis);\r\n // Catches *all* errors thrown by client so status can be set consistently.\r\n try {\r\n await rc._client.fetch({\r\n cacheMaxAgeMillis: rc.settings.minimumFetchIntervalMillis,\r\n signal: abortSignal\r\n });\r\n await rc._storageCache.setLastFetchStatus('success');\r\n }\r\n catch (e) {\r\n const lastFetchStatus = hasErrorCode(e, \"fetch-throttle\" /* ErrorCode.FETCH_THROTTLE */)\r\n ? 'throttle'\r\n : 'failure';\r\n await rc._storageCache.setLastFetchStatus(lastFetchStatus);\r\n throw e;\r\n }\r\n}\r\n/**\r\n * Gets all config.\r\n *\r\n * @param remoteConfig - The {@link RemoteConfig} instance.\r\n * @returns All config.\r\n *\r\n * @public\r\n */\r\nfunction getAll(remoteConfig) {\r\n const rc = getModularInstance(remoteConfig);\r\n return getAllKeys(rc._storageCache.getActiveConfig(), rc.defaultConfig).reduce((allConfigs, key) => {\r\n allConfigs[key] = getValue(remoteConfig, key);\r\n return allConfigs;\r\n }, {});\r\n}\r\n/**\r\n * Gets the value for the given key as a boolean.\r\n *\r\n * Convenience method for calling remoteConfig.getValue(key).asBoolean().\r\n *\r\n * @param remoteConfig - The {@link RemoteConfig} instance.\r\n * @param key - The name of the parameter.\r\n *\r\n * @returns The value for the given key as a boolean.\r\n * @public\r\n */\r\nfunction getBoolean(remoteConfig, key) {\r\n return getValue(getModularInstance(remoteConfig), key).asBoolean();\r\n}\r\n/**\r\n * Gets the value for the given key as a number.\r\n *\r\n * Convenience method for calling remoteConfig.getValue(key).asNumber().\r\n *\r\n * @param remoteConfig - The {@link RemoteConfig} instance.\r\n * @param key - The name of the parameter.\r\n *\r\n * @returns The value for the given key as a number.\r\n *\r\n * @public\r\n */\r\nfunction getNumber(remoteConfig, key) {\r\n return getValue(getModularInstance(remoteConfig), key).asNumber();\r\n}\r\n/**\r\n * Gets the value for the given key as a string.\r\n * Convenience method for calling remoteConfig.getValue(key).asString().\r\n *\r\n * @param remoteConfig - The {@link RemoteConfig} instance.\r\n * @param key - The name of the parameter.\r\n *\r\n * @returns The value for the given key as a string.\r\n *\r\n * @public\r\n */\r\nfunction getString(remoteConfig, key) {\r\n return getValue(getModularInstance(remoteConfig), key).asString();\r\n}\r\n/**\r\n * Gets the {@link Value} for the given key.\r\n *\r\n * @param remoteConfig - The {@link RemoteConfig} instance.\r\n * @param key - The name of the parameter.\r\n *\r\n * @returns The value for the given key.\r\n *\r\n * @public\r\n */\r\nfunction getValue(remoteConfig, key) {\r\n const rc = getModularInstance(remoteConfig);\r\n if (!rc._isInitializationComplete) {\r\n rc._logger.debug(`A value was requested for key \"${key}\" before SDK initialization completed.` +\r\n ' Await on ensureInitialized if the intent was to get a previously activated value.');\r\n }\r\n const activeConfig = rc._storageCache.getActiveConfig();\r\n if (activeConfig && activeConfig[key] !== undefined) {\r\n return new Value('remote', activeConfig[key]);\r\n }\r\n else if (rc.defaultConfig && rc.defaultConfig[key] !== undefined) {\r\n return new Value('default', String(rc.defaultConfig[key]));\r\n }\r\n rc._logger.debug(`Returning static value for key \"${key}\".` +\r\n ' Define a default or remote value if this is unintentional.');\r\n return new Value('static');\r\n}\r\n/**\r\n * Defines the log level to use.\r\n *\r\n * @param remoteConfig - The {@link RemoteConfig} instance.\r\n * @param logLevel - The log level to set.\r\n *\r\n * @public\r\n */\r\nfunction setLogLevel(remoteConfig, logLevel) {\r\n const rc = getModularInstance(remoteConfig);\r\n switch (logLevel) {\r\n case 'debug':\r\n rc._logger.logLevel = LogLevel.DEBUG;\r\n break;\r\n case 'silent':\r\n rc._logger.logLevel = LogLevel.SILENT;\r\n break;\r\n default:\r\n rc._logger.logLevel = LogLevel.ERROR;\r\n }\r\n}\r\n/**\r\n * Dedupes and returns an array of all the keys of the received objects.\r\n */\r\nfunction getAllKeys(obj1 = {}, obj2 = {}) {\r\n return Object.keys(Object.assign(Object.assign({}, obj1), obj2));\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Implements the {@link RemoteConfigClient} abstraction with success response caching.\r\n *\r\n *

    Comparable to the browser's Cache API for responses, but the Cache API requires a Service\r\n * Worker, which requires HTTPS, which would significantly complicate SDK installation. Also, the\r\n * Cache API doesn't support matching entries by time.\r\n */\r\nclass CachingClient {\r\n constructor(client, storage, storageCache, logger) {\r\n this.client = client;\r\n this.storage = storage;\r\n this.storageCache = storageCache;\r\n this.logger = logger;\r\n }\r\n /**\r\n * Returns true if the age of the cached fetched configs is less than or equal to\r\n * {@link Settings#minimumFetchIntervalInSeconds}.\r\n *\r\n *

    This is comparable to passing `headers = { 'Cache-Control': max-age }` to the\r\n * native Fetch API.\r\n *\r\n *

    Visible for testing.\r\n */\r\n isCachedDataFresh(cacheMaxAgeMillis, lastSuccessfulFetchTimestampMillis) {\r\n // Cache can only be fresh if it's populated.\r\n if (!lastSuccessfulFetchTimestampMillis) {\r\n this.logger.debug('Config fetch cache check. Cache unpopulated.');\r\n return false;\r\n }\r\n // Calculates age of cache entry.\r\n const cacheAgeMillis = Date.now() - lastSuccessfulFetchTimestampMillis;\r\n const isCachedDataFresh = cacheAgeMillis <= cacheMaxAgeMillis;\r\n this.logger.debug('Config fetch cache check.' +\r\n ` Cache age millis: ${cacheAgeMillis}.` +\r\n ` Cache max age millis (minimumFetchIntervalMillis setting): ${cacheMaxAgeMillis}.` +\r\n ` Is cache hit: ${isCachedDataFresh}.`);\r\n return isCachedDataFresh;\r\n }\r\n async fetch(request) {\r\n // Reads from persisted storage to avoid cache miss if callers don't wait on initialization.\r\n const [lastSuccessfulFetchTimestampMillis, lastSuccessfulFetchResponse] = await Promise.all([\r\n this.storage.getLastSuccessfulFetchTimestampMillis(),\r\n this.storage.getLastSuccessfulFetchResponse()\r\n ]);\r\n // Exits early on cache hit.\r\n if (lastSuccessfulFetchResponse &&\r\n this.isCachedDataFresh(request.cacheMaxAgeMillis, lastSuccessfulFetchTimestampMillis)) {\r\n return lastSuccessfulFetchResponse;\r\n }\r\n // Deviates from pure decorator by not honoring a passed ETag since we don't have a public API\r\n // that allows the caller to pass an ETag.\r\n request.eTag =\r\n lastSuccessfulFetchResponse && lastSuccessfulFetchResponse.eTag;\r\n // Falls back to service on cache miss.\r\n const response = await this.client.fetch(request);\r\n // Fetch throws for non-success responses, so success is guaranteed here.\r\n const storageOperations = [\r\n // Uses write-through cache for consistency with synchronous public API.\r\n this.storageCache.setLastSuccessfulFetchTimestampMillis(Date.now())\r\n ];\r\n if (response.status === 200) {\r\n // Caches response only if it has changed, ie non-304 responses.\r\n storageOperations.push(this.storage.setLastSuccessfulFetchResponse(response));\r\n }\r\n await Promise.all(storageOperations);\r\n return response;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Attempts to get the most accurate browser language setting.\r\n *\r\n *

    Adapted from getUserLanguage in packages/auth/src/utils.js for TypeScript.\r\n *\r\n *

    Defers default language specification to server logic for consistency.\r\n *\r\n * @param navigatorLanguage Enables tests to override read-only {@link NavigatorLanguage}.\r\n */\r\nfunction getUserLanguage(navigatorLanguage = navigator) {\r\n return (\r\n // Most reliable, but only supported in Chrome/Firefox.\r\n (navigatorLanguage.languages && navigatorLanguage.languages[0]) ||\r\n // Supported in most browsers, but returns the language of the browser\r\n // UI, not the language set in browser settings.\r\n navigatorLanguage.language\r\n // Polyfill otherwise.\r\n );\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Implements the Client abstraction for the Remote Config REST API.\r\n */\r\nclass RestClient {\r\n constructor(firebaseInstallations, sdkVersion, namespace, projectId, apiKey, appId) {\r\n this.firebaseInstallations = firebaseInstallations;\r\n this.sdkVersion = sdkVersion;\r\n this.namespace = namespace;\r\n this.projectId = projectId;\r\n this.apiKey = apiKey;\r\n this.appId = appId;\r\n }\r\n /**\r\n * Fetches from the Remote Config REST API.\r\n *\r\n * @throws a {@link ErrorCode.FETCH_NETWORK} error if {@link GlobalFetch#fetch} can't\r\n * connect to the network.\r\n * @throws a {@link ErrorCode.FETCH_PARSE} error if {@link Response#json} can't parse the\r\n * fetch response.\r\n * @throws a {@link ErrorCode.FETCH_STATUS} error if the service returns an HTTP error status.\r\n */\r\n async fetch(request) {\r\n const [installationId, installationToken] = await Promise.all([\r\n this.firebaseInstallations.getId(),\r\n this.firebaseInstallations.getToken()\r\n ]);\r\n const urlBase = window.FIREBASE_REMOTE_CONFIG_URL_BASE ||\r\n 'https://firebaseremoteconfig.googleapis.com';\r\n const url = `${urlBase}/v1/projects/${this.projectId}/namespaces/${this.namespace}:fetch?key=${this.apiKey}`;\r\n const headers = {\r\n 'Content-Type': 'application/json',\r\n 'Content-Encoding': 'gzip',\r\n // Deviates from pure decorator by not passing max-age header since we don't currently have\r\n // service behavior using that header.\r\n 'If-None-Match': request.eTag || '*'\r\n };\r\n const requestBody = {\r\n /* eslint-disable camelcase */\r\n sdk_version: this.sdkVersion,\r\n app_instance_id: installationId,\r\n app_instance_id_token: installationToken,\r\n app_id: this.appId,\r\n language_code: getUserLanguage()\r\n /* eslint-enable camelcase */\r\n };\r\n const options = {\r\n method: 'POST',\r\n headers,\r\n body: JSON.stringify(requestBody)\r\n };\r\n // This logic isn't REST-specific, but shimming abort logic isn't worth another decorator.\r\n const fetchPromise = fetch(url, options);\r\n const timeoutPromise = new Promise((_resolve, reject) => {\r\n // Maps async event listener to Promise API.\r\n request.signal.addEventListener(() => {\r\n // Emulates https://heycam.github.io/webidl/#aborterror\r\n const error = new Error('The operation was aborted.');\r\n error.name = 'AbortError';\r\n reject(error);\r\n });\r\n });\r\n let response;\r\n try {\r\n await Promise.race([fetchPromise, timeoutPromise]);\r\n response = await fetchPromise;\r\n }\r\n catch (originalError) {\r\n let errorCode = \"fetch-client-network\" /* ErrorCode.FETCH_NETWORK */;\r\n if ((originalError === null || originalError === void 0 ? void 0 : originalError.name) === 'AbortError') {\r\n errorCode = \"fetch-timeout\" /* ErrorCode.FETCH_TIMEOUT */;\r\n }\r\n throw ERROR_FACTORY.create(errorCode, {\r\n originalErrorMessage: originalError === null || originalError === void 0 ? void 0 : originalError.message\r\n });\r\n }\r\n let status = response.status;\r\n // Normalizes nullable header to optional.\r\n const responseEtag = response.headers.get('ETag') || undefined;\r\n let config;\r\n let state;\r\n // JSON parsing throws SyntaxError if the response body isn't a JSON string.\r\n // Requesting application/json and checking for a 200 ensures there's JSON data.\r\n if (response.status === 200) {\r\n let responseBody;\r\n try {\r\n responseBody = await response.json();\r\n }\r\n catch (originalError) {\r\n throw ERROR_FACTORY.create(\"fetch-client-parse\" /* ErrorCode.FETCH_PARSE */, {\r\n originalErrorMessage: originalError === null || originalError === void 0 ? void 0 : originalError.message\r\n });\r\n }\r\n config = responseBody['entries'];\r\n state = responseBody['state'];\r\n }\r\n // Normalizes based on legacy state.\r\n if (state === 'INSTANCE_STATE_UNSPECIFIED') {\r\n status = 500;\r\n }\r\n else if (state === 'NO_CHANGE') {\r\n status = 304;\r\n }\r\n else if (state === 'NO_TEMPLATE' || state === 'EMPTY_CONFIG') {\r\n // These cases can be fixed remotely, so normalize to safe value.\r\n config = {};\r\n }\r\n // Normalize to exception-based control flow for non-success cases.\r\n // Encapsulates HTTP specifics in this class as much as possible. Status is still the best for\r\n // differentiating success states (200 from 304; the state body param is undefined in a\r\n // standard 304).\r\n if (status !== 304 && status !== 200) {\r\n throw ERROR_FACTORY.create(\"fetch-status\" /* ErrorCode.FETCH_STATUS */, {\r\n httpStatus: status\r\n });\r\n }\r\n return { status, eTag: responseEtag, config };\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Supports waiting on a backoff by:\r\n *\r\n *

      \r\n *
    • Promisifying setTimeout, so we can set a timeout in our Promise chain
    • \r\n *
    • Listening on a signal bus for abort events, just like the Fetch API
    • \r\n *
    • Failing in the same way the Fetch API fails, so timing out a live request and a throttled\r\n * request appear the same.
    • \r\n *
    \r\n *\r\n *

    Visible for testing.\r\n */\r\nfunction setAbortableTimeout(signal, throttleEndTimeMillis) {\r\n return new Promise((resolve, reject) => {\r\n // Derives backoff from given end time, normalizing negative numbers to zero.\r\n const backoffMillis = Math.max(throttleEndTimeMillis - Date.now(), 0);\r\n const timeout = setTimeout(resolve, backoffMillis);\r\n // Adds listener, rather than sets onabort, because signal is a shared object.\r\n signal.addEventListener(() => {\r\n clearTimeout(timeout);\r\n // If the request completes before this timeout, the rejection has no effect.\r\n reject(ERROR_FACTORY.create(\"fetch-throttle\" /* ErrorCode.FETCH_THROTTLE */, {\r\n throttleEndTimeMillis\r\n }));\r\n });\r\n });\r\n}\r\n/**\r\n * Returns true if the {@link Error} indicates a fetch request may succeed later.\r\n */\r\nfunction isRetriableError(e) {\r\n if (!(e instanceof FirebaseError) || !e.customData) {\r\n return false;\r\n }\r\n // Uses string index defined by ErrorData, which FirebaseError implements.\r\n const httpStatus = Number(e.customData['httpStatus']);\r\n return (httpStatus === 429 ||\r\n httpStatus === 500 ||\r\n httpStatus === 503 ||\r\n httpStatus === 504);\r\n}\r\n/**\r\n * Decorates a Client with retry logic.\r\n *\r\n *

    Comparable to CachingClient, but uses backoff logic instead of cache max age and doesn't cache\r\n * responses (because the SDK has no use for error responses).\r\n */\r\nclass RetryingClient {\r\n constructor(client, storage) {\r\n this.client = client;\r\n this.storage = storage;\r\n }\r\n async fetch(request) {\r\n const throttleMetadata = (await this.storage.getThrottleMetadata()) || {\r\n backoffCount: 0,\r\n throttleEndTimeMillis: Date.now()\r\n };\r\n return this.attemptFetch(request, throttleMetadata);\r\n }\r\n /**\r\n * A recursive helper for attempting a fetch request repeatedly.\r\n *\r\n * @throws any non-retriable errors.\r\n */\r\n async attemptFetch(request, { throttleEndTimeMillis, backoffCount }) {\r\n // Starts with a (potentially zero) timeout to support resumption from stored state.\r\n // Ensures the throttle end time is honored if the last attempt timed out.\r\n // Note the SDK will never make a request if the fetch timeout expires at this point.\r\n await setAbortableTimeout(request.signal, throttleEndTimeMillis);\r\n try {\r\n const response = await this.client.fetch(request);\r\n // Note the SDK only clears throttle state if response is success or non-retriable.\r\n await this.storage.deleteThrottleMetadata();\r\n return response;\r\n }\r\n catch (e) {\r\n if (!isRetriableError(e)) {\r\n throw e;\r\n }\r\n // Increments backoff state.\r\n const throttleMetadata = {\r\n throttleEndTimeMillis: Date.now() + calculateBackoffMillis(backoffCount),\r\n backoffCount: backoffCount + 1\r\n };\r\n // Persists state.\r\n await this.storage.setThrottleMetadata(throttleMetadata);\r\n return this.attemptFetch(request, throttleMetadata);\r\n }\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst DEFAULT_FETCH_TIMEOUT_MILLIS = 60 * 1000; // One minute\r\nconst DEFAULT_CACHE_MAX_AGE_MILLIS = 12 * 60 * 60 * 1000; // Twelve hours.\r\n/**\r\n * Encapsulates business logic mapping network and storage dependencies to the public SDK API.\r\n *\r\n * See {@link https://github.com/FirebasePrivate/firebase-js-sdk/blob/master/packages/firebase/index.d.ts|interface documentation} for method descriptions.\r\n */\r\nclass RemoteConfig {\r\n constructor(\r\n // Required by FirebaseServiceFactory interface.\r\n app, \r\n // JS doesn't support private yet\r\n // (https://github.com/tc39/proposal-class-fields#private-fields), so we hint using an\r\n // underscore prefix.\r\n /**\r\n * @internal\r\n */\r\n _client, \r\n /**\r\n * @internal\r\n */\r\n _storageCache, \r\n /**\r\n * @internal\r\n */\r\n _storage, \r\n /**\r\n * @internal\r\n */\r\n _logger) {\r\n this.app = app;\r\n this._client = _client;\r\n this._storageCache = _storageCache;\r\n this._storage = _storage;\r\n this._logger = _logger;\r\n /**\r\n * Tracks completion of initialization promise.\r\n * @internal\r\n */\r\n this._isInitializationComplete = false;\r\n this.settings = {\r\n fetchTimeoutMillis: DEFAULT_FETCH_TIMEOUT_MILLIS,\r\n minimumFetchIntervalMillis: DEFAULT_CACHE_MAX_AGE_MILLIS\r\n };\r\n this.defaultConfig = {};\r\n }\r\n get fetchTimeMillis() {\r\n return this._storageCache.getLastSuccessfulFetchTimestampMillis() || -1;\r\n }\r\n get lastFetchStatus() {\r\n return this._storageCache.getLastFetchStatus() || 'no-fetch-yet';\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Converts an error event associated with a {@link IDBRequest} to a {@link FirebaseError}.\r\n */\r\nfunction toFirebaseError(event, errorCode) {\r\n const originalError = event.target.error || undefined;\r\n return ERROR_FACTORY.create(errorCode, {\r\n originalErrorMessage: originalError && (originalError === null || originalError === void 0 ? void 0 : originalError.message)\r\n });\r\n}\r\n/**\r\n * A general-purpose store keyed by app + namespace + {@link\r\n * ProjectNamespaceKeyFieldValue}.\r\n *\r\n *

    The Remote Config SDK can be used with multiple app installations, and each app can interact\r\n * with multiple namespaces, so this store uses app (ID + name) and namespace as common parent keys\r\n * for a set of key-value pairs. See {@link Storage#createCompositeKey}.\r\n *\r\n *

    Visible for testing.\r\n */\r\nconst APP_NAMESPACE_STORE = 'app_namespace_store';\r\nconst DB_NAME = 'firebase_remote_config';\r\nconst DB_VERSION = 1;\r\n// Visible for testing.\r\nfunction openDatabase() {\r\n return new Promise((resolve, reject) => {\r\n try {\r\n const request = indexedDB.open(DB_NAME, DB_VERSION);\r\n request.onerror = event => {\r\n reject(toFirebaseError(event, \"storage-open\" /* ErrorCode.STORAGE_OPEN */));\r\n };\r\n request.onsuccess = event => {\r\n resolve(event.target.result);\r\n };\r\n request.onupgradeneeded = event => {\r\n const db = event.target.result;\r\n // We don't use 'break' in this switch statement, the fall-through\r\n // behavior is what we want, because if there are multiple versions between\r\n // the old version and the current version, we want ALL the migrations\r\n // that correspond to those versions to run, not only the last one.\r\n // eslint-disable-next-line default-case\r\n switch (event.oldVersion) {\r\n case 0:\r\n db.createObjectStore(APP_NAMESPACE_STORE, {\r\n keyPath: 'compositeKey'\r\n });\r\n }\r\n };\r\n }\r\n catch (error) {\r\n reject(ERROR_FACTORY.create(\"storage-open\" /* ErrorCode.STORAGE_OPEN */, {\r\n originalErrorMessage: error === null || error === void 0 ? void 0 : error.message\r\n }));\r\n }\r\n });\r\n}\r\n/**\r\n * Abstracts data persistence.\r\n */\r\nclass Storage {\r\n /**\r\n * @param appId enables storage segmentation by app (ID + name).\r\n * @param appName enables storage segmentation by app (ID + name).\r\n * @param namespace enables storage segmentation by namespace.\r\n */\r\n constructor(appId, appName, namespace, openDbPromise = openDatabase()) {\r\n this.appId = appId;\r\n this.appName = appName;\r\n this.namespace = namespace;\r\n this.openDbPromise = openDbPromise;\r\n }\r\n getLastFetchStatus() {\r\n return this.get('last_fetch_status');\r\n }\r\n setLastFetchStatus(status) {\r\n return this.set('last_fetch_status', status);\r\n }\r\n // This is comparable to a cache entry timestamp. If we need to expire other data, we could\r\n // consider adding timestamp to all storage records and an optional max age arg to getters.\r\n getLastSuccessfulFetchTimestampMillis() {\r\n return this.get('last_successful_fetch_timestamp_millis');\r\n }\r\n setLastSuccessfulFetchTimestampMillis(timestamp) {\r\n return this.set('last_successful_fetch_timestamp_millis', timestamp);\r\n }\r\n getLastSuccessfulFetchResponse() {\r\n return this.get('last_successful_fetch_response');\r\n }\r\n setLastSuccessfulFetchResponse(response) {\r\n return this.set('last_successful_fetch_response', response);\r\n }\r\n getActiveConfig() {\r\n return this.get('active_config');\r\n }\r\n setActiveConfig(config) {\r\n return this.set('active_config', config);\r\n }\r\n getActiveConfigEtag() {\r\n return this.get('active_config_etag');\r\n }\r\n setActiveConfigEtag(etag) {\r\n return this.set('active_config_etag', etag);\r\n }\r\n getThrottleMetadata() {\r\n return this.get('throttle_metadata');\r\n }\r\n setThrottleMetadata(metadata) {\r\n return this.set('throttle_metadata', metadata);\r\n }\r\n deleteThrottleMetadata() {\r\n return this.delete('throttle_metadata');\r\n }\r\n async get(key) {\r\n const db = await this.openDbPromise;\r\n return new Promise((resolve, reject) => {\r\n const transaction = db.transaction([APP_NAMESPACE_STORE], 'readonly');\r\n const objectStore = transaction.objectStore(APP_NAMESPACE_STORE);\r\n const compositeKey = this.createCompositeKey(key);\r\n try {\r\n const request = objectStore.get(compositeKey);\r\n request.onerror = event => {\r\n reject(toFirebaseError(event, \"storage-get\" /* ErrorCode.STORAGE_GET */));\r\n };\r\n request.onsuccess = event => {\r\n const result = event.target.result;\r\n if (result) {\r\n resolve(result.value);\r\n }\r\n else {\r\n resolve(undefined);\r\n }\r\n };\r\n }\r\n catch (e) {\r\n reject(ERROR_FACTORY.create(\"storage-get\" /* ErrorCode.STORAGE_GET */, {\r\n originalErrorMessage: e === null || e === void 0 ? void 0 : e.message\r\n }));\r\n }\r\n });\r\n }\r\n async set(key, value) {\r\n const db = await this.openDbPromise;\r\n return new Promise((resolve, reject) => {\r\n const transaction = db.transaction([APP_NAMESPACE_STORE], 'readwrite');\r\n const objectStore = transaction.objectStore(APP_NAMESPACE_STORE);\r\n const compositeKey = this.createCompositeKey(key);\r\n try {\r\n const request = objectStore.put({\r\n compositeKey,\r\n value\r\n });\r\n request.onerror = (event) => {\r\n reject(toFirebaseError(event, \"storage-set\" /* ErrorCode.STORAGE_SET */));\r\n };\r\n request.onsuccess = () => {\r\n resolve();\r\n };\r\n }\r\n catch (e) {\r\n reject(ERROR_FACTORY.create(\"storage-set\" /* ErrorCode.STORAGE_SET */, {\r\n originalErrorMessage: e === null || e === void 0 ? void 0 : e.message\r\n }));\r\n }\r\n });\r\n }\r\n async delete(key) {\r\n const db = await this.openDbPromise;\r\n return new Promise((resolve, reject) => {\r\n const transaction = db.transaction([APP_NAMESPACE_STORE], 'readwrite');\r\n const objectStore = transaction.objectStore(APP_NAMESPACE_STORE);\r\n const compositeKey = this.createCompositeKey(key);\r\n try {\r\n const request = objectStore.delete(compositeKey);\r\n request.onerror = (event) => {\r\n reject(toFirebaseError(event, \"storage-delete\" /* ErrorCode.STORAGE_DELETE */));\r\n };\r\n request.onsuccess = () => {\r\n resolve();\r\n };\r\n }\r\n catch (e) {\r\n reject(ERROR_FACTORY.create(\"storage-delete\" /* ErrorCode.STORAGE_DELETE */, {\r\n originalErrorMessage: e === null || e === void 0 ? void 0 : e.message\r\n }));\r\n }\r\n });\r\n }\r\n // Facilitates composite key functionality (which is unsupported in IE).\r\n createCompositeKey(key) {\r\n return [this.appId, this.appName, this.namespace, key].join();\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * A memory cache layer over storage to support the SDK's synchronous read requirements.\r\n */\r\nclass StorageCache {\r\n constructor(storage) {\r\n this.storage = storage;\r\n }\r\n /**\r\n * Memory-only getters\r\n */\r\n getLastFetchStatus() {\r\n return this.lastFetchStatus;\r\n }\r\n getLastSuccessfulFetchTimestampMillis() {\r\n return this.lastSuccessfulFetchTimestampMillis;\r\n }\r\n getActiveConfig() {\r\n return this.activeConfig;\r\n }\r\n /**\r\n * Read-ahead getter\r\n */\r\n async loadFromStorage() {\r\n const lastFetchStatusPromise = this.storage.getLastFetchStatus();\r\n const lastSuccessfulFetchTimestampMillisPromise = this.storage.getLastSuccessfulFetchTimestampMillis();\r\n const activeConfigPromise = this.storage.getActiveConfig();\r\n // Note:\r\n // 1. we consistently check for undefined to avoid clobbering defined values\r\n // in memory\r\n // 2. we defer awaiting to improve readability, as opposed to destructuring\r\n // a Promise.all result, for example\r\n const lastFetchStatus = await lastFetchStatusPromise;\r\n if (lastFetchStatus) {\r\n this.lastFetchStatus = lastFetchStatus;\r\n }\r\n const lastSuccessfulFetchTimestampMillis = await lastSuccessfulFetchTimestampMillisPromise;\r\n if (lastSuccessfulFetchTimestampMillis) {\r\n this.lastSuccessfulFetchTimestampMillis =\r\n lastSuccessfulFetchTimestampMillis;\r\n }\r\n const activeConfig = await activeConfigPromise;\r\n if (activeConfig) {\r\n this.activeConfig = activeConfig;\r\n }\r\n }\r\n /**\r\n * Write-through setters\r\n */\r\n setLastFetchStatus(status) {\r\n this.lastFetchStatus = status;\r\n return this.storage.setLastFetchStatus(status);\r\n }\r\n setLastSuccessfulFetchTimestampMillis(timestampMillis) {\r\n this.lastSuccessfulFetchTimestampMillis = timestampMillis;\r\n return this.storage.setLastSuccessfulFetchTimestampMillis(timestampMillis);\r\n }\r\n setActiveConfig(activeConfig) {\r\n this.activeConfig = activeConfig;\r\n return this.storage.setActiveConfig(activeConfig);\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction registerRemoteConfig() {\r\n _registerComponent(new Component(RC_COMPONENT_NAME, remoteConfigFactory, \"PUBLIC\" /* ComponentType.PUBLIC */).setMultipleInstances(true));\r\n registerVersion(name, version);\r\n // BUILD_TARGET will be replaced by values like esm5, esm2017, cjs5, etc during the compilation\r\n registerVersion(name, version, 'esm2017');\r\n function remoteConfigFactory(container, { instanceIdentifier: namespace }) {\r\n /* Dependencies */\r\n // getImmediate for FirebaseApp will always succeed\r\n const app = container.getProvider('app').getImmediate();\r\n // The following call will always succeed because rc has `import '@firebase/installations'`\r\n const installations = container\r\n .getProvider('installations-internal')\r\n .getImmediate();\r\n // Guards against the SDK being used in non-browser environments.\r\n if (typeof window === 'undefined') {\r\n throw ERROR_FACTORY.create(\"registration-window\" /* ErrorCode.REGISTRATION_WINDOW */);\r\n }\r\n // Guards against the SDK being used when indexedDB is not available.\r\n if (!isIndexedDBAvailable()) {\r\n throw ERROR_FACTORY.create(\"indexed-db-unavailable\" /* ErrorCode.INDEXED_DB_UNAVAILABLE */);\r\n }\r\n // Normalizes optional inputs.\r\n const { projectId, apiKey, appId } = app.options;\r\n if (!projectId) {\r\n throw ERROR_FACTORY.create(\"registration-project-id\" /* ErrorCode.REGISTRATION_PROJECT_ID */);\r\n }\r\n if (!apiKey) {\r\n throw ERROR_FACTORY.create(\"registration-api-key\" /* ErrorCode.REGISTRATION_API_KEY */);\r\n }\r\n if (!appId) {\r\n throw ERROR_FACTORY.create(\"registration-app-id\" /* ErrorCode.REGISTRATION_APP_ID */);\r\n }\r\n namespace = namespace || 'firebase';\r\n const storage = new Storage(appId, app.name, namespace);\r\n const storageCache = new StorageCache(storage);\r\n const logger = new Logger(name);\r\n // Sets ERROR as the default log level.\r\n // See RemoteConfig#setLogLevel for corresponding normalization to ERROR log level.\r\n logger.logLevel = LogLevel.ERROR;\r\n const restClient = new RestClient(installations, \r\n // Uses the JS SDK version, by which the RC package version can be deduced, if necessary.\r\n SDK_VERSION, namespace, projectId, apiKey, appId);\r\n const retryingClient = new RetryingClient(restClient, storage);\r\n const cachingClient = new CachingClient(retryingClient, storage, storageCache, logger);\r\n const remoteConfigInstance = new RemoteConfig(app, cachingClient, storageCache, storage, logger);\r\n // Starts warming cache.\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n ensureInitialized(remoteConfigInstance);\r\n return remoteConfigInstance;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// This API is put in a separate file, so we can stub fetchConfig and activate in tests.\r\n// It's not possible to stub standalone functions from the same module.\r\n/**\r\n *\r\n * Performs fetch and activate operations, as a convenience.\r\n *\r\n * @param remoteConfig - The {@link RemoteConfig} instance.\r\n *\r\n * @returns A `Promise` which resolves to true if the current call activated the fetched configs.\r\n * If the fetched configs were already activated, the `Promise` will resolve to false.\r\n *\r\n * @public\r\n */\r\nasync function fetchAndActivate(remoteConfig) {\r\n remoteConfig = getModularInstance(remoteConfig);\r\n await fetchConfig(remoteConfig);\r\n return activate(remoteConfig);\r\n}\r\n/**\r\n * This method provides two different checks:\r\n *\r\n * 1. Check if IndexedDB exists in the browser environment.\r\n * 2. Check if the current browser context allows IndexedDB `open()` calls.\r\n *\r\n * @returns A `Promise` which resolves to true if a {@link RemoteConfig} instance\r\n * can be initialized in this environment, or false if it cannot.\r\n * @public\r\n */\r\nasync function isSupported() {\r\n if (!isIndexedDBAvailable()) {\r\n return false;\r\n }\r\n try {\r\n const isDBOpenable = await validateIndexedDBOpenable();\r\n return isDBOpenable;\r\n }\r\n catch (error) {\r\n return false;\r\n }\r\n}\n\n/**\r\n * Firebase Remote Config\r\n *\r\n * @packageDocumentation\r\n */\r\n/** register component and version */\r\nregisterRemoteConfig();\n\nexport { activate, ensureInitialized, fetchAndActivate, fetchConfig, getAll, getBoolean, getNumber, getRemoteConfig, getString, getValue, isSupported, setLogLevel };\n","import '@firebase/installations';\nimport { Component } from '@firebase/component';\nimport { openDB, deleteDB } from 'idb';\nimport { ErrorFactory, validateIndexedDBOpenable, isIndexedDBAvailable, areCookiesEnabled, getModularInstance } from '@firebase/util';\nimport { _registerComponent, registerVersion, _getProvider, getApp } from '@firebase/app';\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst DEFAULT_SW_PATH = '/firebase-messaging-sw.js';\r\nconst DEFAULT_SW_SCOPE = '/firebase-cloud-messaging-push-scope';\r\nconst DEFAULT_VAPID_KEY = 'BDOU99-h67HcA6JeFXHbSNMu7e2yNNu3RzoMj8TM4W88jITfq7ZmPvIM1Iv-4_l2LxQcYwhqby2xGpWwzjfAnG4';\r\nconst ENDPOINT = 'https://fcmregistrations.googleapis.com/v1';\r\nconst CONSOLE_CAMPAIGN_ID = 'google.c.a.c_id';\r\nconst CONSOLE_CAMPAIGN_NAME = 'google.c.a.c_l';\r\nconst CONSOLE_CAMPAIGN_TIME = 'google.c.a.ts';\r\n/** Set to '1' if Analytics is enabled for the campaign */\r\nconst CONSOLE_CAMPAIGN_ANALYTICS_ENABLED = 'google.c.a.e';\r\nvar MessageType$1;\r\n(function (MessageType) {\r\n MessageType[MessageType[\"DATA_MESSAGE\"] = 1] = \"DATA_MESSAGE\";\r\n MessageType[MessageType[\"DISPLAY_NOTIFICATION\"] = 3] = \"DISPLAY_NOTIFICATION\";\r\n})(MessageType$1 || (MessageType$1 = {}));\n\n/**\r\n * @license\r\n * Copyright 2018 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except\r\n * in compliance with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software distributed under the License\r\n * is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express\r\n * or implied. See the License for the specific language governing permissions and limitations under\r\n * the License.\r\n */\r\nvar MessageType;\r\n(function (MessageType) {\r\n MessageType[\"PUSH_RECEIVED\"] = \"push-received\";\r\n MessageType[\"NOTIFICATION_CLICKED\"] = \"notification-clicked\";\r\n})(MessageType || (MessageType = {}));\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction arrayToBase64(array) {\r\n const uint8Array = new Uint8Array(array);\r\n const base64String = btoa(String.fromCharCode(...uint8Array));\r\n return base64String.replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_');\r\n}\r\nfunction base64ToArray(base64String) {\r\n const padding = '='.repeat((4 - (base64String.length % 4)) % 4);\r\n const base64 = (base64String + padding)\r\n .replace(/\\-/g, '+')\r\n .replace(/_/g, '/');\r\n const rawData = atob(base64);\r\n const outputArray = new Uint8Array(rawData.length);\r\n for (let i = 0; i < rawData.length; ++i) {\r\n outputArray[i] = rawData.charCodeAt(i);\r\n }\r\n return outputArray;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst OLD_DB_NAME = 'fcm_token_details_db';\r\n/**\r\n * The last DB version of 'fcm_token_details_db' was 4. This is one higher, so that the upgrade\r\n * callback is called for all versions of the old DB.\r\n */\r\nconst OLD_DB_VERSION = 5;\r\nconst OLD_OBJECT_STORE_NAME = 'fcm_token_object_Store';\r\nasync function migrateOldDatabase(senderId) {\r\n if ('databases' in indexedDB) {\r\n // indexedDb.databases() is an IndexedDB v3 API and does not exist in all browsers. TODO: Remove\r\n // typecast when it lands in TS types.\r\n const databases = await indexedDB.databases();\r\n const dbNames = databases.map(db => db.name);\r\n if (!dbNames.includes(OLD_DB_NAME)) {\r\n // old DB didn't exist, no need to open.\r\n return null;\r\n }\r\n }\r\n let tokenDetails = null;\r\n const db = await openDB(OLD_DB_NAME, OLD_DB_VERSION, {\r\n upgrade: async (db, oldVersion, newVersion, upgradeTransaction) => {\r\n var _a;\r\n if (oldVersion < 2) {\r\n // Database too old, skip migration.\r\n return;\r\n }\r\n if (!db.objectStoreNames.contains(OLD_OBJECT_STORE_NAME)) {\r\n // Database did not exist. Nothing to do.\r\n return;\r\n }\r\n const objectStore = upgradeTransaction.objectStore(OLD_OBJECT_STORE_NAME);\r\n const value = await objectStore.index('fcmSenderId').get(senderId);\r\n await objectStore.clear();\r\n if (!value) {\r\n // No entry in the database, nothing to migrate.\r\n return;\r\n }\r\n if (oldVersion === 2) {\r\n const oldDetails = value;\r\n if (!oldDetails.auth || !oldDetails.p256dh || !oldDetails.endpoint) {\r\n return;\r\n }\r\n tokenDetails = {\r\n token: oldDetails.fcmToken,\r\n createTime: (_a = oldDetails.createTime) !== null && _a !== void 0 ? _a : Date.now(),\r\n subscriptionOptions: {\r\n auth: oldDetails.auth,\r\n p256dh: oldDetails.p256dh,\r\n endpoint: oldDetails.endpoint,\r\n swScope: oldDetails.swScope,\r\n vapidKey: typeof oldDetails.vapidKey === 'string'\r\n ? oldDetails.vapidKey\r\n : arrayToBase64(oldDetails.vapidKey)\r\n }\r\n };\r\n }\r\n else if (oldVersion === 3) {\r\n const oldDetails = value;\r\n tokenDetails = {\r\n token: oldDetails.fcmToken,\r\n createTime: oldDetails.createTime,\r\n subscriptionOptions: {\r\n auth: arrayToBase64(oldDetails.auth),\r\n p256dh: arrayToBase64(oldDetails.p256dh),\r\n endpoint: oldDetails.endpoint,\r\n swScope: oldDetails.swScope,\r\n vapidKey: arrayToBase64(oldDetails.vapidKey)\r\n }\r\n };\r\n }\r\n else if (oldVersion === 4) {\r\n const oldDetails = value;\r\n tokenDetails = {\r\n token: oldDetails.fcmToken,\r\n createTime: oldDetails.createTime,\r\n subscriptionOptions: {\r\n auth: arrayToBase64(oldDetails.auth),\r\n p256dh: arrayToBase64(oldDetails.p256dh),\r\n endpoint: oldDetails.endpoint,\r\n swScope: oldDetails.swScope,\r\n vapidKey: arrayToBase64(oldDetails.vapidKey)\r\n }\r\n };\r\n }\r\n }\r\n });\r\n db.close();\r\n // Delete all old databases.\r\n await deleteDB(OLD_DB_NAME);\r\n await deleteDB('fcm_vapid_details_db');\r\n await deleteDB('undefined');\r\n return checkTokenDetails(tokenDetails) ? tokenDetails : null;\r\n}\r\nfunction checkTokenDetails(tokenDetails) {\r\n if (!tokenDetails || !tokenDetails.subscriptionOptions) {\r\n return false;\r\n }\r\n const { subscriptionOptions } = tokenDetails;\r\n return (typeof tokenDetails.createTime === 'number' &&\r\n tokenDetails.createTime > 0 &&\r\n typeof tokenDetails.token === 'string' &&\r\n tokenDetails.token.length > 0 &&\r\n typeof subscriptionOptions.auth === 'string' &&\r\n subscriptionOptions.auth.length > 0 &&\r\n typeof subscriptionOptions.p256dh === 'string' &&\r\n subscriptionOptions.p256dh.length > 0 &&\r\n typeof subscriptionOptions.endpoint === 'string' &&\r\n subscriptionOptions.endpoint.length > 0 &&\r\n typeof subscriptionOptions.swScope === 'string' &&\r\n subscriptionOptions.swScope.length > 0 &&\r\n typeof subscriptionOptions.vapidKey === 'string' &&\r\n subscriptionOptions.vapidKey.length > 0);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// Exported for tests.\r\nconst DATABASE_NAME = 'firebase-messaging-database';\r\nconst DATABASE_VERSION = 1;\r\nconst OBJECT_STORE_NAME = 'firebase-messaging-store';\r\nlet dbPromise = null;\r\nfunction getDbPromise() {\r\n if (!dbPromise) {\r\n dbPromise = openDB(DATABASE_NAME, DATABASE_VERSION, {\r\n upgrade: (upgradeDb, oldVersion) => {\r\n // We don't use 'break' in this switch statement, the fall-through behavior is what we want,\r\n // because if there are multiple versions between the old version and the current version, we\r\n // want ALL the migrations that correspond to those versions to run, not only the last one.\r\n // eslint-disable-next-line default-case\r\n switch (oldVersion) {\r\n case 0:\r\n upgradeDb.createObjectStore(OBJECT_STORE_NAME);\r\n }\r\n }\r\n });\r\n }\r\n return dbPromise;\r\n}\r\n/** Gets record(s) from the objectStore that match the given key. */\r\nasync function dbGet(firebaseDependencies) {\r\n const key = getKey(firebaseDependencies);\r\n const db = await getDbPromise();\r\n const tokenDetails = (await db\r\n .transaction(OBJECT_STORE_NAME)\r\n .objectStore(OBJECT_STORE_NAME)\r\n .get(key));\r\n if (tokenDetails) {\r\n return tokenDetails;\r\n }\r\n else {\r\n // Check if there is a tokenDetails object in the old DB.\r\n const oldTokenDetails = await migrateOldDatabase(firebaseDependencies.appConfig.senderId);\r\n if (oldTokenDetails) {\r\n await dbSet(firebaseDependencies, oldTokenDetails);\r\n return oldTokenDetails;\r\n }\r\n }\r\n}\r\n/** Assigns or overwrites the record for the given key with the given value. */\r\nasync function dbSet(firebaseDependencies, tokenDetails) {\r\n const key = getKey(firebaseDependencies);\r\n const db = await getDbPromise();\r\n const tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\r\n await tx.objectStore(OBJECT_STORE_NAME).put(tokenDetails, key);\r\n await tx.done;\r\n return tokenDetails;\r\n}\r\n/** Removes record(s) from the objectStore that match the given key. */\r\nasync function dbRemove(firebaseDependencies) {\r\n const key = getKey(firebaseDependencies);\r\n const db = await getDbPromise();\r\n const tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\r\n await tx.objectStore(OBJECT_STORE_NAME).delete(key);\r\n await tx.done;\r\n}\r\nfunction getKey({ appConfig }) {\r\n return appConfig.appId;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst ERROR_MAP = {\r\n [\"missing-app-config-values\" /* ErrorCode.MISSING_APP_CONFIG_VALUES */]: 'Missing App configuration value: \"{$valueName}\"',\r\n [\"only-available-in-window\" /* ErrorCode.AVAILABLE_IN_WINDOW */]: 'This method is available in a Window context.',\r\n [\"only-available-in-sw\" /* ErrorCode.AVAILABLE_IN_SW */]: 'This method is available in a service worker context.',\r\n [\"permission-default\" /* ErrorCode.PERMISSION_DEFAULT */]: 'The notification permission was not granted and dismissed instead.',\r\n [\"permission-blocked\" /* ErrorCode.PERMISSION_BLOCKED */]: 'The notification permission was not granted and blocked instead.',\r\n [\"unsupported-browser\" /* ErrorCode.UNSUPPORTED_BROWSER */]: \"This browser doesn't support the API's required to use the Firebase SDK.\",\r\n [\"indexed-db-unsupported\" /* ErrorCode.INDEXED_DB_UNSUPPORTED */]: \"This browser doesn't support indexedDb.open() (ex. Safari iFrame, Firefox Private Browsing, etc)\",\r\n [\"failed-service-worker-registration\" /* ErrorCode.FAILED_DEFAULT_REGISTRATION */]: 'We are unable to register the default service worker. {$browserErrorMessage}',\r\n [\"token-subscribe-failed\" /* ErrorCode.TOKEN_SUBSCRIBE_FAILED */]: 'A problem occurred while subscribing the user to FCM: {$errorInfo}',\r\n [\"token-subscribe-no-token\" /* ErrorCode.TOKEN_SUBSCRIBE_NO_TOKEN */]: 'FCM returned no token when subscribing the user to push.',\r\n [\"token-unsubscribe-failed\" /* ErrorCode.TOKEN_UNSUBSCRIBE_FAILED */]: 'A problem occurred while unsubscribing the ' +\r\n 'user from FCM: {$errorInfo}',\r\n [\"token-update-failed\" /* ErrorCode.TOKEN_UPDATE_FAILED */]: 'A problem occurred while updating the user from FCM: {$errorInfo}',\r\n [\"token-update-no-token\" /* ErrorCode.TOKEN_UPDATE_NO_TOKEN */]: 'FCM returned no token when updating the user to push.',\r\n [\"use-sw-after-get-token\" /* ErrorCode.USE_SW_AFTER_GET_TOKEN */]: 'The useServiceWorker() method may only be called once and must be ' +\r\n 'called before calling getToken() to ensure your service worker is used.',\r\n [\"invalid-sw-registration\" /* ErrorCode.INVALID_SW_REGISTRATION */]: 'The input to useServiceWorker() must be a ServiceWorkerRegistration.',\r\n [\"invalid-bg-handler\" /* ErrorCode.INVALID_BG_HANDLER */]: 'The input to setBackgroundMessageHandler() must be a function.',\r\n [\"invalid-vapid-key\" /* ErrorCode.INVALID_VAPID_KEY */]: 'The public VAPID key must be a string.',\r\n [\"use-vapid-key-after-get-token\" /* ErrorCode.USE_VAPID_KEY_AFTER_GET_TOKEN */]: 'The usePublicVapidKey() method may only be called once and must be ' +\r\n 'called before calling getToken() to ensure your VAPID key is used.'\r\n};\r\nconst ERROR_FACTORY = new ErrorFactory('messaging', 'Messaging', ERROR_MAP);\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function requestGetToken(firebaseDependencies, subscriptionOptions) {\r\n const headers = await getHeaders(firebaseDependencies);\r\n const body = getBody(subscriptionOptions);\r\n const subscribeOptions = {\r\n method: 'POST',\r\n headers,\r\n body: JSON.stringify(body)\r\n };\r\n let responseData;\r\n try {\r\n const response = await fetch(getEndpoint(firebaseDependencies.appConfig), subscribeOptions);\r\n responseData = await response.json();\r\n }\r\n catch (err) {\r\n throw ERROR_FACTORY.create(\"token-subscribe-failed\" /* ErrorCode.TOKEN_SUBSCRIBE_FAILED */, {\r\n errorInfo: err === null || err === void 0 ? void 0 : err.toString()\r\n });\r\n }\r\n if (responseData.error) {\r\n const message = responseData.error.message;\r\n throw ERROR_FACTORY.create(\"token-subscribe-failed\" /* ErrorCode.TOKEN_SUBSCRIBE_FAILED */, {\r\n errorInfo: message\r\n });\r\n }\r\n if (!responseData.token) {\r\n throw ERROR_FACTORY.create(\"token-subscribe-no-token\" /* ErrorCode.TOKEN_SUBSCRIBE_NO_TOKEN */);\r\n }\r\n return responseData.token;\r\n}\r\nasync function requestUpdateToken(firebaseDependencies, tokenDetails) {\r\n const headers = await getHeaders(firebaseDependencies);\r\n const body = getBody(tokenDetails.subscriptionOptions);\r\n const updateOptions = {\r\n method: 'PATCH',\r\n headers,\r\n body: JSON.stringify(body)\r\n };\r\n let responseData;\r\n try {\r\n const response = await fetch(`${getEndpoint(firebaseDependencies.appConfig)}/${tokenDetails.token}`, updateOptions);\r\n responseData = await response.json();\r\n }\r\n catch (err) {\r\n throw ERROR_FACTORY.create(\"token-update-failed\" /* ErrorCode.TOKEN_UPDATE_FAILED */, {\r\n errorInfo: err === null || err === void 0 ? void 0 : err.toString()\r\n });\r\n }\r\n if (responseData.error) {\r\n const message = responseData.error.message;\r\n throw ERROR_FACTORY.create(\"token-update-failed\" /* ErrorCode.TOKEN_UPDATE_FAILED */, {\r\n errorInfo: message\r\n });\r\n }\r\n if (!responseData.token) {\r\n throw ERROR_FACTORY.create(\"token-update-no-token\" /* ErrorCode.TOKEN_UPDATE_NO_TOKEN */);\r\n }\r\n return responseData.token;\r\n}\r\nasync function requestDeleteToken(firebaseDependencies, token) {\r\n const headers = await getHeaders(firebaseDependencies);\r\n const unsubscribeOptions = {\r\n method: 'DELETE',\r\n headers\r\n };\r\n try {\r\n const response = await fetch(`${getEndpoint(firebaseDependencies.appConfig)}/${token}`, unsubscribeOptions);\r\n const responseData = await response.json();\r\n if (responseData.error) {\r\n const message = responseData.error.message;\r\n throw ERROR_FACTORY.create(\"token-unsubscribe-failed\" /* ErrorCode.TOKEN_UNSUBSCRIBE_FAILED */, {\r\n errorInfo: message\r\n });\r\n }\r\n }\r\n catch (err) {\r\n throw ERROR_FACTORY.create(\"token-unsubscribe-failed\" /* ErrorCode.TOKEN_UNSUBSCRIBE_FAILED */, {\r\n errorInfo: err === null || err === void 0 ? void 0 : err.toString()\r\n });\r\n }\r\n}\r\nfunction getEndpoint({ projectId }) {\r\n return `${ENDPOINT}/projects/${projectId}/registrations`;\r\n}\r\nasync function getHeaders({ appConfig, installations }) {\r\n const authToken = await installations.getToken();\r\n return new Headers({\r\n 'Content-Type': 'application/json',\r\n Accept: 'application/json',\r\n 'x-goog-api-key': appConfig.apiKey,\r\n 'x-goog-firebase-installations-auth': `FIS ${authToken}`\r\n });\r\n}\r\nfunction getBody({ p256dh, auth, endpoint, vapidKey }) {\r\n const body = {\r\n web: {\r\n endpoint,\r\n auth,\r\n p256dh\r\n }\r\n };\r\n if (vapidKey !== DEFAULT_VAPID_KEY) {\r\n body.web.applicationPubKey = vapidKey;\r\n }\r\n return body;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// UpdateRegistration will be called once every week.\r\nconst TOKEN_EXPIRATION_MS = 7 * 24 * 60 * 60 * 1000; // 7 days\r\nasync function getTokenInternal(messaging) {\r\n const pushSubscription = await getPushSubscription(messaging.swRegistration, messaging.vapidKey);\r\n const subscriptionOptions = {\r\n vapidKey: messaging.vapidKey,\r\n swScope: messaging.swRegistration.scope,\r\n endpoint: pushSubscription.endpoint,\r\n auth: arrayToBase64(pushSubscription.getKey('auth')),\r\n p256dh: arrayToBase64(pushSubscription.getKey('p256dh'))\r\n };\r\n const tokenDetails = await dbGet(messaging.firebaseDependencies);\r\n if (!tokenDetails) {\r\n // No token, get a new one.\r\n return getNewToken(messaging.firebaseDependencies, subscriptionOptions);\r\n }\r\n else if (!isTokenValid(tokenDetails.subscriptionOptions, subscriptionOptions)) {\r\n // Invalid token, get a new one.\r\n try {\r\n await requestDeleteToken(messaging.firebaseDependencies, tokenDetails.token);\r\n }\r\n catch (e) {\r\n // Suppress errors because of #2364\r\n console.warn(e);\r\n }\r\n return getNewToken(messaging.firebaseDependencies, subscriptionOptions);\r\n }\r\n else if (Date.now() >= tokenDetails.createTime + TOKEN_EXPIRATION_MS) {\r\n // Weekly token refresh\r\n return updateToken(messaging, {\r\n token: tokenDetails.token,\r\n createTime: Date.now(),\r\n subscriptionOptions\r\n });\r\n }\r\n else {\r\n // Valid token, nothing to do.\r\n return tokenDetails.token;\r\n }\r\n}\r\n/**\r\n * This method deletes the token from the database, unsubscribes the token from FCM, and unregisters\r\n * the push subscription if it exists.\r\n */\r\nasync function deleteTokenInternal(messaging) {\r\n const tokenDetails = await dbGet(messaging.firebaseDependencies);\r\n if (tokenDetails) {\r\n await requestDeleteToken(messaging.firebaseDependencies, tokenDetails.token);\r\n await dbRemove(messaging.firebaseDependencies);\r\n }\r\n // Unsubscribe from the push subscription.\r\n const pushSubscription = await messaging.swRegistration.pushManager.getSubscription();\r\n if (pushSubscription) {\r\n return pushSubscription.unsubscribe();\r\n }\r\n // If there's no SW, consider it a success.\r\n return true;\r\n}\r\nasync function updateToken(messaging, tokenDetails) {\r\n try {\r\n const updatedToken = await requestUpdateToken(messaging.firebaseDependencies, tokenDetails);\r\n const updatedTokenDetails = Object.assign(Object.assign({}, tokenDetails), { token: updatedToken, createTime: Date.now() });\r\n await dbSet(messaging.firebaseDependencies, updatedTokenDetails);\r\n return updatedToken;\r\n }\r\n catch (e) {\r\n await deleteTokenInternal(messaging);\r\n throw e;\r\n }\r\n}\r\nasync function getNewToken(firebaseDependencies, subscriptionOptions) {\r\n const token = await requestGetToken(firebaseDependencies, subscriptionOptions);\r\n const tokenDetails = {\r\n token,\r\n createTime: Date.now(),\r\n subscriptionOptions\r\n };\r\n await dbSet(firebaseDependencies, tokenDetails);\r\n return tokenDetails.token;\r\n}\r\n/**\r\n * Gets a PushSubscription for the current user.\r\n */\r\nasync function getPushSubscription(swRegistration, vapidKey) {\r\n const subscription = await swRegistration.pushManager.getSubscription();\r\n if (subscription) {\r\n return subscription;\r\n }\r\n return swRegistration.pushManager.subscribe({\r\n userVisibleOnly: true,\r\n // Chrome <= 75 doesn't support base64-encoded VAPID key. For backward compatibility, VAPID key\r\n // submitted to pushManager#subscribe must be of type Uint8Array.\r\n applicationServerKey: base64ToArray(vapidKey)\r\n });\r\n}\r\n/**\r\n * Checks if the saved tokenDetails object matches the configuration provided.\r\n */\r\nfunction isTokenValid(dbOptions, currentOptions) {\r\n const isVapidKeyEqual = currentOptions.vapidKey === dbOptions.vapidKey;\r\n const isEndpointEqual = currentOptions.endpoint === dbOptions.endpoint;\r\n const isAuthEqual = currentOptions.auth === dbOptions.auth;\r\n const isP256dhEqual = currentOptions.p256dh === dbOptions.p256dh;\r\n return isVapidKeyEqual && isEndpointEqual && isAuthEqual && isP256dhEqual;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction externalizePayload(internalPayload) {\r\n const payload = {\r\n from: internalPayload.from,\r\n // eslint-disable-next-line camelcase\r\n collapseKey: internalPayload.collapse_key,\r\n // eslint-disable-next-line camelcase\r\n messageId: internalPayload.fcmMessageId\r\n };\r\n propagateNotificationPayload(payload, internalPayload);\r\n propagateDataPayload(payload, internalPayload);\r\n propagateFcmOptions(payload, internalPayload);\r\n return payload;\r\n}\r\nfunction propagateNotificationPayload(payload, messagePayloadInternal) {\r\n if (!messagePayloadInternal.notification) {\r\n return;\r\n }\r\n payload.notification = {};\r\n const title = messagePayloadInternal.notification.title;\r\n if (!!title) {\r\n payload.notification.title = title;\r\n }\r\n const body = messagePayloadInternal.notification.body;\r\n if (!!body) {\r\n payload.notification.body = body;\r\n }\r\n const image = messagePayloadInternal.notification.image;\r\n if (!!image) {\r\n payload.notification.image = image;\r\n }\r\n const icon = messagePayloadInternal.notification.icon;\r\n if (!!icon) {\r\n payload.notification.icon = icon;\r\n }\r\n}\r\nfunction propagateDataPayload(payload, messagePayloadInternal) {\r\n if (!messagePayloadInternal.data) {\r\n return;\r\n }\r\n payload.data = messagePayloadInternal.data;\r\n}\r\nfunction propagateFcmOptions(payload, messagePayloadInternal) {\r\n var _a, _b, _c, _d, _e;\r\n // fcmOptions.link value is written into notification.click_action. see more in b/232072111\r\n if (!messagePayloadInternal.fcmOptions &&\r\n !((_a = messagePayloadInternal.notification) === null || _a === void 0 ? void 0 : _a.click_action)) {\r\n return;\r\n }\r\n payload.fcmOptions = {};\r\n const link = (_c = (_b = messagePayloadInternal.fcmOptions) === null || _b === void 0 ? void 0 : _b.link) !== null && _c !== void 0 ? _c : (_d = messagePayloadInternal.notification) === null || _d === void 0 ? void 0 : _d.click_action;\r\n if (!!link) {\r\n payload.fcmOptions.link = link;\r\n }\r\n // eslint-disable-next-line camelcase\r\n const analyticsLabel = (_e = messagePayloadInternal.fcmOptions) === null || _e === void 0 ? void 0 : _e.analytics_label;\r\n if (!!analyticsLabel) {\r\n payload.fcmOptions.analyticsLabel = analyticsLabel;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction isConsoleMessage(data) {\r\n // This message has a campaign ID, meaning it was sent using the Firebase Console.\r\n return typeof data === 'object' && !!data && CONSOLE_CAMPAIGN_ID in data;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n_mergeStrings('hts/frbslgigp.ogepscmv/ieo/eaylg', 'tp:/ieaeogn-agolai.o/1frlglgc/o');\r\n_mergeStrings('AzSCbw63g1R0nCw85jG8', 'Iaya3yLKwmgvh7cF0q4');\r\nfunction _mergeStrings(s1, s2) {\r\n const resultArray = [];\r\n for (let i = 0; i < s1.length; i++) {\r\n resultArray.push(s1.charAt(i));\r\n if (i < s2.length) {\r\n resultArray.push(s2.charAt(i));\r\n }\r\n }\r\n return resultArray.join('');\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction extractAppConfig(app) {\r\n if (!app || !app.options) {\r\n throw getMissingValueError('App Configuration Object');\r\n }\r\n if (!app.name) {\r\n throw getMissingValueError('App Name');\r\n }\r\n // Required app config keys\r\n const configKeys = [\r\n 'projectId',\r\n 'apiKey',\r\n 'appId',\r\n 'messagingSenderId'\r\n ];\r\n const { options } = app;\r\n for (const keyName of configKeys) {\r\n if (!options[keyName]) {\r\n throw getMissingValueError(keyName);\r\n }\r\n }\r\n return {\r\n appName: app.name,\r\n projectId: options.projectId,\r\n apiKey: options.apiKey,\r\n appId: options.appId,\r\n senderId: options.messagingSenderId\r\n };\r\n}\r\nfunction getMissingValueError(valueName) {\r\n return ERROR_FACTORY.create(\"missing-app-config-values\" /* ErrorCode.MISSING_APP_CONFIG_VALUES */, {\r\n valueName\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass MessagingService {\r\n constructor(app, installations, analyticsProvider) {\r\n // logging is only done with end user consent. Default to false.\r\n this.deliveryMetricsExportedToBigQueryEnabled = false;\r\n this.onBackgroundMessageHandler = null;\r\n this.onMessageHandler = null;\r\n this.logEvents = [];\r\n this.isLogServiceStarted = false;\r\n const appConfig = extractAppConfig(app);\r\n this.firebaseDependencies = {\r\n app,\r\n appConfig,\r\n installations,\r\n analyticsProvider\r\n };\r\n }\r\n _delete() {\r\n return Promise.resolve();\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function registerDefaultSw(messaging) {\r\n try {\r\n messaging.swRegistration = await navigator.serviceWorker.register(DEFAULT_SW_PATH, {\r\n scope: DEFAULT_SW_SCOPE\r\n });\r\n // The timing when browser updates sw when sw has an update is unreliable from experiment. It\r\n // leads to version conflict when the SDK upgrades to a newer version in the main page, but sw\r\n // is stuck with the old version. For example,\r\n // https://github.com/firebase/firebase-js-sdk/issues/2590 The following line reliably updates\r\n // sw if there was an update.\r\n messaging.swRegistration.update().catch(() => {\r\n /* it is non blocking and we don't care if it failed */\r\n });\r\n }\r\n catch (e) {\r\n throw ERROR_FACTORY.create(\"failed-service-worker-registration\" /* ErrorCode.FAILED_DEFAULT_REGISTRATION */, {\r\n browserErrorMessage: e === null || e === void 0 ? void 0 : e.message\r\n });\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function updateSwReg(messaging, swRegistration) {\r\n if (!swRegistration && !messaging.swRegistration) {\r\n await registerDefaultSw(messaging);\r\n }\r\n if (!swRegistration && !!messaging.swRegistration) {\r\n return;\r\n }\r\n if (!(swRegistration instanceof ServiceWorkerRegistration)) {\r\n throw ERROR_FACTORY.create(\"invalid-sw-registration\" /* ErrorCode.INVALID_SW_REGISTRATION */);\r\n }\r\n messaging.swRegistration = swRegistration;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function updateVapidKey(messaging, vapidKey) {\r\n if (!!vapidKey) {\r\n messaging.vapidKey = vapidKey;\r\n }\r\n else if (!messaging.vapidKey) {\r\n messaging.vapidKey = DEFAULT_VAPID_KEY;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function getToken$1(messaging, options) {\r\n if (!navigator) {\r\n throw ERROR_FACTORY.create(\"only-available-in-window\" /* ErrorCode.AVAILABLE_IN_WINDOW */);\r\n }\r\n if (Notification.permission === 'default') {\r\n await Notification.requestPermission();\r\n }\r\n if (Notification.permission !== 'granted') {\r\n throw ERROR_FACTORY.create(\"permission-blocked\" /* ErrorCode.PERMISSION_BLOCKED */);\r\n }\r\n await updateVapidKey(messaging, options === null || options === void 0 ? void 0 : options.vapidKey);\r\n await updateSwReg(messaging, options === null || options === void 0 ? void 0 : options.serviceWorkerRegistration);\r\n return getTokenInternal(messaging);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function logToScion(messaging, messageType, data) {\r\n const eventType = getEventType(messageType);\r\n const analytics = await messaging.firebaseDependencies.analyticsProvider.get();\r\n analytics.logEvent(eventType, {\r\n /* eslint-disable camelcase */\r\n message_id: data[CONSOLE_CAMPAIGN_ID],\r\n message_name: data[CONSOLE_CAMPAIGN_NAME],\r\n message_time: data[CONSOLE_CAMPAIGN_TIME],\r\n message_device_time: Math.floor(Date.now() / 1000)\r\n /* eslint-enable camelcase */\r\n });\r\n}\r\nfunction getEventType(messageType) {\r\n switch (messageType) {\r\n case MessageType.NOTIFICATION_CLICKED:\r\n return 'notification_open';\r\n case MessageType.PUSH_RECEIVED:\r\n return 'notification_foreground';\r\n default:\r\n throw new Error();\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function messageEventListener(messaging, event) {\r\n const internalPayload = event.data;\r\n if (!internalPayload.isFirebaseMessaging) {\r\n return;\r\n }\r\n if (messaging.onMessageHandler &&\r\n internalPayload.messageType === MessageType.PUSH_RECEIVED) {\r\n if (typeof messaging.onMessageHandler === 'function') {\r\n messaging.onMessageHandler(externalizePayload(internalPayload));\r\n }\r\n else {\r\n messaging.onMessageHandler.next(externalizePayload(internalPayload));\r\n }\r\n }\r\n // Log to Scion if applicable\r\n const dataPayload = internalPayload.data;\r\n if (isConsoleMessage(dataPayload) &&\r\n dataPayload[CONSOLE_CAMPAIGN_ANALYTICS_ENABLED] === '1') {\r\n await logToScion(messaging, internalPayload.messageType, dataPayload);\r\n }\r\n}\n\nconst name = \"@firebase/messaging\";\nconst version = \"0.12.4\";\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst WindowMessagingFactory = (container) => {\r\n const messaging = new MessagingService(container.getProvider('app').getImmediate(), container.getProvider('installations-internal').getImmediate(), container.getProvider('analytics-internal'));\r\n navigator.serviceWorker.addEventListener('message', e => messageEventListener(messaging, e));\r\n return messaging;\r\n};\r\nconst WindowMessagingInternalFactory = (container) => {\r\n const messaging = container\r\n .getProvider('messaging')\r\n .getImmediate();\r\n const messagingInternal = {\r\n getToken: (options) => getToken$1(messaging, options)\r\n };\r\n return messagingInternal;\r\n};\r\nfunction registerMessagingInWindow() {\r\n _registerComponent(new Component('messaging', WindowMessagingFactory, \"PUBLIC\" /* ComponentType.PUBLIC */));\r\n _registerComponent(new Component('messaging-internal', WindowMessagingInternalFactory, \"PRIVATE\" /* ComponentType.PRIVATE */));\r\n registerVersion(name, version);\r\n // BUILD_TARGET will be replaced by values like esm5, esm2017, cjs5, etc during the compilation\r\n registerVersion(name, version, 'esm2017');\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Checks if all required APIs exist in the browser.\r\n * @returns a Promise that resolves to a boolean.\r\n *\r\n * @public\r\n */\r\nasync function isWindowSupported() {\r\n try {\r\n // This throws if open() is unsupported, so adding it to the conditional\r\n // statement below can cause an uncaught error.\r\n await validateIndexedDBOpenable();\r\n }\r\n catch (e) {\r\n return false;\r\n }\r\n // firebase-js-sdk/issues/2393 reveals that idb#open in Safari iframe and Firefox private browsing\r\n // might be prohibited to run. In these contexts, an error would be thrown during the messaging\r\n // instantiating phase, informing the developers to import/call isSupported for special handling.\r\n return (typeof window !== 'undefined' &&\r\n isIndexedDBAvailable() &&\r\n areCookiesEnabled() &&\r\n 'serviceWorker' in navigator &&\r\n 'PushManager' in window &&\r\n 'Notification' in window &&\r\n 'fetch' in window &&\r\n ServiceWorkerRegistration.prototype.hasOwnProperty('showNotification') &&\r\n PushSubscription.prototype.hasOwnProperty('getKey'));\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function deleteToken$1(messaging) {\r\n if (!navigator) {\r\n throw ERROR_FACTORY.create(\"only-available-in-window\" /* ErrorCode.AVAILABLE_IN_WINDOW */);\r\n }\r\n if (!messaging.swRegistration) {\r\n await registerDefaultSw(messaging);\r\n }\r\n return deleteTokenInternal(messaging);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction onMessage$1(messaging, nextOrObserver) {\r\n if (!navigator) {\r\n throw ERROR_FACTORY.create(\"only-available-in-window\" /* ErrorCode.AVAILABLE_IN_WINDOW */);\r\n }\r\n messaging.onMessageHandler = nextOrObserver;\r\n return () => {\r\n messaging.onMessageHandler = null;\r\n };\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Retrieves a Firebase Cloud Messaging instance.\r\n *\r\n * @returns The Firebase Cloud Messaging instance associated with the provided firebase app.\r\n *\r\n * @public\r\n */\r\nfunction getMessagingInWindow(app = getApp()) {\r\n // Conscious decision to make this async check non-blocking during the messaging instance\r\n // initialization phase for performance consideration. An error would be thrown latter for\r\n // developer's information. Developers can then choose to import and call `isSupported` for\r\n // special handling.\r\n isWindowSupported().then(isSupported => {\r\n // If `isWindowSupported()` resolved, but returned false.\r\n if (!isSupported) {\r\n throw ERROR_FACTORY.create(\"unsupported-browser\" /* ErrorCode.UNSUPPORTED_BROWSER */);\r\n }\r\n }, _ => {\r\n // If `isWindowSupported()` rejected.\r\n throw ERROR_FACTORY.create(\"indexed-db-unsupported\" /* ErrorCode.INDEXED_DB_UNSUPPORTED */);\r\n });\r\n return _getProvider(getModularInstance(app), 'messaging').getImmediate();\r\n}\r\n/**\r\n * Subscribes the {@link Messaging} instance to push notifications. Returns an Firebase Cloud\r\n * Messaging registration token that can be used to send push messages to that {@link Messaging}\r\n * instance.\r\n *\r\n * If a notification permission isn't already granted, this method asks the user for permission. The\r\n * returned promise rejects if the user does not allow the app to show notifications.\r\n *\r\n * @param messaging - The {@link Messaging} instance.\r\n * @param options - Provides an optional vapid key and an optinoal service worker registration\r\n *\r\n * @returns The promise resolves with an FCM registration token.\r\n *\r\n * @public\r\n */\r\nasync function getToken(messaging, options) {\r\n messaging = getModularInstance(messaging);\r\n return getToken$1(messaging, options);\r\n}\r\n/**\r\n * Deletes the registration token associated with this {@link Messaging} instance and unsubscribes\r\n * the {@link Messaging} instance from the push subscription.\r\n *\r\n * @param messaging - The {@link Messaging} instance.\r\n *\r\n * @returns The promise resolves when the token has been successfully deleted.\r\n *\r\n * @public\r\n */\r\nfunction deleteToken(messaging) {\r\n messaging = getModularInstance(messaging);\r\n return deleteToken$1(messaging);\r\n}\r\n/**\r\n * When a push message is received and the user is currently on a page for your origin, the\r\n * message is passed to the page and an `onMessage()` event is dispatched with the payload of\r\n * the push message.\r\n *\r\n *\r\n * @param messaging - The {@link Messaging} instance.\r\n * @param nextOrObserver - This function, or observer object with `next` defined,\r\n * is called when a message is received and the user is currently viewing your page.\r\n * @returns To stop listening for messages execute this returned function.\r\n *\r\n * @public\r\n */\r\nfunction onMessage(messaging, nextOrObserver) {\r\n messaging = getModularInstance(messaging);\r\n return onMessage$1(messaging, nextOrObserver);\r\n}\n\n/**\r\n * Firebase Cloud Messaging\r\n *\r\n * @packageDocumentation\r\n */\r\nregisterMessagingInWindow();\n\nexport { deleteToken, getMessagingInWindow as getMessaging, getToken, isWindowSupported as isSupported, onMessage };\n","import { _getProvider, getApp, _registerComponent, registerVersion } from '@firebase/app';\nimport { Logger } from '@firebase/logger';\nimport { ErrorFactory, calculateBackoffMillis, FirebaseError, isIndexedDBAvailable, validateIndexedDBOpenable, isBrowserExtension, areCookiesEnabled, getModularInstance, deepEqual } from '@firebase/util';\nimport { Component } from '@firebase/component';\nimport '@firebase/installations';\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Type constant for Firebase Analytics.\r\n */\r\nconst ANALYTICS_TYPE = 'analytics';\r\n// Key to attach FID to in gtag params.\r\nconst GA_FID_KEY = 'firebase_id';\r\nconst ORIGIN_KEY = 'origin';\r\nconst FETCH_TIMEOUT_MILLIS = 60 * 1000;\r\nconst DYNAMIC_CONFIG_URL = 'https://firebase.googleapis.com/v1alpha/projects/-/apps/{app-id}/webConfig';\r\nconst GTAG_URL = 'https://www.googletagmanager.com/gtag/js';\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst logger = new Logger('@firebase/analytics');\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst ERRORS = {\r\n [\"already-exists\" /* AnalyticsError.ALREADY_EXISTS */]: 'A Firebase Analytics instance with the appId {$id} ' +\r\n ' already exists. ' +\r\n 'Only one Firebase Analytics instance can be created for each appId.',\r\n [\"already-initialized\" /* AnalyticsError.ALREADY_INITIALIZED */]: 'initializeAnalytics() cannot be called again with different options than those ' +\r\n 'it was initially called with. It can be called again with the same options to ' +\r\n 'return the existing instance, or getAnalytics() can be used ' +\r\n 'to get a reference to the already-intialized instance.',\r\n [\"already-initialized-settings\" /* AnalyticsError.ALREADY_INITIALIZED_SETTINGS */]: 'Firebase Analytics has already been initialized.' +\r\n 'settings() must be called before initializing any Analytics instance' +\r\n 'or it will have no effect.',\r\n [\"interop-component-reg-failed\" /* AnalyticsError.INTEROP_COMPONENT_REG_FAILED */]: 'Firebase Analytics Interop Component failed to instantiate: {$reason}',\r\n [\"invalid-analytics-context\" /* AnalyticsError.INVALID_ANALYTICS_CONTEXT */]: 'Firebase Analytics is not supported in this environment. ' +\r\n 'Wrap initialization of analytics in analytics.isSupported() ' +\r\n 'to prevent initialization in unsupported environments. Details: {$errorInfo}',\r\n [\"indexeddb-unavailable\" /* AnalyticsError.INDEXEDDB_UNAVAILABLE */]: 'IndexedDB unavailable or restricted in this environment. ' +\r\n 'Wrap initialization of analytics in analytics.isSupported() ' +\r\n 'to prevent initialization in unsupported environments. Details: {$errorInfo}',\r\n [\"fetch-throttle\" /* AnalyticsError.FETCH_THROTTLE */]: 'The config fetch request timed out while in an exponential backoff state.' +\r\n ' Unix timestamp in milliseconds when fetch request throttling ends: {$throttleEndTimeMillis}.',\r\n [\"config-fetch-failed\" /* AnalyticsError.CONFIG_FETCH_FAILED */]: 'Dynamic config fetch failed: [{$httpStatus}] {$responseMessage}',\r\n [\"no-api-key\" /* AnalyticsError.NO_API_KEY */]: 'The \"apiKey\" field is empty in the local Firebase config. Firebase Analytics requires this field to' +\r\n 'contain a valid API key.',\r\n [\"no-app-id\" /* AnalyticsError.NO_APP_ID */]: 'The \"appId\" field is empty in the local Firebase config. Firebase Analytics requires this field to' +\r\n 'contain a valid app ID.',\r\n [\"no-client-id\" /* AnalyticsError.NO_CLIENT_ID */]: 'The \"client_id\" field is empty.',\r\n [\"invalid-gtag-resource\" /* AnalyticsError.INVALID_GTAG_RESOURCE */]: 'Trusted Types detected an invalid gtag resource: {$gtagURL}.'\r\n};\r\nconst ERROR_FACTORY = new ErrorFactory('analytics', 'Analytics', ERRORS);\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Verifies and creates a TrustedScriptURL.\r\n */\r\nfunction createGtagTrustedTypesScriptURL(url) {\r\n if (!url.startsWith(GTAG_URL)) {\r\n const err = ERROR_FACTORY.create(\"invalid-gtag-resource\" /* AnalyticsError.INVALID_GTAG_RESOURCE */, {\r\n gtagURL: url\r\n });\r\n logger.warn(err.message);\r\n return '';\r\n }\r\n return url;\r\n}\r\n/**\r\n * Makeshift polyfill for Promise.allSettled(). Resolves when all promises\r\n * have either resolved or rejected.\r\n *\r\n * @param promises Array of promises to wait for.\r\n */\r\nfunction promiseAllSettled(promises) {\r\n return Promise.all(promises.map(promise => promise.catch(e => e)));\r\n}\r\n/**\r\n * Creates a TrustedTypePolicy object that implements the rules passed as policyOptions.\r\n *\r\n * @param policyName A string containing the name of the policy\r\n * @param policyOptions Object containing implementations of instance methods for TrustedTypesPolicy, see {@link https://developer.mozilla.org/en-US/docs/Web/API/TrustedTypePolicy#instance_methods\r\n * | the TrustedTypePolicy reference documentation}.\r\n */\r\nfunction createTrustedTypesPolicy(policyName, policyOptions) {\r\n // Create a TrustedTypes policy that we can use for updating src\r\n // properties\r\n let trustedTypesPolicy;\r\n if (window.trustedTypes) {\r\n trustedTypesPolicy = window.trustedTypes.createPolicy(policyName, policyOptions);\r\n }\r\n return trustedTypesPolicy;\r\n}\r\n/**\r\n * Inserts gtag script tag into the page to asynchronously download gtag.\r\n * @param dataLayerName Name of datalayer (most often the default, \"_dataLayer\").\r\n */\r\nfunction insertScriptTag(dataLayerName, measurementId) {\r\n const trustedTypesPolicy = createTrustedTypesPolicy('firebase-js-sdk-policy', {\r\n createScriptURL: createGtagTrustedTypesScriptURL\r\n });\r\n const script = document.createElement('script');\r\n // We are not providing an analyticsId in the URL because it would trigger a `page_view`\r\n // without fid. We will initialize ga-id using gtag (config) command together with fid.\r\n const gtagScriptURL = `${GTAG_URL}?l=${dataLayerName}&id=${measurementId}`;\r\n script.src = trustedTypesPolicy\r\n ? trustedTypesPolicy === null || trustedTypesPolicy === void 0 ? void 0 : trustedTypesPolicy.createScriptURL(gtagScriptURL)\r\n : gtagScriptURL;\r\n script.async = true;\r\n document.head.appendChild(script);\r\n}\r\n/**\r\n * Get reference to, or create, global datalayer.\r\n * @param dataLayerName Name of datalayer (most often the default, \"_dataLayer\").\r\n */\r\nfunction getOrCreateDataLayer(dataLayerName) {\r\n // Check for existing dataLayer and create if needed.\r\n let dataLayer = [];\r\n if (Array.isArray(window[dataLayerName])) {\r\n dataLayer = window[dataLayerName];\r\n }\r\n else {\r\n window[dataLayerName] = dataLayer;\r\n }\r\n return dataLayer;\r\n}\r\n/**\r\n * Wrapped gtag logic when gtag is called with 'config' command.\r\n *\r\n * @param gtagCore Basic gtag function that just appends to dataLayer.\r\n * @param initializationPromisesMap Map of appIds to their initialization promises.\r\n * @param dynamicConfigPromisesList Array of dynamic config fetch promises.\r\n * @param measurementIdToAppId Map of GA measurementIDs to corresponding Firebase appId.\r\n * @param measurementId GA Measurement ID to set config for.\r\n * @param gtagParams Gtag config params to set.\r\n */\r\nasync function gtagOnConfig(gtagCore, initializationPromisesMap, dynamicConfigPromisesList, measurementIdToAppId, measurementId, gtagParams) {\r\n // If config is already fetched, we know the appId and can use it to look up what FID promise we\r\n /// are waiting for, and wait only on that one.\r\n const correspondingAppId = measurementIdToAppId[measurementId];\r\n try {\r\n if (correspondingAppId) {\r\n await initializationPromisesMap[correspondingAppId];\r\n }\r\n else {\r\n // If config is not fetched yet, wait for all configs (we don't know which one we need) and\r\n // find the appId (if any) corresponding to this measurementId. If there is one, wait on\r\n // that appId's initialization promise. If there is none, promise resolves and gtag\r\n // call goes through.\r\n const dynamicConfigResults = await promiseAllSettled(dynamicConfigPromisesList);\r\n const foundConfig = dynamicConfigResults.find(config => config.measurementId === measurementId);\r\n if (foundConfig) {\r\n await initializationPromisesMap[foundConfig.appId];\r\n }\r\n }\r\n }\r\n catch (e) {\r\n logger.error(e);\r\n }\r\n gtagCore(\"config\" /* GtagCommand.CONFIG */, measurementId, gtagParams);\r\n}\r\n/**\r\n * Wrapped gtag logic when gtag is called with 'event' command.\r\n *\r\n * @param gtagCore Basic gtag function that just appends to dataLayer.\r\n * @param initializationPromisesMap Map of appIds to their initialization promises.\r\n * @param dynamicConfigPromisesList Array of dynamic config fetch promises.\r\n * @param measurementId GA Measurement ID to log event to.\r\n * @param gtagParams Params to log with this event.\r\n */\r\nasync function gtagOnEvent(gtagCore, initializationPromisesMap, dynamicConfigPromisesList, measurementId, gtagParams) {\r\n try {\r\n let initializationPromisesToWaitFor = [];\r\n // If there's a 'send_to' param, check if any ID specified matches\r\n // an initializeIds() promise we are waiting for.\r\n if (gtagParams && gtagParams['send_to']) {\r\n let gaSendToList = gtagParams['send_to'];\r\n // Make it an array if is isn't, so it can be dealt with the same way.\r\n if (!Array.isArray(gaSendToList)) {\r\n gaSendToList = [gaSendToList];\r\n }\r\n // Checking 'send_to' fields requires having all measurement ID results back from\r\n // the dynamic config fetch.\r\n const dynamicConfigResults = await promiseAllSettled(dynamicConfigPromisesList);\r\n for (const sendToId of gaSendToList) {\r\n // Any fetched dynamic measurement ID that matches this 'send_to' ID\r\n const foundConfig = dynamicConfigResults.find(config => config.measurementId === sendToId);\r\n const initializationPromise = foundConfig && initializationPromisesMap[foundConfig.appId];\r\n if (initializationPromise) {\r\n initializationPromisesToWaitFor.push(initializationPromise);\r\n }\r\n else {\r\n // Found an item in 'send_to' that is not associated\r\n // directly with an FID, possibly a group. Empty this array,\r\n // exit the loop early, and let it get populated below.\r\n initializationPromisesToWaitFor = [];\r\n break;\r\n }\r\n }\r\n }\r\n // This will be unpopulated if there was no 'send_to' field , or\r\n // if not all entries in the 'send_to' field could be mapped to\r\n // a FID. In these cases, wait on all pending initialization promises.\r\n if (initializationPromisesToWaitFor.length === 0) {\r\n initializationPromisesToWaitFor = Object.values(initializationPromisesMap);\r\n }\r\n // Run core gtag function with args after all relevant initialization\r\n // promises have been resolved.\r\n await Promise.all(initializationPromisesToWaitFor);\r\n // Workaround for http://b/141370449 - third argument cannot be undefined.\r\n gtagCore(\"event\" /* GtagCommand.EVENT */, measurementId, gtagParams || {});\r\n }\r\n catch (e) {\r\n logger.error(e);\r\n }\r\n}\r\n/**\r\n * Wraps a standard gtag function with extra code to wait for completion of\r\n * relevant initialization promises before sending requests.\r\n *\r\n * @param gtagCore Basic gtag function that just appends to dataLayer.\r\n * @param initializationPromisesMap Map of appIds to their initialization promises.\r\n * @param dynamicConfigPromisesList Array of dynamic config fetch promises.\r\n * @param measurementIdToAppId Map of GA measurementIDs to corresponding Firebase appId.\r\n */\r\nfunction wrapGtag(gtagCore, \r\n/**\r\n * Allows wrapped gtag calls to wait on whichever intialization promises are required,\r\n * depending on the contents of the gtag params' `send_to` field, if any.\r\n */\r\ninitializationPromisesMap, \r\n/**\r\n * Wrapped gtag calls sometimes require all dynamic config fetches to have returned\r\n * before determining what initialization promises (which include FIDs) to wait for.\r\n */\r\ndynamicConfigPromisesList, \r\n/**\r\n * Wrapped gtag config calls can narrow down which initialization promise (with FID)\r\n * to wait for if the measurementId is already fetched, by getting the corresponding appId,\r\n * which is the key for the initialization promises map.\r\n */\r\nmeasurementIdToAppId) {\r\n /**\r\n * Wrapper around gtag that ensures FID is sent with gtag calls.\r\n * @param command Gtag command type.\r\n * @param idOrNameOrParams Measurement ID if command is EVENT/CONFIG, params if command is SET.\r\n * @param gtagParams Params if event is EVENT/CONFIG.\r\n */\r\n async function gtagWrapper(command, ...args) {\r\n try {\r\n // If event, check that relevant initialization promises have completed.\r\n if (command === \"event\" /* GtagCommand.EVENT */) {\r\n const [measurementId, gtagParams] = args;\r\n // If EVENT, second arg must be measurementId.\r\n await gtagOnEvent(gtagCore, initializationPromisesMap, dynamicConfigPromisesList, measurementId, gtagParams);\r\n }\r\n else if (command === \"config\" /* GtagCommand.CONFIG */) {\r\n const [measurementId, gtagParams] = args;\r\n // If CONFIG, second arg must be measurementId.\r\n await gtagOnConfig(gtagCore, initializationPromisesMap, dynamicConfigPromisesList, measurementIdToAppId, measurementId, gtagParams);\r\n }\r\n else if (command === \"consent\" /* GtagCommand.CONSENT */) {\r\n const [gtagParams] = args;\r\n gtagCore(\"consent\" /* GtagCommand.CONSENT */, 'update', gtagParams);\r\n }\r\n else if (command === \"get\" /* GtagCommand.GET */) {\r\n const [measurementId, fieldName, callback] = args;\r\n gtagCore(\"get\" /* GtagCommand.GET */, measurementId, fieldName, callback);\r\n }\r\n else if (command === \"set\" /* GtagCommand.SET */) {\r\n const [customParams] = args;\r\n // If SET, second arg must be params.\r\n gtagCore(\"set\" /* GtagCommand.SET */, customParams);\r\n }\r\n else {\r\n gtagCore(command, ...args);\r\n }\r\n }\r\n catch (e) {\r\n logger.error(e);\r\n }\r\n }\r\n return gtagWrapper;\r\n}\r\n/**\r\n * Creates global gtag function or wraps existing one if found.\r\n * This wrapped function attaches Firebase instance ID (FID) to gtag 'config' and\r\n * 'event' calls that belong to the GAID associated with this Firebase instance.\r\n *\r\n * @param initializationPromisesMap Map of appIds to their initialization promises.\r\n * @param dynamicConfigPromisesList Array of dynamic config fetch promises.\r\n * @param measurementIdToAppId Map of GA measurementIDs to corresponding Firebase appId.\r\n * @param dataLayerName Name of global GA datalayer array.\r\n * @param gtagFunctionName Name of global gtag function (\"gtag\" if not user-specified).\r\n */\r\nfunction wrapOrCreateGtag(initializationPromisesMap, dynamicConfigPromisesList, measurementIdToAppId, dataLayerName, gtagFunctionName) {\r\n // Create a basic core gtag function\r\n let gtagCore = function (..._args) {\r\n // Must push IArguments object, not an array.\r\n window[dataLayerName].push(arguments);\r\n };\r\n // Replace it with existing one if found\r\n if (window[gtagFunctionName] &&\r\n typeof window[gtagFunctionName] === 'function') {\r\n // @ts-ignore\r\n gtagCore = window[gtagFunctionName];\r\n }\r\n window[gtagFunctionName] = wrapGtag(gtagCore, initializationPromisesMap, dynamicConfigPromisesList, measurementIdToAppId);\r\n return {\r\n gtagCore,\r\n wrappedGtag: window[gtagFunctionName]\r\n };\r\n}\r\n/**\r\n * Returns the script tag in the DOM matching both the gtag url pattern\r\n * and the provided data layer name.\r\n */\r\nfunction findGtagScriptOnPage(dataLayerName) {\r\n const scriptTags = window.document.getElementsByTagName('script');\r\n for (const tag of Object.values(scriptTags)) {\r\n if (tag.src &&\r\n tag.src.includes(GTAG_URL) &&\r\n tag.src.includes(dataLayerName)) {\r\n return tag;\r\n }\r\n }\r\n return null;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Backoff factor for 503 errors, which we want to be conservative about\r\n * to avoid overloading servers. Each retry interval will be\r\n * BASE_INTERVAL_MILLIS * LONG_RETRY_FACTOR ^ retryCount, so the second one\r\n * will be ~30 seconds (with fuzzing).\r\n */\r\nconst LONG_RETRY_FACTOR = 30;\r\n/**\r\n * Base wait interval to multiplied by backoffFactor^backoffCount.\r\n */\r\nconst BASE_INTERVAL_MILLIS = 1000;\r\n/**\r\n * Stubbable retry data storage class.\r\n */\r\nclass RetryData {\r\n constructor(throttleMetadata = {}, intervalMillis = BASE_INTERVAL_MILLIS) {\r\n this.throttleMetadata = throttleMetadata;\r\n this.intervalMillis = intervalMillis;\r\n }\r\n getThrottleMetadata(appId) {\r\n return this.throttleMetadata[appId];\r\n }\r\n setThrottleMetadata(appId, metadata) {\r\n this.throttleMetadata[appId] = metadata;\r\n }\r\n deleteThrottleMetadata(appId) {\r\n delete this.throttleMetadata[appId];\r\n }\r\n}\r\nconst defaultRetryData = new RetryData();\r\n/**\r\n * Set GET request headers.\r\n * @param apiKey App API key.\r\n */\r\nfunction getHeaders(apiKey) {\r\n return new Headers({\r\n Accept: 'application/json',\r\n 'x-goog-api-key': apiKey\r\n });\r\n}\r\n/**\r\n * Fetches dynamic config from backend.\r\n * @param app Firebase app to fetch config for.\r\n */\r\nasync function fetchDynamicConfig(appFields) {\r\n var _a;\r\n const { appId, apiKey } = appFields;\r\n const request = {\r\n method: 'GET',\r\n headers: getHeaders(apiKey)\r\n };\r\n const appUrl = DYNAMIC_CONFIG_URL.replace('{app-id}', appId);\r\n const response = await fetch(appUrl, request);\r\n if (response.status !== 200 && response.status !== 304) {\r\n let errorMessage = '';\r\n try {\r\n // Try to get any error message text from server response.\r\n const jsonResponse = (await response.json());\r\n if ((_a = jsonResponse.error) === null || _a === void 0 ? void 0 : _a.message) {\r\n errorMessage = jsonResponse.error.message;\r\n }\r\n }\r\n catch (_ignored) { }\r\n throw ERROR_FACTORY.create(\"config-fetch-failed\" /* AnalyticsError.CONFIG_FETCH_FAILED */, {\r\n httpStatus: response.status,\r\n responseMessage: errorMessage\r\n });\r\n }\r\n return response.json();\r\n}\r\n/**\r\n * Fetches dynamic config from backend, retrying if failed.\r\n * @param app Firebase app to fetch config for.\r\n */\r\nasync function fetchDynamicConfigWithRetry(app, \r\n// retryData and timeoutMillis are parameterized to allow passing a different value for testing.\r\nretryData = defaultRetryData, timeoutMillis) {\r\n const { appId, apiKey, measurementId } = app.options;\r\n if (!appId) {\r\n throw ERROR_FACTORY.create(\"no-app-id\" /* AnalyticsError.NO_APP_ID */);\r\n }\r\n if (!apiKey) {\r\n if (measurementId) {\r\n return {\r\n measurementId,\r\n appId\r\n };\r\n }\r\n throw ERROR_FACTORY.create(\"no-api-key\" /* AnalyticsError.NO_API_KEY */);\r\n }\r\n const throttleMetadata = retryData.getThrottleMetadata(appId) || {\r\n backoffCount: 0,\r\n throttleEndTimeMillis: Date.now()\r\n };\r\n const signal = new AnalyticsAbortSignal();\r\n setTimeout(async () => {\r\n // Note a very low delay, eg < 10ms, can elapse before listeners are initialized.\r\n signal.abort();\r\n }, timeoutMillis !== undefined ? timeoutMillis : FETCH_TIMEOUT_MILLIS);\r\n return attemptFetchDynamicConfigWithRetry({ appId, apiKey, measurementId }, throttleMetadata, signal, retryData);\r\n}\r\n/**\r\n * Runs one retry attempt.\r\n * @param appFields Necessary app config fields.\r\n * @param throttleMetadata Ongoing metadata to determine throttling times.\r\n * @param signal Abort signal.\r\n */\r\nasync function attemptFetchDynamicConfigWithRetry(appFields, { throttleEndTimeMillis, backoffCount }, signal, retryData = defaultRetryData // for testing\r\n) {\r\n var _a;\r\n const { appId, measurementId } = appFields;\r\n // Starts with a (potentially zero) timeout to support resumption from stored state.\r\n // Ensures the throttle end time is honored if the last attempt timed out.\r\n // Note the SDK will never make a request if the fetch timeout expires at this point.\r\n try {\r\n await setAbortableTimeout(signal, throttleEndTimeMillis);\r\n }\r\n catch (e) {\r\n if (measurementId) {\r\n logger.warn(`Timed out fetching this Firebase app's measurement ID from the server.` +\r\n ` Falling back to the measurement ID ${measurementId}` +\r\n ` provided in the \"measurementId\" field in the local Firebase config. [${e === null || e === void 0 ? void 0 : e.message}]`);\r\n return { appId, measurementId };\r\n }\r\n throw e;\r\n }\r\n try {\r\n const response = await fetchDynamicConfig(appFields);\r\n // Note the SDK only clears throttle state if response is success or non-retriable.\r\n retryData.deleteThrottleMetadata(appId);\r\n return response;\r\n }\r\n catch (e) {\r\n const error = e;\r\n if (!isRetriableError(error)) {\r\n retryData.deleteThrottleMetadata(appId);\r\n if (measurementId) {\r\n logger.warn(`Failed to fetch this Firebase app's measurement ID from the server.` +\r\n ` Falling back to the measurement ID ${measurementId}` +\r\n ` provided in the \"measurementId\" field in the local Firebase config. [${error === null || error === void 0 ? void 0 : error.message}]`);\r\n return { appId, measurementId };\r\n }\r\n else {\r\n throw e;\r\n }\r\n }\r\n const backoffMillis = Number((_a = error === null || error === void 0 ? void 0 : error.customData) === null || _a === void 0 ? void 0 : _a.httpStatus) === 503\r\n ? calculateBackoffMillis(backoffCount, retryData.intervalMillis, LONG_RETRY_FACTOR)\r\n : calculateBackoffMillis(backoffCount, retryData.intervalMillis);\r\n // Increments backoff state.\r\n const throttleMetadata = {\r\n throttleEndTimeMillis: Date.now() + backoffMillis,\r\n backoffCount: backoffCount + 1\r\n };\r\n // Persists state.\r\n retryData.setThrottleMetadata(appId, throttleMetadata);\r\n logger.debug(`Calling attemptFetch again in ${backoffMillis} millis`);\r\n return attemptFetchDynamicConfigWithRetry(appFields, throttleMetadata, signal, retryData);\r\n }\r\n}\r\n/**\r\n * Supports waiting on a backoff by:\r\n *\r\n *

      \r\n *
    • Promisifying setTimeout, so we can set a timeout in our Promise chain
    • \r\n *
    • Listening on a signal bus for abort events, just like the Fetch API
    • \r\n *
    • Failing in the same way the Fetch API fails, so timing out a live request and a throttled\r\n * request appear the same.
    • \r\n *
    \r\n *\r\n *

    Visible for testing.\r\n */\r\nfunction setAbortableTimeout(signal, throttleEndTimeMillis) {\r\n return new Promise((resolve, reject) => {\r\n // Derives backoff from given end time, normalizing negative numbers to zero.\r\n const backoffMillis = Math.max(throttleEndTimeMillis - Date.now(), 0);\r\n const timeout = setTimeout(resolve, backoffMillis);\r\n // Adds listener, rather than sets onabort, because signal is a shared object.\r\n signal.addEventListener(() => {\r\n clearTimeout(timeout);\r\n // If the request completes before this timeout, the rejection has no effect.\r\n reject(ERROR_FACTORY.create(\"fetch-throttle\" /* AnalyticsError.FETCH_THROTTLE */, {\r\n throttleEndTimeMillis\r\n }));\r\n });\r\n });\r\n}\r\n/**\r\n * Returns true if the {@link Error} indicates a fetch request may succeed later.\r\n */\r\nfunction isRetriableError(e) {\r\n if (!(e instanceof FirebaseError) || !e.customData) {\r\n return false;\r\n }\r\n // Uses string index defined by ErrorData, which FirebaseError implements.\r\n const httpStatus = Number(e.customData['httpStatus']);\r\n return (httpStatus === 429 ||\r\n httpStatus === 500 ||\r\n httpStatus === 503 ||\r\n httpStatus === 504);\r\n}\r\n/**\r\n * Shims a minimal AbortSignal (copied from Remote Config).\r\n *\r\n *

    AbortController's AbortSignal conveniently decouples fetch timeout logic from other aspects\r\n * of networking, such as retries. Firebase doesn't use AbortController enough to justify a\r\n * polyfill recommendation, like we do with the Fetch API, but this minimal shim can easily be\r\n * swapped out if/when we do.\r\n */\r\nclass AnalyticsAbortSignal {\r\n constructor() {\r\n this.listeners = [];\r\n }\r\n addEventListener(listener) {\r\n this.listeners.push(listener);\r\n }\r\n abort() {\r\n this.listeners.forEach(listener => listener());\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Event parameters to set on 'gtag' during initialization.\r\n */\r\nlet defaultEventParametersForInit;\r\n/**\r\n * Logs an analytics event through the Firebase SDK.\r\n *\r\n * @param gtagFunction Wrapped gtag function that waits for fid to be set before sending an event\r\n * @param eventName Google Analytics event name, choose from standard list or use a custom string.\r\n * @param eventParams Analytics event parameters.\r\n */\r\nasync function logEvent$1(gtagFunction, initializationPromise, eventName, eventParams, options) {\r\n if (options && options.global) {\r\n gtagFunction(\"event\" /* GtagCommand.EVENT */, eventName, eventParams);\r\n return;\r\n }\r\n else {\r\n const measurementId = await initializationPromise;\r\n const params = Object.assign(Object.assign({}, eventParams), { 'send_to': measurementId });\r\n gtagFunction(\"event\" /* GtagCommand.EVENT */, eventName, params);\r\n }\r\n}\r\n/**\r\n * Set screen_name parameter for this Google Analytics ID.\r\n *\r\n * @deprecated Use {@link logEvent} with `eventName` as 'screen_view' and add relevant `eventParams`.\r\n * See {@link https://firebase.google.com/docs/analytics/screenviews | Track Screenviews}.\r\n *\r\n * @param gtagFunction Wrapped gtag function that waits for fid to be set before sending an event\r\n * @param screenName Screen name string to set.\r\n */\r\nasync function setCurrentScreen$1(gtagFunction, initializationPromise, screenName, options) {\r\n if (options && options.global) {\r\n gtagFunction(\"set\" /* GtagCommand.SET */, { 'screen_name': screenName });\r\n return Promise.resolve();\r\n }\r\n else {\r\n const measurementId = await initializationPromise;\r\n gtagFunction(\"config\" /* GtagCommand.CONFIG */, measurementId, {\r\n update: true,\r\n 'screen_name': screenName\r\n });\r\n }\r\n}\r\n/**\r\n * Set user_id parameter for this Google Analytics ID.\r\n *\r\n * @param gtagFunction Wrapped gtag function that waits for fid to be set before sending an event\r\n * @param id User ID string to set\r\n */\r\nasync function setUserId$1(gtagFunction, initializationPromise, id, options) {\r\n if (options && options.global) {\r\n gtagFunction(\"set\" /* GtagCommand.SET */, { 'user_id': id });\r\n return Promise.resolve();\r\n }\r\n else {\r\n const measurementId = await initializationPromise;\r\n gtagFunction(\"config\" /* GtagCommand.CONFIG */, measurementId, {\r\n update: true,\r\n 'user_id': id\r\n });\r\n }\r\n}\r\n/**\r\n * Set all other user properties other than user_id and screen_name.\r\n *\r\n * @param gtagFunction Wrapped gtag function that waits for fid to be set before sending an event\r\n * @param properties Map of user properties to set\r\n */\r\nasync function setUserProperties$1(gtagFunction, initializationPromise, properties, options) {\r\n if (options && options.global) {\r\n const flatProperties = {};\r\n for (const key of Object.keys(properties)) {\r\n // use dot notation for merge behavior in gtag.js\r\n flatProperties[`user_properties.${key}`] = properties[key];\r\n }\r\n gtagFunction(\"set\" /* GtagCommand.SET */, flatProperties);\r\n return Promise.resolve();\r\n }\r\n else {\r\n const measurementId = await initializationPromise;\r\n gtagFunction(\"config\" /* GtagCommand.CONFIG */, measurementId, {\r\n update: true,\r\n 'user_properties': properties\r\n });\r\n }\r\n}\r\n/**\r\n * Retrieves a unique Google Analytics identifier for the web client.\r\n * See {@link https://developers.google.com/analytics/devguides/collection/ga4/reference/config#client_id | client_id}.\r\n *\r\n * @param gtagFunction Wrapped gtag function that waits for fid to be set before sending an event\r\n */\r\nasync function internalGetGoogleAnalyticsClientId(gtagFunction, initializationPromise) {\r\n const measurementId = await initializationPromise;\r\n return new Promise((resolve, reject) => {\r\n gtagFunction(\"get\" /* GtagCommand.GET */, measurementId, 'client_id', (clientId) => {\r\n if (!clientId) {\r\n reject(ERROR_FACTORY.create(\"no-client-id\" /* AnalyticsError.NO_CLIENT_ID */));\r\n }\r\n resolve(clientId);\r\n });\r\n });\r\n}\r\n/**\r\n * Set whether collection is enabled for this ID.\r\n *\r\n * @param enabled If true, collection is enabled for this ID.\r\n */\r\nasync function setAnalyticsCollectionEnabled$1(initializationPromise, enabled) {\r\n const measurementId = await initializationPromise;\r\n window[`ga-disable-${measurementId}`] = !enabled;\r\n}\r\n/**\r\n * Consent parameters to default to during 'gtag' initialization.\r\n */\r\nlet defaultConsentSettingsForInit;\r\n/**\r\n * Sets the variable {@link defaultConsentSettingsForInit} for use in the initialization of\r\n * analytics.\r\n *\r\n * @param consentSettings Maps the applicable end user consent state for gtag.js.\r\n */\r\nfunction _setConsentDefaultForInit(consentSettings) {\r\n defaultConsentSettingsForInit = consentSettings;\r\n}\r\n/**\r\n * Sets the variable `defaultEventParametersForInit` for use in the initialization of\r\n * analytics.\r\n *\r\n * @param customParams Any custom params the user may pass to gtag.js.\r\n */\r\nfunction _setDefaultEventParametersForInit(customParams) {\r\n defaultEventParametersForInit = customParams;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function validateIndexedDB() {\r\n if (!isIndexedDBAvailable()) {\r\n logger.warn(ERROR_FACTORY.create(\"indexeddb-unavailable\" /* AnalyticsError.INDEXEDDB_UNAVAILABLE */, {\r\n errorInfo: 'IndexedDB is not available in this environment.'\r\n }).message);\r\n return false;\r\n }\r\n else {\r\n try {\r\n await validateIndexedDBOpenable();\r\n }\r\n catch (e) {\r\n logger.warn(ERROR_FACTORY.create(\"indexeddb-unavailable\" /* AnalyticsError.INDEXEDDB_UNAVAILABLE */, {\r\n errorInfo: e === null || e === void 0 ? void 0 : e.toString()\r\n }).message);\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n/**\r\n * Initialize the analytics instance in gtag.js by calling config command with fid.\r\n *\r\n * NOTE: We combine analytics initialization and setting fid together because we want fid to be\r\n * part of the `page_view` event that's sent during the initialization\r\n * @param app Firebase app\r\n * @param gtagCore The gtag function that's not wrapped.\r\n * @param dynamicConfigPromisesList Array of all dynamic config promises.\r\n * @param measurementIdToAppId Maps measurementID to appID.\r\n * @param installations _FirebaseInstallationsInternal instance.\r\n *\r\n * @returns Measurement ID.\r\n */\r\nasync function _initializeAnalytics(app, dynamicConfigPromisesList, measurementIdToAppId, installations, gtagCore, dataLayerName, options) {\r\n var _a;\r\n const dynamicConfigPromise = fetchDynamicConfigWithRetry(app);\r\n // Once fetched, map measurementIds to appId, for ease of lookup in wrapped gtag function.\r\n dynamicConfigPromise\r\n .then(config => {\r\n measurementIdToAppId[config.measurementId] = config.appId;\r\n if (app.options.measurementId &&\r\n config.measurementId !== app.options.measurementId) {\r\n logger.warn(`The measurement ID in the local Firebase config (${app.options.measurementId})` +\r\n ` does not match the measurement ID fetched from the server (${config.measurementId}).` +\r\n ` To ensure analytics events are always sent to the correct Analytics property,` +\r\n ` update the` +\r\n ` measurement ID field in the local config or remove it from the local config.`);\r\n }\r\n })\r\n .catch(e => logger.error(e));\r\n // Add to list to track state of all dynamic config promises.\r\n dynamicConfigPromisesList.push(dynamicConfigPromise);\r\n const fidPromise = validateIndexedDB().then(envIsValid => {\r\n if (envIsValid) {\r\n return installations.getId();\r\n }\r\n else {\r\n return undefined;\r\n }\r\n });\r\n const [dynamicConfig, fid] = await Promise.all([\r\n dynamicConfigPromise,\r\n fidPromise\r\n ]);\r\n // Detect if user has already put the gtag \n if (val === '') return true;\n if (val === 'false') return false;\n if (val === 'true') return true;\n return val;\n}\n\nif (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {\n var attrs = [['data-family-prefix', 'familyPrefix'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']];\n attrs.forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n attr = _ref2[0],\n key = _ref2[1];\n\n var val = coerce(getAttrConfig(attr));\n\n if (val !== undefined && val !== null) {\n initial[key] = val;\n }\n });\n}\n\nvar _default = {\n familyPrefix: DEFAULT_FAMILY_PREFIX,\n replacementClass: DEFAULT_REPLACEMENT_CLASS,\n autoReplaceSvg: true,\n autoAddCss: true,\n autoA11y: true,\n searchPseudoElements: false,\n observeMutations: true,\n mutateApproach: 'async',\n keepOriginalSource: true,\n measurePerformance: false,\n showMissingIcons: true\n};\n\nvar _config = _objectSpread({}, _default, initial);\n\nif (!_config.autoReplaceSvg) _config.observeMutations = false;\n\nvar config = _objectSpread({}, _config);\n\nWINDOW.FontAwesomeConfig = config;\n\nvar w = WINDOW || {};\nif (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};\nif (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};\nif (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};\nif (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];\nvar namespace = w[NAMESPACE_IDENTIFIER];\n\nvar functions = [];\n\nvar listener = function listener() {\n DOCUMENT.removeEventListener('DOMContentLoaded', listener);\n loaded = 1;\n functions.map(function (fn) {\n return fn();\n });\n};\n\nvar loaded = false;\n\nif (IS_DOM) {\n loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);\n if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);\n}\n\nfunction domready (fn) {\n if (!IS_DOM) return;\n loaded ? setTimeout(fn, 0) : functions.push(fn);\n}\n\nvar PENDING = 'pending';\nvar SETTLED = 'settled';\nvar FULFILLED = 'fulfilled';\nvar REJECTED = 'rejected';\n\nvar NOOP = function NOOP() {};\n\nvar isNode = typeof global !== 'undefined' && typeof global.process !== 'undefined' && typeof global.process.emit === 'function';\nvar asyncSetTimer = typeof setImmediate === 'undefined' ? setTimeout : setImmediate;\nvar asyncQueue = [];\nvar asyncTimer;\n\nfunction asyncFlush() {\n // run promise callbacks\n for (var i = 0; i < asyncQueue.length; i++) {\n asyncQueue[i][0](asyncQueue[i][1]);\n } // reset async asyncQueue\n\n\n asyncQueue = [];\n asyncTimer = false;\n}\n\nfunction asyncCall(callback, arg) {\n asyncQueue.push([callback, arg]);\n\n if (!asyncTimer) {\n asyncTimer = true;\n asyncSetTimer(asyncFlush, 0);\n }\n}\n\nfunction invokeResolver(resolver, promise) {\n function resolvePromise(value) {\n resolve(promise, value);\n }\n\n function rejectPromise(reason) {\n reject(promise, reason);\n }\n\n try {\n resolver(resolvePromise, rejectPromise);\n } catch (e) {\n rejectPromise(e);\n }\n}\n\nfunction invokeCallback(subscriber) {\n var owner = subscriber.owner;\n var settled = owner._state;\n var value = owner._data;\n var callback = subscriber[settled];\n var promise = subscriber.then;\n\n if (typeof callback === 'function') {\n settled = FULFILLED;\n\n try {\n value = callback(value);\n } catch (e) {\n reject(promise, e);\n }\n }\n\n if (!handleThenable(promise, value)) {\n if (settled === FULFILLED) {\n resolve(promise, value);\n }\n\n if (settled === REJECTED) {\n reject(promise, value);\n }\n }\n}\n\nfunction handleThenable(promise, value) {\n var resolved;\n\n try {\n if (promise === value) {\n throw new TypeError('A promises callback cannot return that same promise.');\n }\n\n if (value && (typeof value === 'function' || _typeof(value) === 'object')) {\n // then should be retrieved only once\n var then = value.then;\n\n if (typeof then === 'function') {\n then.call(value, function (val) {\n if (!resolved) {\n resolved = true;\n\n if (value === val) {\n fulfill(promise, val);\n } else {\n resolve(promise, val);\n }\n }\n }, function (reason) {\n if (!resolved) {\n resolved = true;\n reject(promise, reason);\n }\n });\n return true;\n }\n }\n } catch (e) {\n if (!resolved) {\n reject(promise, e);\n }\n\n return true;\n }\n\n return false;\n}\n\nfunction resolve(promise, value) {\n if (promise === value || !handleThenable(promise, value)) {\n fulfill(promise, value);\n }\n}\n\nfunction fulfill(promise, value) {\n if (promise._state === PENDING) {\n promise._state = SETTLED;\n promise._data = value;\n asyncCall(publishFulfillment, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state === PENDING) {\n promise._state = SETTLED;\n promise._data = reason;\n asyncCall(publishRejection, promise);\n }\n}\n\nfunction publish(promise) {\n promise._then = promise._then.forEach(invokeCallback);\n}\n\nfunction publishFulfillment(promise) {\n promise._state = FULFILLED;\n publish(promise);\n}\n\nfunction publishRejection(promise) {\n promise._state = REJECTED;\n publish(promise);\n\n if (!promise._handled && isNode) {\n global.process.emit('unhandledRejection', promise._data, promise);\n }\n}\n\nfunction notifyRejectionHandled(promise) {\n global.process.emit('rejectionHandled', promise);\n}\n/**\n * @class\n */\n\n\nfunction P(resolver) {\n if (typeof resolver !== 'function') {\n throw new TypeError('Promise resolver ' + resolver + ' is not a function');\n }\n\n if (this instanceof P === false) {\n throw new TypeError('Failed to construct \\'Promise\\': Please use the \\'new\\' operator, this object constructor cannot be called as a function.');\n }\n\n this._then = [];\n invokeResolver(resolver, this);\n}\n\nP.prototype = {\n constructor: P,\n _state: PENDING,\n _then: null,\n _data: undefined,\n _handled: false,\n then: function then(onFulfillment, onRejection) {\n var subscriber = {\n owner: this,\n then: new this.constructor(NOOP),\n fulfilled: onFulfillment,\n rejected: onRejection\n };\n\n if ((onRejection || onFulfillment) && !this._handled) {\n this._handled = true;\n\n if (this._state === REJECTED && isNode) {\n asyncCall(notifyRejectionHandled, this);\n }\n }\n\n if (this._state === FULFILLED || this._state === REJECTED) {\n // already resolved, call callback async\n asyncCall(invokeCallback, subscriber);\n } else {\n // subscribe\n this._then.push(subscriber);\n }\n\n return subscriber.then;\n },\n catch: function _catch(onRejection) {\n return this.then(null, onRejection);\n }\n};\n\nP.all = function (promises) {\n if (!Array.isArray(promises)) {\n throw new TypeError('You must pass an array to Promise.all().');\n }\n\n return new P(function (resolve, reject) {\n var results = [];\n var remaining = 0;\n\n function resolver(index) {\n remaining++;\n return function (value) {\n results[index] = value;\n\n if (! --remaining) {\n resolve(results);\n }\n };\n }\n\n for (var i = 0, promise; i < promises.length; i++) {\n promise = promises[i];\n\n if (promise && typeof promise.then === 'function') {\n promise.then(resolver(i), reject);\n } else {\n results[i] = promise;\n }\n }\n\n if (!remaining) {\n resolve(results);\n }\n });\n};\n\nP.race = function (promises) {\n if (!Array.isArray(promises)) {\n throw new TypeError('You must pass an array to Promise.race().');\n }\n\n return new P(function (resolve, reject) {\n for (var i = 0, promise; i < promises.length; i++) {\n promise = promises[i];\n\n if (promise && typeof promise.then === 'function') {\n promise.then(resolve, reject);\n } else {\n resolve(promise);\n }\n }\n });\n};\n\nP.resolve = function (value) {\n if (value && _typeof(value) === 'object' && value.constructor === P) {\n return value;\n }\n\n return new P(function (resolve) {\n resolve(value);\n });\n};\n\nP.reject = function (reason) {\n return new P(function (resolve, reject) {\n reject(reason);\n });\n};\n\nvar picked = typeof Promise === 'function' ? Promise : P;\n\nvar d = UNITS_IN_GRID;\nvar meaninglessTransform = {\n size: 16,\n x: 0,\n y: 0,\n rotate: 0,\n flipX: false,\n flipY: false\n};\n\nfunction isReserved(name) {\n return ~RESERVED_CLASSES.indexOf(name);\n}\nfunction insertCss(css) {\n if (!css || !IS_DOM) {\n return;\n }\n\n var style = DOCUMENT.createElement('style');\n style.setAttribute('type', 'text/css');\n style.innerHTML = css;\n var headChildren = DOCUMENT.head.childNodes;\n var beforeChild = null;\n\n for (var i = headChildren.length - 1; i > -1; i--) {\n var child = headChildren[i];\n var tagName = (child.tagName || '').toUpperCase();\n\n if (['STYLE', 'LINK'].indexOf(tagName) > -1) {\n beforeChild = child;\n }\n }\n\n DOCUMENT.head.insertBefore(style, beforeChild);\n return css;\n}\nvar idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\nfunction nextUniqueId() {\n var size = 12;\n var id = '';\n\n while (size-- > 0) {\n id += idPool[Math.random() * 62 | 0];\n }\n\n return id;\n}\nfunction toArray(obj) {\n var array = [];\n\n for (var i = (obj || []).length >>> 0; i--;) {\n array[i] = obj[i];\n }\n\n return array;\n}\nfunction classArray(node) {\n if (node.classList) {\n return toArray(node.classList);\n } else {\n return (node.getAttribute('class') || '').split(' ').filter(function (i) {\n return i;\n });\n }\n}\nfunction getIconName(familyPrefix, cls) {\n var parts = cls.split('-');\n var prefix = parts[0];\n var iconName = parts.slice(1).join('-');\n\n if (prefix === familyPrefix && iconName !== '' && !isReserved(iconName)) {\n return iconName;\n } else {\n return null;\n }\n}\nfunction htmlEscape(str) {\n return \"\".concat(str).replace(/&/g, '&').replace(/\"/g, '"').replace(/'/g, ''').replace(//g, '>');\n}\nfunction joinAttributes(attributes) {\n return Object.keys(attributes || {}).reduce(function (acc, attributeName) {\n return acc + \"\".concat(attributeName, \"=\\\"\").concat(htmlEscape(attributes[attributeName]), \"\\\" \");\n }, '').trim();\n}\nfunction joinStyles(styles) {\n return Object.keys(styles || {}).reduce(function (acc, styleName) {\n return acc + \"\".concat(styleName, \": \").concat(styles[styleName], \";\");\n }, '');\n}\nfunction transformIsMeaningful(transform) {\n return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;\n}\nfunction transformForSvg(_ref) {\n var transform = _ref.transform,\n containerWidth = _ref.containerWidth,\n iconWidth = _ref.iconWidth;\n var outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n var inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n var path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n return {\n outer: outer,\n inner: inner,\n path: path\n };\n}\nfunction transformForCss(_ref2) {\n var transform = _ref2.transform,\n _ref2$width = _ref2.width,\n width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width,\n _ref2$height = _ref2.height,\n height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height,\n _ref2$startCentered = _ref2.startCentered,\n startCentered = _ref2$startCentered === void 0 ? false : _ref2$startCentered;\n var val = '';\n\n if (startCentered && IS_IE) {\n val += \"translate(\".concat(transform.x / d - width / 2, \"em, \").concat(transform.y / d - height / 2, \"em) \");\n } else if (startCentered) {\n val += \"translate(calc(-50% + \".concat(transform.x / d, \"em), calc(-50% + \").concat(transform.y / d, \"em)) \");\n } else {\n val += \"translate(\".concat(transform.x / d, \"em, \").concat(transform.y / d, \"em) \");\n }\n\n val += \"scale(\".concat(transform.size / d * (transform.flipX ? -1 : 1), \", \").concat(transform.size / d * (transform.flipY ? -1 : 1), \") \");\n val += \"rotate(\".concat(transform.rotate, \"deg) \");\n return val;\n}\n\nvar ALL_SPACE = {\n x: 0,\n y: 0,\n width: '100%',\n height: '100%'\n};\n\nfunction fillBlack(abstract) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (abstract.attributes && (abstract.attributes.fill || force)) {\n abstract.attributes.fill = 'black';\n }\n\n return abstract;\n}\n\nfunction deGroup(abstract) {\n if (abstract.tag === 'g') {\n return abstract.children;\n } else {\n return [abstract];\n }\n}\n\nfunction makeIconMasking (_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n main = _ref.main,\n mask = _ref.mask,\n explicitMaskId = _ref.maskId,\n transform = _ref.transform;\n var mainWidth = main.width,\n mainPath = main.icon;\n var maskWidth = mask.width,\n maskPath = mask.icon;\n var trans = transformForSvg({\n transform: transform,\n containerWidth: maskWidth,\n iconWidth: mainWidth\n });\n var maskRect = {\n tag: 'rect',\n attributes: _objectSpread({}, ALL_SPACE, {\n fill: 'white'\n })\n };\n var maskInnerGroupChildrenMixin = mainPath.children ? {\n children: mainPath.children.map(fillBlack)\n } : {};\n var maskInnerGroup = {\n tag: 'g',\n attributes: _objectSpread({}, trans.inner),\n children: [fillBlack(_objectSpread({\n tag: mainPath.tag,\n attributes: _objectSpread({}, mainPath.attributes, trans.path)\n }, maskInnerGroupChildrenMixin))]\n };\n var maskOuterGroup = {\n tag: 'g',\n attributes: _objectSpread({}, trans.outer),\n children: [maskInnerGroup]\n };\n var maskId = \"mask-\".concat(explicitMaskId || nextUniqueId());\n var clipId = \"clip-\".concat(explicitMaskId || nextUniqueId());\n var maskTag = {\n tag: 'mask',\n attributes: _objectSpread({}, ALL_SPACE, {\n id: maskId,\n maskUnits: 'userSpaceOnUse',\n maskContentUnits: 'userSpaceOnUse'\n }),\n children: [maskRect, maskOuterGroup]\n };\n var defs = {\n tag: 'defs',\n children: [{\n tag: 'clipPath',\n attributes: {\n id: clipId\n },\n children: deGroup(maskPath)\n }, maskTag]\n };\n children.push(defs, {\n tag: 'rect',\n attributes: _objectSpread({\n fill: 'currentColor',\n 'clip-path': \"url(#\".concat(clipId, \")\"),\n mask: \"url(#\".concat(maskId, \")\")\n }, ALL_SPACE)\n });\n return {\n children: children,\n attributes: attributes\n };\n}\n\nfunction makeIconStandard (_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n main = _ref.main,\n transform = _ref.transform,\n styles = _ref.styles;\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n if (transformIsMeaningful(transform)) {\n var trans = transformForSvg({\n transform: transform,\n containerWidth: main.width,\n iconWidth: main.width\n });\n children.push({\n tag: 'g',\n attributes: _objectSpread({}, trans.outer),\n children: [{\n tag: 'g',\n attributes: _objectSpread({}, trans.inner),\n children: [{\n tag: main.icon.tag,\n children: main.icon.children,\n attributes: _objectSpread({}, main.icon.attributes, trans.path)\n }]\n }]\n });\n } else {\n children.push(main.icon);\n }\n\n return {\n children: children,\n attributes: attributes\n };\n}\n\nfunction asIcon (_ref) {\n var children = _ref.children,\n main = _ref.main,\n mask = _ref.mask,\n attributes = _ref.attributes,\n styles = _ref.styles,\n transform = _ref.transform;\n\n if (transformIsMeaningful(transform) && main.found && !mask.found) {\n var width = main.width,\n height = main.height;\n var offset = {\n x: width / height / 2,\n y: 0.5\n };\n attributes['style'] = joinStyles(_objectSpread({}, styles, {\n 'transform-origin': \"\".concat(offset.x + transform.x / 16, \"em \").concat(offset.y + transform.y / 16, \"em\")\n }));\n }\n\n return [{\n tag: 'svg',\n attributes: attributes,\n children: children\n }];\n}\n\nfunction asSymbol (_ref) {\n var prefix = _ref.prefix,\n iconName = _ref.iconName,\n children = _ref.children,\n attributes = _ref.attributes,\n symbol = _ref.symbol;\n var id = symbol === true ? \"\".concat(prefix, \"-\").concat(config.familyPrefix, \"-\").concat(iconName) : symbol;\n return [{\n tag: 'svg',\n attributes: {\n style: 'display: none;'\n },\n children: [{\n tag: 'symbol',\n attributes: _objectSpread({}, attributes, {\n id: id\n }),\n children: children\n }]\n }];\n}\n\nfunction makeInlineSvgAbstract(params) {\n var _params$icons = params.icons,\n main = _params$icons.main,\n mask = _params$icons.mask,\n prefix = params.prefix,\n iconName = params.iconName,\n transform = params.transform,\n symbol = params.symbol,\n title = params.title,\n maskId = params.maskId,\n titleId = params.titleId,\n extra = params.extra,\n _params$watchable = params.watchable,\n watchable = _params$watchable === void 0 ? false : _params$watchable;\n\n var _ref = mask.found ? mask : main,\n width = _ref.width,\n height = _ref.height;\n\n var isUploadedIcon = prefix === 'fak';\n var widthClass = isUploadedIcon ? '' : \"fa-w-\".concat(Math.ceil(width / height * 16));\n var attrClass = [config.replacementClass, iconName ? \"\".concat(config.familyPrefix, \"-\").concat(iconName) : '', widthClass].filter(function (c) {\n return extra.classes.indexOf(c) === -1;\n }).filter(function (c) {\n return c !== '' || !!c;\n }).concat(extra.classes).join(' ');\n var content = {\n children: [],\n attributes: _objectSpread({}, extra.attributes, {\n 'data-prefix': prefix,\n 'data-icon': iconName,\n 'class': attrClass,\n 'role': extra.attributes.role || 'img',\n 'xmlns': 'http://www.w3.org/2000/svg',\n 'viewBox': \"0 0 \".concat(width, \" \").concat(height)\n })\n };\n var uploadedIconWidthStyle = isUploadedIcon && !~extra.classes.indexOf('fa-fw') ? {\n width: \"\".concat(width / height * 16 * 0.0625, \"em\")\n } : {};\n\n if (watchable) {\n content.attributes[DATA_FA_I2SVG] = '';\n }\n\n if (title) content.children.push({\n tag: 'title',\n attributes: {\n id: content.attributes['aria-labelledby'] || \"title-\".concat(titleId || nextUniqueId())\n },\n children: [title]\n });\n\n var args = _objectSpread({}, content, {\n prefix: prefix,\n iconName: iconName,\n main: main,\n mask: mask,\n maskId: maskId,\n transform: transform,\n symbol: symbol,\n styles: _objectSpread({}, uploadedIconWidthStyle, extra.styles)\n });\n\n var _ref2 = mask.found && main.found ? makeIconMasking(args) : makeIconStandard(args),\n children = _ref2.children,\n attributes = _ref2.attributes;\n\n args.children = children;\n args.attributes = attributes;\n\n if (symbol) {\n return asSymbol(args);\n } else {\n return asIcon(args);\n }\n}\nfunction makeLayersTextAbstract(params) {\n var content = params.content,\n width = params.width,\n height = params.height,\n transform = params.transform,\n title = params.title,\n extra = params.extra,\n _params$watchable2 = params.watchable,\n watchable = _params$watchable2 === void 0 ? false : _params$watchable2;\n\n var attributes = _objectSpread({}, extra.attributes, title ? {\n 'title': title\n } : {}, {\n 'class': extra.classes.join(' ')\n });\n\n if (watchable) {\n attributes[DATA_FA_I2SVG] = '';\n }\n\n var styles = _objectSpread({}, extra.styles);\n\n if (transformIsMeaningful(transform)) {\n styles['transform'] = transformForCss({\n transform: transform,\n startCentered: true,\n width: width,\n height: height\n });\n styles['-webkit-transform'] = styles['transform'];\n }\n\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\nfunction makeLayersCounterAbstract(params) {\n var content = params.content,\n title = params.title,\n extra = params.extra;\n\n var attributes = _objectSpread({}, extra.attributes, title ? {\n 'title': title\n } : {}, {\n 'class': extra.classes.join(' ')\n });\n\n var styleString = joinStyles(extra.styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\n\nvar noop$1 = function noop() {};\n\nvar p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {\n mark: noop$1,\n measure: noop$1\n};\nvar preamble = \"FA \\\"5.15.4\\\"\";\n\nvar begin = function begin(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" begins\"));\n return function () {\n return end(name);\n };\n};\n\nvar end = function end(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" ends\"));\n p.measure(\"\".concat(preamble, \" \").concat(name), \"\".concat(preamble, \" \").concat(name, \" begins\"), \"\".concat(preamble, \" \").concat(name, \" ends\"));\n};\n\nvar perf = {\n begin: begin,\n end: end\n};\n\n/**\n * Internal helper to bind a function known to have 4 arguments\n * to a given context.\n */\n\nvar bindInternal4 = function bindInternal4(func, thisContext) {\n return function (a, b, c, d) {\n return func.call(thisContext, a, b, c, d);\n };\n};\n\n/**\n * # Reduce\n *\n * A fast object `.reduce()` implementation.\n *\n * @param {Object} subject The object to reduce over.\n * @param {Function} fn The reducer function.\n * @param {mixed} initialValue The initial value for the reducer, defaults to subject[0].\n * @param {Object} thisContext The context for the reducer.\n * @return {mixed} The final result.\n */\n\n\nvar reduce = function fastReduceObject(subject, fn, initialValue, thisContext) {\n var keys = Object.keys(subject),\n length = keys.length,\n iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,\n i,\n key,\n result;\n\n if (initialValue === undefined) {\n i = 1;\n result = subject[keys[0]];\n } else {\n i = 0;\n result = initialValue;\n }\n\n for (; i < length; i++) {\n key = keys[i];\n result = iterator(result, subject[key], key, subject);\n }\n\n return result;\n};\n\nfunction toHex(unicode) {\n var result = '';\n\n for (var i = 0; i < unicode.length; i++) {\n var hex = unicode.charCodeAt(i).toString(16);\n result += ('000' + hex).slice(-4);\n }\n\n return result;\n}\n\nfunction defineIcons(prefix, icons) {\n var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var _params$skipHooks = params.skipHooks,\n skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;\n var normalized = Object.keys(icons).reduce(function (acc, iconName) {\n var icon = icons[iconName];\n var expanded = !!icon.icon;\n\n if (expanded) {\n acc[icon.iconName] = icon.icon;\n } else {\n acc[iconName] = icon;\n }\n\n return acc;\n }, {});\n\n if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {\n namespace.hooks.addPack(prefix, normalized);\n } else {\n namespace.styles[prefix] = _objectSpread({}, namespace.styles[prefix] || {}, normalized);\n }\n /**\n * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction\n * of new styles we needed to differentiate between them. Prefix `fa` is now an alias\n * for `fas` so we'll easy the upgrade process for our users by automatically defining\n * this as well.\n */\n\n\n if (prefix === 'fas') {\n defineIcons('fa', icons);\n }\n}\n\nvar styles = namespace.styles,\n shims = namespace.shims;\nvar _byUnicode = {};\nvar _byLigature = {};\nvar _byOldName = {};\nvar build = function build() {\n var lookup = function lookup(reducer) {\n return reduce(styles, function (o, style, prefix) {\n o[prefix] = reduce(style, reducer, {});\n return o;\n }, {});\n };\n\n _byUnicode = lookup(function (acc, icon, iconName) {\n if (icon[3]) {\n acc[icon[3]] = iconName;\n }\n\n return acc;\n });\n _byLigature = lookup(function (acc, icon, iconName) {\n var ligatures = icon[2];\n acc[iconName] = iconName;\n ligatures.forEach(function (ligature) {\n acc[ligature] = iconName;\n });\n return acc;\n });\n var hasRegular = 'far' in styles;\n _byOldName = reduce(shims, function (acc, shim) {\n var oldName = shim[0];\n var prefix = shim[1];\n var iconName = shim[2];\n\n if (prefix === 'far' && !hasRegular) {\n prefix = 'fas';\n }\n\n acc[oldName] = {\n prefix: prefix,\n iconName: iconName\n };\n return acc;\n }, {});\n};\nbuild();\nfunction byUnicode(prefix, unicode) {\n return (_byUnicode[prefix] || {})[unicode];\n}\nfunction byLigature(prefix, ligature) {\n return (_byLigature[prefix] || {})[ligature];\n}\nfunction byOldName(name) {\n return _byOldName[name] || {\n prefix: null,\n iconName: null\n };\n}\n\nvar styles$1 = namespace.styles;\nvar emptyCanonicalIcon = function emptyCanonicalIcon() {\n return {\n prefix: null,\n iconName: null,\n rest: []\n };\n};\nfunction getCanonicalIcon(values) {\n return values.reduce(function (acc, cls) {\n var iconName = getIconName(config.familyPrefix, cls);\n\n if (styles$1[cls]) {\n acc.prefix = cls;\n } else if (config.autoFetchSvg && Object.keys(PREFIX_TO_STYLE).indexOf(cls) > -1) {\n acc.prefix = cls;\n } else if (iconName) {\n var shim = acc.prefix === 'fa' ? byOldName(iconName) : {};\n acc.iconName = shim.iconName || iconName;\n acc.prefix = shim.prefix || acc.prefix;\n } else if (cls !== config.replacementClass && cls.indexOf('fa-w-') !== 0) {\n acc.rest.push(cls);\n }\n\n return acc;\n }, emptyCanonicalIcon());\n}\nfunction iconFromMapping(mapping, prefix, iconName) {\n if (mapping && mapping[prefix] && mapping[prefix][iconName]) {\n return {\n prefix: prefix,\n iconName: iconName,\n icon: mapping[prefix][iconName]\n };\n }\n}\n\nfunction toHtml(abstractNodes) {\n var tag = abstractNodes.tag,\n _abstractNodes$attrib = abstractNodes.attributes,\n attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib,\n _abstractNodes$childr = abstractNodes.children,\n children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr;\n\n if (typeof abstractNodes === 'string') {\n return htmlEscape(abstractNodes);\n } else {\n return \"<\".concat(tag, \" \").concat(joinAttributes(attributes), \">\").concat(children.map(toHtml).join(''), \"\");\n }\n}\n\nvar noop$2 = function noop() {};\n\nfunction isWatched(node) {\n var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;\n return typeof i2svg === 'string';\n}\n\nfunction getMutator() {\n if (config.autoReplaceSvg === true) {\n return mutators.replace;\n }\n\n var mutator = mutators[config.autoReplaceSvg];\n return mutator || mutators.replace;\n}\n\nvar mutators = {\n replace: function replace(mutation) {\n var node = mutation[0];\n var abstract = mutation[1];\n var newOuterHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n\n if (node.parentNode && node.outerHTML) {\n node.outerHTML = newOuterHTML + (config.keepOriginalSource && node.tagName.toLowerCase() !== 'svg' ? \"\") : '');\n } else if (node.parentNode) {\n var newNode = document.createElement('span');\n node.parentNode.replaceChild(newNode, node);\n newNode.outerHTML = newOuterHTML;\n }\n },\n nest: function nest(mutation) {\n var node = mutation[0];\n var abstract = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it.\n // Short-circuit to the standard replacement\n\n if (~classArray(node).indexOf(config.replacementClass)) {\n return mutators.replace(mutation);\n }\n\n var forSvg = new RegExp(\"\".concat(config.familyPrefix, \"-.*\"));\n delete abstract[0].attributes.style;\n delete abstract[0].attributes.id;\n var splitClasses = abstract[0].attributes.class.split(' ').reduce(function (acc, cls) {\n if (cls === config.replacementClass || cls.match(forSvg)) {\n acc.toSvg.push(cls);\n } else {\n acc.toNode.push(cls);\n }\n\n return acc;\n }, {\n toNode: [],\n toSvg: []\n });\n abstract[0].attributes.class = splitClasses.toSvg.join(' ');\n var newInnerHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.setAttribute('class', splitClasses.toNode.join(' '));\n node.setAttribute(DATA_FA_I2SVG, '');\n node.innerHTML = newInnerHTML;\n }\n};\n\nfunction performOperationSync(op) {\n op();\n}\n\nfunction perform(mutations, callback) {\n var callbackFunction = typeof callback === 'function' ? callback : noop$2;\n\n if (mutations.length === 0) {\n callbackFunction();\n } else {\n var frame = performOperationSync;\n\n if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {\n frame = WINDOW.requestAnimationFrame || performOperationSync;\n }\n\n frame(function () {\n var mutator = getMutator();\n var mark = perf.begin('mutate');\n mutations.map(mutator);\n mark();\n callbackFunction();\n });\n }\n}\nvar disabled = false;\nfunction disableObservation() {\n disabled = true;\n}\nfunction enableObservation() {\n disabled = false;\n}\nvar mo = null;\nfunction observe(options) {\n if (!MUTATION_OBSERVER) {\n return;\n }\n\n if (!config.observeMutations) {\n return;\n }\n\n var treeCallback = options.treeCallback,\n nodeCallback = options.nodeCallback,\n pseudoElementsCallback = options.pseudoElementsCallback,\n _options$observeMutat = options.observeMutationsRoot,\n observeMutationsRoot = _options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat;\n mo = new MUTATION_OBSERVER(function (objects) {\n if (disabled) return;\n toArray(objects).forEach(function (mutationRecord) {\n if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {\n if (config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target);\n }\n\n treeCallback(mutationRecord.target);\n }\n\n if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target.parentNode);\n }\n\n if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {\n if (mutationRecord.attributeName === 'class') {\n var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)),\n prefix = _getCanonicalIcon.prefix,\n iconName = _getCanonicalIcon.iconName;\n\n if (prefix) mutationRecord.target.setAttribute('data-prefix', prefix);\n if (iconName) mutationRecord.target.setAttribute('data-icon', iconName);\n } else {\n nodeCallback(mutationRecord.target);\n }\n }\n });\n });\n if (!IS_DOM) return;\n mo.observe(observeMutationsRoot, {\n childList: true,\n attributes: true,\n characterData: true,\n subtree: true\n });\n}\nfunction disconnect() {\n if (!mo) return;\n mo.disconnect();\n}\n\nfunction styleParser (node) {\n var style = node.getAttribute('style');\n var val = [];\n\n if (style) {\n val = style.split(';').reduce(function (acc, style) {\n var styles = style.split(':');\n var prop = styles[0];\n var value = styles.slice(1);\n\n if (prop && value.length > 0) {\n acc[prop] = value.join(':').trim();\n }\n\n return acc;\n }, {});\n }\n\n return val;\n}\n\nfunction classParser (node) {\n var existingPrefix = node.getAttribute('data-prefix');\n var existingIconName = node.getAttribute('data-icon');\n var innerText = node.innerText !== undefined ? node.innerText.trim() : '';\n var val = getCanonicalIcon(classArray(node));\n\n if (existingPrefix && existingIconName) {\n val.prefix = existingPrefix;\n val.iconName = existingIconName;\n }\n\n if (val.prefix && innerText.length > 1) {\n val.iconName = byLigature(val.prefix, node.innerText);\n } else if (val.prefix && innerText.length === 1) {\n val.iconName = byUnicode(val.prefix, toHex(node.innerText));\n }\n\n return val;\n}\n\nvar parseTransformString = function parseTransformString(transformString) {\n var transform = {\n size: 16,\n x: 0,\n y: 0,\n flipX: false,\n flipY: false,\n rotate: 0\n };\n\n if (!transformString) {\n return transform;\n } else {\n return transformString.toLowerCase().split(' ').reduce(function (acc, n) {\n var parts = n.toLowerCase().split('-');\n var first = parts[0];\n var rest = parts.slice(1).join('-');\n\n if (first && rest === 'h') {\n acc.flipX = true;\n return acc;\n }\n\n if (first && rest === 'v') {\n acc.flipY = true;\n return acc;\n }\n\n rest = parseFloat(rest);\n\n if (isNaN(rest)) {\n return acc;\n }\n\n switch (first) {\n case 'grow':\n acc.size = acc.size + rest;\n break;\n\n case 'shrink':\n acc.size = acc.size - rest;\n break;\n\n case 'left':\n acc.x = acc.x - rest;\n break;\n\n case 'right':\n acc.x = acc.x + rest;\n break;\n\n case 'up':\n acc.y = acc.y - rest;\n break;\n\n case 'down':\n acc.y = acc.y + rest;\n break;\n\n case 'rotate':\n acc.rotate = acc.rotate + rest;\n break;\n }\n\n return acc;\n }, transform);\n }\n};\nfunction transformParser (node) {\n return parseTransformString(node.getAttribute('data-fa-transform'));\n}\n\nfunction symbolParser (node) {\n var symbol = node.getAttribute('data-fa-symbol');\n return symbol === null ? false : symbol === '' ? true : symbol;\n}\n\nfunction attributesParser (node) {\n var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) {\n if (acc.name !== 'class' && acc.name !== 'style') {\n acc[attr.name] = attr.value;\n }\n\n return acc;\n }, {});\n var title = node.getAttribute('title');\n var titleId = node.getAttribute('data-fa-title-id');\n\n if (config.autoA11y) {\n if (title) {\n extraAttributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n extraAttributes['aria-hidden'] = 'true';\n extraAttributes['focusable'] = 'false';\n }\n }\n\n return extraAttributes;\n}\n\nfunction maskParser (node) {\n var mask = node.getAttribute('data-fa-mask');\n\n if (!mask) {\n return emptyCanonicalIcon();\n } else {\n return getCanonicalIcon(mask.split(' ').map(function (i) {\n return i.trim();\n }));\n }\n}\n\nfunction blankMeta() {\n return {\n iconName: null,\n title: null,\n titleId: null,\n prefix: null,\n transform: meaninglessTransform,\n symbol: false,\n mask: null,\n maskId: null,\n extra: {\n classes: [],\n styles: {},\n attributes: {}\n }\n };\n}\nfunction parseMeta(node) {\n var _classParser = classParser(node),\n iconName = _classParser.iconName,\n prefix = _classParser.prefix,\n extraClasses = _classParser.rest;\n\n var extraStyles = styleParser(node);\n var transform = transformParser(node);\n var symbol = symbolParser(node);\n var extraAttributes = attributesParser(node);\n var mask = maskParser(node);\n return {\n iconName: iconName,\n title: node.getAttribute('title'),\n titleId: node.getAttribute('data-fa-title-id'),\n prefix: prefix,\n transform: transform,\n symbol: symbol,\n mask: mask,\n maskId: node.getAttribute('data-fa-mask-id'),\n extra: {\n classes: extraClasses,\n styles: extraStyles,\n attributes: extraAttributes\n }\n };\n}\n\nfunction MissingIcon(error) {\n this.name = 'MissingIcon';\n this.message = error || 'Icon unavailable';\n this.stack = new Error().stack;\n}\nMissingIcon.prototype = Object.create(Error.prototype);\nMissingIcon.prototype.constructor = MissingIcon;\n\nvar FILL = {\n fill: 'currentColor'\n};\nvar ANIMATION_BASE = {\n attributeType: 'XML',\n repeatCount: 'indefinite',\n dur: '2s'\n};\nvar RING = {\n tag: 'path',\n attributes: _objectSpread({}, FILL, {\n d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'\n })\n};\n\nvar OPACITY_ANIMATE = _objectSpread({}, ANIMATION_BASE, {\n attributeName: 'opacity'\n});\n\nvar DOT = {\n tag: 'circle',\n attributes: _objectSpread({}, FILL, {\n cx: '256',\n cy: '364',\n r: '28'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread({}, ANIMATION_BASE, {\n attributeName: 'r',\n values: '28;14;28;28;14;28;'\n })\n }, {\n tag: 'animate',\n attributes: _objectSpread({}, OPACITY_ANIMATE, {\n values: '1;0;1;1;0;1;'\n })\n }]\n};\nvar QUESTION = {\n tag: 'path',\n attributes: _objectSpread({}, FILL, {\n opacity: '1',\n d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread({}, OPACITY_ANIMATE, {\n values: '1;0;0;0;0;1;'\n })\n }]\n};\nvar EXCLAMATION = {\n tag: 'path',\n attributes: _objectSpread({}, FILL, {\n opacity: '0',\n d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread({}, OPACITY_ANIMATE, {\n values: '0;0;1;1;0;0;'\n })\n }]\n};\nvar missing = {\n tag: 'g',\n children: [RING, DOT, QUESTION, EXCLAMATION]\n};\n\nvar styles$2 = namespace.styles;\nfunction asFoundIcon(icon) {\n var width = icon[0];\n var height = icon[1];\n\n var _icon$slice = icon.slice(4),\n _icon$slice2 = _slicedToArray(_icon$slice, 1),\n vectorData = _icon$slice2[0];\n\n var element = null;\n\n if (Array.isArray(vectorData)) {\n element = {\n tag: 'g',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.GROUP)\n },\n children: [{\n tag: 'path',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.SECONDARY),\n fill: 'currentColor',\n d: vectorData[0]\n }\n }, {\n tag: 'path',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.PRIMARY),\n fill: 'currentColor',\n d: vectorData[1]\n }\n }]\n };\n } else {\n element = {\n tag: 'path',\n attributes: {\n fill: 'currentColor',\n d: vectorData\n }\n };\n }\n\n return {\n found: true,\n width: width,\n height: height,\n icon: element\n };\n}\nfunction findIcon(iconName, prefix) {\n return new picked(function (resolve, reject) {\n var val = {\n found: false,\n width: 512,\n height: 512,\n icon: missing\n };\n\n if (iconName && prefix && styles$2[prefix] && styles$2[prefix][iconName]) {\n var icon = styles$2[prefix][iconName];\n return resolve(asFoundIcon(icon));\n }\n\n if (iconName && prefix && !config.showMissingIcons) {\n reject(new MissingIcon(\"Icon is missing for prefix \".concat(prefix, \" with icon name \").concat(iconName)));\n } else {\n resolve(val);\n }\n });\n}\n\nvar styles$3 = namespace.styles;\n\nfunction generateSvgReplacementMutation(node, nodeMeta) {\n var iconName = nodeMeta.iconName,\n title = nodeMeta.title,\n titleId = nodeMeta.titleId,\n prefix = nodeMeta.prefix,\n transform = nodeMeta.transform,\n symbol = nodeMeta.symbol,\n mask = nodeMeta.mask,\n maskId = nodeMeta.maskId,\n extra = nodeMeta.extra;\n return new picked(function (resolve, reject) {\n picked.all([findIcon(iconName, prefix), findIcon(mask.iconName, mask.prefix)]).then(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n main = _ref2[0],\n mask = _ref2[1];\n\n resolve([node, makeInlineSvgAbstract({\n icons: {\n main: main,\n mask: mask\n },\n prefix: prefix,\n iconName: iconName,\n transform: transform,\n symbol: symbol,\n mask: mask,\n maskId: maskId,\n title: title,\n titleId: titleId,\n extra: extra,\n watchable: true\n })]);\n });\n });\n}\n\nfunction generateLayersText(node, nodeMeta) {\n var title = nodeMeta.title,\n transform = nodeMeta.transform,\n extra = nodeMeta.extra;\n var width = null;\n var height = null;\n\n if (IS_IE) {\n var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);\n var boundingClientRect = node.getBoundingClientRect();\n width = boundingClientRect.width / computedFontSize;\n height = boundingClientRect.height / computedFontSize;\n }\n\n if (config.autoA11y && !title) {\n extra.attributes['aria-hidden'] = 'true';\n }\n\n return picked.resolve([node, makeLayersTextAbstract({\n content: node.innerHTML,\n width: width,\n height: height,\n transform: transform,\n title: title,\n extra: extra,\n watchable: true\n })]);\n}\n\nfunction generateMutation(node) {\n var nodeMeta = parseMeta(node);\n\n if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {\n return generateLayersText(node, nodeMeta);\n } else {\n return generateSvgReplacementMutation(node, nodeMeta);\n }\n}\n\nfunction onTree(root) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n if (!IS_DOM) return;\n var htmlClassList = DOCUMENT.documentElement.classList;\n\n var hclAdd = function hclAdd(suffix) {\n return htmlClassList.add(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var hclRemove = function hclRemove(suffix) {\n return htmlClassList.remove(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var prefixes = config.autoFetchSvg ? Object.keys(PREFIX_TO_STYLE) : Object.keys(styles$3);\n var prefixesDomQuery = [\".\".concat(LAYERS_TEXT_CLASSNAME, \":not([\").concat(DATA_FA_I2SVG, \"])\")].concat(prefixes.map(function (p) {\n return \".\".concat(p, \":not([\").concat(DATA_FA_I2SVG, \"])\");\n })).join(', ');\n\n if (prefixesDomQuery.length === 0) {\n return;\n }\n\n var candidates = [];\n\n try {\n candidates = toArray(root.querySelectorAll(prefixesDomQuery));\n } catch (e) {// noop\n }\n\n if (candidates.length > 0) {\n hclAdd('pending');\n hclRemove('complete');\n } else {\n return;\n }\n\n var mark = perf.begin('onTree');\n var mutations = candidates.reduce(function (acc, node) {\n try {\n var mutation = generateMutation(node);\n\n if (mutation) {\n acc.push(mutation);\n }\n } catch (e) {\n if (!PRODUCTION) {\n if (e instanceof MissingIcon) {\n console.error(e);\n }\n }\n }\n\n return acc;\n }, []);\n return new picked(function (resolve, reject) {\n picked.all(mutations).then(function (resolvedMutations) {\n perform(resolvedMutations, function () {\n hclAdd('active');\n hclAdd('complete');\n hclRemove('pending');\n if (typeof callback === 'function') callback();\n mark();\n resolve();\n });\n }).catch(function () {\n mark();\n reject();\n });\n });\n}\nfunction onNode(node) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n generateMutation(node).then(function (mutation) {\n if (mutation) {\n perform([mutation], callback);\n }\n });\n}\n\nfunction replaceForPosition(node, position) {\n var pendingAttribute = \"\".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));\n return new picked(function (resolve, reject) {\n if (node.getAttribute(pendingAttribute) !== null) {\n // This node is already being processed\n return resolve();\n }\n\n var children = toArray(node.children);\n var alreadyProcessedPseudoElement = children.filter(function (c) {\n return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position;\n })[0];\n var styles = WINDOW.getComputedStyle(node, position);\n var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN);\n var fontWeight = styles.getPropertyValue('font-weight');\n var content = styles.getPropertyValue('content');\n\n if (alreadyProcessedPseudoElement && !fontFamily) {\n // If we've already processed it but the current computed style does not result in a font-family,\n // that probably means that a class name that was previously present to make the icon has been\n // removed. So we now should delete the icon.\n node.removeChild(alreadyProcessedPseudoElement);\n return resolve();\n } else if (fontFamily && content !== 'none' && content !== '') {\n var _content = styles.getPropertyValue('content');\n\n var prefix = ~['Solid', 'Regular', 'Light', 'Duotone', 'Brands', 'Kit'].indexOf(fontFamily[2]) ? STYLE_TO_PREFIX[fontFamily[2].toLowerCase()] : FONT_WEIGHT_TO_PREFIX[fontWeight];\n var hexValue = toHex(_content.length === 3 ? _content.substr(1, 1) : _content);\n var iconName = byUnicode(prefix, hexValue);\n var iconIdentifier = iconName; // Only convert the pseudo element in this :before/:after position into an icon if we haven't\n // already done so with the same prefix and iconName\n\n if (iconName && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {\n node.setAttribute(pendingAttribute, iconIdentifier);\n\n if (alreadyProcessedPseudoElement) {\n // Delete the old one, since we're replacing it with a new one\n node.removeChild(alreadyProcessedPseudoElement);\n }\n\n var meta = blankMeta();\n var extra = meta.extra;\n extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;\n findIcon(iconName, prefix).then(function (main) {\n var abstract = makeInlineSvgAbstract(_objectSpread({}, meta, {\n icons: {\n main: main,\n mask: emptyCanonicalIcon()\n },\n prefix: prefix,\n iconName: iconIdentifier,\n extra: extra,\n watchable: true\n }));\n var element = DOCUMENT.createElement('svg');\n\n if (position === ':before') {\n node.insertBefore(element, node.firstChild);\n } else {\n node.appendChild(element);\n }\n\n element.outerHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.removeAttribute(pendingAttribute);\n resolve();\n }).catch(reject);\n } else {\n resolve();\n }\n } else {\n resolve();\n }\n });\n}\n\nfunction replace(node) {\n return picked.all([replaceForPosition(node, ':before'), replaceForPosition(node, ':after')]);\n}\n\nfunction processable(node) {\n return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg');\n}\n\nfunction searchPseudoElements (root) {\n if (!IS_DOM) return;\n return new picked(function (resolve, reject) {\n var operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);\n var end = perf.begin('searchPseudoElements');\n disableObservation();\n picked.all(operations).then(function () {\n end();\n enableObservation();\n resolve();\n }).catch(function () {\n end();\n enableObservation();\n reject();\n });\n });\n}\n\nvar baseStyles = \"svg:not(:root).svg-inline--fa {\\n overflow: visible;\\n}\\n\\n.svg-inline--fa {\\n display: inline-block;\\n font-size: inherit;\\n height: 1em;\\n overflow: visible;\\n vertical-align: -0.125em;\\n}\\n.svg-inline--fa.fa-lg {\\n vertical-align: -0.225em;\\n}\\n.svg-inline--fa.fa-w-1 {\\n width: 0.0625em;\\n}\\n.svg-inline--fa.fa-w-2 {\\n width: 0.125em;\\n}\\n.svg-inline--fa.fa-w-3 {\\n width: 0.1875em;\\n}\\n.svg-inline--fa.fa-w-4 {\\n width: 0.25em;\\n}\\n.svg-inline--fa.fa-w-5 {\\n width: 0.3125em;\\n}\\n.svg-inline--fa.fa-w-6 {\\n width: 0.375em;\\n}\\n.svg-inline--fa.fa-w-7 {\\n width: 0.4375em;\\n}\\n.svg-inline--fa.fa-w-8 {\\n width: 0.5em;\\n}\\n.svg-inline--fa.fa-w-9 {\\n width: 0.5625em;\\n}\\n.svg-inline--fa.fa-w-10 {\\n width: 0.625em;\\n}\\n.svg-inline--fa.fa-w-11 {\\n width: 0.6875em;\\n}\\n.svg-inline--fa.fa-w-12 {\\n width: 0.75em;\\n}\\n.svg-inline--fa.fa-w-13 {\\n width: 0.8125em;\\n}\\n.svg-inline--fa.fa-w-14 {\\n width: 0.875em;\\n}\\n.svg-inline--fa.fa-w-15 {\\n width: 0.9375em;\\n}\\n.svg-inline--fa.fa-w-16 {\\n width: 1em;\\n}\\n.svg-inline--fa.fa-w-17 {\\n width: 1.0625em;\\n}\\n.svg-inline--fa.fa-w-18 {\\n width: 1.125em;\\n}\\n.svg-inline--fa.fa-w-19 {\\n width: 1.1875em;\\n}\\n.svg-inline--fa.fa-w-20 {\\n width: 1.25em;\\n}\\n.svg-inline--fa.fa-pull-left {\\n margin-right: 0.3em;\\n width: auto;\\n}\\n.svg-inline--fa.fa-pull-right {\\n margin-left: 0.3em;\\n width: auto;\\n}\\n.svg-inline--fa.fa-border {\\n height: 1.5em;\\n}\\n.svg-inline--fa.fa-li {\\n width: 2em;\\n}\\n.svg-inline--fa.fa-fw {\\n width: 1.25em;\\n}\\n\\n.fa-layers svg.svg-inline--fa {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n\\n.fa-layers {\\n display: inline-block;\\n height: 1em;\\n position: relative;\\n text-align: center;\\n vertical-align: -0.125em;\\n width: 1em;\\n}\\n.fa-layers svg.svg-inline--fa {\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter, .fa-layers-text {\\n display: inline-block;\\n position: absolute;\\n text-align: center;\\n}\\n\\n.fa-layers-text {\\n left: 50%;\\n top: 50%;\\n -webkit-transform: translate(-50%, -50%);\\n transform: translate(-50%, -50%);\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter {\\n background-color: #ff253a;\\n border-radius: 1em;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n color: #fff;\\n height: 1.5em;\\n line-height: 1;\\n max-width: 5em;\\n min-width: 1.5em;\\n overflow: hidden;\\n padding: 0.25em;\\n right: 0;\\n text-overflow: ellipsis;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-bottom-right {\\n bottom: 0;\\n right: 0;\\n top: auto;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: bottom right;\\n transform-origin: bottom right;\\n}\\n\\n.fa-layers-bottom-left {\\n bottom: 0;\\n left: 0;\\n right: auto;\\n top: auto;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: bottom left;\\n transform-origin: bottom left;\\n}\\n\\n.fa-layers-top-right {\\n right: 0;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-top-left {\\n left: 0;\\n right: auto;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top left;\\n transform-origin: top left;\\n}\\n\\n.fa-lg {\\n font-size: 1.3333333333em;\\n line-height: 0.75em;\\n vertical-align: -0.0667em;\\n}\\n\\n.fa-xs {\\n font-size: 0.75em;\\n}\\n\\n.fa-sm {\\n font-size: 0.875em;\\n}\\n\\n.fa-1x {\\n font-size: 1em;\\n}\\n\\n.fa-2x {\\n font-size: 2em;\\n}\\n\\n.fa-3x {\\n font-size: 3em;\\n}\\n\\n.fa-4x {\\n font-size: 4em;\\n}\\n\\n.fa-5x {\\n font-size: 5em;\\n}\\n\\n.fa-6x {\\n font-size: 6em;\\n}\\n\\n.fa-7x {\\n font-size: 7em;\\n}\\n\\n.fa-8x {\\n font-size: 8em;\\n}\\n\\n.fa-9x {\\n font-size: 9em;\\n}\\n\\n.fa-10x {\\n font-size: 10em;\\n}\\n\\n.fa-fw {\\n text-align: center;\\n width: 1.25em;\\n}\\n\\n.fa-ul {\\n list-style-type: none;\\n margin-left: 2.5em;\\n padding-left: 0;\\n}\\n.fa-ul > li {\\n position: relative;\\n}\\n\\n.fa-li {\\n left: -2em;\\n position: absolute;\\n text-align: center;\\n width: 2em;\\n line-height: inherit;\\n}\\n\\n.fa-border {\\n border: solid 0.08em #eee;\\n border-radius: 0.1em;\\n padding: 0.2em 0.25em 0.15em;\\n}\\n\\n.fa-pull-left {\\n float: left;\\n}\\n\\n.fa-pull-right {\\n float: right;\\n}\\n\\n.fa.fa-pull-left,\\n.fas.fa-pull-left,\\n.far.fa-pull-left,\\n.fal.fa-pull-left,\\n.fab.fa-pull-left {\\n margin-right: 0.3em;\\n}\\n.fa.fa-pull-right,\\n.fas.fa-pull-right,\\n.far.fa-pull-right,\\n.fal.fa-pull-right,\\n.fab.fa-pull-right {\\n margin-left: 0.3em;\\n}\\n\\n.fa-spin {\\n -webkit-animation: fa-spin 2s infinite linear;\\n animation: fa-spin 2s infinite linear;\\n}\\n\\n.fa-pulse {\\n -webkit-animation: fa-spin 1s infinite steps(8);\\n animation: fa-spin 1s infinite steps(8);\\n}\\n\\n@-webkit-keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n\\n@keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n.fa-rotate-90 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\\\";\\n -webkit-transform: rotate(90deg);\\n transform: rotate(90deg);\\n}\\n\\n.fa-rotate-180 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\\\";\\n -webkit-transform: rotate(180deg);\\n transform: rotate(180deg);\\n}\\n\\n.fa-rotate-270 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\\\";\\n -webkit-transform: rotate(270deg);\\n transform: rotate(270deg);\\n}\\n\\n.fa-flip-horizontal {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\\\";\\n -webkit-transform: scale(-1, 1);\\n transform: scale(-1, 1);\\n}\\n\\n.fa-flip-vertical {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\\\";\\n -webkit-transform: scale(1, -1);\\n transform: scale(1, -1);\\n}\\n\\n.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\\\";\\n -webkit-transform: scale(-1, -1);\\n transform: scale(-1, -1);\\n}\\n\\n:root .fa-rotate-90,\\n:root .fa-rotate-180,\\n:root .fa-rotate-270,\\n:root .fa-flip-horizontal,\\n:root .fa-flip-vertical,\\n:root .fa-flip-both {\\n -webkit-filter: none;\\n filter: none;\\n}\\n\\n.fa-stack {\\n display: inline-block;\\n height: 2em;\\n position: relative;\\n width: 2.5em;\\n}\\n\\n.fa-stack-1x,\\n.fa-stack-2x {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n\\n.svg-inline--fa.fa-stack-1x {\\n height: 1em;\\n width: 1.25em;\\n}\\n.svg-inline--fa.fa-stack-2x {\\n height: 2em;\\n width: 2.5em;\\n}\\n\\n.fa-inverse {\\n color: #fff;\\n}\\n\\n.sr-only {\\n border: 0;\\n clip: rect(0, 0, 0, 0);\\n height: 1px;\\n margin: -1px;\\n overflow: hidden;\\n padding: 0;\\n position: absolute;\\n width: 1px;\\n}\\n\\n.sr-only-focusable:active, .sr-only-focusable:focus {\\n clip: auto;\\n height: auto;\\n margin: 0;\\n overflow: visible;\\n position: static;\\n width: auto;\\n}\\n\\n.svg-inline--fa .fa-primary {\\n fill: var(--fa-primary-color, currentColor);\\n opacity: 1;\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa .fa-secondary {\\n fill: var(--fa-secondary-color, currentColor);\\n opacity: 0.4;\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-primary {\\n opacity: 0.4;\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\\n opacity: 1;\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa mask .fa-primary,\\n.svg-inline--fa mask .fa-secondary {\\n fill: black;\\n}\\n\\n.fad.fa-inverse {\\n color: #fff;\\n}\";\n\nfunction css () {\n var dfp = DEFAULT_FAMILY_PREFIX;\n var drc = DEFAULT_REPLACEMENT_CLASS;\n var fp = config.familyPrefix;\n var rc = config.replacementClass;\n var s = baseStyles;\n\n if (fp !== dfp || rc !== drc) {\n var dPatt = new RegExp(\"\\\\.\".concat(dfp, \"\\\\-\"), 'g');\n var customPropPatt = new RegExp(\"\\\\--\".concat(dfp, \"\\\\-\"), 'g');\n var rPatt = new RegExp(\"\\\\.\".concat(drc), 'g');\n s = s.replace(dPatt, \".\".concat(fp, \"-\")).replace(customPropPatt, \"--\".concat(fp, \"-\")).replace(rPatt, \".\".concat(rc));\n }\n\n return s;\n}\n\nvar Library =\n/*#__PURE__*/\nfunction () {\n function Library() {\n _classCallCheck(this, Library);\n\n this.definitions = {};\n }\n\n _createClass(Library, [{\n key: \"add\",\n value: function add() {\n var _this = this;\n\n for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {\n definitions[_key] = arguments[_key];\n }\n\n var additions = definitions.reduce(this._pullDefinitions, {});\n Object.keys(additions).forEach(function (key) {\n _this.definitions[key] = _objectSpread({}, _this.definitions[key] || {}, additions[key]);\n defineIcons(key, additions[key]);\n build();\n });\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.definitions = {};\n }\n }, {\n key: \"_pullDefinitions\",\n value: function _pullDefinitions(additions, definition) {\n var normalized = definition.prefix && definition.iconName && definition.icon ? {\n 0: definition\n } : definition;\n Object.keys(normalized).map(function (key) {\n var _normalized$key = normalized[key],\n prefix = _normalized$key.prefix,\n iconName = _normalized$key.iconName,\n icon = _normalized$key.icon;\n if (!additions[prefix]) additions[prefix] = {};\n additions[prefix][iconName] = icon;\n });\n return additions;\n }\n }]);\n\n return Library;\n}();\n\nfunction ensureCss() {\n if (config.autoAddCss && !_cssInserted) {\n insertCss(css());\n\n _cssInserted = true;\n }\n}\n\nfunction apiObject(val, abstractCreator) {\n Object.defineProperty(val, 'abstract', {\n get: abstractCreator\n });\n Object.defineProperty(val, 'html', {\n get: function get() {\n return val.abstract.map(function (a) {\n return toHtml(a);\n });\n }\n });\n Object.defineProperty(val, 'node', {\n get: function get() {\n if (!IS_DOM) return;\n var container = DOCUMENT.createElement('div');\n container.innerHTML = val.html;\n return container.children;\n }\n });\n return val;\n}\n\nfunction findIconDefinition(iconLookup) {\n var _iconLookup$prefix = iconLookup.prefix,\n prefix = _iconLookup$prefix === void 0 ? 'fa' : _iconLookup$prefix,\n iconName = iconLookup.iconName;\n if (!iconName) return;\n return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);\n}\n\nfunction resolveIcons(next) {\n return function (maybeIconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});\n var mask = params.mask;\n\n if (mask) {\n mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});\n }\n\n return next(iconDefinition, _objectSpread({}, params, {\n mask: mask\n }));\n };\n}\n\nvar library = new Library();\nvar noAuto = function noAuto() {\n config.autoReplaceSvg = false;\n config.observeMutations = false;\n disconnect();\n};\nvar _cssInserted = false;\nvar dom = {\n i2svg: function i2svg() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (IS_DOM) {\n ensureCss();\n var _params$node = params.node,\n node = _params$node === void 0 ? DOCUMENT : _params$node,\n _params$callback = params.callback,\n callback = _params$callback === void 0 ? function () {} : _params$callback;\n\n if (config.searchPseudoElements) {\n searchPseudoElements(node);\n }\n\n return onTree(node, callback);\n } else {\n return picked.reject('Operation requires a DOM of some kind.');\n }\n },\n css: css,\n insertCss: function insertCss$$1() {\n if (!_cssInserted) {\n insertCss(css());\n\n _cssInserted = true;\n }\n },\n watch: function watch() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var autoReplaceSvgRoot = params.autoReplaceSvgRoot,\n observeMutationsRoot = params.observeMutationsRoot;\n\n if (config.autoReplaceSvg === false) {\n config.autoReplaceSvg = true;\n }\n\n config.observeMutations = true;\n domready(function () {\n autoReplace({\n autoReplaceSvgRoot: autoReplaceSvgRoot\n });\n observe({\n treeCallback: onTree,\n nodeCallback: onNode,\n pseudoElementsCallback: searchPseudoElements,\n observeMutationsRoot: observeMutationsRoot\n });\n });\n }\n};\nvar parse = {\n transform: function transform(transformString) {\n return parseTransformString(transformString);\n }\n};\nvar icon = resolveIcons(function (iconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform = params.transform,\n transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n _params$symbol = params.symbol,\n symbol = _params$symbol === void 0 ? false : _params$symbol,\n _params$mask = params.mask,\n mask = _params$mask === void 0 ? null : _params$mask,\n _params$maskId = params.maskId,\n maskId = _params$maskId === void 0 ? null : _params$maskId,\n _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$titleId = params.titleId,\n titleId = _params$titleId === void 0 ? null : _params$titleId,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n if (!iconDefinition) return;\n var prefix = iconDefinition.prefix,\n iconName = iconDefinition.iconName,\n icon = iconDefinition.icon;\n return apiObject(_objectSpread({\n type: 'icon'\n }, iconDefinition), function () {\n ensureCss();\n\n if (config.autoA11y) {\n if (title) {\n attributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(titleId || nextUniqueId());\n } else {\n attributes['aria-hidden'] = 'true';\n attributes['focusable'] = 'false';\n }\n }\n\n return makeInlineSvgAbstract({\n icons: {\n main: asFoundIcon(icon),\n mask: mask ? asFoundIcon(mask.icon) : {\n found: false,\n width: null,\n height: null,\n icon: {}\n }\n },\n prefix: prefix,\n iconName: iconName,\n transform: _objectSpread({}, meaninglessTransform, transform),\n symbol: symbol,\n title: title,\n maskId: maskId,\n titleId: titleId,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: classes\n }\n });\n });\n});\nvar text = function text(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform2 = params.transform,\n transform = _params$transform2 === void 0 ? meaninglessTransform : _params$transform2,\n _params$title2 = params.title,\n title = _params$title2 === void 0 ? null : _params$title2,\n _params$classes2 = params.classes,\n classes = _params$classes2 === void 0 ? [] : _params$classes2,\n _params$attributes2 = params.attributes,\n attributes = _params$attributes2 === void 0 ? {} : _params$attributes2,\n _params$styles2 = params.styles,\n styles = _params$styles2 === void 0 ? {} : _params$styles2;\n return apiObject({\n type: 'text',\n content: content\n }, function () {\n ensureCss();\n return makeLayersTextAbstract({\n content: content,\n transform: _objectSpread({}, meaninglessTransform, transform),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.familyPrefix, \"-layers-text\")].concat(_toConsumableArray(classes))\n }\n });\n });\n};\nvar counter = function counter(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$title3 = params.title,\n title = _params$title3 === void 0 ? null : _params$title3,\n _params$classes3 = params.classes,\n classes = _params$classes3 === void 0 ? [] : _params$classes3,\n _params$attributes3 = params.attributes,\n attributes = _params$attributes3 === void 0 ? {} : _params$attributes3,\n _params$styles3 = params.styles,\n styles = _params$styles3 === void 0 ? {} : _params$styles3;\n return apiObject({\n type: 'counter',\n content: content\n }, function () {\n ensureCss();\n return makeLayersCounterAbstract({\n content: content.toString(),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.familyPrefix, \"-layers-counter\")].concat(_toConsumableArray(classes))\n }\n });\n });\n};\nvar layer = function layer(assembler) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$classes4 = params.classes,\n classes = _params$classes4 === void 0 ? [] : _params$classes4;\n return apiObject({\n type: 'layer'\n }, function () {\n ensureCss();\n var children = [];\n assembler(function (args) {\n Array.isArray(args) ? args.map(function (a) {\n children = children.concat(a.abstract);\n }) : children = children.concat(args.abstract);\n });\n return [{\n tag: 'span',\n attributes: {\n class: [\"\".concat(config.familyPrefix, \"-layers\")].concat(_toConsumableArray(classes)).join(' ')\n },\n children: children\n }];\n });\n};\nvar api = {\n noAuto: noAuto,\n config: config,\n dom: dom,\n library: library,\n parse: parse,\n findIconDefinition: findIconDefinition,\n icon: icon,\n text: text,\n counter: counter,\n layer: layer,\n toHtml: toHtml\n};\n\nvar autoReplace = function autoReplace() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _params$autoReplaceSv = params.autoReplaceSvgRoot,\n autoReplaceSvgRoot = _params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv;\n if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({\n node: autoReplaceSvgRoot\n });\n};\n\nexport { icon, noAuto, config, toHtml, layer, text, counter, library, dom, parse, findIconDefinition };\n","/*!\n * Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)\n */\nvar prefix = \"fas\";\nvar faAd = {\n prefix: 'fas',\n iconName: 'ad',\n icon: [512, 512, [], \"f641\", \"M157.52 272h36.96L176 218.78 157.52 272zM352 256c-13.23 0-24 10.77-24 24s10.77 24 24 24 24-10.77 24-24-10.77-24-24-24zM464 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM250.58 352h-16.94c-6.81 0-12.88-4.32-15.12-10.75L211.15 320h-70.29l-7.38 21.25A16 16 0 0 1 118.36 352h-16.94c-11.01 0-18.73-10.85-15.12-21.25L140 176.12A23.995 23.995 0 0 1 162.67 160h26.66A23.99 23.99 0 0 1 212 176.13l53.69 154.62c3.61 10.4-4.11 21.25-15.11 21.25zM424 336c0 8.84-7.16 16-16 16h-16c-4.85 0-9.04-2.27-11.98-5.68-8.62 3.66-18.09 5.68-28.02 5.68-39.7 0-72-32.3-72-72s32.3-72 72-72c8.46 0 16.46 1.73 24 4.42V176c0-8.84 7.16-16 16-16h16c8.84 0 16 7.16 16 16v160z\"]\n};\nvar faAddressBook = {\n prefix: 'fas',\n iconName: 'address-book',\n icon: [448, 512, [], \"f2b9\", \"M436 160c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h320c26.5 0 48-21.5 48-48v-48h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20zm-228-32c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H118.4C106 384 96 375.4 96 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z\"]\n};\nvar faAddressCard = {\n prefix: 'fas',\n iconName: 'address-card',\n icon: [576, 512, [], \"f2bb\", \"M528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-352 96c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H86.4C74 384 64 375.4 64 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2zM512 312c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-64c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-64c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faAdjust = {\n prefix: 'fas',\n iconName: 'adjust',\n icon: [512, 512, [], \"f042\", \"M8 256c0 136.966 111.033 248 248 248s248-111.034 248-248S392.966 8 256 8 8 119.033 8 256zm248 184V72c101.705 0 184 82.311 184 184 0 101.705-82.311 184-184 184z\"]\n};\nvar faAirFreshener = {\n prefix: 'fas',\n iconName: 'air-freshener',\n icon: [512, 512, [], \"f5d0\", \"M224 160H96C43 160 0 203 0 256V480C0 497.625 14.375 512 32 512H288C305.625 512 320 497.625 320 480V256C320 203 277 160 224 160ZM160 416C115.875 416 80 380.125 80 336S115.875 256 160 256S240 291.875 240 336S204.125 416 160 416ZM224 32C224 14.375 209.625 0 192 0H128C110.375 0 96 14.375 96 32V128H224V32ZM381.781 51.578C383 50.969 384 49.359 384 48C384 46.625 383 45.031 381.781 44.422L352 32L339.562 2.219C338.969 1 337.375 0 336 0S333.031 1 332.406 2.219L320 32L290.219 44.422C289 45.031 288 46.625 288 48C288 49.359 289 50.969 290.219 51.578L320 64L332.406 93.781C333.031 95 334.625 96 336 96S338.969 95 339.562 93.781L352 64L381.781 51.578ZM448 64L460.406 93.781C461.031 95 462.625 96 464 96S466.969 95 467.562 93.781L480 64L509.781 51.578C511 50.969 512 49.359 512 48C512 46.625 511 45.031 509.781 44.422L480 32L467.562 2.219C466.969 1 465.375 0 464 0S461.031 1 460.406 2.219L448 32L418.219 44.422C417 45.031 416 46.625 416 48C416 49.359 417 50.969 418.219 51.578L448 64ZM480 224L467.562 194.219C466.969 193 465.375 192 464 192S461.031 193 460.406 194.219L448 224L418.219 236.422C417 237.031 416 238.625 416 240C416 241.359 417 242.969 418.219 243.578L448 256L460.406 285.781C461.031 287 462.625 288 464 288S466.969 287 467.562 285.781L480 256L509.781 243.578C511 242.969 512 241.359 512 240C512 238.625 511 237.031 509.781 236.422L480 224ZM445.781 147.578C447 146.969 448 145.359 448 144C448 142.625 447 141.031 445.781 140.422L416 128L403.562 98.219C402.969 97 401.375 96 400 96S397.031 97 396.406 98.219L384 128L354.219 140.422C353 141.031 352 142.625 352 144C352 145.359 353 146.969 354.219 147.578L384 160L396.406 189.781C397.031 191 398.625 192 400 192S402.969 191 403.562 189.781L416 160L445.781 147.578Z\"]\n};\nvar faAlignCenter = {\n prefix: 'fas',\n iconName: 'align-center',\n icon: [448, 512, [], \"f037\", \"M432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM108.1 96h231.81A12.09 12.09 0 0 0 352 83.9V44.09A12.09 12.09 0 0 0 339.91 32H108.1A12.09 12.09 0 0 0 96 44.09V83.9A12.1 12.1 0 0 0 108.1 96zm231.81 256A12.09 12.09 0 0 0 352 339.9v-39.81A12.09 12.09 0 0 0 339.91 288H108.1A12.09 12.09 0 0 0 96 300.09v39.81a12.1 12.1 0 0 0 12.1 12.1z\"]\n};\nvar faAlignJustify = {\n prefix: 'fas',\n iconName: 'align-justify',\n icon: [448, 512, [], \"f039\", \"M432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faAlignLeft = {\n prefix: 'fas',\n iconName: 'align-left',\n icon: [448, 512, [], \"f036\", \"M12.83 352h262.34A12.82 12.82 0 0 0 288 339.17v-38.34A12.82 12.82 0 0 0 275.17 288H12.83A12.82 12.82 0 0 0 0 300.83v38.34A12.82 12.82 0 0 0 12.83 352zm0-256h262.34A12.82 12.82 0 0 0 288 83.17V44.83A12.82 12.82 0 0 0 275.17 32H12.83A12.82 12.82 0 0 0 0 44.83v38.34A12.82 12.82 0 0 0 12.83 96zM432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faAlignRight = {\n prefix: 'fas',\n iconName: 'align-right',\n icon: [448, 512, [], \"f038\", \"M16 224h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm416 192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-384H172.83A12.82 12.82 0 0 0 160 44.83v38.34A12.82 12.82 0 0 0 172.83 96h262.34A12.82 12.82 0 0 0 448 83.17V44.83A12.82 12.82 0 0 0 435.17 32zm0 256H172.83A12.82 12.82 0 0 0 160 300.83v38.34A12.82 12.82 0 0 0 172.83 352h262.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288z\"]\n};\nvar faAllergies = {\n prefix: 'fas',\n iconName: 'allergies',\n icon: [448, 512, [], \"f461\", \"M416 112c-17.6 0-32 14.4-32 32v72c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V64c0-17.6-14.4-32-32-32s-32 14.4-32 32v152c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V32c0-17.6-14.4-32-32-32s-32 14.4-32 32v184c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V64c0-17.6-14.4-32-32-32S96 46.4 96 64v241l-23.6-32.5c-13-17.9-38-21.8-55.9-8.8s-21.8 38-8.8 55.9l125.6 172.7c9 12.4 23.5 19.8 38.8 19.8h197.6c22.3 0 41.6-15.3 46.7-37l26.5-112.7c3.2-13.7 4.9-28.3 5.1-42.3V144c0-17.6-14.4-32-32-32zM176 416c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm64 128c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm64 32c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32 64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32-128c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\"]\n};\nvar faAmbulance = {\n prefix: 'fas',\n iconName: 'ambulance',\n icon: [640, 512, [], \"f0f9\", \"M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h16c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm144-248c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48zm176 248c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z\"]\n};\nvar faAmericanSignLanguageInterpreting = {\n prefix: 'fas',\n iconName: 'american-sign-language-interpreting',\n icon: [640, 512, [], \"f2a3\", \"M290.547 189.039c-20.295-10.149-44.147-11.199-64.739-3.89 42.606 0 71.208 20.475 85.578 50.576 8.576 17.899-5.148 38.071-23.617 38.071 18.429 0 32.211 20.136 23.617 38.071-14.725 30.846-46.123 50.854-80.298 50.854-.557 0-94.471-8.615-94.471-8.615l-66.406 33.347c-9.384 4.693-19.815.379-23.895-7.781L1.86 290.747c-4.167-8.615-1.111-18.897 6.946-23.621l58.072-33.069L108 159.861c6.39-57.245 34.731-109.767 79.743-146.726 11.391-9.448 28.341-7.781 37.51 3.613 9.446 11.394 7.78 28.067-3.612 37.516-12.503 10.559-23.618 22.509-32.509 35.57 21.672-14.729 46.679-24.732 74.186-28.067 14.725-1.945 28.063 8.336 29.73 23.065 1.945 14.728-8.336 28.067-23.062 29.734-16.116 1.945-31.12 7.503-44.178 15.284 26.114-5.713 58.712-3.138 88.079 11.115 13.336 6.669 18.893 22.509 12.224 35.848-6.389 13.06-22.504 18.617-35.564 12.226zm-27.229 69.472c-6.112-12.505-18.338-20.286-32.231-20.286a35.46 35.46 0 0 0-35.565 35.57c0 21.428 17.808 35.57 35.565 35.57 13.893 0 26.119-7.781 32.231-20.286 4.446-9.449 13.614-15.006 23.339-15.284-9.725-.277-18.893-5.835-23.339-15.284zm374.821-37.237c4.168 8.615 1.111 18.897-6.946 23.621l-58.071 33.069L532 352.16c-6.39 57.245-34.731 109.767-79.743 146.726-10.932 9.112-27.799 8.144-37.51-3.613-9.446-11.394-7.78-28.067 3.613-37.516 12.503-10.559 23.617-22.509 32.508-35.57-21.672 14.729-46.679 24.732-74.186 28.067-10.021 2.506-27.552-5.643-29.73-23.065-1.945-14.728 8.336-28.067 23.062-29.734 16.116-1.946 31.12-7.503 44.178-15.284-26.114 5.713-58.712 3.138-88.079-11.115-13.336-6.669-18.893-22.509-12.224-35.848 6.389-13.061 22.505-18.619 35.565-12.227 20.295 10.149 44.147 11.199 64.739 3.89-42.606 0-71.208-20.475-85.578-50.576-8.576-17.899 5.148-38.071 23.617-38.071-18.429 0-32.211-20.136-23.617-38.071 14.033-29.396 44.039-50.887 81.966-50.854l92.803 8.615 66.406-33.347c9.408-4.704 19.828-.354 23.894 7.781l44.455 88.926zm-229.227-18.618c-13.893 0-26.119 7.781-32.231 20.286-4.446 9.449-13.614 15.006-23.339 15.284 9.725.278 18.893 5.836 23.339 15.284 6.112 12.505 18.338 20.286 32.231 20.286a35.46 35.46 0 0 0 35.565-35.57c0-21.429-17.808-35.57-35.565-35.57z\"]\n};\nvar faAnchor = {\n prefix: 'fas',\n iconName: 'anchor',\n icon: [576, 512, [], \"f13d\", \"M12.971 352h32.394C67.172 454.735 181.944 512 288 512c106.229 0 220.853-57.38 242.635-160h32.394c10.691 0 16.045-12.926 8.485-20.485l-67.029-67.029c-4.686-4.686-12.284-4.686-16.971 0l-67.029 67.029c-7.56 7.56-2.206 20.485 8.485 20.485h35.146c-20.29 54.317-84.963 86.588-144.117 94.015V256h52c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-52v-5.47c37.281-13.178 63.995-48.725 64-90.518C384.005 43.772 341.605.738 289.37.01 235.723-.739 192 42.525 192 96c0 41.798 26.716 77.35 64 90.53V192h-52c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h52v190.015c-58.936-7.399-123.82-39.679-144.117-94.015h35.146c10.691 0 16.045-12.926 8.485-20.485l-67.029-67.029c-4.686-4.686-12.284-4.686-16.971 0L4.485 331.515C-3.074 339.074 2.28 352 12.971 352zM288 64c17.645 0 32 14.355 32 32s-14.355 32-32 32-32-14.355-32-32 14.355-32 32-32z\"]\n};\nvar faAngleDoubleDown = {\n prefix: 'fas',\n iconName: 'angle-double-down',\n icon: [320, 512, [], \"f103\", \"M143 256.3L7 120.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0L313 86.3c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.4 9.5-24.6 9.5-34 .1zm34 192l136-136c9.4-9.4 9.4-24.6 0-33.9l-22.6-22.6c-9.4-9.4-24.6-9.4-33.9 0L160 352.1l-96.4-96.4c-9.4-9.4-24.6-9.4-33.9 0L7 278.3c-9.4 9.4-9.4 24.6 0 33.9l136 136c9.4 9.5 24.6 9.5 34 .1z\"]\n};\nvar faAngleDoubleLeft = {\n prefix: 'fas',\n iconName: 'angle-double-left',\n icon: [448, 512, [], \"f100\", \"M223.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L319.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L393.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34zm-192 34l136 136c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9L127.9 256l96.4-96.4c9.4-9.4 9.4-24.6 0-33.9L201.7 103c-9.4-9.4-24.6-9.4-33.9 0l-136 136c-9.5 9.4-9.5 24.6-.1 34z\"]\n};\nvar faAngleDoubleRight = {\n prefix: 'fas',\n iconName: 'angle-double-right',\n icon: [448, 512, [], \"f101\", \"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34zm192-34l-136-136c-9.4-9.4-24.6-9.4-33.9 0l-22.6 22.6c-9.4 9.4-9.4 24.6 0 33.9l96.4 96.4-96.4 96.4c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l136-136c9.4-9.2 9.4-24.4 0-33.8z\"]\n};\nvar faAngleDoubleUp = {\n prefix: 'fas',\n iconName: 'angle-double-up',\n icon: [320, 512, [], \"f102\", \"M177 255.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 351.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 425.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1zm-34-192L7 199.7c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l96.4-96.4 96.4 96.4c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9l-136-136c-9.2-9.4-24.4-9.4-33.8 0z\"]\n};\nvar faAngleDown = {\n prefix: 'fas',\n iconName: 'angle-down',\n icon: [320, 512, [], \"f107\", \"M143 352.3L7 216.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.2 9.4-24.4 9.4-33.8 0z\"]\n};\nvar faAngleLeft = {\n prefix: 'fas',\n iconName: 'angle-left',\n icon: [256, 512, [], \"f104\", \"M31.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L127.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L201.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34z\"]\n};\nvar faAngleRight = {\n prefix: 'fas',\n iconName: 'angle-right',\n icon: [256, 512, [], \"f105\", \"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"]\n};\nvar faAngleUp = {\n prefix: 'fas',\n iconName: 'angle-up',\n icon: [320, 512, [], \"f106\", \"M177 159.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 255.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 329.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1z\"]\n};\nvar faAngry = {\n prefix: 'fas',\n iconName: 'angry',\n icon: [496, 512, [], \"f556\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 240c0-9.3 4.1-17.5 10.5-23.4l-31-9.3c-8.5-2.5-13.3-11.5-10.7-19.9 2.5-8.5 11.4-13.2 19.9-10.7l80 24c8.5 2.5 13.3 11.5 10.7 19.9-2.1 6.9-8.4 11.4-15.3 11.4-.5 0-1.1-.2-1.7-.2.7 2.7 1.7 5.3 1.7 8.2 0 17.7-14.3 32-32 32S136 257.7 136 240zm168 154.2c-27.8-33.4-84.2-33.4-112.1 0-13.5 16.3-38.2-4.2-24.6-20.5 20-24 49.4-37.8 80.6-37.8s60.6 13.8 80.6 37.8c13.8 16.5-11.1 36.6-24.5 20.5zm76.6-186.9l-31 9.3c6.3 5.8 10.5 14.1 10.5 23.4 0 17.7-14.3 32-32 32s-32-14.3-32-32c0-2.9.9-5.6 1.7-8.2-.6.1-1.1.2-1.7.2-6.9 0-13.2-4.5-15.3-11.4-2.5-8.5 2.3-17.4 10.7-19.9l80-24c8.4-2.5 17.4 2.3 19.9 10.7 2.5 8.5-2.3 17.4-10.8 19.9z\"]\n};\nvar faAnkh = {\n prefix: 'fas',\n iconName: 'ankh',\n icon: [320, 512, [], \"f644\", \"M296 256h-44.62C272.46 222.01 288 181.65 288 144 288 55.63 230.69 0 160 0S32 55.63 32 144c0 37.65 15.54 78.01 36.62 112H24c-13.25 0-24 10.74-24 24v32c0 13.25 10.75 24 24 24h96v152c0 13.25 10.75 24 24 24h32c13.25 0 24-10.75 24-24V336h96c13.25 0 24-10.75 24-24v-32c0-13.26-10.75-24-24-24zM160 80c29.61 0 48 24.52 48 64 0 34.66-27.14 78.14-48 100.87-20.86-22.72-48-66.21-48-100.87 0-39.48 18.39-64 48-64z\"]\n};\nvar faAppleAlt = {\n prefix: 'fas',\n iconName: 'apple-alt',\n icon: [448, 512, [], \"f5d1\", \"M350.85 129c25.97 4.67 47.27 18.67 63.92 42 14.65 20.67 24.64 46.67 29.96 78 4.67 28.67 4.32 57.33-1 86-7.99 47.33-23.97 87-47.94 119-28.64 38.67-64.59 58-107.87 58-10.66 0-22.3-3.33-34.96-10-8.66-5.33-18.31-8-28.97-8s-20.3 2.67-28.97 8c-12.66 6.67-24.3 10-34.96 10-43.28 0-79.23-19.33-107.87-58-23.97-32-39.95-71.67-47.94-119-5.32-28.67-5.67-57.33-1-86 5.32-31.33 15.31-57.33 29.96-78 16.65-23.33 37.95-37.33 63.92-42 15.98-2.67 37.95-.33 65.92 7 23.97 6.67 44.28 14.67 60.93 24 16.65-9.33 36.96-17.33 60.93-24 27.98-7.33 49.96-9.67 65.94-7zm-54.94-41c-9.32 8.67-21.65 15-36.96 19-10.66 3.33-22.3 5-34.96 5l-14.98-1c-1.33-9.33-1.33-20 0-32 2.67-24 10.32-42.33 22.97-55 9.32-8.67 21.65-15 36.96-19 10.66-3.33 22.3-5 34.96-5l14.98 1 1 15c0 12.67-1.67 24.33-4.99 35-3.99 15.33-10.31 27.67-18.98 37z\"]\n};\nvar faArchive = {\n prefix: 'fas',\n iconName: 'archive',\n icon: [512, 512, [], \"f187\", \"M32 448c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32V160H32v288zm160-212c0-6.6 5.4-12 12-12h104c6.6 0 12 5.4 12 12v8c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-8zM480 32H32C14.3 32 0 46.3 0 64v48c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16V64c0-17.7-14.3-32-32-32z\"]\n};\nvar faArchway = {\n prefix: 'fas',\n iconName: 'archway',\n icon: [576, 512, [], \"f557\", \"M560 448h-16V96H32v352H16.02c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16H176c8.84 0 16-7.16 16-16V320c0-53.02 42.98-96 96-96s96 42.98 96 96l.02 160v16c0 8.84 7.16 16 16 16H560c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm0-448H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h544c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16z\"]\n};\nvar faArrowAltCircleDown = {\n prefix: 'fas',\n iconName: 'arrow-alt-circle-down',\n icon: [512, 512, [], \"f358\", \"M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zM212 140v116h-70.9c-10.7 0-16.1 13-8.5 20.5l114.9 114.3c4.7 4.7 12.2 4.7 16.9 0l114.9-114.3c7.6-7.6 2.2-20.5-8.5-20.5H300V140c0-6.6-5.4-12-12-12h-64c-6.6 0-12 5.4-12 12z\"]\n};\nvar faArrowAltCircleLeft = {\n prefix: 'fas',\n iconName: 'arrow-alt-circle-left',\n icon: [512, 512, [], \"f359\", \"M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zm116-292H256v-70.9c0-10.7-13-16.1-20.5-8.5L121.2 247.5c-4.7 4.7-4.7 12.2 0 16.9l114.3 114.9c7.6 7.6 20.5 2.2 20.5-8.5V300h116c6.6 0 12-5.4 12-12v-64c0-6.6-5.4-12-12-12z\"]\n};\nvar faArrowAltCircleRight = {\n prefix: 'fas',\n iconName: 'arrow-alt-circle-right',\n icon: [512, 512, [], \"f35a\", \"M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zM140 300h116v70.9c0 10.7 13 16.1 20.5 8.5l114.3-114.9c4.7-4.7 4.7-12.2 0-16.9l-114.3-115c-7.6-7.6-20.5-2.2-20.5 8.5V212H140c-6.6 0-12 5.4-12 12v64c0 6.6 5.4 12 12 12z\"]\n};\nvar faArrowAltCircleUp = {\n prefix: 'fas',\n iconName: 'arrow-alt-circle-up',\n icon: [512, 512, [], \"f35b\", \"M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm292 116V256h70.9c10.7 0 16.1-13 8.5-20.5L264.5 121.2c-4.7-4.7-12.2-4.7-16.9 0l-115 114.3c-7.6 7.6-2.2 20.5 8.5 20.5H212v116c0 6.6 5.4 12 12 12h64c6.6 0 12-5.4 12-12z\"]\n};\nvar faArrowCircleDown = {\n prefix: 'fas',\n iconName: 'arrow-circle-down',\n icon: [512, 512, [], \"f0ab\", \"M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-143.6-28.9L288 302.6V120c0-13.3-10.7-24-24-24h-16c-13.3 0-24 10.7-24 24v182.6l-72.4-75.5c-9.3-9.7-24.8-9.9-34.3-.4l-10.9 11c-9.4 9.4-9.4 24.6 0 33.9L239 404.3c9.4 9.4 24.6 9.4 33.9 0l132.7-132.7c9.4-9.4 9.4-24.6 0-33.9l-10.9-11c-9.5-9.5-25-9.3-34.3.4z\"]\n};\nvar faArrowCircleLeft = {\n prefix: 'fas',\n iconName: 'arrow-circle-left',\n icon: [512, 512, [], \"f0a8\", \"M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zm28.9-143.6L209.4 288H392c13.3 0 24-10.7 24-24v-16c0-13.3-10.7-24-24-24H209.4l75.5-72.4c9.7-9.3 9.9-24.8.4-34.3l-11-10.9c-9.4-9.4-24.6-9.4-33.9 0L107.7 239c-9.4 9.4-9.4 24.6 0 33.9l132.7 132.7c9.4 9.4 24.6 9.4 33.9 0l11-10.9c9.5-9.5 9.3-25-.4-34.3z\"]\n};\nvar faArrowCircleRight = {\n prefix: 'fas',\n iconName: 'arrow-circle-right',\n icon: [512, 512, [], \"f0a9\", \"M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm-28.9 143.6l75.5 72.4H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h182.6l-75.5 72.4c-9.7 9.3-9.9 24.8-.4 34.3l11 10.9c9.4 9.4 24.6 9.4 33.9 0L404.3 273c9.4-9.4 9.4-24.6 0-33.9L271.6 106.3c-9.4-9.4-24.6-9.4-33.9 0l-11 10.9c-9.5 9.6-9.3 25.1.4 34.4z\"]\n};\nvar faArrowCircleUp = {\n prefix: 'fas',\n iconName: 'arrow-circle-up',\n icon: [512, 512, [], \"f0aa\", \"M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm143.6 28.9l72.4-75.5V392c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V209.4l72.4 75.5c9.3 9.7 24.8 9.9 34.3.4l10.9-11c9.4-9.4 9.4-24.6 0-33.9L273 107.7c-9.4-9.4-24.6-9.4-33.9 0L106.3 240.4c-9.4 9.4-9.4 24.6 0 33.9l10.9 11c9.6 9.5 25.1 9.3 34.4-.4z\"]\n};\nvar faArrowDown = {\n prefix: 'fas',\n iconName: 'arrow-down',\n icon: [448, 512, [], \"f063\", \"M413.1 222.5l22.2 22.2c9.4 9.4 9.4 24.6 0 33.9L241 473c-9.4 9.4-24.6 9.4-33.9 0L12.7 278.6c-9.4-9.4-9.4-24.6 0-33.9l22.2-22.2c9.5-9.5 25-9.3 34.3.4L184 343.4V56c0-13.3 10.7-24 24-24h32c13.3 0 24 10.7 24 24v287.4l114.8-120.5c9.3-9.8 24.8-10 34.3-.4z\"]\n};\nvar faArrowLeft = {\n prefix: 'fas',\n iconName: 'arrow-left',\n icon: [448, 512, [], \"f060\", \"M257.5 445.1l-22.2 22.2c-9.4 9.4-24.6 9.4-33.9 0L7 273c-9.4-9.4-9.4-24.6 0-33.9L201.4 44.7c9.4-9.4 24.6-9.4 33.9 0l22.2 22.2c9.5 9.5 9.3 25-.4 34.3L136.6 216H424c13.3 0 24 10.7 24 24v32c0 13.3-10.7 24-24 24H136.6l120.5 114.8c9.8 9.3 10 24.8.4 34.3z\"]\n};\nvar faArrowRight = {\n prefix: 'fas',\n iconName: 'arrow-right',\n icon: [448, 512, [], \"f061\", \"M190.5 66.9l22.2-22.2c9.4-9.4 24.6-9.4 33.9 0L441 239c9.4 9.4 9.4 24.6 0 33.9L246.6 467.3c-9.4 9.4-24.6 9.4-33.9 0l-22.2-22.2c-9.5-9.5-9.3-25 .4-34.3L311.4 296H24c-13.3 0-24-10.7-24-24v-32c0-13.3 10.7-24 24-24h287.4L190.9 101.2c-9.8-9.3-10-24.8-.4-34.3z\"]\n};\nvar faArrowUp = {\n prefix: 'fas',\n iconName: 'arrow-up',\n icon: [448, 512, [], \"f062\", \"M34.9 289.5l-22.2-22.2c-9.4-9.4-9.4-24.6 0-33.9L207 39c9.4-9.4 24.6-9.4 33.9 0l194.3 194.3c9.4 9.4 9.4 24.6 0 33.9L413 289.4c-9.5 9.5-25 9.3-34.3-.4L264 168.6V456c0 13.3-10.7 24-24 24h-32c-13.3 0-24-10.7-24-24V168.6L69.2 289.1c-9.3 9.8-24.8 10-34.3.4z\"]\n};\nvar faArrowsAlt = {\n prefix: 'fas',\n iconName: 'arrows-alt',\n icon: [512, 512, [], \"f0b2\", \"M352.201 425.775l-79.196 79.196c-9.373 9.373-24.568 9.373-33.941 0l-79.196-79.196c-15.119-15.119-4.411-40.971 16.971-40.97h51.162L228 284H127.196v51.162c0 21.382-25.851 32.09-40.971 16.971L7.029 272.937c-9.373-9.373-9.373-24.569 0-33.941L86.225 159.8c15.119-15.119 40.971-4.411 40.971 16.971V228H228V127.196h-51.23c-21.382 0-32.09-25.851-16.971-40.971l79.196-79.196c9.373-9.373 24.568-9.373 33.941 0l79.196 79.196c15.119 15.119 4.411 40.971-16.971 40.971h-51.162V228h100.804v-51.162c0-21.382 25.851-32.09 40.97-16.971l79.196 79.196c9.373 9.373 9.373 24.569 0 33.941L425.773 352.2c-15.119 15.119-40.971 4.411-40.97-16.971V284H284v100.804h51.23c21.382 0 32.09 25.851 16.971 40.971z\"]\n};\nvar faArrowsAltH = {\n prefix: 'fas',\n iconName: 'arrows-alt-h',\n icon: [512, 512, [], \"f337\", \"M377.941 169.941V216H134.059v-46.059c0-21.382-25.851-32.09-40.971-16.971L7.029 239.029c-9.373 9.373-9.373 24.568 0 33.941l86.059 86.059c15.119 15.119 40.971 4.411 40.971-16.971V296h243.882v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.568 0-33.941l-86.059-86.059c-15.119-15.12-40.971-4.412-40.971 16.97z\"]\n};\nvar faArrowsAltV = {\n prefix: 'fas',\n iconName: 'arrows-alt-v',\n icon: [256, 512, [], \"f338\", \"M214.059 377.941H168V134.059h46.059c21.382 0 32.09-25.851 16.971-40.971L144.971 7.029c-9.373-9.373-24.568-9.373-33.941 0L24.971 93.088c-15.119 15.119-4.411 40.971 16.971 40.971H88v243.882H41.941c-21.382 0-32.09 25.851-16.971 40.971l86.059 86.059c9.373 9.373 24.568 9.373 33.941 0l86.059-86.059c15.12-15.119 4.412-40.971-16.97-40.971z\"]\n};\nvar faAssistiveListeningSystems = {\n prefix: 'fas',\n iconName: 'assistive-listening-systems',\n icon: [512, 512, [], \"f2a2\", \"M216 260c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-44.112 35.888-80 80-80s80 35.888 80 80c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-13.234-10.767-24-24-24s-24 10.766-24 24zm24-176c-97.047 0-176 78.953-176 176 0 15.464 12.536 28 28 28s28-12.536 28-28c0-66.168 53.832-120 120-120s120 53.832 120 120c0 75.164-71.009 70.311-71.997 143.622L288 404c0 28.673-23.327 52-52 52-15.464 0-28 12.536-28 28s12.536 28 28 28c59.475 0 107.876-48.328 108-107.774.595-34.428 72-48.24 72-144.226 0-97.047-78.953-176-176-176zm-80 236c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zM32 448c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm480-187.993c0-1.518-.012-3.025-.045-4.531C510.076 140.525 436.157 38.47 327.994 1.511c-14.633-4.998-30.549 2.809-35.55 17.442-5 14.633 2.81 30.549 17.442 35.55 85.906 29.354 144.61 110.513 146.077 201.953l.003.188c.026 1.118.033 2.236.033 3.363 0 15.464 12.536 28 28 28s28.001-12.536 28.001-28zM152.971 439.029l-80-80L39.03 392.97l80 80 33.941-33.941z\"]\n};\nvar faAsterisk = {\n prefix: 'fas',\n iconName: 'asterisk',\n icon: [512, 512, [], \"f069\", \"M478.21 334.093L336 256l142.21-78.093c11.795-6.477 15.961-21.384 9.232-33.037l-19.48-33.741c-6.728-11.653-21.72-15.499-33.227-8.523L296 186.718l3.475-162.204C299.763 11.061 288.937 0 275.48 0h-38.96c-13.456 0-24.283 11.061-23.994 24.514L216 186.718 77.265 102.607c-11.506-6.976-26.499-3.13-33.227 8.523l-19.48 33.741c-6.728 11.653-2.562 26.56 9.233 33.037L176 256 33.79 334.093c-11.795 6.477-15.961 21.384-9.232 33.037l19.48 33.741c6.728 11.653 21.721 15.499 33.227 8.523L216 325.282l-3.475 162.204C212.237 500.939 223.064 512 236.52 512h38.961c13.456 0 24.283-11.061 23.995-24.514L296 325.282l138.735 84.111c11.506 6.976 26.499 3.13 33.227-8.523l19.48-33.741c6.728-11.653 2.563-26.559-9.232-33.036z\"]\n};\nvar faAt = {\n prefix: 'fas',\n iconName: 'at',\n icon: [512, 512, [], \"f1fa\", \"M256 8C118.941 8 8 118.919 8 256c0 137.059 110.919 248 248 248 48.154 0 95.342-14.14 135.408-40.223 12.005-7.815 14.625-24.288 5.552-35.372l-10.177-12.433c-7.671-9.371-21.179-11.667-31.373-5.129C325.92 429.757 291.314 440 256 440c-101.458 0-184-82.542-184-184S154.542 72 256 72c100.139 0 184 57.619 184 160 0 38.786-21.093 79.742-58.17 83.693-17.349-.454-16.91-12.857-13.476-30.024l23.433-121.11C394.653 149.75 383.308 136 368.225 136h-44.981a13.518 13.518 0 0 0-13.432 11.993l-.01.092c-14.697-17.901-40.448-21.775-59.971-21.775-74.58 0-137.831 62.234-137.831 151.46 0 65.303 36.785 105.87 96 105.87 26.984 0 57.369-15.637 74.991-38.333 9.522 34.104 40.613 34.103 70.71 34.103C462.609 379.41 504 307.798 504 232 504 95.653 394.023 8 256 8zm-21.68 304.43c-22.249 0-36.07-15.623-36.07-40.771 0-44.993 30.779-72.729 58.63-72.729 22.292 0 35.601 15.241 35.601 40.77 0 45.061-33.875 72.73-58.161 72.73z\"]\n};\nvar faAtlas = {\n prefix: 'fas',\n iconName: 'atlas',\n icon: [448, 512, [], \"f558\", \"M318.38 208h-39.09c-1.49 27.03-6.54 51.35-14.21 70.41 27.71-13.24 48.02-39.19 53.3-70.41zm0-32c-5.29-31.22-25.59-57.17-53.3-70.41 7.68 19.06 12.72 43.38 14.21 70.41h39.09zM224 97.31c-7.69 7.45-20.77 34.42-23.43 78.69h46.87c-2.67-44.26-15.75-71.24-23.44-78.69zm-41.08 8.28c-27.71 13.24-48.02 39.19-53.3 70.41h39.09c1.49-27.03 6.53-51.35 14.21-70.41zm0 172.82c-7.68-19.06-12.72-43.38-14.21-70.41h-39.09c5.28 31.22 25.59 57.17 53.3 70.41zM247.43 208h-46.87c2.66 44.26 15.74 71.24 23.43 78.69 7.7-7.45 20.78-34.43 23.44-78.69zM448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM224 64c70.69 0 128 57.31 128 128s-57.31 128-128 128S96 262.69 96 192 153.31 64 224 64zm160 384H96c-19.2 0-32-12.8-32-32s16-32 32-32h288v64z\"]\n};\nvar faAtom = {\n prefix: 'fas',\n iconName: 'atom',\n icon: [448, 512, [], \"f5d2\", \"M223.99908,224a32,32,0,1,0,32.00782,32A32.06431,32.06431,0,0,0,223.99908,224Zm214.172-96c-10.877-19.5-40.50979-50.75-116.27544-41.875C300.39168,34.875,267.63386,0,223.99908,0s-76.39066,34.875-97.89653,86.125C50.3369,77.375,20.706,108.5,9.82907,128-6.54984,157.375-5.17484,201.125,34.958,256-5.17484,310.875-6.54984,354.625,9.82907,384c29.13087,52.375,101.64652,43.625,116.27348,41.875C147.60842,477.125,180.36429,512,223.99908,512s76.3926-34.875,97.89652-86.125c14.62891,1.75,87.14456,10.5,116.27544-41.875C454.55,354.625,453.175,310.875,413.04017,256,453.175,201.125,454.55,157.375,438.171,128ZM63.33886,352c-4-7.25-.125-24.75,15.00391-48.25,6.87695,6.5,14.12891,12.875,21.88087,19.125,1.625,13.75,4,27.125,6.75,40.125C82.34472,363.875,67.09081,358.625,63.33886,352Zm36.88478-162.875c-7.752,6.25-15.00392,12.625-21.88087,19.125-15.12891-23.5-19.00392-41-15.00391-48.25,3.377-6.125,16.37891-11.5,37.88478-11.5,1.75,0,3.875.375,5.75.375C104.09864,162.25,101.84864,175.625,100.22364,189.125ZM223.99908,64c9.50195,0,22.25586,13.5,33.88282,37.25-11.252,3.75-22.50391,8-33.88282,12.875-11.377-4.875-22.62892-9.125-33.88283-12.875C201.74516,77.5,214.49712,64,223.99908,64Zm0,384c-9.502,0-22.25392-13.5-33.88283-37.25,11.25391-3.75,22.50587-8,33.88283-12.875C235.378,402.75,246.62994,407,257.8819,410.75,246.25494,434.5,233.501,448,223.99908,448Zm0-112a80,80,0,1,1,80-80A80.00023,80.00023,0,0,1,223.99908,336ZM384.6593,352c-3.625,6.625-19.00392,11.875-43.63479,11,2.752-13,5.127-26.375,6.752-40.125,7.75195-6.25,15.00391-12.625,21.87891-19.125C384.7843,327.25,388.6593,344.75,384.6593,352ZM369.65538,208.25c-6.875-6.5-14.127-12.875-21.87891-19.125-1.625-13.5-3.875-26.875-6.752-40.25,1.875,0,4.002-.375,5.752-.375,21.50391,0,34.50782,5.375,37.88283,11.5C388.6593,167.25,384.7843,184.75,369.65538,208.25Z\"]\n};\nvar faAudioDescription = {\n prefix: 'fas',\n iconName: 'audio-description',\n icon: [512, 512, [], \"f29e\", \"M162.925 238.709l8.822 30.655h-25.606l9.041-30.652c1.277-4.421 2.651-9.994 3.872-15.245 1.22 5.251 2.594 10.823 3.871 15.242zm166.474-32.099h-14.523v98.781h14.523c29.776 0 46.175-17.678 46.175-49.776 0-32.239-17.49-49.005-46.175-49.005zM512 112v288c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48zM245.459 336.139l-57.097-168A12.001 12.001 0 0 0 177 160h-35.894a12.001 12.001 0 0 0-11.362 8.139l-57.097 168C70.003 343.922 75.789 352 84.009 352h29.133a12 12 0 0 0 11.535-8.693l8.574-29.906h51.367l8.793 29.977A12 12 0 0 0 204.926 352h29.172c8.22 0 14.006-8.078 11.361-15.861zm184.701-80.525c0-58.977-37.919-95.614-98.96-95.614h-57.366c-6.627 0-12 5.373-12 12v168c0 6.627 5.373 12 12 12H331.2c61.041 0 98.96-36.933 98.96-96.386z\"]\n};\nvar faAward = {\n prefix: 'fas',\n iconName: 'award',\n icon: [384, 512, [], \"f559\", \"M97.12 362.63c-8.69-8.69-4.16-6.24-25.12-11.85-9.51-2.55-17.87-7.45-25.43-13.32L1.2 448.7c-4.39 10.77 3.81 22.47 15.43 22.03l52.69-2.01L105.56 507c8 8.44 22.04 5.81 26.43-4.96l52.05-127.62c-10.84 6.04-22.87 9.58-35.31 9.58-19.5 0-37.82-7.59-51.61-21.37zM382.8 448.7l-45.37-111.24c-7.56 5.88-15.92 10.77-25.43 13.32-21.07 5.64-16.45 3.18-25.12 11.85-13.79 13.78-32.12 21.37-51.62 21.37-12.44 0-24.47-3.55-35.31-9.58L252 502.04c4.39 10.77 18.44 13.4 26.43 4.96l36.25-38.28 52.69 2.01c11.62.44 19.82-11.27 15.43-22.03zM263 340c15.28-15.55 17.03-14.21 38.79-20.14 13.89-3.79 24.75-14.84 28.47-28.98 7.48-28.4 5.54-24.97 25.95-45.75 10.17-10.35 14.14-25.44 10.42-39.58-7.47-28.38-7.48-24.42 0-52.83 3.72-14.14-.25-29.23-10.42-39.58-20.41-20.78-18.47-17.36-25.95-45.75-3.72-14.14-14.58-25.19-28.47-28.98-27.88-7.61-24.52-5.62-44.95-26.41-10.17-10.35-25-14.4-38.89-10.61-27.87 7.6-23.98 7.61-51.9 0-13.89-3.79-28.72.25-38.89 10.61-20.41 20.78-17.05 18.8-44.94 26.41-13.89 3.79-24.75 14.84-28.47 28.98-7.47 28.39-5.54 24.97-25.95 45.75-10.17 10.35-14.15 25.44-10.42 39.58 7.47 28.36 7.48 24.4 0 52.82-3.72 14.14.25 29.23 10.42 39.59 20.41 20.78 18.47 17.35 25.95 45.75 3.72 14.14 14.58 25.19 28.47 28.98C104.6 325.96 106.27 325 121 340c13.23 13.47 33.84 15.88 49.74 5.82a39.676 39.676 0 0 1 42.53 0c15.89 10.06 36.5 7.65 49.73-5.82zM97.66 175.96c0-53.03 42.24-96.02 94.34-96.02s94.34 42.99 94.34 96.02-42.24 96.02-94.34 96.02-94.34-42.99-94.34-96.02z\"]\n};\nvar faBaby = {\n prefix: 'fas',\n iconName: 'baby',\n icon: [384, 512, [], \"f77c\", \"M192 160c44.2 0 80-35.8 80-80S236.2 0 192 0s-80 35.8-80 80 35.8 80 80 80zm-53.4 248.8l25.6-32-61.5-51.2L56.8 383c-11.4 14.2-11.7 34.4-.8 49l48 64c7.9 10.5 19.9 16 32 16 8.3 0 16.8-2.6 24-8 17.7-13.2 21.2-38.3 8-56l-29.4-39.2zm142.7-83.2l-61.5 51.2 25.6 32L216 448c-13.2 17.7-9.7 42.8 8 56 7.2 5.4 15.6 8 24 8 12.2 0 24.2-5.5 32-16l48-64c10.9-14.6 10.6-34.8-.8-49l-45.9-57.4zM376.7 145c-12.7-18.1-37.6-22.4-55.7-9.8l-40.6 28.5c-52.7 37-124.2 37-176.8 0L63 135.3C44.9 122.6 20 127 7.3 145-5.4 163.1-1 188 17 200.7l40.6 28.5c17 11.9 35.4 20.9 54.4 27.9V288h160v-30.8c19-7 37.4-16 54.4-27.9l40.6-28.5c18.1-12.8 22.4-37.7 9.7-55.8z\"]\n};\nvar faBabyCarriage = {\n prefix: 'fas',\n iconName: 'baby-carriage',\n icon: [512, 512, [], \"f77d\", \"M144.8 17c-11.3-17.8-37.2-22.8-54-9.4C35.3 51.9 0 118 0 192h256L144.8 17zM496 96h-48c-35.3 0-64 28.7-64 64v64H0c0 50.6 23 96.4 60.3 130.7C25.7 363.6 0 394.7 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-8.9-1.8-17.2-4.4-25.2 21.6 5.9 44.6 9.2 68.4 9.2s46.9-3.3 68.4-9.2c-2.7 8-4.4 16.3-4.4 25.2 0 44.2 35.8 80 80 80s80-35.8 80-80c0-37.3-25.7-68.4-60.3-77.3C425 320.4 448 274.6 448 224v-64h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM80 464c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm320-32c0 17.6-14.4 32-32 32s-32-14.4-32-32 14.4-32 32-32 32 14.4 32 32z\"]\n};\nvar faBackspace = {\n prefix: 'fas',\n iconName: 'backspace',\n icon: [640, 512, [], \"f55a\", \"M576 64H205.26A63.97 63.97 0 0 0 160 82.75L9.37 233.37c-12.5 12.5-12.5 32.76 0 45.25L160 429.25c12 12 28.28 18.75 45.25 18.75H576c35.35 0 64-28.65 64-64V128c0-35.35-28.65-64-64-64zm-84.69 254.06c6.25 6.25 6.25 16.38 0 22.63l-22.62 22.62c-6.25 6.25-16.38 6.25-22.63 0L384 301.25l-62.06 62.06c-6.25 6.25-16.38 6.25-22.63 0l-22.62-22.62c-6.25-6.25-6.25-16.38 0-22.63L338.75 256l-62.06-62.06c-6.25-6.25-6.25-16.38 0-22.63l22.62-22.62c6.25-6.25 16.38-6.25 22.63 0L384 210.75l62.06-62.06c6.25-6.25 16.38-6.25 22.63 0l22.62 22.62c6.25 6.25 6.25 16.38 0 22.63L429.25 256l62.06 62.06z\"]\n};\nvar faBackward = {\n prefix: 'fas',\n iconName: 'backward',\n icon: [512, 512, [], \"f04a\", \"M11.5 280.6l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2zm256 0l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2z\"]\n};\nvar faBacon = {\n prefix: 'fas',\n iconName: 'bacon',\n icon: [576, 512, [], \"f7e5\", \"M218.92 336.39c34.89-34.89 44.2-59.7 54.05-86 10.61-28.29 21.59-57.54 61.37-97.34s69.05-50.77 97.35-61.38c23.88-9 46.64-17.68 76.79-45.37L470.81 8.91a31 31 0 0 0-40.18-2.83c-13.64 10.1-25.15 14.39-41 20.3C247 79.52 209.26 191.29 200.65 214.1c-29.75 78.83-89.55 94.68-98.72 98.09-24.86 9.26-54.73 20.38-91.07 50.36C-3 374-3.63 395 9.07 407.61l35.76 35.51C80 410.52 107 400.15 133 390.39c26.27-9.84 51.06-19.12 85.92-54zm348-232l-35.75-35.51c-35.19 32.63-62.18 43-88.25 52.79-26.26 9.85-51.06 19.16-85.95 54s-44.19 59.69-54 86C292.33 290 281.34 319.22 241.55 359s-69 50.73-97.3 61.32c-23.86 9-46.61 17.66-76.72 45.33l37.68 37.43a31 31 0 0 0 40.18 2.82c13.6-10.06 25.09-14.34 40.94-20.24 142.2-53 180-164.1 188.94-187.69C405 219.18 464.8 203.3 474 199.86c24.87-9.27 54.74-20.4 91.11-50.41 13.89-11.4 14.52-32.45 1.82-45.05z\"]\n};\nvar faBacteria = {\n prefix: 'fas',\n iconName: 'bacteria',\n icon: [640, 512, [], \"e059\", \"M272.35,226.4A17.71,17.71,0,0,0,281.46,203l-4-9.08a121.29,121.29,0,0,1,12.36-3.08A83.34,83.34,0,0,0,323.57,177l10,9a17.76,17.76,0,1,0,23.92-26.27l-9.72-8.76a83.12,83.12,0,0,0,11.65-48.18l11.85-3.51a17.73,17.73,0,1,0-10.15-34l-11.34,3.36a84,84,0,0,0-36.38-35.57l2.84-10.85a17.8,17.8,0,0,0-34.47-8.93l-2.82,10.78a83.25,83.25,0,0,0-16.74,1.1C250.83,27,240,30.22,229.1,33.39l-3.38-9.46a17.8,17.8,0,0,0-33.56,11.89l3.49,9.8a286.74,286.74,0,0,0-43.94,23.57l-6.32-8.43a17.9,17.9,0,0,0-24.94-3.6A17.69,17.69,0,0,0,116.84,82l6.45,8.61a286.59,286.59,0,0,0-34.95,35.33l-8.82-6.42a17.84,17.84,0,0,0-24.89,3.86,17.66,17.66,0,0,0,3.88,24.77l8.88,6.47a286.6,286.6,0,0,0-23,43.91l-10.48-3.59a17.73,17.73,0,1,0-11.59,33.52L32.67,232c-2.79,10-5.79,19.84-7.52,30.22a83.16,83.16,0,0,0-.82,19l-11.58,3.43a17.73,17.73,0,1,0,10.13,34l11.27-3.33a83.51,83.51,0,0,0,36.39,35.43l-2.88,11.06a17.81,17.81,0,0,0,34.48,8.92l2.87-11c1,0,2.07.26,3.1.26a83.39,83.39,0,0,0,45.65-13.88l8.59,8.8a17.77,17.77,0,0,0,25.56-24.7l-9.14-9.37a83.41,83.41,0,0,0,12.08-31.05,119.08,119.08,0,0,1,3.87-15.53l9,4.22a17.74,17.74,0,1,0,15.15-32.09l-8.8-4.11c.67-1,1.2-2.08,1.9-3.05a119.89,119.89,0,0,1,7.87-9.41,121.73,121.73,0,0,1,11.65-11.4,119.49,119.49,0,0,1,9.94-7.82c1.12-.77,2.32-1.42,3.47-2.15l3.92,8.85a17.86,17.86,0,0,0,16.32,10.58A18.14,18.14,0,0,0,272.35,226.4ZM128,256a32,32,0,1,1,32-32A32,32,0,0,1,128,256Zm80-96a16,16,0,1,1,16-16A16,16,0,0,1,208,160Zm431.26,45.3a17.79,17.79,0,0,0-17.06-12.69,17.55,17.55,0,0,0-5.08.74l-11.27,3.33a83.61,83.61,0,0,0-36.39-35.43l2.88-11.06a17.81,17.81,0,0,0-34.48-8.91l-2.87,11c-1,0-2.07-.26-3.1-.26a83.32,83.32,0,0,0-45.65,13.89l-8.59-8.81a17.77,17.77,0,0,0-25.56,24.7l9.14,9.37a83.28,83.28,0,0,0-12.08,31.06,119.34,119.34,0,0,1-3.87,15.52l-9-4.22a17.74,17.74,0,1,0-15.15,32.09l8.8,4.11c-.67,1-1.2,2.08-1.89,3.05a117.71,117.71,0,0,1-7.94,9.47,119,119,0,0,1-11.57,11.33,121.59,121.59,0,0,1-10,7.83c-1.12.77-2.32,1.42-3.47,2.15l-3.92-8.85a17.86,17.86,0,0,0-16.32-10.58,18.14,18.14,0,0,0-7.18,1.5A17.71,17.71,0,0,0,358.54,309l4,9.08a118.71,118.71,0,0,1-12.36,3.08,83.34,83.34,0,0,0-33.77,13.9l-10-9a17.77,17.77,0,1,0-23.92,26.28l9.72,8.75a83.12,83.12,0,0,0-11.65,48.18l-11.86,3.51a17.73,17.73,0,1,0,10.16,34l11.34-3.36A84,84,0,0,0,326.61,479l-2.84,10.85a17.8,17.8,0,0,0,34.47,8.93L361.06,488a83.3,83.3,0,0,0,16.74-1.1c11.37-1.89,22.24-5.07,33.1-8.24l3.38,9.46a17.8,17.8,0,0,0,33.56-11.89l-3.49-9.79a287.66,287.66,0,0,0,43.94-23.58l6.32,8.43a17.88,17.88,0,0,0,24.93,3.6A17.67,17.67,0,0,0,523.16,430l-6.45-8.61a287.37,287.37,0,0,0,34.95-35.34l8.82,6.42a17.76,17.76,0,1,0,21-28.63l-8.88-6.46a287.17,287.17,0,0,0,23-43.92l10.48,3.59a17.73,17.73,0,1,0,11.59-33.52L607.33,280c2.79-10,5.79-19.84,7.52-30.21a83.27,83.27,0,0,0,.82-19.05l11.58-3.43A17.7,17.7,0,0,0,639.26,205.3ZM416,416a32,32,0,1,1,32-32A32,32,0,0,1,416,416Z\"]\n};\nvar faBacterium = {\n prefix: 'fas',\n iconName: 'bacterium',\n icon: [512, 512, [], \"e05a\", \"M511,102.93A23.76,23.76,0,0,0,481.47,87l-15.12,4.48a111.85,111.85,0,0,0-48.5-47.42l3.79-14.47a23.74,23.74,0,0,0-46-11.91l-3.76,14.37a111.94,111.94,0,0,0-22.33,1.47,386.74,386.74,0,0,0-44.33,10.41l-4.3-12a23.74,23.74,0,0,0-44.75,15.85l4.3,12.05a383.4,383.4,0,0,0-58.69,31.83l-8-10.63a23.85,23.85,0,0,0-33.24-4.8,23.57,23.57,0,0,0-4.83,33.09l8,10.63a386.14,386.14,0,0,0-46.7,47.44l-11-8a23.68,23.68,0,1,0-28,38.17l11.09,8.06a383.45,383.45,0,0,0-30.92,58.75l-12.93-4.43a23.65,23.65,0,1,0-15.47,44.69l13,4.48a385.81,385.81,0,0,0-9.3,40.53A111.58,111.58,0,0,0,32.44,375L17,379.56a23.64,23.64,0,0,0,13.51,45.31l15-4.44a111.49,111.49,0,0,0,48.53,47.24l-3.85,14.75a23.66,23.66,0,0,0,17,28.83,24.7,24.7,0,0,0,6,.75,23.73,23.73,0,0,0,23-17.7L140,479.67c1.37.05,2.77.35,4.13.35A111.22,111.22,0,0,0,205,461.5l11.45,11.74a23.7,23.7,0,0,0,34.08-32.93l-12.19-12.5a111,111,0,0,0,16.11-41.4,158.69,158.69,0,0,1,5.16-20.71l12,5.64a23.66,23.66,0,1,0,20.19-42.79l-11.72-5.49c.89-1.32,1.59-2.77,2.52-4.06a157.86,157.86,0,0,1,10.46-12.49,159.5,159.5,0,0,1,15.59-15.28,162.18,162.18,0,0,1,13.23-10.4c1.5-1,3.1-1.89,4.63-2.87l5.23,11.8a23.74,23.74,0,0,0,43.48-19.08l-5.36-12.11a158.87,158.87,0,0,1,16.49-4.1,111,111,0,0,0,45-18.54l13.33,12a23.69,23.69,0,1,0,31.88-35l-12.94-11.67A110.83,110.83,0,0,0,479.21,137L495,132.32A23.61,23.61,0,0,0,511,102.93ZM160,368a48,48,0,1,1,48-48A48,48,0,0,1,160,368Zm80-136a24,24,0,1,1,24-24A24,24,0,0,1,240,232Z\"]\n};\nvar faBahai = {\n prefix: 'fas',\n iconName: 'bahai',\n icon: [512, 512, [], \"f666\", \"M496.25 202.52l-110-15.44 41.82-104.34c6.67-16.64-11.6-32.18-26.59-22.63L307.44 120 273.35 12.82C270.64 4.27 263.32 0 256 0c-7.32 0-14.64 4.27-17.35 12.82l-34.09 107.19-94.04-59.89c-14.99-9.55-33.25 5.99-26.59 22.63l41.82 104.34-110 15.43c-17.54 2.46-21.68 26.27-6.03 34.67l98.16 52.66-74.48 83.54c-10.92 12.25-1.72 30.93 13.29 30.93 1.31 0 2.67-.14 4.07-.45l108.57-23.65-4.11 112.55c-.43 11.65 8.87 19.22 18.41 19.22 5.15 0 10.39-2.21 14.2-7.18l68.18-88.9 68.18 88.9c3.81 4.97 9.04 7.18 14.2 7.18 9.54 0 18.84-7.57 18.41-19.22l-4.11-112.55 108.57 23.65c17.36 3.76 29.21-17.2 17.35-30.49l-74.48-83.54 98.16-52.66c15.64-8.39 11.5-32.2-6.04-34.66zM338.51 311.68l-51.89-11.3 1.97 53.79L256 311.68l-32.59 42.49 1.96-53.79-51.89 11.3 35.6-39.93-46.92-25.17 52.57-7.38-19.99-49.87 44.95 28.62L256 166.72l16.29 51.23 44.95-28.62-19.99 49.87 52.57 7.38-46.92 25.17 35.61 39.93z\"]\n};\nvar faBalanceScale = {\n prefix: 'fas',\n iconName: 'balance-scale',\n icon: [640, 512, [], \"f24e\", \"M256 336h-.02c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0C-2.06 328.75.02 320.33.02 336H0c0 44.18 57.31 80 128 80s128-35.82 128-80zM128 176l72 144H56l72-144zm511.98 160c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0-87.12 174.26-85.04 165.84-85.04 181.51H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02zM440 320l72-144 72 144H440zm88 128H352V153.25c23.51-10.29 41.16-31.48 46.39-57.25H528c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16H383.64C369.04 12.68 346.09 0 320 0s-49.04 12.68-63.64 32H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h129.61c5.23 25.76 22.87 46.96 46.39 57.25V448H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faBalanceScaleLeft = {\n prefix: 'fas',\n iconName: 'balance-scale-left',\n icon: [640, 512, [], \"f515\", \"M528 448H352V153.25c20.42-8.94 36.1-26.22 43.38-47.47l132-44.26c8.38-2.81 12.89-11.88 10.08-20.26l-10.17-30.34C524.48 2.54 515.41-1.97 507.03.84L389.11 40.37C375.3 16.36 349.69 0 320 0c-44.18 0-80 35.82-80 80 0 3.43.59 6.71 1.01 10.03l-128.39 43.05c-8.38 2.81-12.89 11.88-10.08 20.26l10.17 30.34c2.81 8.38 11.88 12.89 20.26 10.08l142.05-47.63c4.07 2.77 8.43 5.12 12.99 7.12V496c0 8.84 7.16 16 16 16h224c8.84 0 16-7.16 16-16v-32c-.01-8.84-7.17-16-16.01-16zm111.98-144c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0-87.12 174.26-85.04 165.84-85.04 181.51H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02zM440 288l72-144 72 144H440zm-269.07-37.51c-17.65-35.29-68.19-35.36-85.87 0C-2.06 424.75.02 416.33.02 432H0c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-16.18 1.34-8.73-85.05-181.51zM56 416l72-144 72 144H56z\"]\n};\nvar faBalanceScaleRight = {\n prefix: 'fas',\n iconName: 'balance-scale-right',\n icon: [640, 512, [], \"f516\", \"M96 464v32c0 8.84 7.16 16 16 16h224c8.84 0 16-7.16 16-16V153.25c4.56-2 8.92-4.35 12.99-7.12l142.05 47.63c8.38 2.81 17.45-1.71 20.26-10.08l10.17-30.34c2.81-8.38-1.71-17.45-10.08-20.26l-128.4-43.05c.42-3.32 1.01-6.6 1.01-10.03 0-44.18-35.82-80-80-80-29.69 0-55.3 16.36-69.11 40.37L132.96.83c-8.38-2.81-17.45 1.71-20.26 10.08l-10.17 30.34c-2.81 8.38 1.71 17.45 10.08 20.26l132 44.26c7.28 21.25 22.96 38.54 43.38 47.47V448H112c-8.84 0-16 7.16-16 16zM0 304c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-15.67 2.08-7.25-85.05-181.51-17.68-35.36-68.22-35.29-85.87 0C-1.32 295.27.02 287.82.02 304H0zm56-16l72-144 72 144H56zm328.02 144H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-15.67 2.08-7.25-85.05-181.51-17.68-35.36-68.22-35.29-85.87 0-86.38 172.78-85.04 165.33-85.04 181.51zM440 416l72-144 72 144H440z\"]\n};\nvar faBan = {\n prefix: 'fas',\n iconName: 'ban',\n icon: [512, 512, [], \"f05e\", \"M256 8C119.034 8 8 119.033 8 256s111.034 248 248 248 248-111.034 248-248S392.967 8 256 8zm130.108 117.892c65.448 65.448 70 165.481 20.677 235.637L150.47 105.216c70.204-49.356 170.226-44.735 235.638 20.676zM125.892 386.108c-65.448-65.448-70-165.481-20.677-235.637L361.53 406.784c-70.203 49.356-170.226 44.736-235.638-20.676z\"]\n};\nvar faBandAid = {\n prefix: 'fas',\n iconName: 'band-aid',\n icon: [640, 512, [], \"f462\", \"M0 160v192c0 35.3 28.7 64 64 64h96V96H64c-35.3 0-64 28.7-64 64zm576-64h-96v320h96c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64zM192 416h256V96H192v320zm176-232c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm0 96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-96-96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm0 96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24z\"]\n};\nvar faBarcode = {\n prefix: 'fas',\n iconName: 'barcode',\n icon: [512, 512, [], \"f02a\", \"M0 448V64h18v384H0zm26.857-.273V64H36v383.727h-9.143zm27.143 0V64h8.857v383.727H54zm44.857 0V64h8.857v383.727h-8.857zm36 0V64h17.714v383.727h-17.714zm44.857 0V64h8.857v383.727h-8.857zm18 0V64h8.857v383.727h-8.857zm18 0V64h8.857v383.727h-8.857zm35.715 0V64h18v383.727h-18zm44.857 0V64h18v383.727h-18zm35.999 0V64h18.001v383.727h-18.001zm36.001 0V64h18.001v383.727h-18.001zm26.857 0V64h18v383.727h-18zm45.143 0V64h26.857v383.727h-26.857zm35.714 0V64h9.143v383.727H476zm18 .273V64h18v384h-18z\"]\n};\nvar faBars = {\n prefix: 'fas',\n iconName: 'bars',\n icon: [448, 512, [], \"f0c9\", \"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"]\n};\nvar faBaseballBall = {\n prefix: 'fas',\n iconName: 'baseball-ball',\n icon: [496, 512, [], \"f433\", \"M368.5 363.9l28.8-13.9c11.1 22.9 26 43.2 44.1 60.9 34-42.5 54.5-96.3 54.5-154.9 0-58.5-20.4-112.2-54.2-154.6-17.8 17.3-32.6 37.1-43.6 59.5l-28.7-14.1c12.8-26 30-49 50.8-69C375.6 34.7 315 8 248 8 181.1 8 120.5 34.6 75.9 77.7c20.7 19.9 37.9 42.9 50.7 68.8l-28.7 14.1c-11-22.3-25.7-42.1-43.5-59.4C20.4 143.7 0 197.4 0 256c0 58.6 20.4 112.3 54.4 154.7 18.2-17.7 33.2-38 44.3-61l28.8 13.9c-12.9 26.7-30.3 50.3-51.5 70.7 44.5 43.1 105.1 69.7 172 69.7 66.8 0 127.3-26.5 171.9-69.5-21.1-20.4-38.5-43.9-51.4-70.6zm-228.3-32l-30.5-9.8c14.9-46.4 12.7-93.8-.6-134l30.4-10c15 45.6 18 99.9.7 153.8zm216.3-153.4l30.4 10c-13.2 40.1-15.5 87.5-.6 134l-30.5 9.8c-17.3-54-14.3-108.3.7-153.8z\"]\n};\nvar faBasketballBall = {\n prefix: 'fas',\n iconName: 'basketball-ball',\n icon: [496, 512, [], \"f434\", \"M212.3 10.3c-43.8 6.3-86.2 24.1-122.2 53.8l77.4 77.4c27.8-35.8 43.3-81.2 44.8-131.2zM248 222L405.9 64.1c-42.4-35-93.6-53.5-145.5-56.1-1.2 63.9-21.5 122.3-58.7 167.7L248 222zM56.1 98.1c-29.7 36-47.5 78.4-53.8 122.2 50-1.5 95.5-17 131.2-44.8L56.1 98.1zm272.2 204.2c45.3-37.1 103.7-57.4 167.7-58.7-2.6-51.9-21.1-103.1-56.1-145.5L282 256l46.3 46.3zM248 290L90.1 447.9c42.4 34.9 93.6 53.5 145.5 56.1 1.3-64 21.6-122.4 58.7-167.7L248 290zm191.9 123.9c29.7-36 47.5-78.4 53.8-122.2-50.1 1.6-95.5 17.1-131.2 44.8l77.4 77.4zM167.7 209.7C122.3 246.9 63.9 267.3 0 268.4c2.6 51.9 21.1 103.1 56.1 145.5L214 256l-46.3-46.3zm116 292c43.8-6.3 86.2-24.1 122.2-53.8l-77.4-77.4c-27.7 35.7-43.2 81.2-44.8 131.2z\"]\n};\nvar faBath = {\n prefix: 'fas',\n iconName: 'bath',\n icon: [512, 512, [], \"f2cd\", \"M32,384a95.4,95.4,0,0,0,32,71.09V496a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V480H384v16a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V455.09A95.4,95.4,0,0,0,480,384V336H32ZM496,256H80V69.25a21.26,21.26,0,0,1,36.28-15l19.27,19.26c-13.13,29.88-7.61,59.11,8.62,79.73l-.17.17A16,16,0,0,0,144,176l11.31,11.31a16,16,0,0,0,22.63,0L283.31,81.94a16,16,0,0,0,0-22.63L272,48a16,16,0,0,0-22.62,0l-.17.17c-20.62-16.23-49.83-21.75-79.73-8.62L150.22,20.28A69.25,69.25,0,0,0,32,69.25V256H16A16,16,0,0,0,0,272v16a16,16,0,0,0,16,16H496a16,16,0,0,0,16-16V272A16,16,0,0,0,496,256Z\"]\n};\nvar faBatteryEmpty = {\n prefix: 'fas',\n iconName: 'battery-empty',\n icon: [640, 512, [], \"f244\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48z\"]\n};\nvar faBatteryFull = {\n prefix: 'fas',\n iconName: 'battery-full',\n icon: [640, 512, [], \"f240\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-48 96H96v128h416V192z\"]\n};\nvar faBatteryHalf = {\n prefix: 'fas',\n iconName: 'battery-half',\n icon: [640, 512, [], \"f242\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-240 96H96v128h224V192z\"]\n};\nvar faBatteryQuarter = {\n prefix: 'fas',\n iconName: 'battery-quarter',\n icon: [640, 512, [], \"f243\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-336 96H96v128h128V192z\"]\n};\nvar faBatteryThreeQuarters = {\n prefix: 'fas',\n iconName: 'battery-three-quarters',\n icon: [640, 512, [], \"f241\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-144 96H96v128h320V192z\"]\n};\nvar faBed = {\n prefix: 'fas',\n iconName: 'bed',\n icon: [640, 512, [], \"f236\", \"M176 256c44.11 0 80-35.89 80-80s-35.89-80-80-80-80 35.89-80 80 35.89 80 80 80zm352-128H304c-8.84 0-16 7.16-16 16v144H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v352c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h512v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V240c0-61.86-50.14-112-112-112z\"]\n};\nvar faBeer = {\n prefix: 'fas',\n iconName: 'beer',\n icon: [448, 512, [], \"f0fc\", \"M368 96h-48V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56v400c0 13.255 10.745 24 24 24h272c13.255 0 24-10.745 24-24v-42.11l80.606-35.977C429.396 365.063 448 336.388 448 304.86V176c0-44.112-35.888-80-80-80zm16 208.86a16.018 16.018 0 0 1-9.479 14.611L320 343.805V160h48c8.822 0 16 7.178 16 16v128.86zM208 384c-8.836 0-16-7.164-16-16V144c0-8.836 7.164-16 16-16s16 7.164 16 16v224c0 8.836-7.164 16-16 16zm-96 0c-8.836 0-16-7.164-16-16V144c0-8.836 7.164-16 16-16s16 7.164 16 16v224c0 8.836-7.164 16-16 16z\"]\n};\nvar faBell = {\n prefix: 'fas',\n iconName: 'bell',\n icon: [448, 512, [], \"f0f3\", \"M224 512c35.32 0 63.97-28.65 63.97-64H160.03c0 35.35 28.65 64 63.97 64zm215.39-149.71c-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84C118.56 68.1 64.08 130.3 64.08 208c0 102.3-36.15 133.53-55.47 154.29-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h383.8c19.12 0 32-15.6 32.1-32 .05-7.55-2.61-15.27-8.61-21.71z\"]\n};\nvar faBellSlash = {\n prefix: 'fas',\n iconName: 'bell-slash',\n icon: [640, 512, [], \"f1f6\", \"M633.82 458.1l-90.62-70.05c.19-1.38.8-2.66.8-4.06.05-7.55-2.61-15.27-8.61-21.71-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84c-40.33 8.38-74.66 31.07-97.59 62.57L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.35 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.42-6.97 4.17-17.02-2.81-22.45zM157.23 251.54c-8.61 67.96-36.41 93.33-52.62 110.75-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h241.92L157.23 251.54zM320 512c35.32 0 63.97-28.65 63.97-64H256.03c0 35.35 28.65 64 63.97 64z\"]\n};\nvar faBezierCurve = {\n prefix: 'fas',\n iconName: 'bezier-curve',\n icon: [640, 512, [], \"f55b\", \"M368 32h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zM208 88h-84.75C113.75 64.56 90.84 48 64 48 28.66 48 0 76.65 0 112s28.66 64 64 64c26.84 0 49.75-16.56 59.25-40h79.73c-55.37 32.52-95.86 87.32-109.54 152h49.4c11.3-41.61 36.77-77.21 71.04-101.56-3.7-8.08-5.88-16.99-5.88-26.44V88zm-48 232H64c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zM576 48c-26.84 0-49.75 16.56-59.25 40H432v72c0 9.45-2.19 18.36-5.88 26.44 34.27 24.35 59.74 59.95 71.04 101.56h49.4c-13.68-64.68-54.17-119.48-109.54-152h79.73c9.5 23.44 32.41 40 59.25 40 35.34 0 64-28.65 64-64s-28.66-64-64-64zm0 272h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z\"]\n};\nvar faBible = {\n prefix: 'fas',\n iconName: 'bible',\n icon: [448, 512, [], \"f647\", \"M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM144 144c0-8.84 7.16-16 16-16h48V80c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v48h48c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-48v112c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V192h-48c-8.84 0-16-7.16-16-16v-32zm236.8 304H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8v64z\"]\n};\nvar faBicycle = {\n prefix: 'fas',\n iconName: 'bicycle',\n icon: [640, 512, [], \"f206\", \"M512.509 192.001c-16.373-.064-32.03 2.955-46.436 8.495l-77.68-125.153A24 24 0 0 0 368.001 64h-64c-8.837 0-16 7.163-16 16v16c0 8.837 7.163 16 16 16h50.649l14.896 24H256.002v-16c0-8.837-7.163-16-16-16h-87.459c-13.441 0-24.777 10.999-24.536 24.437.232 13.044 10.876 23.563 23.995 23.563h48.726l-29.417 47.52c-13.433-4.83-27.904-7.483-42.992-7.52C58.094 191.83.412 249.012.002 319.236-.413 390.279 57.055 448 128.002 448c59.642 0 109.758-40.793 123.967-96h52.033a24 24 0 0 0 20.406-11.367L410.37 201.77l14.938 24.067c-25.455 23.448-41.385 57.081-41.307 94.437.145 68.833 57.899 127.051 126.729 127.719 70.606.685 128.181-55.803 129.255-125.996 1.086-70.941-56.526-129.72-127.476-129.996zM186.75 265.772c9.727 10.529 16.673 23.661 19.642 38.228h-43.306l23.664-38.228zM128.002 400c-44.112 0-80-35.888-80-80s35.888-80 80-80c5.869 0 11.586.653 17.099 1.859l-45.505 73.509C89.715 331.327 101.213 352 120.002 352h81.3c-12.37 28.225-40.562 48-73.3 48zm162.63-96h-35.624c-3.96-31.756-19.556-59.894-42.383-80.026L237.371 184h127.547l-74.286 120zm217.057 95.886c-41.036-2.165-74.049-35.692-75.627-76.755-.812-21.121 6.633-40.518 19.335-55.263l44.433 71.586c4.66 7.508 14.524 9.816 22.032 5.156l13.594-8.437c7.508-4.66 9.817-14.524 5.156-22.032l-44.468-71.643a79.901 79.901 0 0 1 19.858-2.497c44.112 0 80 35.888 80 80-.001 45.54-38.252 82.316-84.313 79.885z\"]\n};\nvar faBiking = {\n prefix: 'fas',\n iconName: 'biking',\n icon: [640, 512, [], \"f84a\", \"M400 96a48 48 0 1 0-48-48 48 48 0 0 0 48 48zm-4 121a31.9 31.9 0 0 0 20 7h64a32 32 0 0 0 0-64h-52.78L356 103a31.94 31.94 0 0 0-40.81.68l-112 96a32 32 0 0 0 3.08 50.92L288 305.12V416a32 32 0 0 0 64 0V288a32 32 0 0 0-14.25-26.62l-41.36-27.57 58.25-49.92zm116 39a128 128 0 1 0 128 128 128 128 0 0 0-128-128zm0 192a64 64 0 1 1 64-64 64 64 0 0 1-64 64zM128 256a128 128 0 1 0 128 128 128 128 0 0 0-128-128zm0 192a64 64 0 1 1 64-64 64 64 0 0 1-64 64z\"]\n};\nvar faBinoculars = {\n prefix: 'fas',\n iconName: 'binoculars',\n icon: [512, 512, [], \"f1e5\", \"M416 48c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v48h96V48zM63.91 159.99C61.4 253.84 3.46 274.22 0 404v44c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32V288h32V128H95.84c-17.63 0-31.45 14.37-31.93 31.99zm384.18 0c-.48-17.62-14.3-31.99-31.93-31.99H320v160h32v160c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-44c-3.46-129.78-61.4-150.16-63.91-244.01zM176 32h-64c-8.84 0-16 7.16-16 16v48h96V48c0-8.84-7.16-16-16-16zm48 256h64V128h-64v160z\"]\n};\nvar faBiohazard = {\n prefix: 'fas',\n iconName: 'biohazard',\n icon: [576, 512, [], \"f780\", \"M287.9 112c18.6 0 36.2 3.8 52.8 9.6 13.3-10.3 23.6-24.3 29.5-40.7-25.2-10.9-53-17-82.2-17-29.1 0-56.9 6-82.1 16.9 5.9 16.4 16.2 30.4 29.5 40.7 16.5-5.7 34-9.5 52.5-9.5zM163.6 438.7c12-11.8 20.4-26.4 24.5-42.4-32.9-26.4-54.8-65.3-58.9-109.6-8.5-2.8-17.2-4.6-26.4-4.6-7.6 0-15.2 1-22.5 3.1 4.1 62.8 35.8 118 83.3 153.5zm224.2-42.6c4.1 16 12.5 30.7 24.5 42.5 47.4-35.5 79.1-90.7 83-153.5-7.2-2-14.7-3-22.2-3-9.2 0-18 1.9-26.6 4.7-4.1 44.2-26 82.9-58.7 109.3zm113.5-205c-17.6-10.4-36.3-16.6-55.3-19.9 6-17.7 10-36.4 10-56.2 0-41-14.5-80.8-41-112.2-2.5-3-6.6-3.7-10-1.8-3.3 1.9-4.8 6-3.6 9.7 4.5 13.8 6.6 26.3 6.6 38.5 0 67.8-53.8 122.9-120 122.9S168 117 168 49.2c0-12.1 2.2-24.7 6.6-38.5 1.2-3.7-.3-7.8-3.6-9.7-3.4-1.9-7.5-1.2-10 1.8C134.6 34.2 120 74 120 115c0 19.8 3.9 38.5 10 56.2-18.9 3.3-37.7 9.5-55.3 19.9-34.6 20.5-61 53.3-74.3 92.4-1.3 3.7.2 7.7 3.5 9.8 3.3 2 7.5 1.3 10-1.6 9.4-10.8 19-19.1 29.2-25.1 57.3-33.9 130.8-13.7 163.9 45 33.1 58.7 13.4 134-43.9 167.9-10.2 6.1-22 10.4-35.8 13.4-3.7.8-6.4 4.2-6.4 8.1.1 4 2.7 7.3 6.5 8 39.7 7.8 80.6.8 115.2-19.7 18-10.6 32.9-24.5 45.3-40.1 12.4 15.6 27.3 29.5 45.3 40.1 34.6 20.5 75.5 27.5 115.2 19.7 3.8-.7 6.4-4 6.5-8 0-3.9-2.6-7.3-6.4-8.1-13.9-2.9-25.6-7.3-35.8-13.4-57.3-33.9-77-109.2-43.9-167.9s106.6-78.9 163.9-45c10.2 6.1 19.8 14.3 29.2 25.1 2.5 2.9 6.7 3.6 10 1.6s4.8-6.1 3.5-9.8c-13.1-39.1-39.5-72-74.1-92.4zm-213.4 129c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\"]\n};\nvar faBirthdayCake = {\n prefix: 'fas',\n iconName: 'birthday-cake',\n icon: [448, 512, [], \"f1fd\", \"M448 384c-28.02 0-31.26-32-74.5-32-43.43 0-46.825 32-74.75 32-27.695 0-31.454-32-74.75-32-42.842 0-47.218 32-74.5 32-28.148 0-31.202-32-74.75-32-43.547 0-46.653 32-74.75 32v-80c0-26.5 21.5-48 48-48h16V112h64v144h64V112h64v144h64V112h64v144h16c26.5 0 48 21.5 48 48v80zm0 128H0v-96c43.356 0 46.767-32 74.75-32 27.951 0 31.253 32 74.75 32 42.843 0 47.217-32 74.5-32 28.148 0 31.201 32 74.75 32 43.357 0 46.767-32 74.75-32 27.488 0 31.252 32 74.5 32v96zM96 96c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40zm128 0c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40zm128 0c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40z\"]\n};\nvar faBlender = {\n prefix: 'fas',\n iconName: 'blender',\n icon: [512, 512, [], \"f517\", \"M416 384H160c-35.35 0-64 28.65-64 64v32c0 17.67 14.33 32 32 32h320c17.67 0 32-14.33 32-32v-32c0-35.35-28.65-64-64-64zm-128 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm40-416h166.54L512 0H48C21.49 0 0 21.49 0 48v160c0 26.51 21.49 48 48 48h103.27l8.73 96h256l17.46-64H328c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h114.18l17.46-64H328c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h140.36l17.46-64H328c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8zM64 192V64h69.82l11.64 128H64z\"]\n};\nvar faBlenderPhone = {\n prefix: 'fas',\n iconName: 'blender-phone',\n icon: [576, 512, [], \"f6b6\", \"M392 64h166.54L576 0H192v352h288l17.46-64H392c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h114.18l17.46-64H392c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h140.36l17.46-64H392c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8zM158.8 335.01l-25.78-63.26c-2.78-6.81-9.8-10.99-17.24-10.26l-45.03 4.42c-17.28-46.94-17.65-99.78 0-147.72l45.03 4.42c7.43.73 14.46-3.46 17.24-10.26l25.78-63.26c3.02-7.39.2-15.85-6.68-20.07l-39.28-24.1C98.51-3.87 80.09-.5 68.95 11.97c-92.57 103.6-92 259.55 2.1 362.49 9.87 10.8 29.12 12.48 41.65 4.8l39.41-24.18c6.89-4.22 9.7-12.67 6.69-20.07zM480 384H192c-35.35 0-64 28.65-64 64v32c0 17.67 14.33 32 32 32h352c17.67 0 32-14.33 32-32v-32c0-35.35-28.65-64-64-64zm-144 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faBlind = {\n prefix: 'fas',\n iconName: 'blind',\n icon: [384, 512, [], \"f29d\", \"M380.15 510.837a8 8 0 0 1-10.989-2.687l-125.33-206.427a31.923 31.923 0 0 0 12.958-9.485l126.048 207.608a8 8 0 0 1-2.687 10.991zM142.803 314.338l-32.54 89.485 36.12 88.285c6.693 16.36 25.377 24.192 41.733 17.501 16.357-6.692 24.193-25.376 17.501-41.734l-62.814-153.537zM96 88c24.301 0 44-19.699 44-44S120.301 0 96 0 52 19.699 52 44s19.699 44 44 44zm154.837 169.128l-120-152c-4.733-5.995-11.75-9.108-18.837-9.112V96H80v.026c-7.146.003-14.217 3.161-18.944 9.24L0 183.766v95.694c0 13.455 11.011 24.791 24.464 24.536C37.505 303.748 48 293.1 48 280v-79.766l16-20.571v140.698L9.927 469.055c-6.04 16.609 2.528 34.969 19.138 41.009 16.602 6.039 34.968-2.524 41.009-19.138L136 309.638V202.441l-31.406-39.816a4 4 0 1 1 6.269-4.971l102.3 129.217c9.145 11.584 24.368 11.339 33.708 3.965 10.41-8.216 12.159-23.334 3.966-33.708z\"]\n};\nvar faBlog = {\n prefix: 'fas',\n iconName: 'blog',\n icon: [512, 512, [], \"f781\", \"M172.2 226.8c-14.6-2.9-28.2 8.9-28.2 23.8V301c0 10.2 7.1 18.4 16.7 22 18.2 6.8 31.3 24.4 31.3 45 0 26.5-21.5 48-48 48s-48-21.5-48-48V120c0-13.3-10.7-24-24-24H24c-13.3 0-24 10.7-24 24v248c0 89.5 82.1 160.2 175 140.7 54.4-11.4 98.3-55.4 109.7-109.7 17.4-82.9-37-157.2-112.5-172.2zM209 0c-9.2-.5-17 6.8-17 16v31.6c0 8.5 6.6 15.5 15 15.9 129.4 7 233.4 112 240.9 241.5.5 8.4 7.5 15 15.9 15h32.1c9.2 0 16.5-7.8 16-17C503.4 139.8 372.2 8.6 209 0zm.3 96c-9.3-.7-17.3 6.7-17.3 16.1v32.1c0 8.4 6.5 15.3 14.8 15.9 76.8 6.3 138 68.2 144.9 145.2.8 8.3 7.6 14.7 15.9 14.7h32.2c9.3 0 16.8-8 16.1-17.3-8.4-110.1-96.5-198.2-206.6-206.7z\"]\n};\nvar faBold = {\n prefix: 'fas',\n iconName: 'bold',\n icon: [384, 512, [], \"f032\", \"M333.49 238a122 122 0 0 0 27-65.21C367.87 96.49 308 32 233.42 32H34a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h31.87v288H34a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h209.32c70.8 0 134.14-51.75 141-122.4 4.74-48.45-16.39-92.06-50.83-119.6zM145.66 112h87.76a48 48 0 0 1 0 96h-87.76zm87.76 288h-87.76V288h87.76a56 56 0 0 1 0 112z\"]\n};\nvar faBolt = {\n prefix: 'fas',\n iconName: 'bolt',\n icon: [320, 512, [], \"f0e7\", \"M296 160H180.6l42.6-129.8C227.2 15 215.7 0 200 0H56C44 0 33.8 8.9 32.2 20.8l-32 240C-1.7 275.2 9.5 288 24 288h118.7L96.6 482.5c-3.6 15.2 8 29.5 23.3 29.5 8.4 0 16.4-4.4 20.8-12l176-304c9.3-15.9-2.2-36-20.7-36z\"]\n};\nvar faBomb = {\n prefix: 'fas',\n iconName: 'bomb',\n icon: [512, 512, [], \"f1e2\", \"M440.5 88.5l-52 52L415 167c9.4 9.4 9.4 24.6 0 33.9l-17.4 17.4c11.8 26.1 18.4 55.1 18.4 85.6 0 114.9-93.1 208-208 208S0 418.9 0 304 93.1 96 208 96c30.5 0 59.5 6.6 85.6 18.4L311 97c9.4-9.4 24.6-9.4 33.9 0l26.5 26.5 52-52 17.1 17zM500 60h-24c-6.6 0-12 5.4-12 12s5.4 12 12 12h24c6.6 0 12-5.4 12-12s-5.4-12-12-12zM440 0c-6.6 0-12 5.4-12 12v24c0 6.6 5.4 12 12 12s12-5.4 12-12V12c0-6.6-5.4-12-12-12zm33.9 55l17-17c4.7-4.7 4.7-12.3 0-17-4.7-4.7-12.3-4.7-17 0l-17 17c-4.7 4.7-4.7 12.3 0 17 4.8 4.7 12.4 4.7 17 0zm-67.8 0c4.7 4.7 12.3 4.7 17 0 4.7-4.7 4.7-12.3 0-17l-17-17c-4.7-4.7-12.3-4.7-17 0-4.7 4.7-4.7 12.3 0 17l17 17zm67.8 34c-4.7-4.7-12.3-4.7-17 0-4.7 4.7-4.7 12.3 0 17l17 17c4.7 4.7 12.3 4.7 17 0 4.7-4.7 4.7-12.3 0-17l-17-17zM112 272c0-35.3 28.7-64 64-64 8.8 0 16-7.2 16-16s-7.2-16-16-16c-52.9 0-96 43.1-96 96 0 8.8 7.2 16 16 16s16-7.2 16-16z\"]\n};\nvar faBone = {\n prefix: 'fas',\n iconName: 'bone',\n icon: [640, 512, [], \"f5d7\", \"M598.88 244.56c25.2-12.6 41.12-38.36 41.12-66.53v-7.64C640 129.3 606.7 96 565.61 96c-32.02 0-60.44 20.49-70.57 50.86-7.68 23.03-11.6 45.14-38.11 45.14H183.06c-27.38 0-31.58-25.54-38.11-45.14C134.83 116.49 106.4 96 74.39 96 33.3 96 0 129.3 0 170.39v7.64c0 28.17 15.92 53.93 41.12 66.53 9.43 4.71 9.43 18.17 0 22.88C15.92 280.04 0 305.8 0 333.97v7.64C0 382.7 33.3 416 74.38 416c32.02 0 60.44-20.49 70.57-50.86 7.68-23.03 11.6-45.14 38.11-45.14h273.87c27.38 0 31.58 25.54 38.11 45.14C505.17 395.51 533.6 416 565.61 416c41.08 0 74.38-33.3 74.38-74.39v-7.64c0-28.18-15.92-53.93-41.12-66.53-9.42-4.71-9.42-18.17.01-22.88z\"]\n};\nvar faBong = {\n prefix: 'fas',\n iconName: 'bong',\n icon: [448, 512, [], \"f55c\", \"M302.5 512c23.18 0 44.43-12.58 56-32.66C374.69 451.26 384 418.75 384 384c0-36.12-10.08-69.81-27.44-98.62L400 241.94l9.38 9.38c6.25 6.25 16.38 6.25 22.63 0l11.3-11.32c6.25-6.25 6.25-16.38 0-22.63l-52.69-52.69c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63l9.38 9.38-39.41 39.41c-11.56-11.37-24.53-21.33-38.65-29.51V63.74l15.97-.02c8.82-.01 15.97-7.16 15.98-15.98l.04-31.72C320 7.17 312.82-.01 303.97 0L80.03.26c-8.82.01-15.97 7.16-15.98 15.98l-.04 31.73c-.01 8.85 7.17 16.02 16.02 16.01L96 63.96v153.93C38.67 251.1 0 312.97 0 384c0 34.75 9.31 67.27 25.5 95.34C37.08 499.42 58.33 512 81.5 512h221zM120.06 259.43L144 245.56V63.91l96-.11v181.76l23.94 13.87c24.81 14.37 44.12 35.73 56.56 60.57h-257c12.45-24.84 31.75-46.2 56.56-60.57z\"]\n};\nvar faBook = {\n prefix: 'fas',\n iconName: 'book',\n icon: [448, 512, [], \"f02d\", \"M448 360V24c0-13.3-10.7-24-24-24H96C43 0 0 43 0 96v320c0 53 43 96 96 96h328c13.3 0 24-10.7 24-24v-16c0-7.5-3.5-14.3-8.9-18.7-4.2-15.4-4.2-59.3 0-74.7 5.4-4.3 8.9-11.1 8.9-18.6zM128 134c0-3.3 2.7-6 6-6h212c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H134c-3.3 0-6-2.7-6-6v-20zm0 64c0-3.3 2.7-6 6-6h212c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H134c-3.3 0-6-2.7-6-6v-20zm253.4 250H96c-17.7 0-32-14.3-32-32 0-17.6 14.4-32 32-32h285.4c-1.9 17.1-1.9 46.9 0 64z\"]\n};\nvar faBookDead = {\n prefix: 'fas',\n iconName: 'book-dead',\n icon: [448, 512, [], \"f6b7\", \"M272 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm176 222.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM240 56c44.2 0 80 28.7 80 64 0 20.9-12.7 39.2-32 50.9V184c0 8.8-7.2 16-16 16h-64c-8.8 0-16-7.2-16-16v-13.1c-19.3-11.7-32-30-32-50.9 0-35.3 35.8-64 80-64zM124.8 223.3l6.3-14.7c1.7-4.1 6.4-5.9 10.5-4.2l98.3 42.1 98.4-42.1c4.1-1.7 8.8.1 10.5 4.2l6.3 14.7c1.7 4.1-.1 8.8-4.2 10.5L280.6 264l70.3 30.1c4.1 1.7 5.9 6.4 4.2 10.5l-6.3 14.7c-1.7 4.1-6.4 5.9-10.5 4.2L240 281.4l-98.3 42.2c-4.1 1.7-8.8-.1-10.5-4.2l-6.3-14.7c-1.7-4.1.1-8.8 4.2-10.5l70.4-30.1-70.5-30.3c-4.1-1.7-5.9-6.4-4.2-10.5zm256 224.7H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8zM208 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16z\"]\n};\nvar faBookMedical = {\n prefix: 'fas',\n iconName: 'book-medical',\n icon: [448, 512, [], \"f7e6\", \"M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16q0-9.6-9.6-19.2c-3.2-16-3.2-60.8 0-73.6q9.6-4.8 9.6-19.2zM144 168a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8v48a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8zm236.8 280H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8z\"]\n};\nvar faBookOpen = {\n prefix: 'fas',\n iconName: 'book-open',\n icon: [576, 512, [], \"f518\", \"M542.22 32.05c-54.8 3.11-163.72 14.43-230.96 55.59-4.64 2.84-7.27 7.89-7.27 13.17v363.87c0 11.55 12.63 18.85 23.28 13.49 69.18-34.82 169.23-44.32 218.7-46.92 16.89-.89 30.02-14.43 30.02-30.66V62.75c.01-17.71-15.35-31.74-33.77-30.7zM264.73 87.64C197.5 46.48 88.58 35.17 33.78 32.05 15.36 31.01 0 45.04 0 62.75V400.6c0 16.24 13.13 29.78 30.02 30.66 49.49 2.6 149.59 12.11 218.77 46.95 10.62 5.35 23.21-1.94 23.21-13.46V100.63c0-5.29-2.62-10.14-7.27-12.99z\"]\n};\nvar faBookReader = {\n prefix: 'fas',\n iconName: 'book-reader',\n icon: [512, 512, [], \"f5da\", \"M352 96c0-53.02-42.98-96-96-96s-96 42.98-96 96 42.98 96 96 96 96-42.98 96-96zM233.59 241.1c-59.33-36.32-155.43-46.3-203.79-49.05C13.55 191.13 0 203.51 0 219.14v222.8c0 14.33 11.59 26.28 26.49 27.05 43.66 2.29 131.99 10.68 193.04 41.43 9.37 4.72 20.48-1.71 20.48-11.87V252.56c-.01-4.67-2.32-8.95-6.42-11.46zm248.61-49.05c-48.35 2.74-144.46 12.73-203.78 49.05-4.1 2.51-6.41 6.96-6.41 11.63v245.79c0 10.19 11.14 16.63 20.54 11.9 61.04-30.72 149.32-39.11 192.97-41.4 14.9-.78 26.49-12.73 26.49-27.06V219.14c-.01-15.63-13.56-28.01-29.81-27.09z\"]\n};\nvar faBookmark = {\n prefix: 'fas',\n iconName: 'bookmark',\n icon: [384, 512, [], \"f02e\", \"M0 512V48C0 21.49 21.49 0 48 0h288c26.51 0 48 21.49 48 48v464L192 400 0 512z\"]\n};\nvar faBorderAll = {\n prefix: 'fas',\n iconName: 'border-all',\n icon: [448, 512, [], \"f84c\", \"M416 32H32A32 32 0 0 0 0 64v384a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32V64a32 32 0 0 0-32-32zm-32 64v128H256V96zm-192 0v128H64V96zM64 416V288h128v128zm192 0V288h128v128z\"]\n};\nvar faBorderNone = {\n prefix: 'fas',\n iconName: 'border-none',\n icon: [448, 512, [], \"f850\", \"M240 224h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-288 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM240 320h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-96 288h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96-384h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM48 224H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faBorderStyle = {\n prefix: 'fas',\n iconName: 'border-style',\n icon: [448, 512, [], \"f853\", \"M240 416h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm192 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-288h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H32A32 32 0 0 0 0 64v400a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V96h368a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faBowlingBall = {\n prefix: 'fas',\n iconName: 'bowling-ball',\n icon: [496, 512, [], \"f436\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM120 192c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm64-96c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm48 144c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faBox = {\n prefix: 'fas',\n iconName: 'box',\n icon: [512, 512, [], \"f466\", \"M509.5 184.6L458.9 32.8C452.4 13.2 434.1 0 413.4 0H272v192h238.7c-.4-2.5-.4-5-1.2-7.4zM240 0H98.6c-20.7 0-39 13.2-45.5 32.8L2.5 184.6c-.8 2.4-.8 4.9-1.2 7.4H240V0zM0 224v240c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V224H0z\"]\n};\nvar faBoxOpen = {\n prefix: 'fas',\n iconName: 'box-open',\n icon: [640, 512, [], \"f49e\", \"M425.7 256c-16.9 0-32.8-9-41.4-23.4L320 126l-64.2 106.6c-8.7 14.5-24.6 23.5-41.5 23.5-4.5 0-9-.6-13.3-1.9L64 215v178c0 14.7 10 27.5 24.2 31l216.2 54.1c10.2 2.5 20.9 2.5 31 0L551.8 424c14.2-3.6 24.2-16.4 24.2-31V215l-137 39.1c-4.3 1.3-8.8 1.9-13.3 1.9zm212.6-112.2L586.8 41c-3.1-6.2-9.8-9.8-16.7-8.9L320 64l91.7 152.1c3.8 6.3 11.4 9.3 18.5 7.3l197.9-56.5c9.9-2.9 14.7-13.9 10.2-23.1zM53.2 41L1.7 143.8c-4.6 9.2.3 20.2 10.1 23l197.9 56.5c7.1 2 14.7-1 18.5-7.3L320 64 69.8 32.1c-6.9-.8-13.5 2.7-16.6 8.9z\"]\n};\nvar faBoxTissue = {\n prefix: 'fas',\n iconName: 'box-tissue',\n icon: [512, 512, [], \"e05b\", \"M383.88,287.82l64-192H338.47a70.2,70.2,0,0,1-66.59-48,70.21,70.21,0,0,0-66.6-48H63.88l64,288Zm-384,192a32,32,0,0,0,32,32h448a32,32,0,0,0,32-32v-64H-.12Zm480-256H438.94l-21.33,64h14.27a16,16,0,0,1,0,32h-352a16,16,0,1,1,0-32H95.09l-14.22-64h-49a32,32,0,0,0-32,32v128h512v-128A32,32,0,0,0,479.88,223.82Z\"]\n};\nvar faBoxes = {\n prefix: 'fas',\n iconName: 'boxes',\n icon: [576, 512, [], \"f468\", \"M560 288h-80v96l-32-21.3-32 21.3v-96h-80c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16h224c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16zm-384-64h224c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16h-80v96l-32-21.3L256 96V0h-80c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16zm64 64h-80v96l-32-21.3L96 384v-96H16c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16h224c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16z\"]\n};\nvar faBraille = {\n prefix: 'fas',\n iconName: 'braille',\n icon: [640, 512, [], \"f2a1\", \"M128 256c0 35.346-28.654 64-64 64S0 291.346 0 256s28.654-64 64-64 64 28.654 64 64zM64 384c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352C28.654 32 0 60.654 0 96s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm160 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm224 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm160 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-320c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32z\"]\n};\nvar faBrain = {\n prefix: 'fas',\n iconName: 'brain',\n icon: [576, 512, [], \"f5dc\", \"M208 0c-29.9 0-54.7 20.5-61.8 48.2-.8 0-1.4-.2-2.2-.2-35.3 0-64 28.7-64 64 0 4.8.6 9.5 1.7 14C52.5 138 32 166.6 32 200c0 12.6 3.2 24.3 8.3 34.9C16.3 248.7 0 274.3 0 304c0 33.3 20.4 61.9 49.4 73.9-.9 4.6-1.4 9.3-1.4 14.1 0 39.8 32.2 72 72 72 4.1 0 8.1-.5 12-1.2 9.6 28.5 36.2 49.2 68 49.2 39.8 0 72-32.2 72-72V64c0-35.3-28.7-64-64-64zm368 304c0-29.7-16.3-55.3-40.3-69.1 5.2-10.6 8.3-22.3 8.3-34.9 0-33.4-20.5-62-49.7-74 1-4.5 1.7-9.2 1.7-14 0-35.3-28.7-64-64-64-.8 0-1.5.2-2.2.2C422.7 20.5 397.9 0 368 0c-35.3 0-64 28.6-64 64v376c0 39.8 32.2 72 72 72 31.8 0 58.4-20.7 68-49.2 3.9.7 7.9 1.2 12 1.2 39.8 0 72-32.2 72-72 0-4.8-.5-9.5-1.4-14.1 29-12 49.4-40.6 49.4-73.9z\"]\n};\nvar faBreadSlice = {\n prefix: 'fas',\n iconName: 'bread-slice',\n icon: [576, 512, [], \"f7ec\", \"M288 0C108 0 0 93.4 0 169.14 0 199.44 24.24 224 64 224v256c0 17.67 16.12 32 36 32h376c19.88 0 36-14.33 36-32V224c39.76 0 64-24.56 64-54.86C576 93.4 468 0 288 0z\"]\n};\nvar faBriefcase = {\n prefix: 'fas',\n iconName: 'briefcase',\n icon: [512, 512, [], \"f0b1\", \"M320 336c0 8.84-7.16 16-16 16h-96c-8.84 0-16-7.16-16-16v-48H0v144c0 25.6 22.4 48 48 48h416c25.6 0 48-22.4 48-48V288H320v48zm144-208h-80V80c0-25.6-22.4-48-48-48H176c-25.6 0-48 22.4-48 48v48H48c-25.6 0-48 22.4-48 48v80h512v-80c0-25.6-22.4-48-48-48zm-144 0H192V96h128v32z\"]\n};\nvar faBriefcaseMedical = {\n prefix: 'fas',\n iconName: 'briefcase-medical',\n icon: [512, 512, [], \"f469\", \"M464 128h-80V80c0-26.5-21.5-48-48-48H176c-26.5 0-48 21.5-48 48v48H48c-26.5 0-48 21.5-48 48v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48zM192 96h128v32H192V96zm160 248c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48z\"]\n};\nvar faBroadcastTower = {\n prefix: 'fas',\n iconName: 'broadcast-tower',\n icon: [640, 512, [], \"f519\", \"M150.94 192h33.73c11.01 0 18.61-10.83 14.86-21.18-4.93-13.58-7.55-27.98-7.55-42.82s2.62-29.24 7.55-42.82C203.29 74.83 195.68 64 184.67 64h-33.73c-7.01 0-13.46 4.49-15.41 11.23C130.64 92.21 128 109.88 128 128c0 18.12 2.64 35.79 7.54 52.76 1.94 6.74 8.39 11.24 15.4 11.24zM89.92 23.34C95.56 12.72 87.97 0 75.96 0H40.63c-6.27 0-12.14 3.59-14.74 9.31C9.4 45.54 0 85.65 0 128c0 24.75 3.12 68.33 26.69 118.86 2.62 5.63 8.42 9.14 14.61 9.14h34.84c12.02 0 19.61-12.74 13.95-23.37-49.78-93.32-16.71-178.15-.17-209.29zM614.06 9.29C611.46 3.58 605.6 0 599.33 0h-35.42c-11.98 0-19.66 12.66-14.02 23.25 18.27 34.29 48.42 119.42.28 209.23-5.72 10.68 1.8 23.52 13.91 23.52h35.23c6.27 0 12.13-3.58 14.73-9.29C630.57 210.48 640 170.36 640 128s-9.42-82.48-25.94-118.71zM489.06 64h-33.73c-11.01 0-18.61 10.83-14.86 21.18 4.93 13.58 7.55 27.98 7.55 42.82s-2.62 29.24-7.55 42.82c-3.76 10.35 3.85 21.18 14.86 21.18h33.73c7.02 0 13.46-4.49 15.41-11.24 4.9-16.97 7.53-34.64 7.53-52.76 0-18.12-2.64-35.79-7.54-52.76-1.94-6.75-8.39-11.24-15.4-11.24zm-116.3 100.12c7.05-10.29 11.2-22.71 11.2-36.12 0-35.35-28.63-64-63.96-64-35.32 0-63.96 28.65-63.96 64 0 13.41 4.15 25.83 11.2 36.12l-130.5 313.41c-3.4 8.15.46 17.52 8.61 20.92l29.51 12.31c8.15 3.4 17.52-.46 20.91-8.61L244.96 384h150.07l49.2 118.15c3.4 8.16 12.76 12.01 20.91 8.61l29.51-12.31c8.15-3.4 12-12.77 8.61-20.92l-130.5-313.41zM271.62 320L320 203.81 368.38 320h-96.76z\"]\n};\nvar faBroom = {\n prefix: 'fas',\n iconName: 'broom',\n icon: [640, 512, [], \"f51a\", \"M256.47 216.77l86.73 109.18s-16.6 102.36-76.57 150.12C206.66 523.85 0 510.19 0 510.19s3.8-23.14 11-55.43l94.62-112.17c3.97-4.7-.87-11.62-6.65-9.5l-60.4 22.09c14.44-41.66 32.72-80.04 54.6-97.47 59.97-47.76 163.3-40.94 163.3-40.94zM636.53 31.03l-19.86-25c-5.49-6.9-15.52-8.05-22.41-2.56l-232.48 177.8-34.14-42.97c-5.09-6.41-15.14-5.21-18.59 2.21l-25.33 54.55 86.73 109.18 58.8-12.45c8-1.69 11.42-11.2 6.34-17.6l-34.09-42.92 232.48-177.8c6.89-5.48 8.04-15.53 2.55-22.44z\"]\n};\nvar faBrush = {\n prefix: 'fas',\n iconName: 'brush',\n icon: [384, 512, [], \"f55d\", \"M352 0H32C14.33 0 0 14.33 0 32v224h384V32c0-17.67-14.33-32-32-32zM0 320c0 35.35 28.66 64 64 64h64v64c0 35.35 28.66 64 64 64s64-28.65 64-64v-64h64c35.34 0 64-28.65 64-64v-32H0v32zm192 104c13.25 0 24 10.74 24 24 0 13.25-10.75 24-24 24s-24-10.75-24-24c0-13.26 10.75-24 24-24z\"]\n};\nvar faBug = {\n prefix: 'fas',\n iconName: 'bug',\n icon: [512, 512, [], \"f188\", \"M511.988 288.9c-.478 17.43-15.217 31.1-32.653 31.1H424v16c0 21.864-4.882 42.584-13.6 61.145l60.228 60.228c12.496 12.497 12.496 32.758 0 45.255-12.498 12.497-32.759 12.496-45.256 0l-54.736-54.736C345.886 467.965 314.351 480 280 480V236c0-6.627-5.373-12-12-12h-24c-6.627 0-12 5.373-12 12v244c-34.351 0-65.886-12.035-90.636-32.108l-54.736 54.736c-12.498 12.497-32.759 12.496-45.256 0-12.496-12.497-12.496-32.758 0-45.255l60.228-60.228C92.882 378.584 88 357.864 88 336v-16H32.666C15.23 320 .491 306.33.013 288.9-.484 270.816 14.028 256 32 256h56v-58.745l-46.628-46.628c-12.496-12.497-12.496-32.758 0-45.255 12.498-12.497 32.758-12.497 45.256 0L141.255 160h229.489l54.627-54.627c12.498-12.497 32.758-12.497 45.256 0 12.496 12.497 12.496 32.758 0 45.255L424 197.255V256h56c17.972 0 32.484 14.816 31.988 32.9zM257 0c-61.856 0-112 50.144-112 112h224C369 50.144 318.856 0 257 0z\"]\n};\nvar faBuilding = {\n prefix: 'fas',\n iconName: 'building',\n icon: [448, 512, [], \"f1ad\", \"M436 480h-20V24c0-13.255-10.745-24-24-24H56C42.745 0 32 10.745 32 24v456H12c-6.627 0-12 5.373-12 12v20h448v-20c0-6.627-5.373-12-12-12zM128 76c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12V76zm0 96c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40zm52 148h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12zm76 160h-64v-84c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v84zm64-172c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40zm0-96c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40zm0-96c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12V76c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40z\"]\n};\nvar faBullhorn = {\n prefix: 'fas',\n iconName: 'bullhorn',\n icon: [576, 512, [], \"f0a1\", \"M576 240c0-23.63-12.95-44.04-32-55.12V32.01C544 23.26 537.02 0 512 0c-7.12 0-14.19 2.38-19.98 7.02l-85.03 68.03C364.28 109.19 310.66 128 256 128H64c-35.35 0-64 28.65-64 64v96c0 35.35 28.65 64 64 64h33.7c-1.39 10.48-2.18 21.14-2.18 32 0 39.77 9.26 77.35 25.56 110.94 5.19 10.69 16.52 17.06 28.4 17.06h74.28c26.05 0 41.69-29.84 25.9-50.56-16.4-21.52-26.15-48.36-26.15-77.44 0-11.11 1.62-21.79 4.41-32H256c54.66 0 108.28 18.81 150.98 52.95l85.03 68.03a32.023 32.023 0 0 0 19.98 7.02c24.92 0 32-22.78 32-32V295.13C563.05 284.04 576 263.63 576 240zm-96 141.42l-33.05-26.44C392.95 311.78 325.12 288 256 288v-96c69.12 0 136.95-23.78 190.95-66.98L480 98.58v282.84z\"]\n};\nvar faBullseye = {\n prefix: 'fas',\n iconName: 'bullseye',\n icon: [496, 512, [], \"f140\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 432c-101.69 0-184-82.29-184-184 0-101.69 82.29-184 184-184 101.69 0 184 82.29 184 184 0 101.69-82.29 184-184 184zm0-312c-70.69 0-128 57.31-128 128s57.31 128 128 128 128-57.31 128-128-57.31-128-128-128zm0 192c-35.29 0-64-28.71-64-64s28.71-64 64-64 64 28.71 64 64-28.71 64-64 64z\"]\n};\nvar faBurn = {\n prefix: 'fas',\n iconName: 'burn',\n icon: [384, 512, [], \"f46a\", \"M192 0C79.7 101.3 0 220.9 0 300.5 0 425 79 512 192 512s192-87 192-211.5c0-79.9-80.2-199.6-192-300.5zm0 448c-56.5 0-96-39-96-94.8 0-13.5 4.6-61.5 96-161.2 91.4 99.7 96 147.7 96 161.2 0 55.8-39.5 94.8-96 94.8z\"]\n};\nvar faBus = {\n prefix: 'fas',\n iconName: 'bus',\n icon: [512, 512, [], \"f207\", \"M488 128h-8V80c0-44.8-99.2-80-224-80S32 35.2 32 80v48h-8c-13.25 0-24 10.74-24 24v80c0 13.25 10.75 24 24 24h8v160c0 17.67 14.33 32 32 32v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h192v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h6.4c16 0 25.6-12.8 25.6-25.6V256h8c13.25 0 24-10.75 24-24v-80c0-13.26-10.75-24-24-24zM112 400c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm16-112c-17.67 0-32-14.33-32-32V128c0-17.67 14.33-32 32-32h256c17.67 0 32 14.33 32 32v128c0 17.67-14.33 32-32 32H128zm272 112c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faBusAlt = {\n prefix: 'fas',\n iconName: 'bus-alt',\n icon: [512, 512, [], \"f55e\", \"M488 128h-8V80c0-44.8-99.2-80-224-80S32 35.2 32 80v48h-8c-13.25 0-24 10.74-24 24v80c0 13.25 10.75 24 24 24h8v160c0 17.67 14.33 32 32 32v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h192v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h6.4c16 0 25.6-12.8 25.6-25.6V256h8c13.25 0 24-10.75 24-24v-80c0-13.26-10.75-24-24-24zM160 72c0-4.42 3.58-8 8-8h176c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H168c-4.42 0-8-3.58-8-8V72zm-48 328c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm128-112H128c-17.67 0-32-14.33-32-32v-96c0-17.67 14.33-32 32-32h112v160zm32 0V128h112c17.67 0 32 14.33 32 32v96c0 17.67-14.33 32-32 32H272zm128 112c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faBusinessTime = {\n prefix: 'fas',\n iconName: 'business-time',\n icon: [640, 512, [], \"f64a\", \"M496 224c-79.59 0-144 64.41-144 144s64.41 144 144 144 144-64.41 144-144-64.41-144-144-144zm64 150.29c0 5.34-4.37 9.71-9.71 9.71h-60.57c-5.34 0-9.71-4.37-9.71-9.71v-76.57c0-5.34 4.37-9.71 9.71-9.71h12.57c5.34 0 9.71 4.37 9.71 9.71V352h38.29c5.34 0 9.71 4.37 9.71 9.71v12.58zM496 192c5.4 0 10.72.33 16 .81V144c0-25.6-22.4-48-48-48h-80V48c0-25.6-22.4-48-48-48H176c-25.6 0-48 22.4-48 48v48H48c-25.6 0-48 22.4-48 48v80h395.12c28.6-20.09 63.35-32 100.88-32zM320 96H192V64h128v32zm6.82 224H208c-8.84 0-16-7.16-16-16v-48H0v144c0 25.6 22.4 48 48 48h291.43C327.1 423.96 320 396.82 320 368c0-16.66 2.48-32.72 6.82-48z\"]\n};\nvar faCalculator = {\n prefix: 'fas',\n iconName: 'calculator',\n icon: [448, 512, [], \"f1ec\", \"M400 0H48C22.4 0 0 22.4 0 48v416c0 25.6 22.4 48 48 48h352c25.6 0 48-22.4 48-48V48c0-25.6-22.4-48-48-48zM128 435.2c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-128c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm128 128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm128 128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8V268.8c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v166.4zm0-256c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8V76.8C64 70.4 70.4 64 76.8 64h294.4c6.4 0 12.8 6.4 12.8 12.8v102.4z\"]\n};\nvar faCalendar = {\n prefix: 'fas',\n iconName: 'calendar',\n icon: [448, 512, [], \"f133\", \"M12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm436-44v-36c0-26.5-21.5-48-48-48h-48V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H160V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H48C21.5 64 0 85.5 0 112v36c0 6.6 5.4 12 12 12h424c6.6 0 12-5.4 12-12z\"]\n};\nvar faCalendarAlt = {\n prefix: 'fas',\n iconName: 'calendar-alt',\n icon: [448, 512, [], \"f073\", \"M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm320-196c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zM192 268c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zM64 268c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z\"]\n};\nvar faCalendarCheck = {\n prefix: 'fas',\n iconName: 'calendar-check',\n icon: [448, 512, [], \"f274\", \"M436 160H12c-6.627 0-12-5.373-12-12v-36c0-26.51 21.49-48 48-48h48V12c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v52h128V12c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v52h48c26.51 0 48 21.49 48 48v36c0 6.627-5.373 12-12 12zM12 192h424c6.627 0 12 5.373 12 12v260c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V204c0-6.627 5.373-12 12-12zm333.296 95.947l-28.169-28.398c-4.667-4.705-12.265-4.736-16.97-.068L194.12 364.665l-45.98-46.352c-4.667-4.705-12.266-4.736-16.971-.068l-28.397 28.17c-4.705 4.667-4.736 12.265-.068 16.97l82.601 83.269c4.667 4.705 12.265 4.736 16.97.068l142.953-141.805c4.705-4.667 4.736-12.265.068-16.97z\"]\n};\nvar faCalendarDay = {\n prefix: 'fas',\n iconName: 'calendar-day',\n icon: [448, 512, [], \"f783\", \"M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm64-192c0-8.8 7.2-16 16-16h96c8.8 0 16 7.2 16 16v96c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16v-96zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z\"]\n};\nvar faCalendarMinus = {\n prefix: 'fas',\n iconName: 'calendar-minus',\n icon: [448, 512, [], \"f272\", \"M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm304 192c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12H132c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h184z\"]\n};\nvar faCalendarPlus = {\n prefix: 'fas',\n iconName: 'calendar-plus',\n icon: [448, 512, [], \"f271\", \"M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm316 140c0-6.6-5.4-12-12-12h-60v-60c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v60h-60c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h60v60c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-60h60c6.6 0 12-5.4 12-12v-40z\"]\n};\nvar faCalendarTimes = {\n prefix: 'fas',\n iconName: 'calendar-times',\n icon: [448, 512, [], \"f273\", \"M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm257.3 160l48.1-48.1c4.7-4.7 4.7-12.3 0-17l-28.3-28.3c-4.7-4.7-12.3-4.7-17 0L224 306.7l-48.1-48.1c-4.7-4.7-12.3-4.7-17 0l-28.3 28.3c-4.7 4.7-4.7 12.3 0 17l48.1 48.1-48.1 48.1c-4.7 4.7-4.7 12.3 0 17l28.3 28.3c4.7 4.7 12.3 4.7 17 0l48.1-48.1 48.1 48.1c4.7 4.7 12.3 4.7 17 0l28.3-28.3c4.7-4.7 4.7-12.3 0-17L269.3 352z\"]\n};\nvar faCalendarWeek = {\n prefix: 'fas',\n iconName: 'calendar-week',\n icon: [448, 512, [], \"f784\", \"M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm64-192c0-8.8 7.2-16 16-16h288c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16v-64zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z\"]\n};\nvar faCamera = {\n prefix: 'fas',\n iconName: 'camera',\n icon: [512, 512, [], \"f030\", \"M512 144v288c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48h88l12.3-32.9c7-18.7 24.9-31.1 44.9-31.1h125.5c20 0 37.9 12.4 44.9 31.1L376 96h88c26.5 0 48 21.5 48 48zM376 288c0-66.2-53.8-120-120-120s-120 53.8-120 120 53.8 120 120 120 120-53.8 120-120zm-32 0c0 48.5-39.5 88-88 88s-88-39.5-88-88 39.5-88 88-88 88 39.5 88 88z\"]\n};\nvar faCameraRetro = {\n prefix: 'fas',\n iconName: 'camera-retro',\n icon: [512, 512, [], \"f083\", \"M48 32C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H48zm0 32h106c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H38c-3.3 0-6-2.7-6-6V80c0-8.8 7.2-16 16-16zm426 96H38c-3.3 0-6-2.7-6-6v-36c0-3.3 2.7-6 6-6h138l30.2-45.3c1.1-1.7 3-2.7 5-2.7H464c8.8 0 16 7.2 16 16v74c0 3.3-2.7 6-6 6zM256 424c-66.2 0-120-53.8-120-120s53.8-120 120-120 120 53.8 120 120-53.8 120-120 120zm0-208c-48.5 0-88 39.5-88 88s39.5 88 88 88 88-39.5 88-88-39.5-88-88-88zm-48 104c-8.8 0-16-7.2-16-16 0-35.3 28.7-64 64-64 8.8 0 16 7.2 16 16s-7.2 16-16 16c-17.6 0-32 14.4-32 32 0 8.8-7.2 16-16 16z\"]\n};\nvar faCampground = {\n prefix: 'fas',\n iconName: 'campground',\n icon: [640, 512, [], \"f6bb\", \"M624 448h-24.68L359.54 117.75l53.41-73.55c5.19-7.15 3.61-17.16-3.54-22.35l-25.9-18.79c-7.15-5.19-17.15-3.61-22.35 3.55L320 63.3 278.83 6.6c-5.19-7.15-15.2-8.74-22.35-3.55l-25.88 18.8c-7.15 5.19-8.74 15.2-3.54 22.35l53.41 73.55L40.68 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM320 288l116.36 160H203.64L320 288z\"]\n};\nvar faCandyCane = {\n prefix: 'fas',\n iconName: 'candy-cane',\n icon: [512, 512, [], \"f786\", \"M497.5 92C469.6 33.1 411.8 0 352.4 0c-27.9 0-56.2 7.3-81.8 22.6L243.1 39c-15.2 9.1-20.1 28.7-11 43.9l32.8 54.9c6 10 16.6 15.6 27.5 15.6 5.6 0 11.2-1.5 16.4-4.5l27.5-16.4c5.1-3.1 10.8-4.5 16.4-4.5 10.9 0 21.5 5.6 27.5 15.6 9.1 15.1 4.1 34.8-11 43.9L15.6 397.6c-15.2 9.1-20.1 28.7-11 43.9l32.8 54.9c6 10 16.6 15.6 27.5 15.6 5.6 0 11.2-1.5 16.4-4.5L428.6 301c71.7-42.9 104.6-133.5 68.9-209zm-177.7 13l-2.5 1.5L296.8 45c9.7-4.7 19.8-8.1 30.3-10.2l20.6 61.8c-9.8.8-19.4 3.3-27.9 8.4zM145.9 431.8l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zm107.5-63.9l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zM364.3 302l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zm20.4-197.3l46-46c8.4 6.5 16 14.1 22.6 22.6L407.6 127c-5.7-9.3-13.7-16.9-22.9-22.3zm82.1 107.8l-59.5-19.8c3.2-5.3 5.8-10.9 7.4-17.1 1.1-4.5 1.7-9.1 1.8-13.6l60.4 20.1c-2.1 10.4-5.5 20.6-10.1 30.4z\"]\n};\nvar faCannabis = {\n prefix: 'fas',\n iconName: 'cannabis',\n icon: [512, 512, [], \"f55f\", \"M503.47 360.25c-1.56-.82-32.39-16.89-76.78-25.81 64.25-75.12 84.05-161.67 84.93-165.64 1.18-5.33-.44-10.9-4.3-14.77-3.03-3.04-7.12-4.7-11.32-4.7-1.14 0-2.29.12-3.44.38-3.88.85-86.54 19.59-160.58 79.76.01-1.46.01-2.93.01-4.4 0-118.79-59.98-213.72-62.53-217.7A15.973 15.973 0 0 0 256 0c-5.45 0-10.53 2.78-13.47 7.37-2.55 3.98-62.53 98.91-62.53 217.7 0 1.47.01 2.94.01 4.4-74.03-60.16-156.69-78.9-160.58-79.76-1.14-.25-2.29-.38-3.44-.38-4.2 0-8.29 1.66-11.32 4.7A15.986 15.986 0 0 0 .38 168.8c.88 3.97 20.68 90.52 84.93 165.64-44.39 8.92-75.21 24.99-76.78 25.81a16.003 16.003 0 0 0-.02 28.29c2.45 1.29 60.76 31.72 133.49 31.72 6.14 0 11.96-.1 17.5-.31-11.37 22.23-16.52 38.31-16.81 39.22-1.8 5.68-.29 11.89 3.91 16.11a16.019 16.019 0 0 0 16.1 3.99c1.83-.57 37.72-11.99 77.3-39.29V504c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-64.01c39.58 27.3 75.47 38.71 77.3 39.29a16.019 16.019 0 0 0 16.1-3.99c4.2-4.22 5.71-10.43 3.91-16.11-.29-.91-5.45-16.99-16.81-39.22 5.54.21 11.37.31 17.5.31 72.72 0 131.04-30.43 133.49-31.72 5.24-2.78 8.52-8.22 8.51-14.15-.01-5.94-3.29-11.39-8.53-14.15z\"]\n};\nvar faCapsules = {\n prefix: 'fas',\n iconName: 'capsules',\n icon: [576, 512, [], \"f46b\", \"M555.3 300.1L424.2 112.8C401.9 81 366.4 64 330.4 64c-22.6 0-45.5 6.7-65.5 20.7-19.7 13.8-33.7 32.8-41.5 53.8C220.5 79.2 172 32 112 32 50.1 32 0 82.1 0 144v224c0 61.9 50.1 112 112 112s112-50.1 112-112V218.9c3.3 8.6 7.3 17.1 12.8 25L368 431.2c22.2 31.8 57.7 48.8 93.8 48.8 22.7 0 45.5-6.7 65.5-20.7 51.7-36.2 64.2-107.5 28-159.2zM160 256H64V144c0-26.5 21.5-48 48-48s48 21.5 48 48v112zm194.8 44.9l-65.6-93.7c-7.7-11-10.7-24.4-8.3-37.6 2.3-13.2 9.7-24.8 20.7-32.5 8.5-6 18.5-9.1 28.8-9.1 16.5 0 31.9 8 41.3 21.5l65.6 93.7-82.5 57.7z\"]\n};\nvar faCar = {\n prefix: 'fas',\n iconName: 'car',\n icon: [512, 512, [], \"f1b9\", \"M499.99 176h-59.87l-16.64-41.6C406.38 91.63 365.57 64 319.5 64h-127c-46.06 0-86.88 27.63-103.99 70.4L71.87 176H12.01C4.2 176-1.53 183.34.37 190.91l6 24C7.7 220.25 12.5 224 18.01 224h20.07C24.65 235.73 16 252.78 16 272v48c0 16.12 6.16 30.67 16 41.93V416c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-54.07c9.84-11.25 16-25.8 16-41.93v-48c0-19.22-8.65-36.27-22.07-48H494c5.51 0 10.31-3.75 11.64-9.09l6-24c1.89-7.57-3.84-14.91-11.65-14.91zm-352.06-17.83c7.29-18.22 24.94-30.17 44.57-30.17h127c19.63 0 37.28 11.95 44.57 30.17L384 208H128l19.93-49.83zM96 319.8c-19.2 0-32-12.76-32-31.9S76.8 256 96 256s48 28.71 48 47.85-28.8 15.95-48 15.95zm320 0c-19.2 0-48 3.19-48-15.95S396.8 256 416 256s32 12.76 32 31.9-12.8 31.9-32 31.9z\"]\n};\nvar faCarAlt = {\n prefix: 'fas',\n iconName: 'car-alt',\n icon: [480, 512, [], \"f5de\", \"M438.66 212.33l-11.24-28.1-19.93-49.83C390.38 91.63 349.57 64 303.5 64h-127c-46.06 0-86.88 27.63-103.99 70.4l-19.93 49.83-11.24 28.1C17.22 221.5 0 244.66 0 272v48c0 16.12 6.16 30.67 16 41.93V416c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-54.07c9.84-11.25 16-25.8 16-41.93v-48c0-27.34-17.22-50.5-41.34-59.67zm-306.73-54.16c7.29-18.22 24.94-30.17 44.57-30.17h127c19.63 0 37.28 11.95 44.57 30.17L368 208H112l19.93-49.83zM80 319.8c-19.2 0-32-12.76-32-31.9S60.8 256 80 256s48 28.71 48 47.85-28.8 15.95-48 15.95zm320 0c-19.2 0-48 3.19-48-15.95S380.8 256 400 256s32 12.76 32 31.9-12.8 31.9-32 31.9z\"]\n};\nvar faCarBattery = {\n prefix: 'fas',\n iconName: 'car-battery',\n icon: [512, 512, [], \"f5df\", \"M480 128h-32V80c0-8.84-7.16-16-16-16h-96c-8.84 0-16 7.16-16 16v48H192V80c0-8.84-7.16-16-16-16H80c-8.84 0-16 7.16-16 16v48H32c-17.67 0-32 14.33-32 32v256c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32V160c0-17.67-14.33-32-32-32zM192 264c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16zm256 0c0 4.42-3.58 8-8 8h-40v40c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-40h-40c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h40v-40c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v40h40c4.42 0 8 3.58 8 8v16z\"]\n};\nvar faCarCrash = {\n prefix: 'fas',\n iconName: 'car-crash',\n icon: [640, 512, [], \"f5e1\", \"M143.25 220.81l-12.42 46.37c-3.01 11.25-3.63 22.89-2.41 34.39l-35.2 28.98c-6.57 5.41-16.31-.43-14.62-8.77l15.44-76.68c1.06-5.26-2.66-10.28-8-10.79l-77.86-7.55c-8.47-.82-11.23-11.83-4.14-16.54l65.15-43.3c4.46-2.97 5.38-9.15 1.98-13.29L21.46 93.22c-5.41-6.57.43-16.3 8.78-14.62l76.68 15.44c5.26 1.06 10.28-2.66 10.8-8l7.55-77.86c.82-8.48 11.83-11.23 16.55-4.14l43.3 65.14c2.97 4.46 9.15 5.38 13.29 1.98l60.4-49.71c6.57-5.41 16.3.43 14.62 8.77L262.1 86.38c-2.71 3.05-5.43 6.09-7.91 9.4l-32.15 42.97-10.71 14.32c-32.73 8.76-59.18 34.53-68.08 67.74zm494.57 132.51l-12.42 46.36c-3.13 11.68-9.38 21.61-17.55 29.36a66.876 66.876 0 0 1-8.76 7l-13.99 52.23c-1.14 4.27-3.1 8.1-5.65 11.38-7.67 9.84-20.74 14.68-33.54 11.25L515 502.62c-17.07-4.57-27.2-22.12-22.63-39.19l8.28-30.91-247.28-66.26-8.28 30.91c-4.57 17.07-22.12 27.2-39.19 22.63l-30.91-8.28c-12.8-3.43-21.7-14.16-23.42-26.51-.57-4.12-.35-8.42.79-12.68l13.99-52.23a66.62 66.62 0 0 1-4.09-10.45c-3.2-10.79-3.65-22.52-.52-34.2l12.42-46.37c5.31-19.8 19.36-34.83 36.89-42.21a64.336 64.336 0 0 1 18.49-4.72l18.13-24.23 32.15-42.97c3.45-4.61 7.19-8.9 11.2-12.84 8-7.89 17.03-14.44 26.74-19.51 4.86-2.54 9.89-4.71 15.05-6.49 10.33-3.58 21.19-5.63 32.24-6.04 11.05-.41 22.31.82 33.43 3.8l122.68 32.87c11.12 2.98 21.48 7.54 30.85 13.43a111.11 111.11 0 0 1 34.69 34.5c8.82 13.88 14.64 29.84 16.68 46.99l6.36 53.29 3.59 30.05a64.49 64.49 0 0 1 22.74 29.93c4.39 11.88 5.29 25.19 1.75 38.39zM255.58 234.34c-18.55-4.97-34.21 4.04-39.17 22.53-4.96 18.49 4.11 34.12 22.65 39.09 18.55 4.97 45.54 15.51 50.49-2.98 4.96-18.49-15.43-53.67-33.97-58.64zm290.61 28.17l-6.36-53.29c-.58-4.87-1.89-9.53-3.82-13.86-5.8-12.99-17.2-23.01-31.42-26.82l-122.68-32.87a48.008 48.008 0 0 0-50.86 17.61l-32.15 42.97 172 46.08 75.29 20.18zm18.49 54.65c-18.55-4.97-53.8 15.31-58.75 33.79-4.95 18.49 23.69 22.86 42.24 27.83 18.55 4.97 34.21-4.04 39.17-22.53 4.95-18.48-4.11-34.12-22.66-39.09z\"]\n};\nvar faCarSide = {\n prefix: 'fas',\n iconName: 'car-side',\n icon: [640, 512, [], \"f5e4\", \"M544 192h-16L419.22 56.02A64.025 64.025 0 0 0 369.24 32H155.33c-26.17 0-49.7 15.93-59.42 40.23L48 194.26C20.44 201.4 0 226.21 0 256v112c0 8.84 7.16 16 16 16h48c0 53.02 42.98 96 96 96s96-42.98 96-96h128c0 53.02 42.98 96 96 96s96-42.98 96-96h48c8.84 0 16-7.16 16-16v-80c0-53.02-42.98-96-96-96zM160 432c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48zm72-240H116.93l38.4-96H232v96zm48 0V96h89.24l76.8 96H280zm200 240c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48z\"]\n};\nvar faCaravan = {\n prefix: 'fas',\n iconName: 'caravan',\n icon: [640, 512, [], \"f8ff\", \"M416,208a16,16,0,1,0,16,16A16,16,0,0,0,416,208ZM624,320H576V160A160,160,0,0,0,416,0H64A64,64,0,0,0,0,64V320a64,64,0,0,0,64,64H96a96,96,0,0,0,192,0H624a16,16,0,0,0,16-16V336A16,16,0,0,0,624,320ZM192,432a48,48,0,1,1,48-48A48.05,48.05,0,0,1,192,432Zm64-240a32,32,0,0,1-32,32H96a32,32,0,0,1-32-32V128A32,32,0,0,1,96,96H224a32,32,0,0,1,32,32ZM448,320H320V128a32,32,0,0,1,32-32h64a32,32,0,0,1,32,32Z\"]\n};\nvar faCaretDown = {\n prefix: 'fas',\n iconName: 'caret-down',\n icon: [320, 512, [], \"f0d7\", \"M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z\"]\n};\nvar faCaretLeft = {\n prefix: 'fas',\n iconName: 'caret-left',\n icon: [192, 512, [], \"f0d9\", \"M192 127.338v257.324c0 17.818-21.543 26.741-34.142 14.142L29.196 270.142c-7.81-7.81-7.81-20.474 0-28.284l128.662-128.662c12.599-12.6 34.142-3.676 34.142 14.142z\"]\n};\nvar faCaretRight = {\n prefix: 'fas',\n iconName: 'caret-right',\n icon: [192, 512, [], \"f0da\", \"M0 384.662V127.338c0-17.818 21.543-26.741 34.142-14.142l128.662 128.662c7.81 7.81 7.81 20.474 0 28.284L34.142 398.804C21.543 411.404 0 402.48 0 384.662z\"]\n};\nvar faCaretSquareDown = {\n prefix: 'fas',\n iconName: 'caret-square-down',\n icon: [448, 512, [], \"f150\", \"M448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM92.5 220.5l123 123c4.7 4.7 12.3 4.7 17 0l123-123c7.6-7.6 2.2-20.5-8.5-20.5H101c-10.7 0-16.1 12.9-8.5 20.5z\"]\n};\nvar faCaretSquareLeft = {\n prefix: 'fas',\n iconName: 'caret-square-left',\n icon: [448, 512, [], \"f191\", \"M400 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zM259.515 124.485l-123.03 123.03c-4.686 4.686-4.686 12.284 0 16.971l123.029 123.029c7.56 7.56 20.485 2.206 20.485-8.485V132.971c.001-10.691-12.925-16.045-20.484-8.486z\"]\n};\nvar faCaretSquareRight = {\n prefix: 'fas',\n iconName: 'caret-square-right',\n icon: [448, 512, [], \"f152\", \"M48 32h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48zm140.485 355.515l123.029-123.029c4.686-4.686 4.686-12.284 0-16.971l-123.029-123.03c-7.56-7.56-20.485-2.206-20.485 8.485v246.059c0 10.691 12.926 16.045 20.485 8.486z\"]\n};\nvar faCaretSquareUp = {\n prefix: 'fas',\n iconName: 'caret-square-up',\n icon: [448, 512, [], \"f151\", \"M0 432V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48zm355.515-140.485l-123.03-123.03c-4.686-4.686-12.284-4.686-16.971 0L92.485 291.515c-7.56 7.56-2.206 20.485 8.485 20.485h246.059c10.691 0 16.045-12.926 8.486-20.485z\"]\n};\nvar faCaretUp = {\n prefix: 'fas',\n iconName: 'caret-up',\n icon: [320, 512, [], \"f0d8\", \"M288.662 352H31.338c-17.818 0-26.741-21.543-14.142-34.142l128.662-128.662c7.81-7.81 20.474-7.81 28.284 0l128.662 128.662c12.6 12.599 3.676 34.142-14.142 34.142z\"]\n};\nvar faCarrot = {\n prefix: 'fas',\n iconName: 'carrot',\n icon: [512, 512, [], \"f787\", \"M298.2 156.6c-52.7-25.7-114.5-10.5-150.2 32.8l55.2 55.2c6.3 6.3 6.3 16.4 0 22.6-3.1 3.1-7.2 4.7-11.3 4.7s-8.2-1.6-11.3-4.7L130.4 217 2.3 479.7c-2.9 6-3.1 13.3 0 19.7 5.4 11.1 18.9 15.7 30 10.3l133.6-65.2-49.2-49.2c-6.3-6.2-6.3-16.4 0-22.6 6.3-6.2 16.4-6.2 22.6 0l57 57 102-49.8c24-11.7 44.5-31.3 57.1-57.1 30.1-61.7 4.5-136.1-57.2-166.2zm92.1-34.9C409.8 81 399.7 32.9 360 0c-50.3 41.7-52.5 107.5-7.9 151.9l8 8c44.4 44.6 110.3 42.4 151.9-7.9-32.9-39.7-81-49.8-121.7-30.3z\"]\n};\nvar faCartArrowDown = {\n prefix: 'fas',\n iconName: 'cart-arrow-down',\n icon: [576, 512, [], \"f218\", \"M504.717 320H211.572l6.545 32h268.418c15.401 0 26.816 14.301 23.403 29.319l-5.517 24.276C523.112 414.668 536 433.828 536 456c0 31.202-25.519 56.444-56.824 55.994-29.823-.429-54.35-24.631-55.155-54.447-.44-16.287 6.085-31.049 16.803-41.548H231.176C241.553 426.165 248 440.326 248 456c0 31.813-26.528 57.431-58.67 55.938-28.54-1.325-51.751-24.385-53.251-52.917-1.158-22.034 10.436-41.455 28.051-51.586L93.883 64H24C10.745 64 0 53.255 0 40V24C0 10.745 10.745 0 24 0h102.529c11.401 0 21.228 8.021 23.513 19.19L159.208 64H551.99c15.401 0 26.816 14.301 23.403 29.319l-47.273 208C525.637 312.246 515.923 320 504.717 320zM403.029 192H360v-60c0-6.627-5.373-12-12-12h-24c-6.627 0-12 5.373-12 12v60h-43.029c-10.691 0-16.045 12.926-8.485 20.485l67.029 67.029c4.686 4.686 12.284 4.686 16.971 0l67.029-67.029c7.559-7.559 2.205-20.485-8.486-20.485z\"]\n};\nvar faCartPlus = {\n prefix: 'fas',\n iconName: 'cart-plus',\n icon: [576, 512, [], \"f217\", \"M504.717 320H211.572l6.545 32h268.418c15.401 0 26.816 14.301 23.403 29.319l-5.517 24.276C523.112 414.668 536 433.828 536 456c0 31.202-25.519 56.444-56.824 55.994-29.823-.429-54.35-24.631-55.155-54.447-.44-16.287 6.085-31.049 16.803-41.548H231.176C241.553 426.165 248 440.326 248 456c0 31.813-26.528 57.431-58.67 55.938-28.54-1.325-51.751-24.385-53.251-52.917-1.158-22.034 10.436-41.455 28.051-51.586L93.883 64H24C10.745 64 0 53.255 0 40V24C0 10.745 10.745 0 24 0h102.529c11.401 0 21.228 8.021 23.513 19.19L159.208 64H551.99c15.401 0 26.816 14.301 23.403 29.319l-47.273 208C525.637 312.246 515.923 320 504.717 320zM408 168h-48v-40c0-8.837-7.163-16-16-16h-16c-8.837 0-16 7.163-16 16v40h-48c-8.837 0-16 7.163-16 16v16c0 8.837 7.163 16 16 16h48v40c0 8.837 7.163 16 16 16h16c8.837 0 16-7.163 16-16v-40h48c8.837 0 16-7.163 16-16v-16c0-8.837-7.163-16-16-16z\"]\n};\nvar faCashRegister = {\n prefix: 'fas',\n iconName: 'cash-register',\n icon: [512, 512, [], \"f788\", \"M511.1 378.8l-26.7-160c-2.6-15.4-15.9-26.7-31.6-26.7H208v-64h96c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H48c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h96v64H59.1c-15.6 0-29 11.3-31.6 26.7L.8 378.7c-.6 3.5-.9 7-.9 10.5V480c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32v-90.7c.1-3.5-.2-7-.8-10.5zM280 248c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16zm-32 64h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16zm-32-80c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16zM80 80V48h192v32H80zm40 200h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16zm16 64v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16zm216 112c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h176c4.4 0 8 3.6 8 8v16zm24-112c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16zm48-80c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16z\"]\n};\nvar faCat = {\n prefix: 'fas',\n iconName: 'cat',\n icon: [512, 512, [], \"f6be\", \"M290.59 192c-20.18 0-106.82 1.98-162.59 85.95V192c0-52.94-43.06-96-96-96-17.67 0-32 14.33-32 32s14.33 32 32 32c17.64 0 32 14.36 32 32v256c0 35.3 28.7 64 64 64h176c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-32l128-96v144c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V289.86c-10.29 2.67-20.89 4.54-32 4.54-61.81 0-113.52-44.05-125.41-102.4zM448 96h-64l-64-64v134.4c0 53.02 42.98 96 96 96s96-42.98 96-96V32l-64 64zm-72 80c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm80 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z\"]\n};\nvar faCertificate = {\n prefix: 'fas',\n iconName: 'certificate',\n icon: [512, 512, [], \"f0a3\", \"M458.622 255.92l45.985-45.005c13.708-12.977 7.316-36.039-10.664-40.339l-62.65-15.99 17.661-62.015c4.991-17.838-11.829-34.663-29.661-29.671l-61.994 17.667-15.984-62.671C337.085.197 313.765-6.276 300.99 7.228L256 53.57 211.011 7.229c-12.63-13.351-36.047-7.234-40.325 10.668l-15.984 62.671-61.995-17.667C74.87 57.907 58.056 74.738 63.046 92.572l17.661 62.015-62.65 15.99C.069 174.878-6.31 197.944 7.392 210.915l45.985 45.005-45.985 45.004c-13.708 12.977-7.316 36.039 10.664 40.339l62.65 15.99-17.661 62.015c-4.991 17.838 11.829 34.663 29.661 29.671l61.994-17.667 15.984 62.671c4.439 18.575 27.696 24.018 40.325 10.668L256 458.61l44.989 46.001c12.5 13.488 35.987 7.486 40.325-10.668l15.984-62.671 61.994 17.667c17.836 4.994 34.651-11.837 29.661-29.671l-17.661-62.015 62.65-15.99c17.987-4.302 24.366-27.367 10.664-40.339l-45.984-45.004z\"]\n};\nvar faChair = {\n prefix: 'fas',\n iconName: 'chair',\n icon: [448, 512, [], \"f6c0\", \"M112 128c0-29.5 16.2-55 40-68.9V256h48V48h48v208h48V59.1c23.8 13.9 40 39.4 40 68.9v128h48V128C384 57.3 326.7 0 256 0h-64C121.3 0 64 57.3 64 128v128h48zm334.3 213.9l-10.7-32c-4.4-13.1-16.6-21.9-30.4-21.9H42.7c-13.8 0-26 8.8-30.4 21.9l-10.7 32C-5.2 362.6 10.2 384 32 384v112c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V384h256v112c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V384c21.8 0 37.2-21.4 30.3-42.1z\"]\n};\nvar faChalkboard = {\n prefix: 'fas',\n iconName: 'chalkboard',\n icon: [640, 512, [], \"f51b\", \"M96 64h448v352h64V40c0-22.06-17.94-40-40-40H72C49.94 0 32 17.94 32 40v376h64V64zm528 384H480v-64H288v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faChalkboardTeacher = {\n prefix: 'fas',\n iconName: 'chalkboard-teacher',\n icon: [640, 512, [], \"f51c\", \"M208 352c-2.39 0-4.78.35-7.06 1.09C187.98 357.3 174.35 360 160 360c-14.35 0-27.98-2.7-40.95-6.91-2.28-.74-4.66-1.09-7.05-1.09C49.94 352-.33 402.48 0 464.62.14 490.88 21.73 512 48 512h224c26.27 0 47.86-21.12 48-47.38.33-62.14-49.94-112.62-112-112.62zm-48-32c53.02 0 96-42.98 96-96s-42.98-96-96-96-96 42.98-96 96 42.98 96 96 96zM592 0H208c-26.47 0-48 22.25-48 49.59V96c23.42 0 45.1 6.78 64 17.8V64h352v288h-64v-64H384v64h-76.24c19.1 16.69 33.12 38.73 39.69 64H592c26.47 0 48-22.25 48-49.59V49.59C640 22.25 618.47 0 592 0z\"]\n};\nvar faChargingStation = {\n prefix: 'fas',\n iconName: 'charging-station',\n icon: [576, 512, [], \"f5e7\", \"M336 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h320c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm208-320V80c0-8.84-7.16-16-16-16s-16 7.16-16 16v48h-32V80c0-8.84-7.16-16-16-16s-16 7.16-16 16v48h-16c-8.84 0-16 7.16-16 16v32c0 35.76 23.62 65.69 56 75.93v118.49c0 13.95-9.5 26.92-23.26 29.19C431.22 402.5 416 388.99 416 372v-28c0-48.6-39.4-88-88-88h-8V64c0-35.35-28.65-64-64-64H96C60.65 0 32 28.65 32 64v352h288V304h8c22.09 0 40 17.91 40 40v24.61c0 39.67 28.92 75.16 68.41 79.01C481.71 452.05 520 416.41 520 372V251.93c32.38-10.24 56-40.17 56-75.93v-32c0-8.84-7.16-16-16-16h-16zm-283.91 47.76l-93.7 139c-2.2 3.33-6.21 5.24-10.39 5.24-7.67 0-13.47-6.28-11.67-12.92L167.35 224H108c-7.25 0-12.85-5.59-11.89-11.89l16-107C112.9 99.9 117.98 96 124 96h68c7.88 0 13.62 6.54 11.6 13.21L192 160h57.7c9.24 0 15.01 8.78 10.39 15.76z\"]\n};\nvar faChartArea = {\n prefix: 'fas',\n iconName: 'chart-area',\n icon: [512, 512, [], \"f1fe\", \"M500 384c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v308h436zM372.7 159.5L288 216l-85.3-113.7c-5.1-6.8-15.5-6.3-19.9 1L96 248v104h384l-89.9-187.8c-3.2-6.5-11.4-8.7-17.4-4.7z\"]\n};\nvar faChartBar = {\n prefix: 'fas',\n iconName: 'chart-bar',\n icon: [512, 512, [], \"f080\", \"M332.8 320h38.4c6.4 0 12.8-6.4 12.8-12.8V172.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h38.4c6.4 0 12.8-6.4 12.8-12.8V76.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-288 0h38.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h38.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zM496 384H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faChartLine = {\n prefix: 'fas',\n iconName: 'chart-line',\n icon: [512, 512, [], \"f201\", \"M496 384H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM464 96H345.94c-21.38 0-32.09 25.85-16.97 40.97l32.4 32.4L288 242.75l-73.37-73.37c-12.5-12.5-32.76-12.5-45.25 0l-68.69 68.69c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0L192 237.25l73.37 73.37c12.5 12.5 32.76 12.5 45.25 0l96-96 32.4 32.4c15.12 15.12 40.97 4.41 40.97-16.97V112c.01-8.84-7.15-16-15.99-16z\"]\n};\nvar faChartPie = {\n prefix: 'fas',\n iconName: 'chart-pie',\n icon: [544, 512, [], \"f200\", \"M527.79 288H290.5l158.03 158.03c6.04 6.04 15.98 6.53 22.19.68 38.7-36.46 65.32-85.61 73.13-140.86 1.34-9.46-6.51-17.85-16.06-17.85zm-15.83-64.8C503.72 103.74 408.26 8.28 288.8.04 279.68-.59 272 7.1 272 16.24V240h223.77c9.14 0 16.82-7.68 16.19-16.8zM224 288V50.71c0-9.55-8.39-17.4-17.84-16.06C86.99 51.49-4.1 155.6.14 280.37 4.5 408.51 114.83 513.59 243.03 511.98c50.4-.63 96.97-16.87 135.26-44.03 7.9-5.6 8.42-17.23 1.57-24.08L224 288z\"]\n};\nvar faCheck = {\n prefix: 'fas',\n iconName: 'check',\n icon: [512, 512, [], \"f00c\", \"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"]\n};\nvar faCheckCircle = {\n prefix: 'fas',\n iconName: 'check-circle',\n icon: [512, 512, [], \"f058\", \"M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM227.314 387.314l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.249-16.379-6.249-22.628 0L216 308.118l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.249 16.379 6.249 22.628.001z\"]\n};\nvar faCheckDouble = {\n prefix: 'fas',\n iconName: 'check-double',\n icon: [512, 512, [], \"f560\", \"M505 174.8l-39.6-39.6c-9.4-9.4-24.6-9.4-33.9 0L192 374.7 80.6 263.2c-9.4-9.4-24.6-9.4-33.9 0L7 302.9c-9.4 9.4-9.4 24.6 0 34L175 505c9.4 9.4 24.6 9.4 33.9 0l296-296.2c9.4-9.5 9.4-24.7.1-34zm-324.3 106c6.2 6.3 16.4 6.3 22.6 0l208-208.2c6.2-6.3 6.2-16.4 0-22.6L366.1 4.7c-6.2-6.3-16.4-6.3-22.6 0L192 156.2l-55.4-55.5c-6.2-6.3-16.4-6.3-22.6 0L68.7 146c-6.2 6.3-6.2 16.4 0 22.6l112 112.2z\"]\n};\nvar faCheckSquare = {\n prefix: 'fas',\n iconName: 'check-square',\n icon: [448, 512, [], \"f14a\", \"M400 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zm-204.686-98.059l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.248-16.379-6.249-22.628 0L184 302.745l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.25 16.379 6.25 22.628.001z\"]\n};\nvar faCheese = {\n prefix: 'fas',\n iconName: 'cheese',\n icon: [512, 512, [], \"f7ef\", \"M0 288v160a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32V288zM299.83 32a32 32 0 0 0-21.13 7L0 256h512c0-119.89-94-217.8-212.17-224z\"]\n};\nvar faChess = {\n prefix: 'fas',\n iconName: 'chess',\n icon: [512, 512, [], \"f439\", \"M74 208H64a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h15.94A535.78 535.78 0 0 1 64 384h128a535.78 535.78 0 0 1-15.94-128H192a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16h-10l33.89-90.38a16 16 0 0 0-15-21.62H144V64h24a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8h-24V8a8 8 0 0 0-8-8h-16a8 8 0 0 0-8 8v24H88a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h24v32H55.09a16 16 0 0 0-15 21.62zm173.16 251.58L224 448v-16a16 16 0 0 0-16-16H48a16 16 0 0 0-16 16v16L8.85 459.58A16 16 0 0 0 0 473.89V496a16 16 0 0 0 16 16h224a16 16 0 0 0 16-16v-22.11a16 16 0 0 0-8.84-14.31zm92.77-157.78l-3.29 82.2h126.72l-3.29-82.21 24.6-20.79A32 32 0 0 0 496 256.54V198a6 6 0 0 0-6-6h-26.38a6 6 0 0 0-6 6v26h-24.71v-26a6 6 0 0 0-6-6H373.1a6 6 0 0 0-6 6v26h-24.71v-26a6 6 0 0 0-6-6H310a6 6 0 0 0-6 6v58.6a32 32 0 0 0 11.36 24.4zM384 304a16 16 0 0 1 32 0v32h-32zm119.16 155.58L480 448v-16a16 16 0 0 0-16-16H336a16 16 0 0 0-16 16v16l-23.15 11.58a16 16 0 0 0-8.85 14.31V496a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-22.11a16 16 0 0 0-8.84-14.31z\"]\n};\nvar faChessBishop = {\n prefix: 'fas',\n iconName: 'chess-bishop',\n icon: [320, 512, [], \"f43a\", \"M8 287.88c0 51.64 22.14 73.83 56 84.6V416h192v-43.52c33.86-10.77 56-33 56-84.6 0-30.61-10.73-67.1-26.69-102.56L185 285.65a8 8 0 0 1-11.31 0l-11.31-11.31a8 8 0 0 1 0-11.31L270.27 155.1c-20.8-37.91-46.47-72.1-70.87-92.59C213.4 59.09 224 47.05 224 32a32 32 0 0 0-32-32h-64a32 32 0 0 0-32 32c0 15 10.6 27.09 24.6 30.51C67.81 106.8 8 214.5 8 287.88zM304 448H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faChessBoard = {\n prefix: 'fas',\n iconName: 'chess-board',\n icon: [512, 512, [], \"f43c\", \"M255.9.2h-64v64h64zM0 64.17v64h64v-64zM128 .2H64v64h64zm64 255.9v64h64v-64zM0 192.12v64h64v-64zM383.85.2h-64v64h64zm128 0h-64v64h64zM128 256.1H64v64h64zM511.8 448v-64h-64v64zm0-128v-64h-64v64zM383.85 512h64v-64h-64zm128-319.88v-64h-64v64zM128 512h64v-64h-64zM0 512h64v-64H0zm255.9 0h64v-64h-64zM0 320.07v64h64v-64zm319.88-191.92v-64h-64v64zm-64 128h64v-64h-64zm-64 128v64h64v-64zm128-64h64v-64h-64zm0-127.95h64v-64h-64zm0 191.93v64h64v-64zM64 384.05v64h64v-64zm128-255.9v-64h-64v64zm191.92 255.9h64v-64h-64zm-128-191.93v-64h-64v64zm128-127.95v64h64v-64zm-128 255.9v64h64v-64zm-64-127.95H128v64h64zm191.92 64h64v-64h-64zM128 128.15H64v64h64zm0 191.92v64h64v-64z\"]\n};\nvar faChessKing = {\n prefix: 'fas',\n iconName: 'chess-king',\n icon: [448, 512, [], \"f43f\", \"M400 448H48a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm16-288H256v-48h40a8 8 0 0 0 8-8V56a8 8 0 0 0-8-8h-40V8a8 8 0 0 0-8-8h-48a8 8 0 0 0-8 8v40h-40a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8h40v48H32a32 32 0 0 0-30.52 41.54L74.56 416h298.88l73.08-214.46A32 32 0 0 0 416 160z\"]\n};\nvar faChessKnight = {\n prefix: 'fas',\n iconName: 'chess-knight',\n icon: [384, 512, [], \"f441\", \"M19 272.47l40.63 18.06a32 32 0 0 0 24.88.47l12.78-5.12a32 32 0 0 0 18.76-20.5l9.22-30.65a24 24 0 0 1 12.55-15.65L159.94 208v50.33a48 48 0 0 1-26.53 42.94l-57.22 28.65A80 80 0 0 0 32 401.48V416h319.86V224c0-106-85.92-192-191.92-192H12A12 12 0 0 0 0 44a16.9 16.9 0 0 0 1.79 7.58L16 80l-9 9a24 24 0 0 0-7 17v137.21a32 32 0 0 0 19 29.26zM52 128a20 20 0 1 1-20 20 20 20 0 0 1 20-20zm316 320H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faChessPawn = {\n prefix: 'fas',\n iconName: 'chess-pawn',\n icon: [320, 512, [], \"f443\", \"M105.1 224H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h16v5.49c0 44-4.14 86.6-24 122.51h176c-19.89-35.91-24-78.51-24-122.51V288h16a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-25.1c29.39-18.38 49.1-50.78 49.1-88a104 104 0 0 0-208 0c0 37.22 19.71 69.62 49.1 88zM304 448H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faChessQueen = {\n prefix: 'fas',\n iconName: 'chess-queen',\n icon: [512, 512, [], \"f445\", \"M256 112a56 56 0 1 0-56-56 56 56 0 0 0 56 56zm176 336H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm72.87-263.84l-28.51-15.92c-7.44-5-16.91-2.46-22.29 4.68a47.59 47.59 0 0 1-47.23 18.23C383.7 186.86 368 164.93 368 141.4a13.4 13.4 0 0 0-13.4-13.4h-38.77c-6 0-11.61 4-12.86 9.91a48 48 0 0 1-93.94 0c-1.25-5.92-6.82-9.91-12.86-9.91H157.4a13.4 13.4 0 0 0-13.4 13.4c0 25.69-19 48.75-44.67 50.49a47.5 47.5 0 0 1-41.54-19.15c-5.28-7.09-14.73-9.45-22.09-4.54l-28.57 16a16 16 0 0 0-5.44 20.47L104.24 416h303.52l102.55-211.37a16 16 0 0 0-5.44-20.47z\"]\n};\nvar faChessRook = {\n prefix: 'fas',\n iconName: 'chess-rook',\n icon: [384, 512, [], \"f447\", \"M368 32h-56a16 16 0 0 0-16 16v48h-48V48a16 16 0 0 0-16-16h-80a16 16 0 0 0-16 16v48H88.1V48a16 16 0 0 0-16-16H16A16 16 0 0 0 0 48v176l64 32c0 48.33-1.54 95-13.21 160h282.42C321.54 351 320 303.72 320 256l64-32V48a16 16 0 0 0-16-16zM224 320h-64v-64a32 32 0 0 1 64 0zm144 128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faChevronCircleDown = {\n prefix: 'fas',\n iconName: 'chevron-circle-down',\n icon: [512, 512, [], \"f13a\", \"M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zM273 369.9l135.5-135.5c9.4-9.4 9.4-24.6 0-33.9l-17-17c-9.4-9.4-24.6-9.4-33.9 0L256 285.1 154.4 183.5c-9.4-9.4-24.6-9.4-33.9 0l-17 17c-9.4 9.4-9.4 24.6 0 33.9L239 369.9c9.4 9.4 24.6 9.4 34 0z\"]\n};\nvar faChevronCircleLeft = {\n prefix: 'fas',\n iconName: 'chevron-circle-left',\n icon: [512, 512, [], \"f137\", \"M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zM142.1 273l135.5 135.5c9.4 9.4 24.6 9.4 33.9 0l17-17c9.4-9.4 9.4-24.6 0-33.9L226.9 256l101.6-101.6c9.4-9.4 9.4-24.6 0-33.9l-17-17c-9.4-9.4-24.6-9.4-33.9 0L142.1 239c-9.4 9.4-9.4 24.6 0 34z\"]\n};\nvar faChevronCircleRight = {\n prefix: 'fas',\n iconName: 'chevron-circle-right',\n icon: [512, 512, [], \"f138\", \"M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm113.9 231L234.4 103.5c-9.4-9.4-24.6-9.4-33.9 0l-17 17c-9.4 9.4-9.4 24.6 0 33.9L285.1 256 183.5 357.6c-9.4 9.4-9.4 24.6 0 33.9l17 17c9.4 9.4 24.6 9.4 33.9 0L369.9 273c9.4-9.4 9.4-24.6 0-34z\"]\n};\nvar faChevronCircleUp = {\n prefix: 'fas',\n iconName: 'chevron-circle-up',\n icon: [512, 512, [], \"f139\", \"M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm231-113.9L103.5 277.6c-9.4 9.4-9.4 24.6 0 33.9l17 17c9.4 9.4 24.6 9.4 33.9 0L256 226.9l101.6 101.6c9.4 9.4 24.6 9.4 33.9 0l17-17c9.4-9.4 9.4-24.6 0-33.9L273 142.1c-9.4-9.4-24.6-9.4-34 0z\"]\n};\nvar faChevronDown = {\n prefix: 'fas',\n iconName: 'chevron-down',\n icon: [448, 512, [], \"f078\", \"M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z\"]\n};\nvar faChevronLeft = {\n prefix: 'fas',\n iconName: 'chevron-left',\n icon: [320, 512, [], \"f053\", \"M34.52 239.03L228.87 44.69c9.37-9.37 24.57-9.37 33.94 0l22.67 22.67c9.36 9.36 9.37 24.52.04 33.9L131.49 256l154.02 154.75c9.34 9.38 9.32 24.54-.04 33.9l-22.67 22.67c-9.37 9.37-24.57 9.37-33.94 0L34.52 272.97c-9.37-9.37-9.37-24.57 0-33.94z\"]\n};\nvar faChevronRight = {\n prefix: 'fas',\n iconName: 'chevron-right',\n icon: [320, 512, [], \"f054\", \"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"]\n};\nvar faChevronUp = {\n prefix: 'fas',\n iconName: 'chevron-up',\n icon: [448, 512, [], \"f077\", \"M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z\"]\n};\nvar faChild = {\n prefix: 'fas',\n iconName: 'child',\n icon: [384, 512, [], \"f1ae\", \"M120 72c0-39.765 32.235-72 72-72s72 32.235 72 72c0 39.764-32.235 72-72 72s-72-32.236-72-72zm254.627 1.373c-12.496-12.497-32.758-12.497-45.254 0L242.745 160H141.254L54.627 73.373c-12.496-12.497-32.758-12.497-45.254 0-12.497 12.497-12.497 32.758 0 45.255L104 213.254V480c0 17.673 14.327 32 32 32h16c17.673 0 32-14.327 32-32V368h16v112c0 17.673 14.327 32 32 32h16c17.673 0 32-14.327 32-32V213.254l94.627-94.627c12.497-12.497 12.497-32.757 0-45.254z\"]\n};\nvar faChurch = {\n prefix: 'fas',\n iconName: 'church',\n icon: [640, 512, [], \"f51d\", \"M464.46 246.68L352 179.2V128h48c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16h-48V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v48h-48c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h48v51.2l-112.46 67.48A31.997 31.997 0 0 0 160 274.12V512h96v-96c0-35.35 28.65-64 64-64s64 28.65 64 64v96h96V274.12c0-11.24-5.9-21.66-15.54-27.44zM0 395.96V496c0 8.84 7.16 16 16 16h112V320L19.39 366.54A32.024 32.024 0 0 0 0 395.96zm620.61-29.42L512 320v192h112c8.84 0 16-7.16 16-16V395.96c0-12.8-7.63-24.37-19.39-29.42z\"]\n};\nvar faCircle = {\n prefix: 'fas',\n iconName: 'circle',\n icon: [512, 512, [], \"f111\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z\"]\n};\nvar faCircleNotch = {\n prefix: 'fas',\n iconName: 'circle-notch',\n icon: [512, 512, [], \"f1ce\", \"M288 39.056v16.659c0 10.804 7.281 20.159 17.686 23.066C383.204 100.434 440 171.518 440 256c0 101.689-82.295 184-184 184-101.689 0-184-82.295-184-184 0-84.47 56.786-155.564 134.312-177.219C216.719 75.874 224 66.517 224 55.712V39.064c0-15.709-14.834-27.153-30.046-23.234C86.603 43.482 7.394 141.206 8.003 257.332c.72 137.052 111.477 246.956 248.531 246.667C393.255 503.711 504 392.788 504 256c0-115.633-79.14-212.779-186.211-240.236C302.678 11.889 288 23.456 288 39.056z\"]\n};\nvar faCity = {\n prefix: 'fas',\n iconName: 'city',\n icon: [640, 512, [], \"f64f\", \"M616 192H480V24c0-13.26-10.74-24-24-24H312c-13.26 0-24 10.74-24 24v72h-64V16c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v80h-64V16c0-8.84-7.16-16-16-16H80c-8.84 0-16 7.16-16 16v80H24c-13.26 0-24 10.74-24 24v360c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V216c0-13.26-10.75-24-24-24zM128 404c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm128 192c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm160 96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12V76c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm160 288c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40z\"]\n};\nvar faClinicMedical = {\n prefix: 'fas',\n iconName: 'clinic-medical',\n icon: [576, 512, [], \"f7f2\", \"M288 115L69.47 307.71c-1.62 1.46-3.69 2.14-5.47 3.35V496a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V311.1c-1.7-1.16-3.72-1.82-5.26-3.2zm96 261a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8v-48a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8zm186.69-139.72l-255.94-226a39.85 39.85 0 0 0-53.45 0l-256 226a16 16 0 0 0-1.21 22.6L25.5 282.7a16 16 0 0 0 22.6 1.21L277.42 81.63a16 16 0 0 1 21.17 0L527.91 283.9a16 16 0 0 0 22.6-1.21l21.4-23.82a16 16 0 0 0-1.22-22.59z\"]\n};\nvar faClipboard = {\n prefix: 'fas',\n iconName: 'clipboard',\n icon: [384, 512, [], \"f328\", \"M384 112v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h80c0-35.29 28.71-64 64-64s64 28.71 64 64h80c26.51 0 48 21.49 48 48zM192 40c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24m96 114v-20a6 6 0 0 0-6-6H102a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6h180a6 6 0 0 0 6-6z\"]\n};\nvar faClipboardCheck = {\n prefix: 'fas',\n iconName: 'clipboard-check',\n icon: [384, 512, [], \"f46c\", \"M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm121.2 231.8l-143 141.8c-4.7 4.7-12.3 4.6-17-.1l-82.6-83.3c-4.7-4.7-4.6-12.3.1-17L99.1 285c4.7-4.7 12.3-4.6 17 .1l46 46.4 106-105.2c4.7-4.7 12.3-4.6 17 .1l28.2 28.4c4.7 4.8 4.6 12.3-.1 17z\"]\n};\nvar faClipboardList = {\n prefix: 'fas',\n iconName: 'clipboard-list',\n icon: [384, 512, [], \"f46d\", \"M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM96 424c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm0-96c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm0-96c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm96-192c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm128 368c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faClock = {\n prefix: 'fas',\n iconName: 'clock',\n icon: [512, 512, [], \"f017\", \"M256,8C119,8,8,119,8,256S119,504,256,504,504,393,504,256,393,8,256,8Zm92.49,313h0l-20,25a16,16,0,0,1-22.49,2.5h0l-67-49.72a40,40,0,0,1-15-31.23V112a16,16,0,0,1,16-16h32a16,16,0,0,1,16,16V256l58,42.5A16,16,0,0,1,348.49,321Z\"]\n};\nvar faClone = {\n prefix: 'fas',\n iconName: 'clone',\n icon: [512, 512, [], \"f24d\", \"M464 0c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48H176c-26.51 0-48-21.49-48-48V48c0-26.51 21.49-48 48-48h288M176 416c-44.112 0-80-35.888-80-80V128H48c-26.51 0-48 21.49-48 48v288c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48v-48H176z\"]\n};\nvar faClosedCaptioning = {\n prefix: 'fas',\n iconName: 'closed-captioning',\n icon: [512, 512, [], \"f20a\", \"M464 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM218.1 287.7c2.8-2.5 7.1-2.1 9.2.9l19.5 27.7c1.7 2.4 1.5 5.6-.5 7.7-53.6 56.8-172.8 32.1-172.8-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7l-17.5 30.5c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2.1 48 51.1 70.5 92.3 32.6zm190.4 0c2.8-2.5 7.1-2.1 9.2.9l19.5 27.7c1.7 2.4 1.5 5.6-.5 7.7-53.5 56.9-172.7 32.1-172.7-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7L420 222.2c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2 0 48 51 70.5 92.2 32.6z\"]\n};\nvar faCloud = {\n prefix: 'fas',\n iconName: 'cloud',\n icon: [640, 512, [], \"f0c2\", \"M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4z\"]\n};\nvar faCloudDownloadAlt = {\n prefix: 'fas',\n iconName: 'cloud-download-alt',\n icon: [640, 512, [], \"f381\", \"M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zm-132.9 88.7L299.3 420.7c-6.2 6.2-16.4 6.2-22.6 0L171.3 315.3c-10.1-10.1-2.9-27.3 11.3-27.3H248V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v112h65.4c14.2 0 21.4 17.2 11.3 27.3z\"]\n};\nvar faCloudMeatball = {\n prefix: 'fas',\n iconName: 'cloud-meatball',\n icon: [512, 512, [], \"f73b\", \"M48 352c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm416 0c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm-119 11.1c4.6-14.5 1.6-30.8-9.8-42.3-11.5-11.5-27.8-14.4-42.3-9.9-7-13.5-20.7-23-36.9-23s-29.9 9.5-36.9 23c-14.5-4.6-30.8-1.6-42.3 9.9-11.5 11.5-14.4 27.8-9.9 42.3-13.5 7-23 20.7-23 36.9s9.5 29.9 23 36.9c-4.6 14.5-1.6 30.8 9.9 42.3 8.2 8.2 18.9 12.3 29.7 12.3 4.3 0 8.5-1.1 12.6-2.5 7 13.5 20.7 23 36.9 23s29.9-9.5 36.9-23c4.1 1.3 8.3 2.5 12.6 2.5 10.8 0 21.5-4.1 29.7-12.3 11.5-11.5 14.4-27.8 9.8-42.3 13.5-7 23-20.7 23-36.9s-9.5-29.9-23-36.9zM512 224c0-53-43-96-96-96-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.1 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h43.4c3.6-8 8.4-15.4 14.8-21.8 13.5-13.5 31.5-21.1 50.8-21.3 13.5-13.2 31.7-20.9 51-20.9s37.5 7.7 51 20.9c19.3.2 37.3 7.8 50.8 21.3 6.4 6.4 11.3 13.8 14.8 21.8H416c53 0 96-43 96-96z\"]\n};\nvar faCloudMoon = {\n prefix: 'fas',\n iconName: 'cloud-moon',\n icon: [576, 512, [], \"f6c3\", \"M342.8 352.7c5.7-9.6 9.2-20.7 9.2-32.7 0-35.3-28.7-64-64-64-17.2 0-32.8 6.9-44.3 17.9-16.3-29.6-47.5-49.9-83.7-49.9-53 0-96 43-96 96 0 2 .5 3.8.6 5.7C27.1 338.8 0 374.1 0 416c0 53 43 96 96 96h240c44.2 0 80-35.8 80-80 0-41.9-32.3-75.8-73.2-79.3zm222.5-54.3c-93.1 17.7-178.5-53.7-178.5-147.7 0-54.2 29-104 76.1-130.8 7.3-4.1 5.4-15.1-2.8-16.7C448.4 1.1 436.7 0 425 0 319.1 0 233.1 85.9 233.1 192c0 8.5.7 16.8 1.8 25 5.9 4.3 11.6 8.9 16.7 14.2 11.4-4.7 23.7-7.2 36.4-7.2 52.9 0 96 43.1 96 96 0 3.6-.2 7.2-.6 10.7 23.6 10.8 42.4 29.5 53.5 52.6 54.4-3.4 103.7-29.3 137.1-70.4 5.3-6.5-.5-16.1-8.7-14.5z\"]\n};\nvar faCloudMoonRain = {\n prefix: 'fas',\n iconName: 'cloud-moon-rain',\n icon: [576, 512, [], \"f73c\", \"M350.5 225.5c-6.9-37.2-39.3-65.5-78.5-65.5-12.3 0-23.9 3-34.3 8-17.4-24.1-45.6-40-77.7-40-53 0-96 43-96 96 0 .5.2 1.1.2 1.6C27.6 232.9 0 265.2 0 304c0 44.2 35.8 80 80 80h256c44.2 0 80-35.8 80-80 0-39.2-28.2-71.7-65.5-78.5zm217.4-1.7c-70.4 13.3-135-40.3-135-110.8 0-40.6 21.9-78 57.5-98.1 5.5-3.1 4.1-11.4-2.1-12.5C479.6.8 470.7 0 461.8 0c-77.9 0-141.1 61.2-144.4 137.9 26.7 11.9 48.2 33.8 58.9 61.7 37.1 14.3 64 47.4 70.2 86.8 5.1.5 10 1.5 15.2 1.5 44.7 0 85.6-20.2 112.6-53.3 4.2-4.8-.2-12-6.4-10.8zM364.5 418.1c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8z\"]\n};\nvar faCloudRain = {\n prefix: 'fas',\n iconName: 'cloud-rain',\n icon: [512, 512, [], \"f73d\", \"M416 128c-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.1 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h320c53 0 96-43 96-96s-43-96-96-96zM88 374.2c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0zm160 0c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0zm160 0c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0z\"]\n};\nvar faCloudShowersHeavy = {\n prefix: 'fas',\n iconName: 'cloud-showers-heavy',\n icon: [512, 512, [], \"f740\", \"M183.9 370.1c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm96 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm-192 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm384 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm-96 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zM416 128c-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.2 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h320c53 0 96-43 96-96s-43-96-96-96z\"]\n};\nvar faCloudSun = {\n prefix: 'fas',\n iconName: 'cloud-sun',\n icon: [640, 512, [], \"f6c4\", \"M575.2 325.7c.2-1.9.8-3.7.8-5.6 0-35.3-28.7-64-64-64-12.6 0-24.2 3.8-34.1 10-17.6-38.8-56.5-66-101.9-66-61.8 0-112 50.1-112 112 0 3 .7 5.8.9 8.7-49.6 3.7-88.9 44.7-88.9 95.3 0 53 43 96 96 96h272c53 0 96-43 96-96 0-42.1-27.2-77.4-64.8-90.4zm-430.4-22.6c-43.7-43.7-43.7-114.7 0-158.3 43.7-43.7 114.7-43.7 158.4 0 9.7 9.7 16.9 20.9 22.3 32.7 9.8-3.7 20.1-6 30.7-7.5L386 81.1c4-11.9-7.3-23.1-19.2-19.2L279 91.2 237.5 8.4C232-2.8 216-2.8 210.4 8.4L169 91.2 81.1 61.9C69.3 58 58 69.3 61.9 81.1l29.3 87.8-82.8 41.5c-11.2 5.6-11.2 21.5 0 27.1l82.8 41.4-29.3 87.8c-4 11.9 7.3 23.1 19.2 19.2l76.1-25.3c6.1-12.4 14-23.7 23.6-33.5-13.1-5.4-25.4-13.4-36-24zm-4.8-79.2c0 40.8 29.3 74.8 67.9 82.3 8-4.7 16.3-8.8 25.2-11.7 5.4-44.3 31-82.5 67.4-105C287.3 160.4 258 140 224 140c-46.3 0-84 37.6-84 83.9z\"]\n};\nvar faCloudSunRain = {\n prefix: 'fas',\n iconName: 'cloud-sun-rain',\n icon: [576, 512, [], \"f743\", \"M510.5 225.5c-6.9-37.2-39.3-65.5-78.5-65.5-12.3 0-23.9 3-34.3 8-17.4-24.1-45.6-40-77.7-40-53 0-96 43-96 96 0 .5.2 1.1.2 1.6C187.6 233 160 265.2 160 304c0 44.2 35.8 80 80 80h256c44.2 0 80-35.8 80-80 0-39.2-28.2-71.7-65.5-78.5zm-386.4 34.4c-37.4-37.4-37.4-98.3 0-135.8 34.6-34.6 89.1-36.8 126.7-7.4 20-12.9 43.6-20.7 69.2-20.7.7 0 1.3.2 2 .2l8.9-26.7c3.4-10.2-6.3-19.8-16.5-16.4l-75.3 25.1-35.5-71c-4.8-9.6-18.5-9.6-23.3 0l-35.5 71-75.3-25.1c-10.2-3.4-19.8 6.3-16.4 16.5l25.1 75.3-71 35.5c-9.6 4.8-9.6 18.5 0 23.3l71 35.5-25.1 75.3c-3.4 10.2 6.3 19.8 16.5 16.5l59.2-19.7c-.2-2.4-.7-4.7-.7-7.2 0-12.5 2.3-24.5 6.2-35.9-3.6-2.7-7.1-5.2-10.2-8.3zm69.8-58c4.3-24.5 15.8-46.4 31.9-64-9.8-6.2-21.4-9.9-33.8-9.9-35.3 0-64 28.7-64 64 0 18.7 8.2 35.4 21.1 47.1 11.3-15.9 26.6-28.9 44.8-37.2zm330.6 216.2c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8z\"]\n};\nvar faCloudUploadAlt = {\n prefix: 'fas',\n iconName: 'cloud-upload-alt',\n icon: [640, 512, [], \"f382\", \"M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zM393.4 288H328v112c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V288h-65.4c-14.3 0-21.4-17.2-11.3-27.3l105.4-105.4c6.2-6.2 16.4-6.2 22.6 0l105.4 105.4c10.1 10.1 2.9 27.3-11.3 27.3z\"]\n};\nvar faCocktail = {\n prefix: 'fas',\n iconName: 'cocktail',\n icon: [576, 512, [], \"f561\", \"M296 464h-56V338.78l168.74-168.73c15.52-15.52 4.53-42.05-17.42-42.05H24.68c-21.95 0-32.94 26.53-17.42 42.05L176 338.78V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40zM432 0c-62.61 0-115.35 40.2-135.18 96h52.54c16.65-28.55 47.27-48 82.64-48 52.93 0 96 43.06 96 96s-43.07 96-96 96c-14.04 0-27.29-3.2-39.32-8.64l-35.26 35.26C379.23 279.92 404.59 288 432 288c79.53 0 144-64.47 144-144S511.53 0 432 0z\"]\n};\nvar faCode = {\n prefix: 'fas',\n iconName: 'code',\n icon: [640, 512, [], \"f121\", \"M278.9 511.5l-61-17.7c-6.4-1.8-10-8.5-8.2-14.9L346.2 8.7c1.8-6.4 8.5-10 14.9-8.2l61 17.7c6.4 1.8 10 8.5 8.2 14.9L293.8 503.3c-1.9 6.4-8.5 10.1-14.9 8.2zm-114-112.2l43.5-46.4c4.6-4.9 4.3-12.7-.8-17.2L117 256l90.6-79.7c5.1-4.5 5.5-12.3.8-17.2l-43.5-46.4c-4.5-4.8-12.1-5.1-17-.5L3.8 247.2c-5.1 4.7-5.1 12.8 0 17.5l144.1 135.1c4.9 4.6 12.5 4.4 17-.5zm327.2.6l144.1-135.1c5.1-4.7 5.1-12.8 0-17.5L492.1 112.1c-4.8-4.5-12.4-4.3-17 .5L431.6 159c-4.6 4.9-4.3 12.7.8 17.2L523 256l-90.6 79.7c-5.1 4.5-5.5 12.3-.8 17.2l43.5 46.4c4.5 4.9 12.1 5.1 17 .6z\"]\n};\nvar faCodeBranch = {\n prefix: 'fas',\n iconName: 'code-branch',\n icon: [384, 512, [], \"f126\", \"M384 144c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 36.4 24.3 67.1 57.5 76.8-.6 16.1-4.2 28.5-11 36.9-15.4 19.2-49.3 22.4-85.2 25.7-28.2 2.6-57.4 5.4-81.3 16.9v-144c32.5-10.2 56-40.5 56-76.3 0-44.2-35.8-80-80-80S0 35.8 0 80c0 35.8 23.5 66.1 56 76.3v199.3C23.5 365.9 0 396.2 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-34-21.2-63.1-51.2-74.6 3.1-5.2 7.8-9.8 14.9-13.4 16.2-8.2 40.4-10.4 66.1-12.8 42.2-3.9 90-8.4 118.2-43.4 14-17.4 21.1-39.8 21.6-67.9 31.6-10.8 54.4-40.7 54.4-75.9zM80 64c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16zm0 384c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm224-320c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16z\"]\n};\nvar faCoffee = {\n prefix: 'fas',\n iconName: 'coffee',\n icon: [640, 512, [], \"f0f4\", \"M192 384h192c53 0 96-43 96-96h32c70.6 0 128-57.4 128-128S582.6 32 512 32H120c-13.3 0-24 10.7-24 24v232c0 53 43 96 96 96zM512 96c35.3 0 64 28.7 64 64s-28.7 64-64 64h-32V96h32zm47.7 384H48.3c-47.6 0-61-64-36-64h583.3c25 0 11.8 64-35.9 64z\"]\n};\nvar faCog = {\n prefix: 'fas',\n iconName: 'cog',\n icon: [512, 512, [], \"f013\", \"M487.4 315.7l-42.6-24.6c4.3-23.2 4.3-47 0-70.2l42.6-24.6c4.9-2.8 7.1-8.6 5.5-14-11.1-35.6-30-67.8-54.7-94.6-3.8-4.1-10-5.1-14.8-2.3L380.8 110c-17.9-15.4-38.5-27.3-60.8-35.1V25.8c0-5.6-3.9-10.5-9.4-11.7-36.7-8.2-74.3-7.8-109.2 0-5.5 1.2-9.4 6.1-9.4 11.7V75c-22.2 7.9-42.8 19.8-60.8 35.1L88.7 85.5c-4.9-2.8-11-1.9-14.8 2.3-24.7 26.7-43.6 58.9-54.7 94.6-1.7 5.4.6 11.2 5.5 14L67.3 221c-4.3 23.2-4.3 47 0 70.2l-42.6 24.6c-4.9 2.8-7.1 8.6-5.5 14 11.1 35.6 30 67.8 54.7 94.6 3.8 4.1 10 5.1 14.8 2.3l42.6-24.6c17.9 15.4 38.5 27.3 60.8 35.1v49.2c0 5.6 3.9 10.5 9.4 11.7 36.7 8.2 74.3 7.8 109.2 0 5.5-1.2 9.4-6.1 9.4-11.7v-49.2c22.2-7.9 42.8-19.8 60.8-35.1l42.6 24.6c4.9 2.8 11 1.9 14.8-2.3 24.7-26.7 43.6-58.9 54.7-94.6 1.5-5.5-.7-11.3-5.6-14.1zM256 336c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faCogs = {\n prefix: 'fas',\n iconName: 'cogs',\n icon: [640, 512, [], \"f085\", \"M512.1 191l-8.2 14.3c-3 5.3-9.4 7.5-15.1 5.4-11.8-4.4-22.6-10.7-32.1-18.6-4.6-3.8-5.8-10.5-2.8-15.7l8.2-14.3c-6.9-8-12.3-17.3-15.9-27.4h-16.5c-6 0-11.2-4.3-12.2-10.3-2-12-2.1-24.6 0-37.1 1-6 6.2-10.4 12.2-10.4h16.5c3.6-10.1 9-19.4 15.9-27.4l-8.2-14.3c-3-5.2-1.9-11.9 2.8-15.7 9.5-7.9 20.4-14.2 32.1-18.6 5.7-2.1 12.1.1 15.1 5.4l8.2 14.3c10.5-1.9 21.2-1.9 31.7 0L552 6.3c3-5.3 9.4-7.5 15.1-5.4 11.8 4.4 22.6 10.7 32.1 18.6 4.6 3.8 5.8 10.5 2.8 15.7l-8.2 14.3c6.9 8 12.3 17.3 15.9 27.4h16.5c6 0 11.2 4.3 12.2 10.3 2 12 2.1 24.6 0 37.1-1 6-6.2 10.4-12.2 10.4h-16.5c-3.6 10.1-9 19.4-15.9 27.4l8.2 14.3c3 5.2 1.9 11.9-2.8 15.7-9.5 7.9-20.4 14.2-32.1 18.6-5.7 2.1-12.1-.1-15.1-5.4l-8.2-14.3c-10.4 1.9-21.2 1.9-31.7 0zm-10.5-58.8c38.5 29.6 82.4-14.3 52.8-52.8-38.5-29.7-82.4 14.3-52.8 52.8zM386.3 286.1l33.7 16.8c10.1 5.8 14.5 18.1 10.5 29.1-8.9 24.2-26.4 46.4-42.6 65.8-7.4 8.9-20.2 11.1-30.3 5.3l-29.1-16.8c-16 13.7-34.6 24.6-54.9 31.7v33.6c0 11.6-8.3 21.6-19.7 23.6-24.6 4.2-50.4 4.4-75.9 0-11.5-2-20-11.9-20-23.6V418c-20.3-7.2-38.9-18-54.9-31.7L74 403c-10 5.8-22.9 3.6-30.3-5.3-16.2-19.4-33.3-41.6-42.2-65.7-4-10.9.4-23.2 10.5-29.1l33.3-16.8c-3.9-20.9-3.9-42.4 0-63.4L12 205.8c-10.1-5.8-14.6-18.1-10.5-29 8.9-24.2 26-46.4 42.2-65.8 7.4-8.9 20.2-11.1 30.3-5.3l29.1 16.8c16-13.7 34.6-24.6 54.9-31.7V57.1c0-11.5 8.2-21.5 19.6-23.5 24.6-4.2 50.5-4.4 76-.1 11.5 2 20 11.9 20 23.6v33.6c20.3 7.2 38.9 18 54.9 31.7l29.1-16.8c10-5.8 22.9-3.6 30.3 5.3 16.2 19.4 33.2 41.6 42.1 65.8 4 10.9.1 23.2-10 29.1l-33.7 16.8c3.9 21 3.9 42.5 0 63.5zm-117.6 21.1c59.2-77-28.7-164.9-105.7-105.7-59.2 77 28.7 164.9 105.7 105.7zm243.4 182.7l-8.2 14.3c-3 5.3-9.4 7.5-15.1 5.4-11.8-4.4-22.6-10.7-32.1-18.6-4.6-3.8-5.8-10.5-2.8-15.7l8.2-14.3c-6.9-8-12.3-17.3-15.9-27.4h-16.5c-6 0-11.2-4.3-12.2-10.3-2-12-2.1-24.6 0-37.1 1-6 6.2-10.4 12.2-10.4h16.5c3.6-10.1 9-19.4 15.9-27.4l-8.2-14.3c-3-5.2-1.9-11.9 2.8-15.7 9.5-7.9 20.4-14.2 32.1-18.6 5.7-2.1 12.1.1 15.1 5.4l8.2 14.3c10.5-1.9 21.2-1.9 31.7 0l8.2-14.3c3-5.3 9.4-7.5 15.1-5.4 11.8 4.4 22.6 10.7 32.1 18.6 4.6 3.8 5.8 10.5 2.8 15.7l-8.2 14.3c6.9 8 12.3 17.3 15.9 27.4h16.5c6 0 11.2 4.3 12.2 10.3 2 12 2.1 24.6 0 37.1-1 6-6.2 10.4-12.2 10.4h-16.5c-3.6 10.1-9 19.4-15.9 27.4l8.2 14.3c3 5.2 1.9 11.9-2.8 15.7-9.5 7.9-20.4 14.2-32.1 18.6-5.7 2.1-12.1-.1-15.1-5.4l-8.2-14.3c-10.4 1.9-21.2 1.9-31.7 0zM501.6 431c38.5 29.6 82.4-14.3 52.8-52.8-38.5-29.6-82.4 14.3-52.8 52.8z\"]\n};\nvar faCoins = {\n prefix: 'fas',\n iconName: 'coins',\n icon: [512, 512, [], \"f51e\", \"M0 405.3V448c0 35.3 86 64 192 64s192-28.7 192-64v-42.7C342.7 434.4 267.2 448 192 448S41.3 434.4 0 405.3zM320 128c106 0 192-28.7 192-64S426 0 320 0 128 28.7 128 64s86 64 192 64zM0 300.4V352c0 35.3 86 64 192 64s192-28.7 192-64v-51.6c-41.3 34-116.9 51.6-192 51.6S41.3 334.4 0 300.4zm416 11c57.3-11.1 96-31.7 96-55.4v-42.7c-23.2 16.4-57.3 27.6-96 34.5v63.6zM192 160C86 160 0 195.8 0 240s86 80 192 80 192-35.8 192-80-86-80-192-80zm219.3 56.3c60-10.8 100.7-32 100.7-56.3v-42.7c-35.5 25.1-96.5 38.6-160.7 41.8 29.5 14.3 51.2 33.5 60 57.2z\"]\n};\nvar faColumns = {\n prefix: 'fas',\n iconName: 'columns',\n icon: [512, 512, [], \"f0db\", \"M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM224 416H64V160h160v256zm224 0H288V160h160v256z\"]\n};\nvar faComment = {\n prefix: 'fas',\n iconName: 'comment',\n icon: [512, 512, [], \"f075\", \"M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7S4.8 480 8 480c66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32z\"]\n};\nvar faCommentAlt = {\n prefix: 'fas',\n iconName: 'comment-alt',\n icon: [512, 512, [], \"f27a\", \"M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 9.8 11.2 15.5 19.1 9.7L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64z\"]\n};\nvar faCommentDollar = {\n prefix: 'fas',\n iconName: 'comment-dollar',\n icon: [512, 512, [], \"f651\", \"M256 32C114.62 32 0 125.12 0 240c0 49.56 21.41 95.01 57.02 130.74C44.46 421.05 2.7 465.97 2.2 466.5A7.995 7.995 0 0 0 8 480c66.26 0 115.99-31.75 140.6-51.38C181.29 440.93 217.59 448 256 448c141.38 0 256-93.12 256-208S397.38 32 256 32zm24 302.44V352c0 8.84-7.16 16-16 16h-16c-8.84 0-16-7.16-16-16v-17.73c-11.42-1.35-22.28-5.19-31.78-11.46-6.22-4.11-6.82-13.11-1.55-18.38l17.52-17.52c3.74-3.74 9.31-4.24 14.11-2.03 3.18 1.46 6.66 2.22 10.26 2.22h32.78c4.66 0 8.44-3.78 8.44-8.42 0-3.75-2.52-7.08-6.12-8.11l-50.07-14.3c-22.25-6.35-40.01-24.71-42.91-47.67-4.05-32.07 19.03-59.43 49.32-63.05V128c0-8.84 7.16-16 16-16h16c8.84 0 16 7.16 16 16v17.73c11.42 1.35 22.28 5.19 31.78 11.46 6.22 4.11 6.82 13.11 1.55 18.38l-17.52 17.52c-3.74 3.74-9.31 4.24-14.11 2.03a24.516 24.516 0 0 0-10.26-2.22h-32.78c-4.66 0-8.44 3.78-8.44 8.42 0 3.75 2.52 7.08 6.12 8.11l50.07 14.3c22.25 6.36 40.01 24.71 42.91 47.67 4.05 32.06-19.03 59.42-49.32 63.04z\"]\n};\nvar faCommentDots = {\n prefix: 'fas',\n iconName: 'comment-dots',\n icon: [512, 512, [], \"f4ad\", \"M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7S4.8 480 8 480c66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32zM128 272c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faCommentMedical = {\n prefix: 'fas',\n iconName: 'comment-medical',\n icon: [512, 512, [], \"f7f5\", \"M256 32C114.62 32 0 125.12 0 240c0 49.56 21.41 95 57 130.74C44.46 421.05 2.7 466 2.2 466.5A8 8 0 0 0 8 480c66.26 0 116-31.75 140.6-51.38A304.66 304.66 0 0 0 256 448c141.39 0 256-93.12 256-208S397.39 32 256 32zm96 232a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8v-48a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8z\"]\n};\nvar faCommentSlash = {\n prefix: 'fas',\n iconName: 'comment-slash',\n icon: [640, 512, [], \"f4b3\", \"M64 240c0 49.6 21.4 95 57 130.7-12.6 50.3-54.3 95.2-54.8 95.8-2.2 2.3-2.8 5.7-1.5 8.7 1.3 2.9 4.1 4.8 7.3 4.8 66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 27.4 0 53.7-3.6 78.4-10L72.9 186.4c-5.6 17.1-8.9 35-8.9 53.6zm569.8 218.1l-114.4-88.4C554.6 334.1 576 289.2 576 240c0-114.9-114.6-208-256-208-65.1 0-124.2 20.1-169.4 52.7L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3z\"]\n};\nvar faComments = {\n prefix: 'fas',\n iconName: 'comments',\n icon: [576, 512, [], \"f086\", \"M416 192c0-88.4-93.1-160-208-160S0 103.6 0 192c0 34.3 14.1 65.9 38 92-13.4 30.2-35.5 54.2-35.8 54.5-2.2 2.3-2.8 5.7-1.5 8.7S4.8 352 8 352c36.6 0 66.9-12.3 88.7-25 32.2 15.7 70.3 25 111.3 25 114.9 0 208-71.6 208-160zm122 220c23.9-26 38-57.7 38-92 0-66.9-53.5-124.2-129.3-148.1.9 6.6 1.3 13.3 1.3 20.1 0 105.9-107.7 192-240 192-10.8 0-21.3-.8-31.7-1.9C207.8 439.6 281.8 480 368 480c41 0 79.1-9.2 111.3-25 21.8 12.7 52.1 25 88.7 25 3.2 0 6.1-1.9 7.3-4.8 1.3-2.9.7-6.3-1.5-8.7-.3-.3-22.4-24.2-35.8-54.5z\"]\n};\nvar faCommentsDollar = {\n prefix: 'fas',\n iconName: 'comments-dollar',\n icon: [576, 512, [], \"f653\", \"M416 192c0-88.37-93.12-160-208-160S0 103.63 0 192c0 34.27 14.13 65.95 37.97 91.98C24.61 314.22 2.52 338.16 2.2 338.5A7.995 7.995 0 0 0 8 352c36.58 0 66.93-12.25 88.73-24.98C128.93 342.76 167.02 352 208 352c114.88 0 208-71.63 208-160zm-224 96v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V96c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07V288c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm346.01 123.99C561.87 385.96 576 354.27 576 320c0-66.94-53.49-124.2-129.33-148.07.86 6.6 1.33 13.29 1.33 20.07 0 105.87-107.66 192-240 192-10.78 0-21.32-.77-31.73-1.88C207.8 439.63 281.77 480 368 480c40.98 0 79.07-9.24 111.27-24.98C501.07 467.75 531.42 480 568 480c3.2 0 6.09-1.91 7.34-4.84 1.27-2.94.66-6.34-1.55-8.67-.31-.33-22.42-24.24-35.78-54.5z\"]\n};\nvar faCompactDisc = {\n prefix: 'fas',\n iconName: 'compact-disc',\n icon: [496, 512, [], \"f51f\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM88 256H56c0-105.9 86.1-192 192-192v32c-88.2 0-160 71.8-160 160zm160 96c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96zm0-128c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z\"]\n};\nvar faCompass = {\n prefix: 'fas',\n iconName: 'compass',\n icon: [496, 512, [], \"f14e\", \"M225.38 233.37c-12.5 12.5-12.5 32.76 0 45.25 12.49 12.5 32.76 12.5 45.25 0 12.5-12.5 12.5-32.76 0-45.25-12.5-12.49-32.76-12.49-45.25 0zM248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm126.14 148.05L308.17 300.4a31.938 31.938 0 0 1-15.77 15.77l-144.34 65.97c-16.65 7.61-33.81-9.55-26.2-26.2l65.98-144.35a31.938 31.938 0 0 1 15.77-15.77l144.34-65.97c16.65-7.6 33.8 9.55 26.19 26.2z\"]\n};\nvar faCompress = {\n prefix: 'fas',\n iconName: 'compress',\n icon: [448, 512, [], \"f066\", \"M436 192H312c-13.3 0-24-10.7-24-24V44c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v84h84c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12zm-276-24V44c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v84H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24zm0 300V344c0-13.3-10.7-24-24-24H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h84v84c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm192 0v-84h84c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12H312c-13.3 0-24 10.7-24 24v124c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12z\"]\n};\nvar faCompressAlt = {\n prefix: 'fas',\n iconName: 'compress-alt',\n icon: [448, 512, [], \"f422\", \"M4.686 427.314L104 328l-32.922-31.029C55.958 281.851 66.666 256 88.048 256h112C213.303 256 224 266.745 224 280v112c0 21.382-25.803 32.09-40.922 16.971L152 376l-99.314 99.314c-6.248 6.248-16.379 6.248-22.627 0L4.686 449.941c-6.248-6.248-6.248-16.379 0-22.627zM443.314 84.686L344 184l32.922 31.029c15.12 15.12 4.412 40.971-16.97 40.971h-112C234.697 256 224 245.255 224 232V120c0-21.382 25.803-32.09 40.922-16.971L296 136l99.314-99.314c6.248-6.248 16.379-6.248 22.627 0l25.373 25.373c6.248 6.248 6.248 16.379 0 22.627z\"]\n};\nvar faCompressArrowsAlt = {\n prefix: 'fas',\n iconName: 'compress-arrows-alt',\n icon: [512, 512, [], \"f78c\", \"M200 288H88c-21.4 0-32.1 25.8-17 41l32.9 31-99.2 99.3c-6.2 6.2-6.2 16.4 0 22.6l25.4 25.4c6.2 6.2 16.4 6.2 22.6 0L152 408l31.1 33c15.1 15.1 40.9 4.4 40.9-17V312c0-13.3-10.7-24-24-24zm112-64h112c21.4 0 32.1-25.9 17-41l-33-31 99.3-99.3c6.2-6.2 6.2-16.4 0-22.6L481.9 4.7c-6.2-6.2-16.4-6.2-22.6 0L360 104l-31.1-33C313.8 55.9 288 66.6 288 88v112c0 13.3 10.7 24 24 24zm96 136l33-31.1c15.1-15.1 4.4-40.9-17-40.9H312c-13.3 0-24 10.7-24 24v112c0 21.4 25.9 32.1 41 17l31-32.9 99.3 99.3c6.2 6.2 16.4 6.2 22.6 0l25.4-25.4c6.2-6.2 6.2-16.4 0-22.6L408 360zM183 71.1L152 104 52.7 4.7c-6.2-6.2-16.4-6.2-22.6 0L4.7 30.1c-6.2 6.2-6.2 16.4 0 22.6L104 152l-33 31.1C55.9 198.2 66.6 224 88 224h112c13.3 0 24-10.7 24-24V88c0-21.3-25.9-32-41-16.9z\"]\n};\nvar faConciergeBell = {\n prefix: 'fas',\n iconName: 'concierge-bell',\n icon: [512, 512, [], \"f562\", \"M288 130.54V112h16c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16h-96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h16v18.54C115.49 146.11 32 239.18 32 352h448c0-112.82-83.49-205.89-192-221.46zM496 384H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faCookie = {\n prefix: 'fas',\n iconName: 'cookie',\n icon: [512, 512, [], \"f563\", \"M510.37 254.79l-12.08-76.26a132.493 132.493 0 0 0-37.16-72.95l-54.76-54.75c-19.73-19.72-45.18-32.7-72.71-37.05l-76.7-12.15c-27.51-4.36-55.69.11-80.52 12.76L107.32 49.6a132.25 132.25 0 0 0-57.79 57.8l-35.1 68.88a132.602 132.602 0 0 0-12.82 80.94l12.08 76.27a132.493 132.493 0 0 0 37.16 72.95l54.76 54.75a132.087 132.087 0 0 0 72.71 37.05l76.7 12.14c27.51 4.36 55.69-.11 80.52-12.75l69.12-35.21a132.302 132.302 0 0 0 57.79-57.8l35.1-68.87c12.71-24.96 17.2-53.3 12.82-80.96zM176 368c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm32-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm160 128c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faCookieBite = {\n prefix: 'fas',\n iconName: 'cookie-bite',\n icon: [512, 512, [], \"f564\", \"M510.52 255.82c-69.97-.85-126.47-57.69-126.47-127.86-70.17 0-127-56.49-127.86-126.45-27.26-4.14-55.13.3-79.72 12.82l-69.13 35.22a132.221 132.221 0 0 0-57.79 57.81l-35.1 68.88a132.645 132.645 0 0 0-12.82 80.95l12.08 76.27a132.521 132.521 0 0 0 37.16 72.96l54.77 54.76a132.036 132.036 0 0 0 72.71 37.06l76.71 12.15c27.51 4.36 55.7-.11 80.53-12.76l69.13-35.21a132.273 132.273 0 0 0 57.79-57.81l35.1-68.88c12.56-24.64 17.01-52.58 12.91-79.91zM176 368c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm32-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm160 128c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faCopy = {\n prefix: 'fas',\n iconName: 'copy',\n icon: [448, 512, [], \"f0c5\", \"M320 448v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V120c0-13.255 10.745-24 24-24h72v296c0 30.879 25.121 56 56 56h168zm0-344V0H152c-13.255 0-24 10.745-24 24v368c0 13.255 10.745 24 24 24h272c13.255 0 24-10.745 24-24V128H344c-13.2 0-24-10.8-24-24zm120.971-31.029L375.029 7.029A24 24 0 0 0 358.059 0H352v96h96v-6.059a24 24 0 0 0-7.029-16.97z\"]\n};\nvar faCopyright = {\n prefix: 'fas',\n iconName: 'copyright',\n icon: [512, 512, [], \"f1f9\", \"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm117.134 346.753c-1.592 1.867-39.776 45.731-109.851 45.731-84.692 0-144.484-63.26-144.484-145.567 0-81.303 62.004-143.401 143.762-143.401 66.957 0 101.965 37.315 103.422 38.904a12 12 0 0 1 1.238 14.623l-22.38 34.655c-4.049 6.267-12.774 7.351-18.234 2.295-.233-.214-26.529-23.88-61.88-23.88-46.116 0-73.916 33.575-73.916 76.082 0 39.602 25.514 79.692 74.277 79.692 38.697 0 65.28-28.338 65.544-28.625 5.132-5.565 14.059-5.033 18.508 1.053l24.547 33.572a12.001 12.001 0 0 1-.553 14.866z\"]\n};\nvar faCouch = {\n prefix: 'fas',\n iconName: 'couch',\n icon: [640, 512, [], \"f4b8\", \"M160 224v64h320v-64c0-35.3 28.7-64 64-64h32c0-53-43-96-96-96H160c-53 0-96 43-96 96h32c35.3 0 64 28.7 64 64zm416-32h-32c-17.7 0-32 14.3-32 32v96H128v-96c0-17.7-14.3-32-32-32H64c-35.3 0-64 28.7-64 64 0 23.6 13 44 32 55.1V432c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-16h384v16c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V311.1c19-11.1 32-31.5 32-55.1 0-35.3-28.7-64-64-64z\"]\n};\nvar faCreditCard = {\n prefix: 'fas',\n iconName: 'credit-card',\n icon: [576, 512, [], \"f09d\", \"M0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V256H0v176zm192-68c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-40zm-128 0c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM576 80v48H0V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48z\"]\n};\nvar faCrop = {\n prefix: 'fas',\n iconName: 'crop',\n icon: [512, 512, [], \"f125\", \"M488 352h-40V109.25l59.31-59.31c6.25-6.25 6.25-16.38 0-22.63L484.69 4.69c-6.25-6.25-16.38-6.25-22.63 0L402.75 64H192v96h114.75L160 306.75V24c0-13.26-10.75-24-24-24H88C74.75 0 64 10.74 64 24v40H24C10.75 64 0 74.74 0 88v48c0 13.25 10.75 24 24 24h40v264c0 13.25 10.75 24 24 24h232v-96H205.25L352 205.25V488c0 13.25 10.75 24 24 24h48c13.25 0 24-10.75 24-24v-40h40c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z\"]\n};\nvar faCropAlt = {\n prefix: 'fas',\n iconName: 'crop-alt',\n icon: [512, 512, [], \"f565\", \"M488 352h-40V96c0-17.67-14.33-32-32-32H192v96h160v328c0 13.25 10.75 24 24 24h48c13.25 0 24-10.75 24-24v-40h40c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24zM160 24c0-13.26-10.75-24-24-24H88C74.75 0 64 10.74 64 24v40H24C10.75 64 0 74.74 0 88v48c0 13.25 10.75 24 24 24h40v256c0 17.67 14.33 32 32 32h224v-96H160V24z\"]\n};\nvar faCross = {\n prefix: 'fas',\n iconName: 'cross',\n icon: [384, 512, [], \"f654\", \"M352 128h-96V32c0-17.67-14.33-32-32-32h-64c-17.67 0-32 14.33-32 32v96H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h96v224c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V256h96c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z\"]\n};\nvar faCrosshairs = {\n prefix: 'fas',\n iconName: 'crosshairs',\n icon: [512, 512, [], \"f05b\", \"M500 224h-30.364C455.724 130.325 381.675 56.276 288 42.364V12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v30.364C130.325 56.276 56.276 130.325 42.364 224H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h30.364C56.276 381.675 130.325 455.724 224 469.636V500c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-30.364C381.675 455.724 455.724 381.675 469.636 288H500c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zM288 404.634V364c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40.634C165.826 392.232 119.783 346.243 107.366 288H148c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40.634C119.768 165.826 165.757 119.783 224 107.366V148c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40.634C346.174 119.768 392.217 165.757 404.634 224H364c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40.634C392.232 346.174 346.243 392.217 288 404.634zM288 256c0 17.673-14.327 32-32 32s-32-14.327-32-32c0-17.673 14.327-32 32-32s32 14.327 32 32z\"]\n};\nvar faCrow = {\n prefix: 'fas',\n iconName: 'crow',\n icon: [640, 512, [], \"f520\", \"M544 32h-16.36C513.04 12.68 490.09 0 464 0c-44.18 0-80 35.82-80 80v20.98L12.09 393.57A30.216 30.216 0 0 0 0 417.74c0 22.46 23.64 37.07 43.73 27.03L165.27 384h96.49l44.41 120.1c2.27 6.23 9.15 9.44 15.38 7.17l22.55-8.21c6.23-2.27 9.44-9.15 7.17-15.38L312.94 384H352c1.91 0 3.76-.23 5.66-.29l44.51 120.38c2.27 6.23 9.15 9.44 15.38 7.17l22.55-8.21c6.23-2.27 9.44-9.15 7.17-15.38l-41.24-111.53C485.74 352.8 544 279.26 544 192v-80l96-16c0-35.35-42.98-64-96-64zm-80 72c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faCrown = {\n prefix: 'fas',\n iconName: 'crown',\n icon: [640, 512, [], \"f521\", \"M528 448H112c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h416c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm64-320c-26.5 0-48 21.5-48 48 0 7.1 1.6 13.7 4.4 19.8L476 239.2c-15.4 9.2-35.3 4-44.2-11.6L350.3 85C361 76.2 368 63 368 48c0-26.5-21.5-48-48-48s-48 21.5-48 48c0 15 7 28.2 17.7 37l-81.5 142.6c-8.9 15.6-28.9 20.8-44.2 11.6l-72.3-43.4c2.7-6 4.4-12.7 4.4-19.8 0-26.5-21.5-48-48-48S0 149.5 0 176s21.5 48 48 48c2.6 0 5.2-.4 7.7-.8L128 416h384l72.3-192.8c2.5.4 5.1.8 7.7.8 26.5 0 48-21.5 48-48s-21.5-48-48-48z\"]\n};\nvar faCrutch = {\n prefix: 'fas',\n iconName: 'crutch',\n icon: [512, 512, [], \"f7f7\", \"M507.31 185.71l-181-181a16 16 0 0 0-22.62 0L281 27.31a16 16 0 0 0 0 22.63l181 181a16 16 0 0 0 22.63 0l22.62-22.63a16 16 0 0 0 .06-22.6zm-179.54 66.41l-67.89-67.89 55.1-55.1-45.25-45.25-109.67 109.67a96.08 96.08 0 0 0-25.67 46.29L106.65 360.1l-102 102a16 16 0 0 0 0 22.63l22.62 22.62a16 16 0 0 0 22.63 0l102-102 120.25-27.75a95.88 95.88 0 0 0 46.29-25.65l109.68-109.68L382.87 197zm-54.57 54.57a32 32 0 0 1-15.45 8.54l-79.3 18.32 18.3-79.3a32.22 32.22 0 0 1 8.56-15.45l9.31-9.31 67.89 67.89z\"]\n};\nvar faCube = {\n prefix: 'fas',\n iconName: 'cube',\n icon: [512, 512, [], \"f1b2\", \"M239.1 6.3l-208 78c-18.7 7-31.1 25-31.1 45v225.1c0 18.2 10.3 34.8 26.5 42.9l208 104c13.5 6.8 29.4 6.8 42.9 0l208-104c16.3-8.1 26.5-24.8 26.5-42.9V129.3c0-20-12.4-37.9-31.1-44.9l-208-78C262 2.2 250 2.2 239.1 6.3zM256 68.4l192 72v1.1l-192 78-192-78v-1.1l192-72zm32 356V275.5l160-65v133.9l-160 80z\"]\n};\nvar faCubes = {\n prefix: 'fas',\n iconName: 'cubes',\n icon: [512, 512, [], \"f1b3\", \"M488.6 250.2L392 214V105.5c0-15-9.3-28.4-23.4-33.7l-100-37.5c-8.1-3.1-17.1-3.1-25.3 0l-100 37.5c-14.1 5.3-23.4 18.7-23.4 33.7V214l-96.6 36.2C9.3 255.5 0 268.9 0 283.9V394c0 13.6 7.7 26.1 19.9 32.2l100 50c10.1 5.1 22.1 5.1 32.2 0l103.9-52 103.9 52c10.1 5.1 22.1 5.1 32.2 0l100-50c12.2-6.1 19.9-18.6 19.9-32.2V283.9c0-15-9.3-28.4-23.4-33.7zM358 214.8l-85 31.9v-68.2l85-37v73.3zM154 104.1l102-38.2 102 38.2v.6l-102 41.4-102-41.4v-.6zm84 291.1l-85 42.5v-79.1l85-38.8v75.4zm0-112l-102 41.4-102-41.4v-.6l102-38.2 102 38.2v.6zm240 112l-85 42.5v-79.1l85-38.8v75.4zm0-112l-102 41.4-102-41.4v-.6l102-38.2 102 38.2v.6z\"]\n};\nvar faCut = {\n prefix: 'fas',\n iconName: 'cut',\n icon: [448, 512, [], \"f0c4\", \"M278.06 256L444.48 89.57c4.69-4.69 4.69-12.29 0-16.97-32.8-32.8-85.99-32.8-118.79 0L210.18 188.12l-24.86-24.86c4.31-10.92 6.68-22.81 6.68-35.26 0-53.02-42.98-96-96-96S0 74.98 0 128s42.98 96 96 96c4.54 0 8.99-.32 13.36-.93L142.29 256l-32.93 32.93c-4.37-.61-8.83-.93-13.36-.93-53.02 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96c0-12.45-2.37-24.34-6.68-35.26l24.86-24.86L325.69 439.4c32.8 32.8 85.99 32.8 118.79 0 4.69-4.68 4.69-12.28 0-16.97L278.06 256zM96 160c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32zm0 256c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32z\"]\n};\nvar faDatabase = {\n prefix: 'fas',\n iconName: 'database',\n icon: [448, 512, [], \"f1c0\", \"M448 73.143v45.714C448 159.143 347.667 192 224 192S0 159.143 0 118.857V73.143C0 32.857 100.333 0 224 0s224 32.857 224 73.143zM448 176v102.857C448 319.143 347.667 352 224 352S0 319.143 0 278.857V176c48.125 33.143 136.208 48.572 224 48.572S399.874 209.143 448 176zm0 160v102.857C448 479.143 347.667 512 224 512S0 479.143 0 438.857V336c48.125 33.143 136.208 48.572 224 48.572S399.874 369.143 448 336z\"]\n};\nvar faDeaf = {\n prefix: 'fas',\n iconName: 'deaf',\n icon: [512, 512, [], \"f2a4\", \"M216 260c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-44.112 35.888-80 80-80s80 35.888 80 80c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-13.234-10.767-24-24-24s-24 10.766-24 24zm24-176c-97.047 0-176 78.953-176 176 0 15.464 12.536 28 28 28s28-12.536 28-28c0-66.168 53.832-120 120-120s120 53.832 120 120c0 75.164-71.009 70.311-71.997 143.622L288 404c0 28.673-23.327 52-52 52-15.464 0-28 12.536-28 28s12.536 28 28 28c59.475 0 107.876-48.328 108-107.774.595-34.428 72-48.24 72-144.226 0-97.047-78.953-176-176-176zm268.485-52.201L480.2 3.515c-4.687-4.686-12.284-4.686-16.971 0L376.2 90.544c-4.686 4.686-4.686 12.284 0 16.971l28.285 28.285c4.686 4.686 12.284 4.686 16.97 0l87.03-87.029c4.687-4.688 4.687-12.286 0-16.972zM168.97 314.745c-4.686-4.686-12.284-4.686-16.97 0L3.515 463.23c-4.686 4.686-4.686 12.284 0 16.971L31.8 508.485c4.687 4.686 12.284 4.686 16.971 0L197.256 360c4.686-4.686 4.686-12.284 0-16.971l-28.286-28.284z\"]\n};\nvar faDemocrat = {\n prefix: 'fas',\n iconName: 'democrat',\n icon: [640, 512, [], \"f747\", \"M637.3 256.9l-19.6-29.4c-28.2-42.3-75.3-67.5-126.1-67.5H256l-81.2-81.2c20.1-20.1 22.6-51.1 7.5-73.9-3.4-5.2-10.8-5.9-15.2-1.5l-41.8 41.8L82.4 2.4c-3.6-3.6-9.6-3-12.4 1.2-12.3 18.6-10.3 44 6.1 60.4 3.3 3.3 7.3 5.3 11.3 7.5-2.2 1.7-4.7 3.1-6.4 5.4L6.4 176.2c-7.3 9.7-8.4 22.7-3 33.5l14.3 28.6c5.4 10.8 16.5 17.7 28.6 17.7h31c8.5 0 16.6-3.4 22.6-9.4L138 212l54 108h352v-77.8c16.2 12.2 18.3 17.6 40.1 50.3 4.9 7.4 14.8 9.3 22.2 4.4l26.6-17.7c7.3-5 9.3-14.9 4.4-22.3zm-341.1-13.6l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L256 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zm112 0l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L368 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zm112 0l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L480 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zM192 496c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-80h160v80c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V352H192v144z\"]\n};\nvar faDesktop = {\n prefix: 'fas',\n iconName: 'desktop',\n icon: [576, 512, [], \"f108\", \"M528 0H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h192l-16 48h-72c-13.3 0-24 10.7-24 24s10.7 24 24 24h272c13.3 0 24-10.7 24-24s-10.7-24-24-24h-72l-16-48h192c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-16 352H64V64h448v288z\"]\n};\nvar faDharmachakra = {\n prefix: 'fas',\n iconName: 'dharmachakra',\n icon: [512, 512, [], \"f655\", \"M495 225.06l-17.22 1.08c-5.27-39.49-20.79-75.64-43.86-105.84l12.95-11.43c6.92-6.11 7.25-16.79.73-23.31L426.44 64.4c-6.53-6.53-17.21-6.19-23.31.73L391.7 78.07c-30.2-23.06-66.35-38.58-105.83-43.86L286.94 17c.58-9.21-6.74-17-15.97-17h-29.94c-9.23 0-16.54 7.79-15.97 17l1.08 17.22c-39.49 5.27-75.64 20.79-105.83 43.86l-11.43-12.95c-6.11-6.92-16.79-7.25-23.31-.73L64.4 85.56c-6.53 6.53-6.19 17.21.73 23.31l12.95 11.43c-23.06 30.2-38.58 66.35-43.86 105.84L17 225.06c-9.21-.58-17 6.74-17 15.97v29.94c0 9.23 7.79 16.54 17 15.97l17.22-1.08c5.27 39.49 20.79 75.64 43.86 105.83l-12.95 11.43c-6.92 6.11-7.25 16.79-.73 23.31l21.17 21.17c6.53 6.53 17.21 6.19 23.31-.73l11.43-12.95c30.2 23.06 66.35 38.58 105.84 43.86L225.06 495c-.58 9.21 6.74 17 15.97 17h29.94c9.23 0 16.54-7.79 15.97-17l-1.08-17.22c39.49-5.27 75.64-20.79 105.84-43.86l11.43 12.95c6.11 6.92 16.79 7.25 23.31.73l21.17-21.17c6.53-6.53 6.19-17.21-.73-23.31l-12.95-11.43c23.06-30.2 38.58-66.35 43.86-105.83l17.22 1.08c9.21.58 17-6.74 17-15.97v-29.94c-.01-9.23-7.8-16.54-17.01-15.97zM281.84 98.61c24.81 4.07 47.63 13.66 67.23 27.78l-42.62 48.29c-8.73-5.44-18.32-9.54-28.62-11.95l4.01-64.12zm-51.68 0l4.01 64.12c-10.29 2.41-19.89 6.52-28.62 11.95l-42.62-48.29c19.6-14.12 42.42-23.71 67.23-27.78zm-103.77 64.33l48.3 42.61c-5.44 8.73-9.54 18.33-11.96 28.62l-64.12-4.01c4.07-24.81 13.66-47.62 27.78-67.22zm-27.78 118.9l64.12-4.01c2.41 10.29 6.52 19.89 11.95 28.62l-48.29 42.62c-14.12-19.6-23.71-42.42-27.78-67.23zm131.55 131.55c-24.81-4.07-47.63-13.66-67.23-27.78l42.61-48.3c8.73 5.44 18.33 9.54 28.62 11.96l-4 64.12zM256 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm25.84 125.39l-4.01-64.12c10.29-2.41 19.89-6.52 28.62-11.96l42.61 48.3c-19.6 14.12-42.41 23.71-67.22 27.78zm103.77-64.33l-48.29-42.62c5.44-8.73 9.54-18.32 11.95-28.62l64.12 4.01c-4.07 24.82-13.66 47.64-27.78 67.23zm-36.34-114.89c-2.41-10.29-6.52-19.89-11.96-28.62l48.3-42.61c14.12 19.6 23.71 42.42 27.78 67.23l-64.12 4z\"]\n};\nvar faDiagnoses = {\n prefix: 'fas',\n iconName: 'diagnoses',\n icon: [640, 512, [], \"f470\", \"M496 256c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm-176-80c48.5 0 88-39.5 88-88S368.5 0 320 0s-88 39.5-88 88 39.5 88 88 88zM59.8 364c10.2 15.3 29.3 17.8 42.9 9.8 16.2-9.6 56.2-31.7 105.3-48.6V416h224v-90.7c49.1 16.8 89.1 39 105.3 48.6 13.6 8 32.7 5.3 42.9-9.8l17.8-26.7c8.8-13.2 7.6-34.6-10-45.1-11.9-7.1-29.7-17-51.1-27.4-28.1 46.1-99.4 17.8-87.7-35.1C409.3 217.2 365.1 208 320 208c-57 0-112.9 14.5-160 32.2-.2 40.2-47.6 63.3-79.2 36-11.2 6-21.3 11.6-28.7 16-17.6 10.5-18.8 31.8-10 45.1L59.8 364zM368 344c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-96-96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-160 8c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm512 192H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z\"]\n};\nvar faDice = {\n prefix: 'fas',\n iconName: 'dice',\n icon: [640, 512, [], \"f522\", \"M592 192H473.26c12.69 29.59 7.12 65.2-17 89.32L320 417.58V464c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48V240c0-26.51-21.49-48-48-48zM480 376c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm-46.37-186.7L258.7 14.37c-19.16-19.16-50.23-19.16-69.39 0L14.37 189.3c-19.16 19.16-19.16 50.23 0 69.39L189.3 433.63c19.16 19.16 50.23 19.16 69.39 0L433.63 258.7c19.16-19.17 19.16-50.24 0-69.4zM96 248c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm128 128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm0-128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm0-128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm128 128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faDiceD20 = {\n prefix: 'fas',\n iconName: 'dice-d20',\n icon: [480, 512, [], \"f6cf\", \"M106.75 215.06L1.2 370.95c-3.08 5 .1 11.5 5.93 12.14l208.26 22.07-108.64-190.1zM7.41 315.43L82.7 193.08 6.06 147.1c-2.67-1.6-6.06.32-6.06 3.43v162.81c0 4.03 5.29 5.53 7.41 2.09zM18.25 423.6l194.4 87.66c5.3 2.45 11.35-1.43 11.35-7.26v-65.67l-203.55-22.3c-4.45-.5-6.23 5.59-2.2 7.57zm81.22-257.78L179.4 22.88c4.34-7.06-3.59-15.25-10.78-11.14L17.81 110.35c-2.47 1.62-2.39 5.26.13 6.78l81.53 48.69zM240 176h109.21L253.63 7.62C250.5 2.54 245.25 0 240 0s-10.5 2.54-13.63 7.62L130.79 176H240zm233.94-28.9l-76.64 45.99 75.29 122.35c2.11 3.44 7.41 1.94 7.41-2.1V150.53c0-3.11-3.39-5.03-6.06-3.43zm-93.41 18.72l81.53-48.7c2.53-1.52 2.6-5.16.13-6.78l-150.81-98.6c-7.19-4.11-15.12 4.08-10.78 11.14l79.93 142.94zm79.02 250.21L256 438.32v65.67c0 5.84 6.05 9.71 11.35 7.26l194.4-87.66c4.03-1.97 2.25-8.06-2.2-7.56zm-86.3-200.97l-108.63 190.1 208.26-22.07c5.83-.65 9.01-7.14 5.93-12.14L373.25 215.06zM240 208H139.57L240 383.75 340.43 208H240z\"]\n};\nvar faDiceD6 = {\n prefix: 'fas',\n iconName: 'dice-d6',\n icon: [448, 512, [], \"f6d1\", \"M422.19 109.95L256.21 9.07c-19.91-12.1-44.52-12.1-64.43 0L25.81 109.95c-5.32 3.23-5.29 11.27.06 14.46L224 242.55l198.14-118.14c5.35-3.19 5.38-11.22.05-14.46zm13.84 44.63L240 271.46v223.82c0 12.88 13.39 20.91 24.05 14.43l152.16-92.48c19.68-11.96 31.79-33.94 31.79-57.7v-197.7c0-6.41-6.64-10.43-11.97-7.25zM0 161.83v197.7c0 23.77 12.11 45.74 31.79 57.7l152.16 92.47c10.67 6.48 24.05-1.54 24.05-14.43V271.46L11.97 154.58C6.64 151.4 0 155.42 0 161.83z\"]\n};\nvar faDiceFive = {\n prefix: 'fas',\n iconName: 'dice-five',\n icon: [448, 512, [], \"f523\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceFour = {\n prefix: 'fas',\n iconName: 'dice-four',\n icon: [448, 512, [], \"f524\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceOne = {\n prefix: 'fas',\n iconName: 'dice-one',\n icon: [448, 512, [], \"f525\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM224 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceSix = {\n prefix: 'fas',\n iconName: 'dice-six',\n icon: [448, 512, [], \"f526\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceThree = {\n prefix: 'fas',\n iconName: 'dice-three',\n icon: [448, 512, [], \"f527\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceTwo = {\n prefix: 'fas',\n iconName: 'dice-two',\n icon: [448, 512, [], \"f528\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDigitalTachograph = {\n prefix: 'fas',\n iconName: 'digital-tachograph',\n icon: [640, 512, [], \"f566\", \"M608 96H32c-17.67 0-32 14.33-32 32v256c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V128c0-17.67-14.33-32-32-32zM304 352c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-8c0-4.42 3.58-8 8-8h224c4.42 0 8 3.58 8 8v8zM72 288v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H80c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm40-64c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-48c0-8.84 7.16-16 16-16h208c8.84 0 16 7.16 16 16v48zm272 128c0 4.42-3.58 8-8 8H344c-4.42 0-8-3.58-8-8v-8c0-4.42 3.58-8 8-8h224c4.42 0 8 3.58 8 8v8z\"]\n};\nvar faDirections = {\n prefix: 'fas',\n iconName: 'directions',\n icon: [512, 512, [], \"f5eb\", \"M502.61 233.32L278.68 9.39c-12.52-12.52-32.83-12.52-45.36 0L9.39 233.32c-12.52 12.53-12.52 32.83 0 45.36l223.93 223.93c12.52 12.53 32.83 12.53 45.36 0l223.93-223.93c12.52-12.53 12.52-32.83 0-45.36zm-100.98 12.56l-84.21 77.73c-5.12 4.73-13.43 1.1-13.43-5.88V264h-96v64c0 4.42-3.58 8-8 8h-32c-4.42 0-8-3.58-8-8v-80c0-17.67 14.33-32 32-32h112v-53.73c0-6.97 8.3-10.61 13.43-5.88l84.21 77.73c3.43 3.17 3.43 8.59 0 11.76z\"]\n};\nvar faDisease = {\n prefix: 'fas',\n iconName: 'disease',\n icon: [512, 512, [], \"f7fa\", \"M472.29 195.9l-67.06-23c-19.28-6.6-33.54-20.92-38.14-38.31l-16-60.45c-11.58-43.77-76.57-57.13-110-22.62L195 99.24c-13.26 13.71-33.54 20.93-54.2 19.31l-71.9-5.62c-52-4.07-86.93 44.89-59 82.84l38.54 52.42c11.08 15.07 12.82 33.86 4.64 50.24l-28.43 57C4 396.67 47.46 440.29 98.11 429.23l70-15.28c20.11-4.39 41.45 0 57.07 11.73l54.32 40.83c39.32 29.56 101 7.57 104.45-37.22l4.7-61.86c1.35-17.8 12.8-33.87 30.63-43l62-31.74c44.84-22.96 39.55-80.17-8.99-96.79zM160 256a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm128 96a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm16-128a16 16 0 1 1 16-16 16 16 0 0 1-16 16z\"]\n};\nvar faDivide = {\n prefix: 'fas',\n iconName: 'divide',\n icon: [448, 512, [], \"f529\", \"M224 352c-35.35 0-64 28.65-64 64s28.65 64 64 64 64-28.65 64-64-28.65-64-64-64zm0-192c35.35 0 64-28.65 64-64s-28.65-64-64-64-64 28.65-64 64 28.65 64 64 64zm192 48H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"]\n};\nvar faDizzy = {\n prefix: 'fas',\n iconName: 'dizzy',\n icon: [496, 512, [], \"f567\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-96 206.6l-28.7 28.7c-14.8 14.8-37.8-7.5-22.6-22.6l28.7-28.7-28.7-28.7c-15-15 7.7-37.6 22.6-22.6l28.7 28.7 28.7-28.7c15-15 37.6 7.7 22.6 22.6L174.6 192l28.7 28.7c15.2 15.2-7.9 37.4-22.6 22.6L152 214.6zM248 416c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm147.3-195.3c15.2 15.2-7.9 37.4-22.6 22.6L344 214.6l-28.7 28.7c-14.8 14.8-37.8-7.5-22.6-22.6l28.7-28.7-28.7-28.7c-15-15 7.7-37.6 22.6-22.6l28.7 28.7 28.7-28.7c15-15 37.6 7.7 22.6 22.6L366.6 192l28.7 28.7z\"]\n};\nvar faDna = {\n prefix: 'fas',\n iconName: 'dna',\n icon: [448, 512, [], \"f471\", \"M.1 494.1c-1.1 9.5 6.3 17.8 15.9 17.8l32.3.1c8.1 0 14.9-5.9 16-13.9.7-4.9 1.8-11.1 3.4-18.1H380c1.6 6.9 2.9 13.2 3.5 18.1 1.1 8 7.9 14 16 13.9l32.3-.1c9.6 0 17.1-8.3 15.9-17.8-4.6-37.9-25.6-129-118.9-207.7-17.6 12.4-37.1 24.2-58.5 35.4 6.2 4.6 11.4 9.4 17 14.2H159.7c21.3-18.1 47-35.6 78.7-51.4C410.5 199.1 442.1 65.8 447.9 17.9 449 8.4 441.6.1 432 .1L399.6 0c-8.1 0-14.9 5.9-16 13.9-.7 4.9-1.8 11.1-3.4 18.1H67.8c-1.6-7-2.7-13.1-3.4-18.1-1.1-8-7.9-14-16-13.9L16.1.1C6.5.1-1 8.4.1 17.9 5.3 60.8 31.4 171.8 160 256 31.5 340.2 5.3 451.2.1 494.1zM224 219.6c-25.1-13.7-46.4-28.4-64.3-43.6h128.5c-17.8 15.2-39.1 30-64.2 43.6zM355.1 96c-5.8 10.4-12.8 21.1-21 32H114c-8.3-10.9-15.3-21.6-21-32h262.1zM92.9 416c5.8-10.4 12.8-21.1 21-32h219.4c8.3 10.9 15.4 21.6 21.2 32H92.9z\"]\n};\nvar faDog = {\n prefix: 'fas',\n iconName: 'dog',\n icon: [576, 512, [], \"f6d3\", \"M298.06,224,448,277.55V496a16,16,0,0,1-16,16H368a16,16,0,0,1-16-16V384H192V496a16,16,0,0,1-16,16H112a16,16,0,0,1-16-16V282.09C58.84,268.84,32,233.66,32,192a32,32,0,0,1,64,0,32.06,32.06,0,0,0,32,32ZM544,112v32a64,64,0,0,1-64,64H448v35.58L320,197.87V48c0-14.25,17.22-21.39,27.31-11.31L374.59,64h53.63c10.91,0,23.75,7.92,28.62,17.69L464,96h64A16,16,0,0,1,544,112Zm-112,0a16,16,0,1,0-16,16A16,16,0,0,0,432,112Z\"]\n};\nvar faDollarSign = {\n prefix: 'fas',\n iconName: 'dollar-sign',\n icon: [288, 512, [], \"f155\", \"M209.2 233.4l-108-31.6C88.7 198.2 80 186.5 80 173.5c0-16.3 13.2-29.5 29.5-29.5h66.3c12.2 0 24.2 3.7 34.2 10.5 6.1 4.1 14.3 3.1 19.5-2l34.8-34c7.1-6.9 6.1-18.4-1.8-24.5C238 74.8 207.4 64.1 176 64V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48h-2.5C45.8 64-5.4 118.7.5 183.6c4.2 46.1 39.4 83.6 83.8 96.6l102.5 30c12.5 3.7 21.2 15.3 21.2 28.3 0 16.3-13.2 29.5-29.5 29.5h-66.3C100 368 88 364.3 78 357.5c-6.1-4.1-14.3-3.1-19.5 2l-34.8 34c-7.1 6.9-6.1 18.4 1.8 24.5 24.5 19.2 55.1 29.9 86.5 30v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-48.2c46.6-.9 90.3-28.6 105.7-72.7 21.5-61.6-14.6-124.8-72.5-141.7z\"]\n};\nvar faDolly = {\n prefix: 'fas',\n iconName: 'dolly',\n icon: [576, 512, [], \"f472\", \"M294.2 277.7c18 5 34.7 13.4 49.5 24.7l161.5-53.8c8.4-2.8 12.9-11.9 10.1-20.2L454.9 47.2c-2.8-8.4-11.9-12.9-20.2-10.1l-61.1 20.4 33.1 99.4L346 177l-33.1-99.4-61.6 20.5c-8.4 2.8-12.9 11.9-10.1 20.2l53 159.4zm281 48.7L565 296c-2.8-8.4-11.9-12.9-20.2-10.1l-213.5 71.2c-17.2-22-43.6-36.4-73.5-37L158.4 21.9C154 8.8 141.8 0 128 0H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h88.9l92.2 276.7c-26.1 20.4-41.7 53.6-36 90.5 6.1 39.4 37.9 72.3 77.3 79.2 60.2 10.7 112.3-34.8 113.4-92.6l213.3-71.2c8.3-2.8 12.9-11.8 10.1-20.2zM256 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\"]\n};\nvar faDollyFlatbed = {\n prefix: 'fas',\n iconName: 'dolly-flatbed',\n icon: [640, 512, [], \"f474\", \"M208 320h384c8.8 0 16-7.2 16-16V48c0-8.8-7.2-16-16-16H448v128l-48-32-48 32V32H208c-8.8 0-16 7.2-16 16v256c0 8.8 7.2 16 16 16zm416 64H128V16c0-8.8-7.2-16-16-16H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h48v368c0 8.8 7.2 16 16 16h82.9c-1.8 5-2.9 10.4-2.9 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1.2-11-2.9-16H451c-1.8 5-2.9 10.4-2.9 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1.2-11-2.9-16H624c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z\"]\n};\nvar faDonate = {\n prefix: 'fas',\n iconName: 'donate',\n icon: [512, 512, [], \"f4b9\", \"M256 416c114.9 0 208-93.1 208-208S370.9 0 256 0 48 93.1 48 208s93.1 208 208 208zM233.8 97.4V80.6c0-9.2 7.4-16.6 16.6-16.6h11.1c9.2 0 16.6 7.4 16.6 16.6v17c15.5.8 30.5 6.1 43 15.4 5.6 4.1 6.2 12.3 1.2 17.1L306 145.6c-3.8 3.7-9.5 3.8-14 1-5.4-3.4-11.4-5.1-17.8-5.1h-38.9c-9 0-16.3 8.2-16.3 18.3 0 8.2 5 15.5 12.1 17.6l62.3 18.7c25.7 7.7 43.7 32.4 43.7 60.1 0 34-26.4 61.5-59.1 62.4v16.8c0 9.2-7.4 16.6-16.6 16.6h-11.1c-9.2 0-16.6-7.4-16.6-16.6v-17c-15.5-.8-30.5-6.1-43-15.4-5.6-4.1-6.2-12.3-1.2-17.1l16.3-15.5c3.8-3.7 9.5-3.8 14-1 5.4 3.4 11.4 5.1 17.8 5.1h38.9c9 0 16.3-8.2 16.3-18.3 0-8.2-5-15.5-12.1-17.6l-62.3-18.7c-25.7-7.7-43.7-32.4-43.7-60.1.1-34 26.4-61.5 59.1-62.4zM480 352h-32.5c-19.6 26-44.6 47.7-73 64h63.8c5.3 0 9.6 3.6 9.6 8v16c0 4.4-4.3 8-9.6 8H73.6c-5.3 0-9.6-3.6-9.6-8v-16c0-4.4 4.3-8 9.6-8h63.8c-28.4-16.3-53.3-38-73-64H32c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32v-96c0-17.7-14.3-32-32-32z\"]\n};\nvar faDoorClosed = {\n prefix: 'fas',\n iconName: 'door-closed',\n icon: [640, 512, [], \"f52a\", \"M624 448H512V50.8C512 22.78 490.47 0 464 0H175.99c-26.47 0-48 22.78-48 50.8V448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM415.99 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32c.01 17.67-14.32 32-32 32z\"]\n};\nvar faDoorOpen = {\n prefix: 'fas',\n iconName: 'door-open',\n icon: [640, 512, [], \"f52b\", \"M624 448h-80V113.45C544 86.19 522.47 64 496 64H384v64h96v384h144c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM312.24 1.01l-192 49.74C105.99 54.44 96 67.7 96 82.92V448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h336V33.18c0-21.58-19.56-37.41-39.76-32.17zM264 288c-13.25 0-24-14.33-24-32s10.75-32 24-32 24 14.33 24 32-10.75 32-24 32z\"]\n};\nvar faDotCircle = {\n prefix: 'fas',\n iconName: 'dot-circle',\n icon: [512, 512, [], \"f192\", \"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm80 248c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80z\"]\n};\nvar faDove = {\n prefix: 'fas',\n iconName: 'dove',\n icon: [512, 512, [], \"f4ba\", \"M288 167.2v-28.1c-28.2-36.3-47.1-79.3-54.1-125.2-2.1-13.5-19-18.8-27.8-8.3-21.1 24.9-37.7 54.1-48.9 86.5 34.2 38.3 80 64.6 130.8 75.1zM400 64c-44.2 0-80 35.9-80 80.1v59.4C215.6 197.3 127 133 87 41.8c-5.5-12.5-23.2-13.2-29-.9C41.4 76 32 115.2 32 156.6c0 70.8 34.1 136.9 85.1 185.9 13.2 12.7 26.1 23.2 38.9 32.8l-143.9 36C1.4 414-3.4 426.4 2.6 435.7 20 462.6 63 508.2 155.8 512c8 .3 16-2.6 22.1-7.9l65.2-56.1H320c88.4 0 160-71.5 160-159.9V128l32-64H400zm0 96.1c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\"]\n};\nvar faDownload = {\n prefix: 'fas',\n iconName: 'download',\n icon: [512, 512, [], \"f019\", \"M216 0h80c13.3 0 24 10.7 24 24v168h87.7c17.8 0 26.7 21.5 14.1 34.1L269.7 378.3c-7.5 7.5-19.8 7.5-27.3 0L90.1 226.1c-12.6-12.6-3.7-34.1 14.1-34.1H192V24c0-13.3 10.7-24 24-24zm296 376v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h146.7l49 49c20.1 20.1 52.5 20.1 72.6 0l49-49H488c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z\"]\n};\nvar faDraftingCompass = {\n prefix: 'fas',\n iconName: 'drafting-compass',\n icon: [512, 512, [], \"f568\", \"M457.01 344.42c-25.05 20.33-52.63 37.18-82.54 49.05l54.38 94.19 53.95 23.04c9.81 4.19 20.89-2.21 22.17-12.8l7.02-58.25-54.98-95.23zm42.49-94.56c4.86-7.67 1.89-17.99-6.05-22.39l-28.07-15.57c-7.48-4.15-16.61-1.46-21.26 5.72C403.01 281.15 332.25 320 256 320c-23.93 0-47.23-4.25-69.41-11.53l67.36-116.68c.7.02 1.34.21 2.04.21s1.35-.19 2.04-.21l51.09 88.5c31.23-8.96 59.56-25.75 82.61-48.92l-51.79-89.71C347.39 128.03 352 112.63 352 96c0-53.02-42.98-96-96-96s-96 42.98-96 96c0 16.63 4.61 32.03 12.05 45.66l-68.3 118.31c-12.55-11.61-23.96-24.59-33.68-39-4.79-7.1-13.97-9.62-21.38-5.33l-27.75 16.07c-7.85 4.54-10.63 14.9-5.64 22.47 15.57 23.64 34.69 44.21 55.98 62.02L0 439.66l7.02 58.25c1.28 10.59 12.36 16.99 22.17 12.8l53.95-23.04 70.8-122.63C186.13 377.28 220.62 384 256 384c99.05 0 190.88-51.01 243.5-134.14zM256 64c17.67 0 32 14.33 32 32s-14.33 32-32 32-32-14.33-32-32 14.33-32 32-32z\"]\n};\nvar faDragon = {\n prefix: 'fas',\n iconName: 'dragon',\n icon: [640, 512, [], \"f6d5\", \"M18.32 255.78L192 223.96l-91.28 68.69c-10.08 10.08-2.94 27.31 11.31 27.31h222.7c-9.44-26.4-14.73-54.47-14.73-83.38v-42.27l-119.73-87.6c-23.82-15.88-55.29-14.01-77.06 4.59L5.81 227.64c-12.38 10.33-3.45 30.42 12.51 28.14zm556.87 34.1l-100.66-50.31A47.992 47.992 0 0 1 448 196.65v-36.69h64l28.09 22.63c6 6 14.14 9.37 22.63 9.37h30.97a32 32 0 0 0 28.62-17.69l14.31-28.62a32.005 32.005 0 0 0-3.02-33.51l-74.53-99.38C553.02 4.7 543.54 0 533.47 0H296.02c-7.13 0-10.7 8.57-5.66 13.61L352 63.96 292.42 88.8c-5.9 2.95-5.9 11.36 0 14.31L352 127.96v108.62c0 72.08 36.03 139.39 96 179.38-195.59 6.81-344.56 41.01-434.1 60.91C5.78 478.67 0 485.88 0 494.2 0 504 7.95 512 17.76 512h499.08c63.29.01 119.61-47.56 122.99-110.76 2.52-47.28-22.73-90.4-64.64-111.36zM489.18 66.25l45.65 11.41c-2.75 10.91-12.47 18.89-24.13 18.26-12.96-.71-25.85-12.53-21.52-29.67z\"]\n};\nvar faDrawPolygon = {\n prefix: 'fas',\n iconName: 'draw-polygon',\n icon: [448, 512, [], \"f5ee\", \"M384 352c-.35 0-.67.1-1.02.1l-39.2-65.32c5.07-9.17 8.22-19.56 8.22-30.78s-3.14-21.61-8.22-30.78l39.2-65.32c.35.01.67.1 1.02.1 35.35 0 64-28.65 64-64s-28.65-64-64-64c-23.63 0-44.04 12.95-55.12 32H119.12C108.04 44.95 87.63 32 64 32 28.65 32 0 60.65 0 96c0 23.63 12.95 44.04 32 55.12v209.75C12.95 371.96 0 392.37 0 416c0 35.35 28.65 64 64 64 23.63 0 44.04-12.95 55.12-32h209.75c11.09 19.05 31.49 32 55.12 32 35.35 0 64-28.65 64-64 .01-35.35-28.64-64-63.99-64zm-288 8.88V151.12A63.825 63.825 0 0 0 119.12 128h208.36l-38.46 64.1c-.35-.01-.67-.1-1.02-.1-35.35 0-64 28.65-64 64s28.65 64 64 64c.35 0 .67-.1 1.02-.1l38.46 64.1H119.12A63.748 63.748 0 0 0 96 360.88zM272 256c0-8.82 7.18-16 16-16s16 7.18 16 16-7.18 16-16 16-16-7.18-16-16zM400 96c0 8.82-7.18 16-16 16s-16-7.18-16-16 7.18-16 16-16 16 7.18 16 16zM64 80c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16zM48 416c0-8.82 7.18-16 16-16s16 7.18 16 16-7.18 16-16 16-16-7.18-16-16zm336 16c-8.82 0-16-7.18-16-16s7.18-16 16-16 16 7.18 16 16-7.18 16-16 16z\"]\n};\nvar faDrum = {\n prefix: 'fas',\n iconName: 'drum',\n icon: [512, 512, [], \"f569\", \"M431.34 122.05l73.53-47.42a16 16 0 0 0 4.44-22.19l-8.87-13.31a16 16 0 0 0-22.19-4.44l-110.06 71C318.43 96.91 271.22 96 256 96 219.55 96 0 100.55 0 208.15v160.23c0 30.27 27.5 57.68 72 77.86v-101.9a24 24 0 1 1 48 0v118.93c33.05 9.11 71.07 15.06 112 16.73V376.39a24 24 0 1 1 48 0V480c40.93-1.67 78.95-7.62 112-16.73V344.34a24 24 0 1 1 48 0v101.9c44.5-20.18 72-47.59 72-77.86V208.15c0-43.32-35.76-69.76-80.66-86.1zM256 272.24c-114.88 0-208-28.69-208-64.09s93.12-64.08 208-64.08c17.15 0 33.73.71 49.68 1.91l-72.81 47a16 16 0 0 0-4.43 22.19l8.87 13.31a16 16 0 0 0 22.19 4.44l118.64-76.52C430.09 168 464 186.84 464 208.15c0 35.4-93.13 64.09-208 64.09z\"]\n};\nvar faDrumSteelpan = {\n prefix: 'fas',\n iconName: 'drum-steelpan',\n icon: [576, 512, [], \"f56a\", \"M288 32C128.94 32 0 89.31 0 160v192c0 70.69 128.94 128 288 128s288-57.31 288-128V160c0-70.69-128.94-128-288-128zm-82.99 158.36c-4.45 16.61-14.54 30.57-28.31 40.48C100.23 217.46 48 190.78 48 160c0-30.16 50.11-56.39 124.04-70.03l25.6 44.34c9.86 17.09 12.48 36.99 7.37 56.05zM288 240c-21.08 0-41.41-1-60.89-2.7 8.06-26.13 32.15-45.3 60.89-45.3s52.83 19.17 60.89 45.3C329.41 239 309.08 240 288 240zm64-144c0 35.29-28.71 64-64 64s-64-28.71-64-64V82.96c20.4-1.88 41.8-2.96 64-2.96s43.6 1.08 64 2.96V96zm46.93 134.9c-13.81-9.91-23.94-23.9-28.4-40.54-5.11-19.06-2.49-38.96 7.38-56.04l25.65-44.42C477.72 103.5 528 129.79 528 160c0 30.83-52.4 57.54-129.07 70.9z\"]\n};\nvar faDrumstickBite = {\n prefix: 'fas',\n iconName: 'drumstick-bite',\n icon: [512, 512, [], \"f6d7\", \"M462.8 49.57a169.44 169.44 0 0 0-239.5 0C187.82 85 160.13 128 160.13 192v85.83l-40.62 40.59c-9.7 9.69-24 11.07-36.78 6a60.33 60.33 0 0 0-65 98.72C33 438.39 54.24 442.7 73.85 438.21c-4.5 19.6-.18 40.83 15.1 56.1a60.35 60.35 0 0 0 98.8-65c-5.09-12.73-3.72-27 6-36.75L234.36 352h85.89a187.87 187.87 0 0 0 61.89-10c-39.64-43.89-39.83-110.23 1.05-151.07 34.38-34.36 86.76-39.46 128.74-16.8 1.3-44.96-14.81-90.28-49.13-124.56z\"]\n};\nvar faDumbbell = {\n prefix: 'fas',\n iconName: 'dumbbell',\n icon: [640, 512, [], \"f44b\", \"M104 96H56c-13.3 0-24 10.7-24 24v104H8c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h24v104c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V120c0-13.3-10.7-24-24-24zm528 128h-24V120c0-13.3-10.7-24-24-24h-48c-13.3 0-24 10.7-24 24v272c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V288h24c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM456 32h-48c-13.3 0-24 10.7-24 24v168H256V56c0-13.3-10.7-24-24-24h-48c-13.3 0-24 10.7-24 24v400c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V288h128v168c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24z\"]\n};\nvar faDumpster = {\n prefix: 'fas',\n iconName: 'dumpster',\n icon: [576, 512, [], \"f793\", \"M560 160c10.4 0 18-9.8 15.5-19.9l-24-96C549.7 37 543.3 32 536 32h-98.9l25.6 128H560zM272 32H171.5l-25.6 128H272V32zm132.5 0H304v128h126.1L404.5 32zM16 160h97.3l25.6-128H40c-7.3 0-13.7 5-15.5 12.1l-24 96C-2 150.2 5.6 160 16 160zm544 64h-20l4-32H32l4 32H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h28l20 160v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h320v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16l20-160h28c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z\"]\n};\nvar faDumpsterFire = {\n prefix: 'fas',\n iconName: 'dumpster-fire',\n icon: [640, 512, [], \"f794\", \"M418.7 104.1l.2-.2-14.4-72H304v128h60.8c16.2-19.3 34.2-38.2 53.9-55.8zM272 32H171.5l-25.6 128H272V32zm189.3 72.1c18.2 16.3 35.5 33.7 51.1 51.5 5.7-5.6 11.4-11.1 17.3-16.3l21.3-19 21.3 19c1.1.9 2.1 2.1 3.1 3.1-.1-.8.2-1.5 0-2.3l-24-96C549.7 37 543.3 32 536 32h-98.9l12.3 61.5 11.9 10.6zM16 160h97.3l25.6-128H40c-7.3 0-13.7 5-15.5 12.1l-24 96C-2 150.2 5.6 160 16 160zm324.6 32H32l4 32H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h28l20 160v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h208.8c-30.2-33.7-48.8-77.9-48.8-126.4 0-35.9 19.9-82.9 52.6-129.6zm210.5-28.8c-14.9 13.3-28.3 27.2-40.2 41.2-19.5-25.8-43.6-52-71-76.4-70.2 62.7-120 144.3-120 193.6 0 87.5 71.6 158.4 160 158.4s160-70.9 160-158.4c.1-36.6-37-112.2-88.8-158.4zm-18.6 229.4c-14.7 10.7-32.9 17-52.5 17-49 0-88.9-33.5-88.9-88 0-27.1 16.5-51 49.4-91.9 4.7 5.6 67.1 88.1 67.1 88.1l39.8-47c2.8 4.8 5.4 9.5 7.7 14 18.6 36.7 10.8 83.6-22.6 107.8z\"]\n};\nvar faDungeon = {\n prefix: 'fas',\n iconName: 'dungeon',\n icon: [512, 512, [], \"f6d9\", \"M128.73 195.32l-82.81-51.76c-8.04-5.02-18.99-2.17-22.93 6.45A254.19 254.19 0 0 0 .54 239.28C-.05 248.37 7.59 256 16.69 256h97.13c7.96 0 14.08-6.25 15.01-14.16 1.09-9.33 3.24-18.33 6.24-26.94 2.56-7.34.25-15.46-6.34-19.58zM319.03 8C298.86 2.82 277.77 0 256 0s-42.86 2.82-63.03 8c-9.17 2.35-13.91 12.6-10.39 21.39l37.47 104.03A16.003 16.003 0 0 0 235.1 144h41.8c6.75 0 12.77-4.23 15.05-10.58l37.47-104.03c3.52-8.79-1.22-19.03-10.39-21.39zM112 288H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm0 128H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm77.31-283.67l-36.32-90.8c-3.53-8.83-14.13-12.99-22.42-8.31a257.308 257.308 0 0 0-71.61 59.89c-6.06 7.32-3.85 18.48 4.22 23.52l82.93 51.83c6.51 4.07 14.66 2.62 20.11-2.79 5.18-5.15 10.79-9.85 16.79-14.05 6.28-4.41 9.15-12.17 6.3-19.29zM398.18 256h97.13c9.1 0 16.74-7.63 16.15-16.72a254.135 254.135 0 0 0-22.45-89.27c-3.94-8.62-14.89-11.47-22.93-6.45l-82.81 51.76c-6.59 4.12-8.9 12.24-6.34 19.58 3.01 8.61 5.15 17.62 6.24 26.94.93 7.91 7.05 14.16 15.01 14.16zm54.85-162.89a257.308 257.308 0 0 0-71.61-59.89c-8.28-4.68-18.88-.52-22.42 8.31l-36.32 90.8c-2.85 7.12.02 14.88 6.3 19.28 6 4.2 11.61 8.9 16.79 14.05 5.44 5.41 13.6 6.86 20.11 2.79l82.93-51.83c8.07-5.03 10.29-16.19 4.22-23.51zM496 288h-96c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm0 128h-96c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zM240 177.62V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V177.62c-5.23-.89-10.52-1.62-16-1.62s-10.77.73-16 1.62zm-64 41.51V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V189.36c-12.78 7.45-23.84 17.47-32 29.77zm128-29.77V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V219.13c-8.16-12.3-19.22-22.32-32-29.77z\"]\n};\nvar faEdit = {\n prefix: 'fas',\n iconName: 'edit',\n icon: [576, 512, [], \"f044\", \"M402.6 83.2l90.2 90.2c3.8 3.8 3.8 10 0 13.8L274.4 405.6l-92.8 10.3c-12.4 1.4-22.9-9.1-21.5-21.5l10.3-92.8L388.8 83.2c3.8-3.8 10-3.8 13.8 0zm162-22.9l-48.8-48.8c-15.2-15.2-39.9-15.2-55.2 0l-35.4 35.4c-3.8 3.8-3.8 10 0 13.8l90.2 90.2c3.8 3.8 10 3.8 13.8 0l35.4-35.4c15.2-15.3 15.2-40 0-55.2zM384 346.2V448H64V128h229.8c3.2 0 6.2-1.3 8.5-3.5l40-40c7.6-7.6 2.2-20.5-8.5-20.5H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V306.2c0-10.7-12.9-16-20.5-8.5l-40 40c-2.2 2.3-3.5 5.3-3.5 8.5z\"]\n};\nvar faEgg = {\n prefix: 'fas',\n iconName: 'egg',\n icon: [384, 512, [], \"f7fb\", \"M192 0C86 0 0 214 0 320s86 192 192 192 192-86 192-192S298 0 192 0z\"]\n};\nvar faEject = {\n prefix: 'fas',\n iconName: 'eject',\n icon: [448, 512, [], \"f052\", \"M448 384v64c0 17.673-14.327 32-32 32H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h384c17.673 0 32 14.327 32 32zM48.053 320h351.886c41.651 0 63.581-49.674 35.383-80.435L259.383 47.558c-19.014-20.743-51.751-20.744-70.767 0L12.67 239.565C-15.475 270.268 6.324 320 48.053 320z\"]\n};\nvar faEllipsisH = {\n prefix: 'fas',\n iconName: 'ellipsis-h',\n icon: [512, 512, [], \"f141\", \"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"]\n};\nvar faEllipsisV = {\n prefix: 'fas',\n iconName: 'ellipsis-v',\n icon: [192, 512, [], \"f142\", \"M96 184c39.8 0 72 32.2 72 72s-32.2 72-72 72-72-32.2-72-72 32.2-72 72-72zM24 80c0 39.8 32.2 72 72 72s72-32.2 72-72S135.8 8 96 8 24 40.2 24 80zm0 352c0 39.8 32.2 72 72 72s72-32.2 72-72-32.2-72-72-72-72 32.2-72 72z\"]\n};\nvar faEnvelope = {\n prefix: 'fas',\n iconName: 'envelope',\n icon: [512, 512, [], \"f0e0\", \"M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z\"]\n};\nvar faEnvelopeOpen = {\n prefix: 'fas',\n iconName: 'envelope-open',\n icon: [512, 512, [], \"f2b6\", \"M512 464c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V200.724a48 48 0 0 1 18.387-37.776c24.913-19.529 45.501-35.365 164.2-121.511C199.412 29.17 232.797-.347 256 .003c23.198-.354 56.596 29.172 73.413 41.433 118.687 86.137 139.303 101.995 164.2 121.512A48 48 0 0 1 512 200.724V464zm-65.666-196.605c-2.563-3.728-7.7-4.595-11.339-1.907-22.845 16.873-55.462 40.705-105.582 77.079-16.825 12.266-50.21 41.781-73.413 41.43-23.211.344-56.559-29.143-73.413-41.43-50.114-36.37-82.734-60.204-105.582-77.079-3.639-2.688-8.776-1.821-11.339 1.907l-9.072 13.196a7.998 7.998 0 0 0 1.839 10.967c22.887 16.899 55.454 40.69 105.303 76.868 20.274 14.781 56.524 47.813 92.264 47.573 35.724.242 71.961-32.771 92.263-47.573 49.85-36.179 82.418-59.97 105.303-76.868a7.998 7.998 0 0 0 1.839-10.967l-9.071-13.196z\"]\n};\nvar faEnvelopeOpenText = {\n prefix: 'fas',\n iconName: 'envelope-open-text',\n icon: [512, 512, [], \"f658\", \"M176 216h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16zm-16 80c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16zm96 121.13c-16.42 0-32.84-5.06-46.86-15.19L0 250.86V464c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V250.86L302.86 401.94c-14.02 10.12-30.44 15.19-46.86 15.19zm237.61-254.18c-8.85-6.94-17.24-13.47-29.61-22.81V96c0-26.51-21.49-48-48-48h-77.55c-3.04-2.2-5.87-4.26-9.04-6.56C312.6 29.17 279.2-.35 256 0c-23.2-.35-56.59 29.17-73.41 41.44-3.17 2.3-6 4.36-9.04 6.56H96c-26.51 0-48 21.49-48 48v44.14c-12.37 9.33-20.76 15.87-29.61 22.81A47.995 47.995 0 0 0 0 200.72v10.65l96 69.35V96h320v184.72l96-69.35v-10.65c0-14.74-6.78-28.67-18.39-37.77z\"]\n};\nvar faEnvelopeSquare = {\n prefix: 'fas',\n iconName: 'envelope-square',\n icon: [448, 512, [], \"f199\", \"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM178.117 262.104C87.429 196.287 88.353 196.121 64 177.167V152c0-13.255 10.745-24 24-24h272c13.255 0 24 10.745 24 24v25.167c-24.371 18.969-23.434 19.124-114.117 84.938-10.5 7.655-31.392 26.12-45.883 25.894-14.503.218-35.367-18.227-45.883-25.895zM384 217.775V360c0 13.255-10.745 24-24 24H88c-13.255 0-24-10.745-24-24V217.775c13.958 10.794 33.329 25.236 95.303 70.214 14.162 10.341 37.975 32.145 64.694 32.01 26.887.134 51.037-22.041 64.72-32.025 61.958-44.965 81.325-59.406 95.283-70.199z\"]\n};\nvar faEquals = {\n prefix: 'fas',\n iconName: 'equals',\n icon: [448, 512, [], \"f52c\", \"M416 304H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32zm0-192H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"]\n};\nvar faEraser = {\n prefix: 'fas',\n iconName: 'eraser',\n icon: [512, 512, [], \"f12d\", \"M497.941 273.941c18.745-18.745 18.745-49.137 0-67.882l-160-160c-18.745-18.745-49.136-18.746-67.883 0l-256 256c-18.745 18.745-18.745 49.137 0 67.882l96 96A48.004 48.004 0 0 0 144 480h356c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12H355.883l142.058-142.059zm-302.627-62.627l137.373 137.373L265.373 416H150.628l-80-80 124.686-124.686z\"]\n};\nvar faEthernet = {\n prefix: 'fas',\n iconName: 'ethernet',\n icon: [512, 512, [], \"f796\", \"M496 192h-48v-48c0-8.8-7.2-16-16-16h-48V80c0-8.8-7.2-16-16-16H144c-8.8 0-16 7.2-16 16v48H80c-8.8 0-16 7.2-16 16v48H16c-8.8 0-16 7.2-16 16v224c0 8.8 7.2 16 16 16h80V320h32v128h64V320h32v128h64V320h32v128h64V320h32v128h80c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16z\"]\n};\nvar faEuroSign = {\n prefix: 'fas',\n iconName: 'euro-sign',\n icon: [320, 512, [], \"f153\", \"M310.706 413.765c-1.314-6.63-7.835-10.872-14.424-9.369-10.692 2.439-27.422 5.413-45.426 5.413-56.763 0-101.929-34.79-121.461-85.449h113.689a12 12 0 0 0 11.708-9.369l6.373-28.36c1.686-7.502-4.019-14.631-11.708-14.631H115.22c-1.21-14.328-1.414-28.287.137-42.245H261.95a12 12 0 0 0 11.723-9.434l6.512-29.755c1.638-7.484-4.061-14.566-11.723-14.566H130.184c20.633-44.991 62.69-75.03 117.619-75.03 14.486 0 28.564 2.25 37.851 4.145 6.216 1.268 12.347-2.498 14.002-8.623l11.991-44.368c1.822-6.741-2.465-13.616-9.326-14.917C290.217 34.912 270.71 32 249.635 32 152.451 32 74.03 92.252 45.075 176H12c-6.627 0-12 5.373-12 12v29.755c0 6.627 5.373 12 12 12h21.569c-1.009 13.607-1.181 29.287-.181 42.245H12c-6.627 0-12 5.373-12 12v28.36c0 6.627 5.373 12 12 12h30.114C67.139 414.692 145.264 480 249.635 480c26.301 0 48.562-4.544 61.101-7.788 6.167-1.595 10.027-7.708 8.788-13.957l-8.818-44.49z\"]\n};\nvar faExchangeAlt = {\n prefix: 'fas',\n iconName: 'exchange-alt',\n icon: [512, 512, [], \"f362\", \"M0 168v-16c0-13.255 10.745-24 24-24h360V80c0-21.367 25.899-32.042 40.971-16.971l80 80c9.372 9.373 9.372 24.569 0 33.941l-80 80C409.956 271.982 384 261.456 384 240v-48H24c-13.255 0-24-10.745-24-24zm488 152H128v-48c0-21.314-25.862-32.08-40.971-16.971l-80 80c-9.372 9.373-9.372 24.569 0 33.941l80 80C102.057 463.997 128 453.437 128 432v-48h360c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24z\"]\n};\nvar faExclamation = {\n prefix: 'fas',\n iconName: 'exclamation',\n icon: [192, 512, [], \"f12a\", \"M176 432c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80zM25.26 25.199l13.6 272C39.499 309.972 50.041 320 62.83 320h66.34c12.789 0 23.331-10.028 23.97-22.801l13.6-272C167.425 11.49 156.496 0 142.77 0H49.23C35.504 0 24.575 11.49 25.26 25.199z\"]\n};\nvar faExclamationCircle = {\n prefix: 'fas',\n iconName: 'exclamation-circle',\n icon: [512, 512, [], \"f06a\", \"M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zm-248 50c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z\"]\n};\nvar faExclamationTriangle = {\n prefix: 'fas',\n iconName: 'exclamation-triangle',\n icon: [576, 512, [], \"f071\", \"M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z\"]\n};\nvar faExpand = {\n prefix: 'fas',\n iconName: 'expand',\n icon: [448, 512, [], \"f065\", \"M0 180V56c0-13.3 10.7-24 24-24h124c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H64v84c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12zM288 44v40c0 6.6 5.4 12 12 12h84v84c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12V56c0-13.3-10.7-24-24-24H300c-6.6 0-12 5.4-12 12zm148 276h-40c-6.6 0-12 5.4-12 12v84h-84c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24V332c0-6.6-5.4-12-12-12zM160 468v-40c0-6.6-5.4-12-12-12H64v-84c0-6.6-5.4-12-12-12H12c-6.6 0-12 5.4-12 12v124c0 13.3 10.7 24 24 24h124c6.6 0 12-5.4 12-12z\"]\n};\nvar faExpandAlt = {\n prefix: 'fas',\n iconName: 'expand-alt',\n icon: [448, 512, [], \"f424\", \"M212.686 315.314L120 408l32.922 31.029c15.12 15.12 4.412 40.971-16.97 40.971h-112C10.697 480 0 469.255 0 456V344c0-21.382 25.803-32.09 40.922-16.971L72 360l92.686-92.686c6.248-6.248 16.379-6.248 22.627 0l25.373 25.373c6.249 6.248 6.249 16.378 0 22.627zm22.628-118.628L328 104l-32.922-31.029C279.958 57.851 290.666 32 312.048 32h112C437.303 32 448 42.745 448 56v112c0 21.382-25.803 32.09-40.922 16.971L376 152l-92.686 92.686c-6.248 6.248-16.379 6.248-22.627 0l-25.373-25.373c-6.249-6.248-6.249-16.378 0-22.627z\"]\n};\nvar faExpandArrowsAlt = {\n prefix: 'fas',\n iconName: 'expand-arrows-alt',\n icon: [448, 512, [], \"f31e\", \"M448 344v112a23.94 23.94 0 0 1-24 24H312c-21.39 0-32.09-25.9-17-41l36.2-36.2L224 295.6 116.77 402.9 153 439c15.09 15.1 4.39 41-17 41H24a23.94 23.94 0 0 1-24-24V344c0-21.4 25.89-32.1 41-17l36.19 36.2L184.46 256 77.18 148.7 41 185c-15.1 15.1-41 4.4-41-17V56a23.94 23.94 0 0 1 24-24h112c21.39 0 32.09 25.9 17 41l-36.2 36.2L224 216.4l107.23-107.3L295 73c-15.09-15.1-4.39-41 17-41h112a23.94 23.94 0 0 1 24 24v112c0 21.4-25.89 32.1-41 17l-36.19-36.2L263.54 256l107.28 107.3L407 327.1c15.1-15.2 41-4.5 41 16.9z\"]\n};\nvar faExternalLinkAlt = {\n prefix: 'fas',\n iconName: 'external-link-alt',\n icon: [512, 512, [], \"f35d\", \"M432,320H400a16,16,0,0,0-16,16V448H64V128H208a16,16,0,0,0,16-16V80a16,16,0,0,0-16-16H48A48,48,0,0,0,0,112V464a48,48,0,0,0,48,48H400a48,48,0,0,0,48-48V336A16,16,0,0,0,432,320ZM488,0h-128c-21.37,0-32.05,25.91-17,41l35.73,35.73L135,320.37a24,24,0,0,0,0,34L157.67,377a24,24,0,0,0,34,0L435.28,133.32,471,169c15,15,41,4.5,41-17V24A24,24,0,0,0,488,0Z\"]\n};\nvar faExternalLinkSquareAlt = {\n prefix: 'fas',\n iconName: 'external-link-square-alt',\n icon: [448, 512, [], \"f360\", \"M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zm-88 16H248.029c-21.313 0-32.08 25.861-16.971 40.971l31.984 31.987L67.515 364.485c-4.686 4.686-4.686 12.284 0 16.971l31.029 31.029c4.687 4.686 12.285 4.686 16.971 0l195.526-195.526 31.988 31.991C358.058 263.977 384 253.425 384 231.979V120c0-13.255-10.745-24-24-24z\"]\n};\nvar faEye = {\n prefix: 'fas',\n iconName: 'eye',\n icon: [576, 512, [], \"f06e\", \"M572.52 241.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400a144 144 0 1 1 144-144 143.93 143.93 0 0 1-144 144zm0-240a95.31 95.31 0 0 0-25.31 3.79 47.85 47.85 0 0 1-66.9 66.9A95.78 95.78 0 1 0 288 160z\"]\n};\nvar faEyeDropper = {\n prefix: 'fas',\n iconName: 'eye-dropper',\n icon: [512, 512, [], \"f1fb\", \"M50.75 333.25c-12 12-18.75 28.28-18.75 45.26V424L0 480l32 32 56-32h45.49c16.97 0 33.25-6.74 45.25-18.74l126.64-126.62-128-128L50.75 333.25zM483.88 28.12c-37.47-37.5-98.28-37.5-135.75 0l-77.09 77.09-13.1-13.1c-9.44-9.44-24.65-9.31-33.94 0l-40.97 40.97c-9.37 9.37-9.37 24.57 0 33.94l161.94 161.94c9.44 9.44 24.65 9.31 33.94 0L419.88 288c9.37-9.37 9.37-24.57 0-33.94l-13.1-13.1 77.09-77.09c37.51-37.48 37.51-98.26.01-135.75z\"]\n};\nvar faEyeSlash = {\n prefix: 'fas',\n iconName: 'eye-slash',\n icon: [640, 512, [], \"f070\", \"M320 400c-75.85 0-137.25-58.71-142.9-133.11L72.2 185.82c-13.79 17.3-26.48 35.59-36.72 55.59a32.35 32.35 0 0 0 0 29.19C89.71 376.41 197.07 448 320 448c26.91 0 52.87-4 77.89-10.46L346 397.39a144.13 144.13 0 0 1-26 2.61zm313.82 58.1l-110.55-85.44a331.25 331.25 0 0 0 81.25-102.07 32.35 32.35 0 0 0 0-29.19C550.29 135.59 442.93 64 320 64a308.15 308.15 0 0 0-147.32 37.7L45.46 3.37A16 16 0 0 0 23 6.18L3.37 31.45A16 16 0 0 0 6.18 53.9l588.36 454.73a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zm-183.72-142l-39.3-30.38A94.75 94.75 0 0 0 416 256a94.76 94.76 0 0 0-121.31-92.21A47.65 47.65 0 0 1 304 192a46.64 46.64 0 0 1-1.54 10l-73.61-56.89A142.31 142.31 0 0 1 320 112a143.92 143.92 0 0 1 144 144c0 21.63-5.29 41.79-13.9 60.11z\"]\n};\nvar faFan = {\n prefix: 'fas',\n iconName: 'fan',\n icon: [512, 512, [], \"f863\", \"M352.57 128c-28.09 0-54.09 4.52-77.06 12.86l12.41-123.11C289 7.31 279.81-1.18 269.33.13 189.63 10.13 128 77.64 128 159.43c0 28.09 4.52 54.09 12.86 77.06L17.75 224.08C7.31 223-1.18 232.19.13 242.67c10 79.7 77.51 141.33 159.3 141.33 28.09 0 54.09-4.52 77.06-12.86l-12.41 123.11c-1.05 10.43 8.11 18.93 18.59 17.62 79.7-10 141.33-77.51 141.33-159.3 0-28.09-4.52-54.09-12.86-77.06l123.11 12.41c10.44 1.05 18.93-8.11 17.62-18.59-10-79.7-77.51-141.33-159.3-141.33zM256 288a32 32 0 1 1 32-32 32 32 0 0 1-32 32z\"]\n};\nvar faFastBackward = {\n prefix: 'fas',\n iconName: 'fast-backward',\n icon: [512, 512, [], \"f049\", \"M0 436V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v151.9L235.5 71.4C256.1 54.3 288 68.6 288 96v131.9L459.5 71.4C480.1 54.3 512 68.6 512 96v320c0 27.4-31.9 41.7-52.5 24.6L288 285.3V416c0 27.4-31.9 41.7-52.5 24.6L64 285.3V436c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12z\"]\n};\nvar faFastForward = {\n prefix: 'fas',\n iconName: 'fast-forward',\n icon: [512, 512, [], \"f050\", \"M512 76v360c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12V284.1L276.5 440.6c-20.6 17.2-52.5 2.8-52.5-24.6V284.1L52.5 440.6C31.9 457.8 0 443.4 0 416V96c0-27.4 31.9-41.7 52.5-24.6L224 226.8V96c0-27.4 31.9-41.7 52.5-24.6L448 226.8V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12z\"]\n};\nvar faFaucet = {\n prefix: 'fas',\n iconName: 'faucet',\n icon: [512, 512, [], \"e005\", \"M352,256H313.39c-15.71-13.44-35.46-23.07-57.39-28V180.44l-32-3.38-32,3.38V228c-21.93,5-41.68,14.6-57.39,28H16A16,16,0,0,0,0,272v96a16,16,0,0,0,16,16h92.79C129.38,421.73,173,448,224,448s94.62-26.27,115.21-64H352a32,32,0,0,1,32,32,32,32,0,0,0,32,32h64a32,32,0,0,0,32-32A160,160,0,0,0,352,256ZM81.59,159.91l142.41-15,142.41,15c9.42,1,17.59-6.81,17.59-16.8V112.89c0-10-8.17-17.8-17.59-16.81L256,107.74V80a16,16,0,0,0-16-16H208a16,16,0,0,0-16,16v27.74L81.59,96.08C72.17,95.09,64,102.9,64,112.89v30.22C64,153.1,72.17,160.91,81.59,159.91Z\"]\n};\nvar faFax = {\n prefix: 'fas',\n iconName: 'fax',\n icon: [512, 512, [], \"f1ac\", \"M480 160V77.25a32 32 0 0 0-9.38-22.63L425.37 9.37A32 32 0 0 0 402.75 0H160a32 32 0 0 0-32 32v448a32 32 0 0 0 32 32h320a32 32 0 0 0 32-32V192a32 32 0 0 0-32-32zM288 432a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm128 128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-112H192V64h160v48a16 16 0 0 0 16 16h48zM64 128H32a32 32 0 0 0-32 32v320a32 32 0 0 0 32 32h32a32 32 0 0 0 32-32V160a32 32 0 0 0-32-32z\"]\n};\nvar faFeather = {\n prefix: 'fas',\n iconName: 'feather',\n icon: [512, 512, [], \"f52d\", \"M467.14 44.84c-62.55-62.48-161.67-64.78-252.28 25.73-78.61 78.52-60.98 60.92-85.75 85.66-60.46 60.39-70.39 150.83-63.64 211.17l178.44-178.25c6.26-6.25 16.4-6.25 22.65 0s6.25 16.38 0 22.63L7.04 471.03c-9.38 9.37-9.38 24.57 0 33.94 9.38 9.37 24.6 9.37 33.98 0l66.1-66.03C159.42 454.65 279 457.11 353.95 384h-98.19l147.57-49.14c49.99-49.93 36.38-36.18 46.31-46.86h-97.78l131.54-43.8c45.44-74.46 34.31-148.84-16.26-199.36z\"]\n};\nvar faFeatherAlt = {\n prefix: 'fas',\n iconName: 'feather-alt',\n icon: [512, 512, [], \"f56b\", \"M512 0C460.22 3.56 96.44 38.2 71.01 287.61c-3.09 26.66-4.84 53.44-5.99 80.24l178.87-178.69c6.25-6.25 16.4-6.25 22.65 0s6.25 16.38 0 22.63L7.04 471.03c-9.38 9.37-9.38 24.57 0 33.94 9.38 9.37 24.59 9.37 33.98 0l57.13-57.07c42.09-.14 84.15-2.53 125.96-7.36 53.48-5.44 97.02-26.47 132.58-56.54H255.74l146.79-48.88c11.25-14.89 21.37-30.71 30.45-47.12h-81.14l106.54-53.21C500.29 132.86 510.19 26.26 512 0z\"]\n};\nvar faFemale = {\n prefix: 'fas',\n iconName: 'female',\n icon: [256, 512, [], \"f182\", \"M128 0c35.346 0 64 28.654 64 64s-28.654 64-64 64c-35.346 0-64-28.654-64-64S92.654 0 128 0m119.283 354.179l-48-192A24 24 0 0 0 176 144h-11.36c-22.711 10.443-49.59 10.894-73.28 0H80a24 24 0 0 0-23.283 18.179l-48 192C4.935 369.305 16.383 384 32 384h56v104c0 13.255 10.745 24 24 24h32c13.255 0 24-10.745 24-24V384h56c15.591 0 27.071-14.671 23.283-29.821z\"]\n};\nvar faFighterJet = {\n prefix: 'fas',\n iconName: 'fighter-jet',\n icon: [640, 512, [], \"f0fb\", \"M544 224l-128-16-48-16h-24L227.158 44h39.509C278.333 44 288 41.375 288 38s-9.667-6-21.333-6H152v12h16v164h-48l-66.667-80H18.667L8 138.667V208h8v16h48v2.666l-64 8v42.667l64 8V288H16v16H8v69.333L18.667 384h34.667L120 304h48v164h-16v12h114.667c11.667 0 21.333-2.625 21.333-6s-9.667-6-21.333-6h-39.509L344 320h24l48-16 128-16c96-21.333 96-26.583 96-32 0-5.417 0-10.667-96-32z\"]\n};\nvar faFile = {\n prefix: 'fas',\n iconName: 'file',\n icon: [384, 512, [], \"f15b\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm160-14.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileAlt = {\n prefix: 'fas',\n iconName: 'file-alt',\n icon: [384, 512, [], \"f15c\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm64 236c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-64c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-72v8c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm96-114.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileArchive = {\n prefix: 'fas',\n iconName: 'file-archive',\n icon: [384, 512, [], \"f1c6\", \"M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zM128.4 336c-17.9 0-32.4 12.1-32.4 27 0 15 14.6 27 32.5 27s32.4-12.1 32.4-27-14.6-27-32.5-27zM224 136V0h-63.6v32h-32V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM95.9 32h32v32h-32zm32.3 384c-33.2 0-58-30.4-51.4-62.9L96.4 256v-32h32v-32h-32v-32h32v-32h-32V96h32V64h32v32h-32v32h32v32h-32v32h32v32h-32v32h22.1c5.7 0 10.7 4.1 11.8 9.7l17.3 87.7c6.4 32.4-18.4 62.6-51.4 62.6z\"]\n};\nvar faFileAudio = {\n prefix: 'fas',\n iconName: 'file-audio',\n icon: [384, 512, [], \"f1c7\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm-64 268c0 10.7-12.9 16-20.5 8.5L104 376H76c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h28l35.5-36.5c7.6-7.6 20.5-2.2 20.5 8.5v136zm33.2-47.6c9.1-9.3 9.1-24.1 0-33.4-22.1-22.8 12.2-56.2 34.4-33.5 27.2 27.9 27.2 72.4 0 100.4-21.8 22.3-56.9-10.4-34.4-33.5zm86-117.1c54.4 55.9 54.4 144.8 0 200.8-21.8 22.4-57-10.3-34.4-33.5 36.2-37.2 36.3-96.5 0-133.8-22.1-22.8 12.3-56.3 34.4-33.5zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileCode = {\n prefix: 'fas',\n iconName: 'file-code',\n icon: [384, 512, [], \"f1c9\", \"M384 121.941V128H256V0h6.059c6.365 0 12.47 2.529 16.971 7.029l97.941 97.941A24.005 24.005 0 0 1 384 121.941zM248 160c-13.2 0-24-10.8-24-24V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248zM123.206 400.505a5.4 5.4 0 0 1-7.633.246l-64.866-60.812a5.4 5.4 0 0 1 0-7.879l64.866-60.812a5.4 5.4 0 0 1 7.633.246l19.579 20.885a5.4 5.4 0 0 1-.372 7.747L101.65 336l40.763 35.874a5.4 5.4 0 0 1 .372 7.747l-19.579 20.884zm51.295 50.479l-27.453-7.97a5.402 5.402 0 0 1-3.681-6.692l61.44-211.626a5.402 5.402 0 0 1 6.692-3.681l27.452 7.97a5.4 5.4 0 0 1 3.68 6.692l-61.44 211.626a5.397 5.397 0 0 1-6.69 3.681zm160.792-111.045l-64.866 60.812a5.4 5.4 0 0 1-7.633-.246l-19.58-20.885a5.4 5.4 0 0 1 .372-7.747L284.35 336l-40.763-35.874a5.4 5.4 0 0 1-.372-7.747l19.58-20.885a5.4 5.4 0 0 1 7.633-.246l64.866 60.812a5.4 5.4 0 0 1-.001 7.879z\"]\n};\nvar faFileContract = {\n prefix: 'fas',\n iconName: 'file-contract',\n icon: [384, 512, [], \"f56c\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 64c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm192.81 248H304c8.84 0 16 7.16 16 16s-7.16 16-16 16h-47.19c-16.45 0-31.27-9.14-38.64-23.86-2.95-5.92-8.09-6.52-10.17-6.52s-7.22.59-10.02 6.19l-7.67 15.34a15.986 15.986 0 0 1-14.31 8.84c-.38 0-.75-.02-1.14-.05-6.45-.45-12-4.75-14.03-10.89L144 354.59l-10.61 31.88c-5.89 17.66-22.38 29.53-41 29.53H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h12.39c4.83 0 9.11-3.08 10.64-7.66l18.19-54.64c3.3-9.81 12.44-16.41 22.78-16.41s19.48 6.59 22.77 16.41l13.88 41.64c19.77-16.19 54.05-9.7 66 14.16 2.02 4.06 5.96 6.5 10.16 6.5zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFileCsv = {\n prefix: 'fas',\n iconName: 'file-csv',\n icon: [384, 512, [], \"f6dd\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm-96 144c0 4.42-3.58 8-8 8h-8c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h8c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-8c-26.51 0-48-21.49-48-48v-32c0-26.51 21.49-48 48-48h8c4.42 0 8 3.58 8 8v16zm44.27 104H160c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h12.27c5.95 0 10.41-3.5 10.41-6.62 0-1.3-.75-2.66-2.12-3.84l-21.89-18.77c-8.47-7.22-13.33-17.48-13.33-28.14 0-21.3 19.02-38.62 42.41-38.62H200c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-12.27c-5.95 0-10.41 3.5-10.41 6.62 0 1.3.75 2.66 2.12 3.84l21.89 18.77c8.47 7.22 13.33 17.48 13.33 28.14.01 21.29-19 38.62-42.39 38.62zM256 264v20.8c0 20.27 5.7 40.17 16 56.88 10.3-16.7 16-36.61 16-56.88V264c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v20.8c0 35.48-12.88 68.89-36.28 94.09-3.02 3.25-7.27 5.11-11.72 5.11s-8.7-1.86-11.72-5.11c-23.4-25.2-36.28-58.61-36.28-94.09V264c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8zm121-159L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFileDownload = {\n prefix: 'fas',\n iconName: 'file-download',\n icon: [384, 512, [], \"f56d\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm76.45 211.36l-96.42 95.7c-6.65 6.61-17.39 6.61-24.04 0l-96.42-95.7C73.42 337.29 80.54 320 94.82 320H160v-80c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v80h65.18c14.28 0 21.4 17.29 11.27 27.36zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFileExcel = {\n prefix: 'fas',\n iconName: 'file-excel',\n icon: [384, 512, [], \"f1c3\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm60.1 106.5L224 336l60.1 93.5c5.1 8-.6 18.5-10.1 18.5h-34.9c-4.4 0-8.5-2.4-10.6-6.3C208.9 405.5 192 373 192 373c-6.4 14.8-10 20-36.6 68.8-2.1 3.9-6.1 6.3-10.5 6.3H110c-9.5 0-15.2-10.5-10.1-18.5l60.3-93.5-60.3-93.5c-5.2-8 .6-18.5 10.1-18.5h34.8c4.4 0 8.5 2.4 10.6 6.3 26.1 48.8 20 33.6 36.6 68.5 0 0 6.1-11.7 36.6-68.5 2.1-3.9 6.2-6.3 10.6-6.3H274c9.5-.1 15.2 10.4 10.1 18.4zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileExport = {\n prefix: 'fas',\n iconName: 'file-export',\n icon: [576, 512, [], \"f56e\", \"M384 121.9c0-6.3-2.5-12.4-7-16.9L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128zM571 308l-95.7-96.4c-10.1-10.1-27.4-3-27.4 11.3V288h-64v64h64v65.2c0 14.3 17.3 21.4 27.4 11.3L571 332c6.6-6.6 6.6-17.4 0-24zm-379 28v-32c0-8.8 7.2-16 16-16h176V160H248c-13.2 0-24-10.8-24-24V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V352H208c-8.8 0-16-7.2-16-16z\"]\n};\nvar faFileImage = {\n prefix: 'fas',\n iconName: 'file-image',\n icon: [384, 512, [], \"f1c5\", \"M384 121.941V128H256V0h6.059a24 24 0 0 1 16.97 7.029l97.941 97.941a24.002 24.002 0 0 1 7.03 16.971zM248 160c-13.2 0-24-10.8-24-24V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248zm-135.455 16c26.51 0 48 21.49 48 48s-21.49 48-48 48-48-21.49-48-48 21.491-48 48-48zm208 240h-256l.485-48.485L104.545 328c4.686-4.686 11.799-4.201 16.485.485L160.545 368 264.06 264.485c4.686-4.686 12.284-4.686 16.971 0L320.545 304v112z\"]\n};\nvar faFileImport = {\n prefix: 'fas',\n iconName: 'file-import',\n icon: [512, 512, [], \"f56f\", \"M16 288c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h112v-64zm489-183L407.1 7c-4.5-4.5-10.6-7-17-7H384v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H152c-13.3 0-24 10.7-24 24v264h128v-65.2c0-14.3 17.3-21.4 27.4-11.3L379 308c6.6 6.7 6.6 17.4 0 24l-95.7 96.4c-10.1 10.1-27.4 3-27.4-11.3V352H128v136c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H376c-13.2 0-24-10.8-24-24z\"]\n};\nvar faFileInvoice = {\n prefix: 'fas',\n iconName: 'file-invoice',\n icon: [384, 512, [], \"f570\", \"M288 256H96v64h192v-64zm89-151L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 64c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm256 304c0 4.42-3.58 8-8 8h-80c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16zm0-200v96c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-96c0-8.84 7.16-16 16-16h224c8.84 0 16 7.16 16 16z\"]\n};\nvar faFileInvoiceDollar = {\n prefix: 'fas',\n iconName: 'file-invoice-dollar',\n icon: [384, 512, [], \"f571\", \"M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 80v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8zm144 263.88V440c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-24.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V232c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v24.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07z\"]\n};\nvar faFileMedical = {\n prefix: 'fas',\n iconName: 'file-medical',\n icon: [384, 512, [], \"f477\", \"M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm64 160v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8z\"]\n};\nvar faFileMedicalAlt = {\n prefix: 'fas',\n iconName: 'file-medical-alt',\n icon: [448, 512, [], \"f478\", \"M288 136V0H88C74.7 0 64 10.7 64 24v232H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h140.9c3 0 5.8 1.7 7.2 4.4l19.9 39.8 56.8-113.7c2.9-5.9 11.4-5.9 14.3 0l34.7 69.5H352c8.8 0 16 7.2 16 16s-7.2 16-16 16h-89.9L240 275.8l-56.8 113.7c-2.9 5.9-11.4 5.9-14.3 0L134.1 320H64v168c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H312c-13.2 0-24-10.8-24-24zm153-31L343.1 7c-4.5-4.5-10.6-7-17-7H320v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFilePdf = {\n prefix: 'fas',\n iconName: 'file-pdf',\n icon: [384, 512, [], \"f1c1\", \"M181.9 256.1c-5-16-4.9-46.9-2-46.9 8.4 0 7.6 36.9 2 46.9zm-1.7 47.2c-7.7 20.2-17.3 43.3-28.4 62.7 18.3-7 39-17.2 62.9-21.9-12.7-9.6-24.9-23.4-34.5-40.8zM86.1 428.1c0 .8 13.2-5.4 34.9-40.2-6.7 6.3-29.1 24.5-34.9 40.2zM248 160h136v328c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V24C0 10.7 10.7 0 24 0h200v136c0 13.2 10.8 24 24 24zm-8 171.8c-20-12.2-33.3-29-42.7-53.8 4.5-18.5 11.6-46.6 6.2-64.2-4.7-29.4-42.4-26.5-47.8-6.8-5 18.3-.4 44.1 8.1 77-11.6 27.6-28.7 64.6-40.8 85.8-.1 0-.1.1-.2.1-27.1 13.9-73.6 44.5-54.5 68 5.6 6.9 16 10 21.5 10 17.9 0 35.7-18 61.1-61.8 25.8-8.5 54.1-19.1 79-23.2 21.7 11.8 47.1 19.5 64 19.5 29.2 0 31.2-32 19.7-43.4-13.9-13.6-54.3-9.7-73.6-7.2zM377 105L279 7c-4.5-4.5-10.6-7-17-7h-6v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-74.1 255.3c4.1-2.7-2.5-11.9-42.8-9 37.1 15.8 42.8 9 42.8 9z\"]\n};\nvar faFilePowerpoint = {\n prefix: 'fas',\n iconName: 'file-powerpoint',\n icon: [384, 512, [], \"f1c4\", \"M193.7 271.2c8.8 0 15.5 2.7 20.3 8.1 9.6 10.9 9.8 32.7-.2 44.1-4.9 5.6-11.9 8.5-21.1 8.5h-26.9v-60.7h27.9zM377 105L279 7c-4.5-4.5-10.6-7-17-7h-6v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm53 165.2c0 90.3-88.8 77.6-111.1 77.6V436c0 6.6-5.4 12-12 12h-30.8c-6.6 0-12-5.4-12-12V236.2c0-6.6 5.4-12 12-12h81c44.5 0 72.9 32.8 72.9 77z\"]\n};\nvar faFilePrescription = {\n prefix: 'fas',\n iconName: 'file-prescription',\n icon: [384, 512, [], \"f572\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm68.53 179.48l11.31 11.31c6.25 6.25 6.25 16.38 0 22.63l-29.9 29.9L304 409.38c6.25 6.25 6.25 16.38 0 22.63l-11.31 11.31c-6.25 6.25-16.38 6.25-22.63 0L240 413.25l-30.06 30.06c-6.25 6.25-16.38 6.25-22.63 0L176 432c-6.25-6.25-6.25-16.38 0-22.63l30.06-30.06L146.74 320H128v48c0 8.84-7.16 16-16 16H96c-8.84 0-16-7.16-16-16V208c0-8.84 7.16-16 16-16h80c35.35 0 64 28.65 64 64 0 24.22-13.62 45.05-33.46 55.92L240 345.38l29.9-29.9c6.25-6.25 16.38-6.25 22.63 0zM176 272h-48v-32h48c8.82 0 16 7.18 16 16s-7.18 16-16 16zm208-150.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileSignature = {\n prefix: 'fas',\n iconName: 'file-signature',\n icon: [576, 512, [], \"f573\", \"M218.17 424.14c-2.95-5.92-8.09-6.52-10.17-6.52s-7.22.59-10.02 6.19l-7.67 15.34c-6.37 12.78-25.03 11.37-29.48-2.09L144 386.59l-10.61 31.88c-5.89 17.66-22.38 29.53-41 29.53H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h12.39c4.83 0 9.11-3.08 10.64-7.66l18.19-54.64c3.3-9.81 12.44-16.41 22.78-16.41s19.48 6.59 22.77 16.41l13.88 41.64c19.75-16.19 54.06-9.7 66 14.16 1.89 3.78 5.49 5.95 9.36 6.26v-82.12l128-127.09V160H248c-13.2 0-24-10.8-24-24V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24v-40l-128-.11c-16.12-.31-30.58-9.28-37.83-23.75zM384 121.9c0-6.3-2.5-12.4-7-16.9L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1zm-96 225.06V416h68.99l161.68-162.78-67.88-67.88L288 346.96zm280.54-179.63l-31.87-31.87c-9.94-9.94-26.07-9.94-36.01 0l-27.25 27.25 67.88 67.88 27.25-27.25c9.95-9.94 9.95-26.07 0-36.01z\"]\n};\nvar faFileUpload = {\n prefix: 'fas',\n iconName: 'file-upload',\n icon: [384, 512, [], \"f574\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm65.18 216.01H224v80c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-80H94.82c-14.28 0-21.41-17.29-11.27-27.36l96.42-95.7c6.65-6.61 17.39-6.61 24.04 0l96.42 95.7c10.15 10.07 3.03 27.36-11.25 27.36zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFileVideo = {\n prefix: 'fas',\n iconName: 'file-video',\n icon: [384, 512, [], \"f1c8\", \"M384 121.941V128H256V0h6.059c6.365 0 12.47 2.529 16.971 7.029l97.941 97.941A24.005 24.005 0 0 1 384 121.941zM224 136V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248c-13.2 0-24-10.8-24-24zm96 144.016v111.963c0 21.445-25.943 31.998-40.971 16.971L224 353.941V392c0 13.255-10.745 24-24 24H88c-13.255 0-24-10.745-24-24V280c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v38.059l55.029-55.013c15.011-15.01 40.971-4.491 40.971 16.97z\"]\n};\nvar faFileWord = {\n prefix: 'fas',\n iconName: 'file-word',\n icon: [384, 512, [], \"f1c2\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm57.1 120H305c7.7 0 13.4 7.1 11.7 14.7l-38 168c-1.2 5.5-6.1 9.3-11.7 9.3h-38c-5.5 0-10.3-3.8-11.6-9.1-25.8-103.5-20.8-81.2-25.6-110.5h-.5c-1.1 14.3-2.4 17.4-25.6 110.5-1.3 5.3-6.1 9.1-11.6 9.1H117c-5.6 0-10.5-3.9-11.7-9.4l-37.8-168c-1.7-7.5 4-14.6 11.7-14.6h24.5c5.7 0 10.7 4 11.8 9.7 15.6 78 20.1 109.5 21 122.2 1.6-10.2 7.3-32.7 29.4-122.7 1.3-5.4 6.1-9.1 11.7-9.1h29.1c5.6 0 10.4 3.8 11.7 9.2 24 100.4 28.8 124 29.6 129.4-.2-11.2-2.6-17.8 21.6-129.2 1-5.6 5.9-9.5 11.5-9.5zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFill = {\n prefix: 'fas',\n iconName: 'fill',\n icon: [512, 512, [], \"f575\", \"M502.63 217.06L294.94 9.37C288.69 3.12 280.5 0 272.31 0s-16.38 3.12-22.62 9.37l-81.58 81.58L81.93 4.77c-6.24-6.25-16.38-6.25-22.62 0L36.69 27.38c-6.24 6.25-6.24 16.38 0 22.63l86.19 86.18-94.76 94.76c-37.49 37.49-37.49 98.26 0 135.75l117.19 117.19c18.75 18.74 43.31 28.12 67.87 28.12 24.57 0 49.13-9.37 67.88-28.12l221.57-221.57c12.49-12.5 12.49-32.76 0-45.26zm-116.22 70.97H65.93c1.36-3.84 3.57-7.98 7.43-11.83l13.15-13.15 81.61-81.61 58.61 58.6c12.49 12.49 32.75 12.49 45.24 0 12.49-12.49 12.49-32.75 0-45.24l-58.61-58.6 58.95-58.95 162.45 162.44-48.35 48.34z\"]\n};\nvar faFillDrip = {\n prefix: 'fas',\n iconName: 'fill-drip',\n icon: [576, 512, [], \"f576\", \"M512 320s-64 92.65-64 128c0 35.35 28.66 64 64 64s64-28.65 64-64-64-128-64-128zm-9.37-102.94L294.94 9.37C288.69 3.12 280.5 0 272.31 0s-16.38 3.12-22.62 9.37l-81.58 81.58L81.93 4.76c-6.25-6.25-16.38-6.25-22.62 0L36.69 27.38c-6.24 6.25-6.24 16.38 0 22.62l86.19 86.18-94.76 94.76c-37.49 37.48-37.49 98.26 0 135.75l117.19 117.19c18.74 18.74 43.31 28.12 67.87 28.12 24.57 0 49.13-9.37 67.87-28.12l221.57-221.57c12.5-12.5 12.5-32.75.01-45.25zm-116.22 70.97H65.93c1.36-3.84 3.57-7.98 7.43-11.83l13.15-13.15 81.61-81.61 58.6 58.6c12.49 12.49 32.75 12.49 45.24 0s12.49-32.75 0-45.24l-58.6-58.6 58.95-58.95 162.44 162.44-48.34 48.34z\"]\n};\nvar faFilm = {\n prefix: 'fas',\n iconName: 'film',\n icon: [512, 512, [], \"f008\", \"M488 64h-8v20c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12V64H96v20c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12V64h-8C10.7 64 0 74.7 0 88v336c0 13.3 10.7 24 24 24h8v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h320v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h8c13.3 0 24-10.7 24-24V88c0-13.3-10.7-24-24-24zM96 372c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm272 208c0 6.6-5.4 12-12 12H156c-6.6 0-12-5.4-12-12v-96c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v96zm0-168c0 6.6-5.4 12-12 12H156c-6.6 0-12-5.4-12-12v-96c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v96zm112 152c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40z\"]\n};\nvar faFilter = {\n prefix: 'fas',\n iconName: 'filter',\n icon: [512, 512, [], \"f0b0\", \"M487.976 0H24.028C2.71 0-8.047 25.866 7.058 40.971L192 225.941V432c0 7.831 3.821 15.17 10.237 19.662l80 55.98C298.02 518.69 320 507.493 320 487.98V225.941l184.947-184.97C520.021 25.896 509.338 0 487.976 0z\"]\n};\nvar faFingerprint = {\n prefix: 'fas',\n iconName: 'fingerprint',\n icon: [512, 512, [], \"f577\", \"M256.12 245.96c-13.25 0-24 10.74-24 24 1.14 72.25-8.14 141.9-27.7 211.55-2.73 9.72 2.15 30.49 23.12 30.49 10.48 0 20.11-6.92 23.09-17.52 13.53-47.91 31.04-125.41 29.48-224.52.01-13.25-10.73-24-23.99-24zm-.86-81.73C194 164.16 151.25 211.3 152.1 265.32c.75 47.94-3.75 95.91-13.37 142.55-2.69 12.98 5.67 25.69 18.64 28.36 13.05 2.67 25.67-5.66 28.36-18.64 10.34-50.09 15.17-101.58 14.37-153.02-.41-25.95 19.92-52.49 54.45-52.34 31.31.47 57.15 25.34 57.62 55.47.77 48.05-2.81 96.33-10.61 143.55-2.17 13.06 6.69 25.42 19.76 27.58 19.97 3.33 26.81-15.1 27.58-19.77 8.28-50.03 12.06-101.21 11.27-152.11-.88-55.8-47.94-101.88-104.91-102.72zm-110.69-19.78c-10.3-8.34-25.37-6.8-33.76 3.48-25.62 31.5-39.39 71.28-38.75 112 .59 37.58-2.47 75.27-9.11 112.05-2.34 13.05 6.31 25.53 19.36 27.89 20.11 3.5 27.07-14.81 27.89-19.36 7.19-39.84 10.5-80.66 9.86-121.33-.47-29.88 9.2-57.88 28-80.97 8.35-10.28 6.79-25.39-3.49-33.76zm109.47-62.33c-15.41-.41-30.87 1.44-45.78 4.97-12.89 3.06-20.87 15.98-17.83 28.89 3.06 12.89 16 20.83 28.89 17.83 11.05-2.61 22.47-3.77 34-3.69 75.43 1.13 137.73 61.5 138.88 134.58.59 37.88-1.28 76.11-5.58 113.63-1.5 13.17 7.95 25.08 21.11 26.58 16.72 1.95 25.51-11.88 26.58-21.11a929.06 929.06 0 0 0 5.89-119.85c-1.56-98.75-85.07-180.33-186.16-181.83zm252.07 121.45c-2.86-12.92-15.51-21.2-28.61-18.27-12.94 2.86-21.12 15.66-18.26 28.61 4.71 21.41 4.91 37.41 4.7 61.6-.11 13.27 10.55 24.09 23.8 24.2h.2c13.17 0 23.89-10.61 24-23.8.18-22.18.4-44.11-5.83-72.34zm-40.12-90.72C417.29 43.46 337.6 1.29 252.81.02 183.02-.82 118.47 24.91 70.46 72.94 24.09 119.37-.9 181.04.14 246.65l-.12 21.47c-.39 13.25 10.03 24.31 23.28 24.69.23.02.48.02.72.02 12.92 0 23.59-10.3 23.97-23.3l.16-23.64c-.83-52.5 19.16-101.86 56.28-139 38.76-38.8 91.34-59.67 147.68-58.86 69.45 1.03 134.73 35.56 174.62 92.39 7.61 10.86 22.56 13.45 33.42 5.86 10.84-7.62 13.46-22.59 5.84-33.43z\"]\n};\nvar faFire = {\n prefix: 'fas',\n iconName: 'fire',\n icon: [384, 512, [], \"f06d\", \"M216 23.86c0-23.8-30.65-32.77-44.15-13.04C48 191.85 224 200 224 288c0 35.63-29.11 64.46-64.85 63.99-35.17-.45-63.15-29.77-63.15-64.94v-85.51c0-21.7-26.47-32.23-41.43-16.5C27.8 213.16 0 261.33 0 320c0 105.87 86.13 192 192 192s192-86.13 192-192c0-170.29-168-193-168-296.14z\"]\n};\nvar faFireAlt = {\n prefix: 'fas',\n iconName: 'fire-alt',\n icon: [448, 512, [], \"f7e4\", \"M323.56 51.2c-20.8 19.3-39.58 39.59-56.22 59.97C240.08 73.62 206.28 35.53 168 0 69.74 91.17 0 209.96 0 281.6 0 408.85 100.29 512 224 512s224-103.15 224-230.4c0-53.27-51.98-163.14-124.44-230.4zm-19.47 340.65C282.43 407.01 255.72 416 226.86 416 154.71 416 96 368.26 96 290.75c0-38.61 24.31-72.63 72.79-130.75 6.93 7.98 98.83 125.34 98.83 125.34l58.63-66.88c4.14 6.85 7.91 13.55 11.27 19.97 27.35 52.19 15.81 118.97-33.43 153.42z\"]\n};\nvar faFireExtinguisher = {\n prefix: 'fas',\n iconName: 'fire-extinguisher',\n icon: [448, 512, [], \"f134\", \"M434.027 26.329l-168 28C254.693 56.218 256 67.8 256 72h-58.332C208.353 36.108 181.446 0 144 0c-39.435 0-66.368 39.676-52.228 76.203-52.039 13.051-75.381 54.213-90.049 90.884-4.923 12.307 1.063 26.274 13.37 31.197 12.317 4.926 26.279-1.075 31.196-13.37C75.058 112.99 106.964 120 168 120v27.076c-41.543 10.862-72 49.235-72 94.129V488c0 13.255 10.745 24 24 24h144c13.255 0 24-10.745 24-24V240c0-44.731-30.596-82.312-72-92.97V120h40c0 2.974-1.703 15.716 10.027 17.671l168 28C441.342 166.89 448 161.25 448 153.834V38.166c0-7.416-6.658-13.056-13.973-11.837zM144 72c-8.822 0-16-7.178-16-16s7.178-16 16-16 16 7.178 16 16-7.178 16-16 16z\"]\n};\nvar faFirstAid = {\n prefix: 'fas',\n iconName: 'first-aid',\n icon: [576, 512, [], \"f479\", \"M0 80v352c0 26.5 21.5 48 48 48h48V32H48C21.5 32 0 53.5 0 80zm128 400h320V32H128v448zm64-248c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48zM528 32h-48v448h48c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z\"]\n};\nvar faFish = {\n prefix: 'fas',\n iconName: 'fish',\n icon: [576, 512, [], \"f578\", \"M327.1 96c-89.97 0-168.54 54.77-212.27 101.63L27.5 131.58c-12.13-9.18-30.24.6-27.14 14.66L24.54 256 .35 365.77c-3.1 14.06 15.01 23.83 27.14 14.66l87.33-66.05C158.55 361.23 237.13 416 327.1 416 464.56 416 576 288 576 256S464.56 96 327.1 96zm87.43 184c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24 13.26 0 24 10.74 24 24 0 13.25-10.75 24-24 24z\"]\n};\nvar faFistRaised = {\n prefix: 'fas',\n iconName: 'fist-raised',\n icon: [384, 512, [], \"f6de\", \"M255.98 160V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v146.93c5.02-1.78 10.34-2.93 15.97-2.93h48.03zm128 95.99c-.01-35.34-28.66-63.99-63.99-63.99H207.85c-8.78 0-15.9 7.07-15.9 15.85v.56c0 26.27 21.3 47.59 47.57 47.59h35.26c9.68 0 13.2 3.58 13.2 8v16.2c0 4.29-3.59 7.78-7.88 8-44.52 2.28-64.16 24.71-96.05 72.55l-6.31 9.47a7.994 7.994 0 0 1-11.09 2.22l-13.31-8.88a7.994 7.994 0 0 1-2.22-11.09l6.31-9.47c15.73-23.6 30.2-43.26 47.31-58.08-17.27-5.51-31.4-18.12-38.87-34.45-6.59 3.41-13.96 5.52-21.87 5.52h-32c-12.34 0-23.49-4.81-32-12.48C71.48 251.19 60.33 256 48 256H16c-5.64 0-10.97-1.15-16-2.95v77.93c0 33.95 13.48 66.5 37.49 90.51L63.99 448v64h255.98v-63.96l35.91-35.92A96.035 96.035 0 0 0 384 344.21l-.02-88.22zm-32.01-90.09V48c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v112h32c11.28 0 21.94 2.31 32 5.9zM16 224h32c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v128c0 8.84 7.16 16 16 16zm95.99 0h32c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v160c0 8.84 7.16 16 16 16z\"]\n};\nvar faFlag = {\n prefix: 'fas',\n iconName: 'flag',\n icon: [512, 512, [], \"f024\", \"M349.565 98.783C295.978 98.783 251.721 64 184.348 64c-24.955 0-47.309 4.384-68.045 12.013a55.947 55.947 0 0 0 3.586-23.562C118.117 24.015 94.806 1.206 66.338.048 34.345-1.254 8 24.296 8 56c0 19.026 9.497 35.825 24 45.945V488c0 13.255 10.745 24 24 24h16c13.255 0 24-10.745 24-24v-94.4c28.311-12.064 63.582-22.122 114.435-22.122 53.588 0 97.844 34.783 165.217 34.783 48.169 0 86.667-16.294 122.505-40.858C506.84 359.452 512 349.571 512 339.045v-243.1c0-23.393-24.269-38.87-45.485-29.016-34.338 15.948-76.454 31.854-116.95 31.854z\"]\n};\nvar faFlagCheckered = {\n prefix: 'fas',\n iconName: 'flag-checkered',\n icon: [512, 512, [], \"f11e\", \"M243.2 189.9V258c26.1 5.9 49.3 15.6 73.6 22.3v-68.2c-26-5.8-49.4-15.5-73.6-22.2zm223.3-123c-34.3 15.9-76.5 31.9-117 31.9C296 98.8 251.7 64 184.3 64c-25 0-47.3 4.4-68 12 2.8-7.3 4.1-15.2 3.6-23.6C118.1 24 94.8 1.2 66.3 0 34.3-1.3 8 24.3 8 56c0 19 9.5 35.8 24 45.9V488c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24v-94.4c28.3-12.1 63.6-22.1 114.4-22.1 53.6 0 97.8 34.8 165.2 34.8 48.2 0 86.7-16.3 122.5-40.9 8.7-6 13.8-15.8 13.8-26.4V95.9c.1-23.3-24.2-38.8-45.4-29zM169.6 325.5c-25.8 2.7-50 8.2-73.6 16.6v-70.5c26.2-9.3 47.5-15 73.6-17.4zM464 191c-23.6 9.8-46.3 19.5-73.6 23.9V286c24.8-3.4 51.4-11.8 73.6-26v70.5c-25.1 16.1-48.5 24.7-73.6 27.1V286c-27 3.7-47.9 1.5-73.6-5.6v67.4c-23.9-7.4-47.3-16.7-73.6-21.3V258c-19.7-4.4-40.8-6.8-73.6-3.8v-70c-22.4 3.1-44.6 10.2-73.6 20.9v-70.5c33.2-12.2 50.1-19.8 73.6-22v71.6c27-3.7 48.4-1.3 73.6 5.7v-67.4c23.7 7.4 47.2 16.7 73.6 21.3v68.4c23.7 5.3 47.6 6.9 73.6 2.7V143c27-4.8 52.3-13.6 73.6-22.5z\"]\n};\nvar faFlagUsa = {\n prefix: 'fas',\n iconName: 'flag-usa',\n icon: [512, 512, [], \"f74d\", \"M32 0C14.3 0 0 14.3 0 32v464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V32C64 14.3 49.7 0 32 0zm267.9 303.6c-57.2-15.1-111.7-28.8-203.9 11.1V384c185.7-92.2 221.7 53.3 397.5-23.1 11.4-5 18.5-16.5 18.5-28.8v-36c-43.6 17.3-80.2 24.1-112.1 24.1-37.4-.1-68.9-8.4-100-16.6zm0-96c-57.2-15.1-111.7-28.8-203.9 11.1v61.5c94.8-37.6 154.6-22.7 212.1-7.6 57.2 15.1 111.7 28.8 203.9-11.1V200c-43.6 17.3-80.2 24.1-112.1 24.1-37.4 0-68.9-8.3-100-16.5zm9.5-125.9c51.8 15.6 97.4 29 202.6-20.1V30.8c0-25.1-26.8-38.1-49.4-26.6C291.3 91.5 305.4-62.2 96 32.4v151.9c94.8-37.5 154.6-22.7 212.1-7.6 57.2 15 111.7 28.7 203.9-11.1V96.7c-53.6 23.5-93.3 31.4-126.1 31.4s-59-7.8-85.7-15.9c-4-1.2-8.1-2.4-12.1-3.5V75.5c7.2 2 14.3 4.1 21.3 6.2zM160 128.1c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16-7.2 16-16 16zm0-55.8c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16zm64 47.9c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16zm0-55.9c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16z\"]\n};\nvar faFlask = {\n prefix: 'fas',\n iconName: 'flask',\n icon: [448, 512, [], \"f0c3\", \"M437.2 403.5L320 215V64h8c13.3 0 24-10.7 24-24V24c0-13.3-10.7-24-24-24H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h8v151L10.8 403.5C-18.5 450.6 15.3 512 70.9 512h306.2c55.7 0 89.4-61.5 60.1-108.5zM137.9 320l48.2-77.6c3.7-5.2 5.8-11.6 5.8-18.4V64h64v160c0 6.9 2.2 13.2 5.8 18.4l48.2 77.6h-172z\"]\n};\nvar faFlushed = {\n prefix: 'fas',\n iconName: 'flushed',\n icon: [496, 512, [], \"f579\", \"M344 200c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm-192 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM80 224c0-39.8 32.2-72 72-72s72 32.2 72 72-32.2 72-72 72-72-32.2-72-72zm232 176H184c-21.2 0-21.2-32 0-32h128c21.2 0 21.2 32 0 32zm32-104c-39.8 0-72-32.2-72-72s32.2-72 72-72 72 32.2 72 72-32.2 72-72 72z\"]\n};\nvar faFolder = {\n prefix: 'fas',\n iconName: 'folder',\n icon: [512, 512, [], \"f07b\", \"M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48z\"]\n};\nvar faFolderMinus = {\n prefix: 'fas',\n iconName: 'folder-minus',\n icon: [512, 512, [], \"f65d\", \"M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm-96 168c0 8.84-7.16 16-16 16H160c-8.84 0-16-7.16-16-16v-16c0-8.84 7.16-16 16-16h192c8.84 0 16 7.16 16 16v16z\"]\n};\nvar faFolderOpen = {\n prefix: 'fas',\n iconName: 'folder-open',\n icon: [576, 512, [], \"f07c\", \"M572.694 292.093L500.27 416.248A63.997 63.997 0 0 1 444.989 448H45.025c-18.523 0-30.064-20.093-20.731-36.093l72.424-124.155A64 64 0 0 1 152 256h399.964c18.523 0 30.064 20.093 20.73 36.093zM152 224h328v-48c0-26.51-21.49-48-48-48H272l-64-64H48C21.49 64 0 85.49 0 112v278.046l69.077-118.418C86.214 242.25 117.989 224 152 224z\"]\n};\nvar faFolderPlus = {\n prefix: 'fas',\n iconName: 'folder-plus',\n icon: [512, 512, [], \"f65e\", \"M464,128H272L208,64H48A48,48,0,0,0,0,112V400a48,48,0,0,0,48,48H464a48,48,0,0,0,48-48V176A48,48,0,0,0,464,128ZM359.5,296a16,16,0,0,1-16,16h-64v64a16,16,0,0,1-16,16h-16a16,16,0,0,1-16-16V312h-64a16,16,0,0,1-16-16V280a16,16,0,0,1,16-16h64V200a16,16,0,0,1,16-16h16a16,16,0,0,1,16,16v64h64a16,16,0,0,1,16,16Z\"]\n};\nvar faFont = {\n prefix: 'fas',\n iconName: 'font',\n icon: [448, 512, [], \"f031\", \"M432 416h-23.41L277.88 53.69A32 32 0 0 0 247.58 32h-47.16a32 32 0 0 0-30.3 21.69L39.41 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-19.58l23.3-64h152.56l23.3 64H304a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM176.85 272L224 142.51 271.15 272z\"]\n};\nvar faFontAwesomeLogoFull = {\n prefix: 'fas',\n iconName: 'font-awesome-logo-full',\n icon: [3992, 512, [\"Font Awesome\"], \"f4e6\", \"M454.6 0H57.4C25.9 0 0 25.9 0 57.4v397.3C0 486.1 25.9 512 57.4 512h397.3c31.4 0 57.4-25.9 57.4-57.4V57.4C512 25.9 486.1 0 454.6 0zm-58.9 324.9c0 4.8-4.1 6.9-8.9 8.9-19.2 8.1-39.7 15.7-61.5 15.7-40.5 0-68.7-44.8-163.2 2.5v51.8c0 30.3-45.7 30.2-45.7 0v-250c-9-7-15-17.9-15-30.3 0-21 17.1-38.2 38.2-38.2 21 0 38.2 17.1 38.2 38.2 0 12.2-5.8 23.2-14.9 30.2v21c37.1-12 65.5-34.4 146.1-3.4 26.6 11.4 68.7-15.7 76.5-15.7 5.5 0 10.3 4.1 10.3 8.9v160.4zm432.9-174.2h-137v70.1H825c39.8 0 40.4 62.2 0 62.2H691.6v105.6c0 45.5-70.7 46.4-70.7 0V128.3c0-22 18-39.8 39.8-39.8h167.8c39.6 0 40.5 62.2.1 62.2zm191.1 23.4c-169.3 0-169.1 252.4 0 252.4 169.9 0 169.9-252.4 0-252.4zm0 196.1c-81.6 0-82.1-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm372.4 53.4c-17.5 0-31.4-13.9-31.4-31.4v-117c0-62.4-72.6-52.5-99.1-16.4v133.4c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c43.3-51.6 162.4-60.4 162.4 39.3v141.5c.3 30.4-31.5 31.4-31.7 31.4zm179.7 2.9c-44.3 0-68.3-22.9-68.3-65.8V235.2H1488c-35.6 0-36.7-55.3 0-55.3h15.5v-37.3c0-41.3 63.8-42.1 63.8 0v37.5h24.9c35.4 0 35.7 55.3 0 55.3h-24.9v108.5c0 29.6 26.1 26.3 27.4 26.3 31.4 0 52.6 56.3-22.9 56.3zM1992 123c-19.5-50.2-95.5-50-114.5 0-107.3 275.7-99.5 252.7-99.5 262.8 0 42.8 58.3 51.2 72.1 14.4l13.5-35.9H2006l13 35.9c14.2 37.7 72.1 27.2 72.1-14.4 0-10.1 5.3 6.8-99.1-262.8zm-108.9 179.1l51.7-142.9 51.8 142.9h-103.5zm591.3-85.6l-53.7 176.3c-12.4 41.2-72 41-84 0l-42.3-135.9-42.3 135.9c-12.4 40.9-72 41.2-84.5 0l-54.2-176.3c-12.5-39.4 49.8-56.1 60.2-16.9L2213 342l45.3-139.5c10.9-32.7 59.6-34.7 71.2 0l45.3 139.5 39.3-142.4c10.3-38.3 72.6-23.8 60.3 16.9zm275.4 75.1c0-42.4-33.9-117.5-119.5-117.5-73.2 0-124.4 56.3-124.4 126 0 77.2 55.3 126.4 128.5 126.4 31.7 0 93-11.5 93-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-109 8.4-115.9-43.8h148.3c16.3 0 29.3-13.4 29.3-28.9zM2571 277.7c9.5-73.4 113.9-68.6 118.6 0H2571zm316.7 148.8c-31.4 0-81.6-10.5-96.6-31.9-12.4-17 2.5-39.8 21.8-39.8 16.3 0 36.8 22.9 77.7 22.9 27.4 0 40.4-11 40.4-25.8 0-39.8-142.9-7.4-142.9-102 0-40.4 35.3-75.7 98.6-75.7 31.4 0 74.1 9.9 87.6 29.4 10.8 14.8-1.4 36.2-20.9 36.2-15.1 0-26.7-17.3-66.2-17.3-22.9 0-37.8 10.5-37.8 23.8 0 35.9 142.4 6 142.4 103.1-.1 43.7-37.4 77.1-104.1 77.1zm266.8-252.4c-169.3 0-169.1 252.4 0 252.4 170.1 0 169.6-252.4 0-252.4zm0 196.1c-81.8 0-82-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm476.9 22V268.7c0-53.8-61.4-45.8-85.7-10.5v134c0 41.3-63.8 42.1-63.8 0V268.7c0-52.1-59.5-47.4-85.7-10.1v133.6c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c9.9-14.4 41.8-37.3 78.6-37.3 35.3 0 57.7 16.4 66.7 43.8 13.9-21.8 45.8-43.8 82.6-43.8 44.3 0 70.7 23.4 70.7 72.7v145.3c.5 17.3-13.5 31.4-31.9 31.4 3.5.1-31.3 1.1-31.3-31.3zM3992 291.6c0-42.4-32.4-117.5-117.9-117.5-73.2 0-127.5 56.3-127.5 126 0 77.2 58.3 126.4 131.6 126.4 31.7 0 91.5-11.5 91.5-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-110.5 8.4-117.5-43.8h149.8c16.3 0 29.1-13.4 29.3-28.9zm-180.5-13.9c9.7-74.4 115.9-68.3 120.1 0h-120.1z\"]\n};\nvar faFootballBall = {\n prefix: 'fas',\n iconName: 'football-ball',\n icon: [496, 512, [], \"f44e\", \"M481.5 60.3c-4.8-18.2-19.1-32.5-37.3-37.4C420.3 16.5 383 8.9 339.4 8L496 164.8c-.8-43.5-8.2-80.6-14.5-104.5zm-467 391.4c4.8 18.2 19.1 32.5 37.3 37.4 23.9 6.4 61.2 14 104.8 14.9L0 347.2c.8 43.5 8.2 80.6 14.5 104.5zM4.2 283.4L220.4 500c132.5-19.4 248.8-118.7 271.5-271.4L275.6 12C143.1 31.4 26.8 130.7 4.2 283.4zm317.3-123.6c3.1-3.1 8.2-3.1 11.3 0l11.3 11.3c3.1 3.1 3.1 8.2 0 11.3l-28.3 28.3 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-28.3-28.3-22.6 22.7 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L248 278.6l-22.6 22.6 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-28.3-28.3-28.3 28.3c-3.1 3.1-8.2 3.1-11.3 0l-11.3-11.3c-3.1-3.1-3.1-8.2 0-11.3l28.3-28.3-28.3-28.2c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 22.6-22.6-28.3-28.3c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 22.6-22.6-28.3-28.3c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 28.3-28.5z\"]\n};\nvar faForward = {\n prefix: 'fas',\n iconName: 'forward',\n icon: [512, 512, [], \"f04e\", \"M500.5 231.4l-192-160C287.9 54.3 256 68.6 256 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2zm-256 0l-192-160C31.9 54.3 0 68.6 0 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2z\"]\n};\nvar faFrog = {\n prefix: 'fas',\n iconName: 'frog',\n icon: [576, 512, [], \"f52e\", \"M446.53 97.43C439.67 60.23 407.19 32 368 32c-39.23 0-71.72 28.29-78.54 65.54C126.75 112.96-.5 250.12 0 416.98.11 451.9 29.08 480 64 480h304c8.84 0 16-7.16 16-16 0-17.67-14.33-32-32-32h-79.49l35.8-48.33c24.14-36.23 10.35-88.28-33.71-106.6-23.89-9.93-51.55-4.65-72.24 10.88l-32.76 24.59c-7.06 5.31-17.09 3.91-22.41-3.19-5.3-7.08-3.88-17.11 3.19-22.41l34.78-26.09c36.84-27.66 88.28-27.62 125.13 0 10.87 8.15 45.87 39.06 40.8 93.21L469.62 480H560c8.84 0 16-7.16 16-16 0-17.67-14.33-32-32-32h-53.63l-98.52-104.68 154.44-86.65A58.16 58.16 0 0 0 576 189.94c0-21.4-11.72-40.95-30.48-51.23-40.56-22.22-98.99-41.28-98.99-41.28zM368 136c-13.26 0-24-10.75-24-24 0-13.26 10.74-24 24-24 13.25 0 24 10.74 24 24 0 13.25-10.75 24-24 24z\"]\n};\nvar faFrown = {\n prefix: 'fas',\n iconName: 'frown',\n icon: [496, 512, [], \"f119\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm170.2 218.2C315.8 367.4 282.9 352 248 352s-67.8 15.4-90.2 42.2c-13.5 16.3-38.1-4.2-24.6-20.5C161.7 339.6 203.6 320 248 320s86.3 19.6 114.7 53.8c13.6 16.2-11 36.7-24.5 20.4z\"]\n};\nvar faFrownOpen = {\n prefix: 'fas',\n iconName: 'frown-open',\n icon: [496, 512, [], \"f57a\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 208c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm187.3 183.3c-31.2-9.6-59.4-15.3-75.3-15.3s-44.1 5.7-75.3 15.3c-11.5 3.5-22.5-6.3-20.5-18.1 7-40 60.1-61.2 95.8-61.2s88.8 21.3 95.8 61.2c2 11.9-9.1 21.6-20.5 18.1zM328 240c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faFunnelDollar = {\n prefix: 'fas',\n iconName: 'funnel-dollar',\n icon: [640, 512, [], \"f662\", \"M433.46 165.94l101.2-111.87C554.61 34.12 540.48 0 512.26 0H31.74C3.52 0-10.61 34.12 9.34 54.07L192 256v155.92c0 12.59 5.93 24.44 16 32l79.99 60c20.86 15.64 48.47 6.97 59.22-13.57C310.8 455.38 288 406.35 288 352c0-89.79 62.05-165.17 145.46-186.06zM480 192c-88.37 0-160 71.63-160 160s71.63 160 160 160 160-71.63 160-160-71.63-160-160-160zm16 239.88V448c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V256c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.04 44.44-42.67 45.07z\"]\n};\nvar faFutbol = {\n prefix: 'fas',\n iconName: 'futbol',\n icon: [512, 512, [], \"f1e3\", \"M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zm-48 0l-.003-.282-26.064 22.741-62.679-58.5 16.454-84.355 34.303 3.072c-24.889-34.216-60.004-60.089-100.709-73.141l13.651 31.939L256 139l-74.953-41.525 13.651-31.939c-40.631 13.028-75.78 38.87-100.709 73.141l34.565-3.073 16.192 84.355-62.678 58.5-26.064-22.741-.003.282c0 43.015 13.497 83.952 38.472 117.991l7.704-33.897 85.138 10.447 36.301 77.826-29.902 17.786c40.202 13.122 84.29 13.148 124.572 0l-29.902-17.786 36.301-77.826 85.138-10.447 7.704 33.897C442.503 339.952 456 299.015 456 256zm-248.102 69.571l-29.894-91.312L256 177.732l77.996 56.527-29.622 91.312h-96.476z\"]\n};\nvar faGamepad = {\n prefix: 'fas',\n iconName: 'gamepad',\n icon: [640, 512, [], \"f11b\", \"M480.07 96H160a160 160 0 1 0 114.24 272h91.52A160 160 0 1 0 480.07 96zM248 268a12 12 0 0 1-12 12h-52v52a12 12 0 0 1-12 12h-24a12 12 0 0 1-12-12v-52H84a12 12 0 0 1-12-12v-24a12 12 0 0 1 12-12h52v-52a12 12 0 0 1 12-12h24a12 12 0 0 1 12 12v52h52a12 12 0 0 1 12 12zm216 76a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm64-96a40 40 0 1 1 40-40 40 40 0 0 1-40 40z\"]\n};\nvar faGasPump = {\n prefix: 'fas',\n iconName: 'gas-pump',\n icon: [512, 512, [], \"f52f\", \"M336 448H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h320c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm157.2-340.7l-81-81c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-6.2 6.2-6.2 16.4 0 22.6L416 97.9V160c0 28.1 20.9 51.3 48 55.2V376c0 13.2-10.8 24-24 24s-24-10.8-24-24v-32c0-48.6-39.4-88-88-88h-8V64c0-35.3-28.7-64-64-64H96C60.7 0 32 28.7 32 64v352h288V304h8c22.1 0 40 17.9 40 40v27.8c0 37.7 27 72 64.5 75.9 43 4.3 79.5-29.5 79.5-71.7V152.6c0-17-6.8-33.3-18.8-45.3zM256 192H96V64h160v128z\"]\n};\nvar faGavel = {\n prefix: 'fas',\n iconName: 'gavel',\n icon: [512, 512, [], \"f0e3\", \"M504.971 199.362l-22.627-22.627c-9.373-9.373-24.569-9.373-33.941 0l-5.657 5.657L329.608 69.255l5.657-5.657c9.373-9.373 9.373-24.569 0-33.941L312.638 7.029c-9.373-9.373-24.569-9.373-33.941 0L154.246 131.48c-9.373 9.373-9.373 24.569 0 33.941l22.627 22.627c9.373 9.373 24.569 9.373 33.941 0l5.657-5.657 39.598 39.598-81.04 81.04-5.657-5.657c-12.497-12.497-32.758-12.497-45.255 0L9.373 412.118c-12.497 12.497-12.497 32.758 0 45.255l45.255 45.255c12.497 12.497 32.758 12.497 45.255 0l114.745-114.745c12.497-12.497 12.497-32.758 0-45.255l-5.657-5.657 81.04-81.04 39.598 39.598-5.657 5.657c-9.373 9.373-9.373 24.569 0 33.941l22.627 22.627c9.373 9.373 24.569 9.373 33.941 0l124.451-124.451c9.372-9.372 9.372-24.568 0-33.941z\"]\n};\nvar faGem = {\n prefix: 'fas',\n iconName: 'gem',\n icon: [576, 512, [], \"f3a5\", \"M485.5 0L576 160H474.9L405.7 0h79.8zm-128 0l69.2 160H149.3L218.5 0h139zm-267 0h79.8l-69.2 160H0L90.5 0zM0 192h100.7l123 251.7c1.5 3.1-2.7 5.9-5 3.3L0 192zm148.2 0h279.6l-137 318.2c-1 2.4-4.5 2.4-5.5 0L148.2 192zm204.1 251.7l123-251.7H576L357.3 446.9c-2.3 2.7-6.5-.1-5-3.2z\"]\n};\nvar faGenderless = {\n prefix: 'fas',\n iconName: 'genderless',\n icon: [288, 512, [], \"f22d\", \"M144 176c44.1 0 80 35.9 80 80s-35.9 80-80 80-80-35.9-80-80 35.9-80 80-80m0-64C64.5 112 0 176.5 0 256s64.5 144 144 144 144-64.5 144-144-64.5-144-144-144z\"]\n};\nvar faGhost = {\n prefix: 'fas',\n iconName: 'ghost',\n icon: [384, 512, [], \"f6e2\", \"M186.1.09C81.01 3.24 0 94.92 0 200.05v263.92c0 14.26 17.23 21.39 27.31 11.31l24.92-18.53c6.66-4.95 16-3.99 21.51 2.21l42.95 48.35c6.25 6.25 16.38 6.25 22.63 0l40.72-45.85c6.37-7.17 17.56-7.17 23.92 0l40.72 45.85c6.25 6.25 16.38 6.25 22.63 0l42.95-48.35c5.51-6.2 14.85-7.17 21.51-2.21l24.92 18.53c10.08 10.08 27.31 2.94 27.31-11.31V192C384 84 294.83-3.17 186.1.09zM128 224c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm128 0c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faGift = {\n prefix: 'fas',\n iconName: 'gift',\n icon: [512, 512, [], \"f06b\", \"M32 448c0 17.7 14.3 32 32 32h160V320H32v128zm256 32h160c17.7 0 32-14.3 32-32V320H288v160zm192-320h-42.1c6.2-12.1 10.1-25.5 10.1-40 0-48.5-39.5-88-88-88-41.6 0-68.5 21.3-103 68.3-34.5-47-61.4-68.3-103-68.3-48.5 0-88 39.5-88 88 0 14.5 3.8 27.9 10.1 40H32c-17.7 0-32 14.3-32 32v80c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-80c0-17.7-14.3-32-32-32zm-326.1 0c-22.1 0-40-17.9-40-40s17.9-40 40-40c19.9 0 34.6 3.3 86.1 80h-86.1zm206.1 0h-86.1c51.4-76.5 65.7-80 86.1-80 22.1 0 40 17.9 40 40s-17.9 40-40 40z\"]\n};\nvar faGifts = {\n prefix: 'fas',\n iconName: 'gifts',\n icon: [640, 512, [], \"f79c\", \"M240.6 194.1c1.9-30.8 17.3-61.2 44-79.8C279.4 103.5 268.7 96 256 96h-29.4l30.7-22c7.2-5.1 8.9-15.1 3.7-22.3l-9.3-13c-5.1-7.2-15.1-8.9-22.3-3.7l-32 22.9 11.5-30.6c3.1-8.3-1.1-17.5-9.4-20.6l-15-5.6c-8.3-3.1-17.5 1.1-20.6 9.4l-19.9 53-19.9-53.1C121 2.1 111.8-2.1 103.5 1l-15 5.6C80.2 9.7 76 19 79.2 27.2l11.5 30.6L58.6 35c-7.2-5.1-17.2-3.5-22.3 3.7l-9.3 13c-5.1 7.2-3.5 17.2 3.7 22.3l30.7 22H32c-17.7 0-32 14.3-32 32v352c0 17.7 14.3 32 32 32h168.9c-5.5-9.5-8.9-20.3-8.9-32V256c0-29.9 20.8-55 48.6-61.9zM224 480c0 17.7 14.3 32 32 32h160V384H224v96zm224 32h160c17.7 0 32-14.3 32-32v-96H448v128zm160-288h-20.4c2.6-7.6 4.4-15.5 4.4-23.8 0-35.5-27-72.2-72.1-72.2-48.1 0-75.9 47.7-87.9 75.3-12.1-27.6-39.9-75.3-87.9-75.3-45.1 0-72.1 36.7-72.1 72.2 0 8.3 1.7 16.2 4.4 23.8H256c-17.7 0-32 14.3-32 32v96h192V224h15.3l.7-.2.7.2H448v128h192v-96c0-17.7-14.3-32-32-32zm-272 0c-2.7-1.4-5.1-3-7.2-4.8-7.3-6.4-8.8-13.8-8.8-19 0-9.7 6.4-24.2 24.1-24.2 18.7 0 35.6 27.4 44.5 48H336zm199.2-4.8c-2.1 1.8-4.5 3.4-7.2 4.8h-52.6c8.8-20.3 25.8-48 44.5-48 17.7 0 24.1 14.5 24.1 24.2 0 5.2-1.5 12.6-8.8 19z\"]\n};\nvar faGlassCheers = {\n prefix: 'fas',\n iconName: 'glass-cheers',\n icon: [640, 512, [], \"f79f\", \"M639.4 433.6c-8.4-20.4-31.8-30.1-52.2-21.6l-22.1 9.2-38.7-101.9c47.9-35 64.8-100.3 34.5-152.8L474.3 16c-8-13.9-25.1-19.7-40-13.6L320 49.8 205.7 2.4c-14.9-6.2-32-.3-40 13.6L79.1 166.5C48.9 219 65.7 284.3 113.6 319.2L74.9 421.1l-22.1-9.2c-20.4-8.5-43.7 1.2-52.2 21.6-1.7 4.1.2 8.8 4.3 10.5l162.3 67.4c4.1 1.7 8.7-.2 10.4-4.3 8.4-20.4-1.2-43.8-21.6-52.3l-22.1-9.2L173.3 342c4.4.5 8.8 1.3 13.1 1.3 51.7 0 99.4-33.1 113.4-85.3l20.2-75.4 20.2 75.4c14 52.2 61.7 85.3 113.4 85.3 4.3 0 8.7-.8 13.1-1.3L506 445.6l-22.1 9.2c-20.4 8.5-30.1 31.9-21.6 52.3 1.7 4.1 6.4 6 10.4 4.3L635.1 444c4-1.7 6-6.3 4.3-10.4zM275.9 162.1l-112.1-46.5 36.5-63.4 94.5 39.2-18.9 70.7zm88.2 0l-18.9-70.7 94.5-39.2 36.5 63.4-112.1 46.5z\"]\n};\nvar faGlassMartini = {\n prefix: 'fas',\n iconName: 'glass-martini',\n icon: [512, 512, [], \"f000\", \"M502.05 57.6C523.3 36.34 508.25 0 478.2 0H33.8C3.75 0-11.3 36.34 9.95 57.6L224 271.64V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40h-56V271.64L502.05 57.6z\"]\n};\nvar faGlassMartiniAlt = {\n prefix: 'fas',\n iconName: 'glass-martini-alt',\n icon: [512, 512, [], \"f57b\", \"M502.05 57.6C523.3 36.34 508.25 0 478.2 0H33.8C3.75 0-11.3 36.34 9.95 57.6L224 271.64V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40h-56V271.64L502.05 57.6zM443.77 48l-48 48H116.24l-48-48h375.53z\"]\n};\nvar faGlassWhiskey = {\n prefix: 'fas',\n iconName: 'glass-whiskey',\n icon: [512, 512, [], \"f7a0\", \"M480 32H32C12.5 32-2.4 49.2.3 68.5l56 356.5c4.5 31.5 31.5 54.9 63.4 54.9h273c31.8 0 58.9-23.4 63.4-54.9l55.6-356.5C514.4 49.2 499.5 32 480 32zm-37.4 64l-30 192h-313L69.4 96h373.2z\"]\n};\nvar faGlasses = {\n prefix: 'fas',\n iconName: 'glasses',\n icon: [576, 512, [], \"f530\", \"M574.1 280.37L528.75 98.66c-5.91-23.7-21.59-44.05-43-55.81-21.44-11.73-46.97-14.11-70.19-6.33l-15.25 5.08c-8.39 2.79-12.92 11.86-10.12 20.24l5.06 15.18c2.79 8.38 11.85 12.91 20.23 10.12l13.18-4.39c10.87-3.62 23-3.57 33.16 1.73 10.29 5.37 17.57 14.56 20.37 25.82l38.46 153.82c-22.19-6.81-49.79-12.46-81.2-12.46-34.77 0-73.98 7.02-114.85 26.74h-73.18c-40.87-19.74-80.08-26.75-114.86-26.75-31.42 0-59.02 5.65-81.21 12.46l38.46-153.83c2.79-11.25 10.09-20.45 20.38-25.81 10.16-5.3 22.28-5.35 33.15-1.73l13.17 4.39c8.38 2.79 17.44-1.74 20.23-10.12l5.06-15.18c2.8-8.38-1.73-17.45-10.12-20.24l-15.25-5.08c-23.22-7.78-48.75-5.41-70.19 6.33-21.41 11.77-37.09 32.11-43 55.8L1.9 280.37A64.218 64.218 0 0 0 0 295.86v70.25C0 429.01 51.58 480 115.2 480h37.12c60.28 0 110.37-45.94 114.88-105.37l2.93-38.63h35.75l2.93 38.63C313.31 434.06 363.4 480 423.68 480h37.12c63.62 0 115.2-50.99 115.2-113.88v-70.25c0-5.23-.64-10.43-1.9-15.5zm-370.72 89.42c-1.97 25.91-24.4 46.21-51.06 46.21H115.2C86.97 416 64 393.62 64 366.11v-37.54c18.12-6.49 43.42-12.92 72.58-12.92 23.86 0 47.26 4.33 69.93 12.92l-3.13 41.22zM512 366.12c0 27.51-22.97 49.88-51.2 49.88h-37.12c-26.67 0-49.1-20.3-51.06-46.21l-3.13-41.22c22.67-8.59 46.08-12.92 69.95-12.92 29.12 0 54.43 6.44 72.55 12.93v37.54z\"]\n};\nvar faGlobe = {\n prefix: 'fas',\n iconName: 'globe',\n icon: [496, 512, [], \"f0ac\", \"M336.5 160C322 70.7 287.8 8 248 8s-74 62.7-88.5 152h177zM152 256c0 22.2 1.2 43.5 3.3 64h185.3c2.1-20.5 3.3-41.8 3.3-64s-1.2-43.5-3.3-64H155.3c-2.1 20.5-3.3 41.8-3.3 64zm324.7-96c-28.6-67.9-86.5-120.4-158-141.6 24.4 33.8 41.2 84.7 50 141.6h108zM177.2 18.4C105.8 39.6 47.8 92.1 19.3 160h108c8.7-56.9 25.5-107.8 49.9-141.6zM487.4 192H372.7c2.1 21 3.3 42.5 3.3 64s-1.2 43-3.3 64h114.6c5.5-20.5 8.6-41.8 8.6-64s-3.1-43.5-8.5-64zM120 256c0-21.5 1.2-43 3.3-64H8.6C3.2 212.5 0 233.8 0 256s3.2 43.5 8.6 64h114.6c-2-21-3.2-42.5-3.2-64zm39.5 96c14.5 89.3 48.7 152 88.5 152s74-62.7 88.5-152h-177zm159.3 141.6c71.4-21.2 129.4-73.7 158-141.6h-108c-8.8 56.9-25.6 107.8-50 141.6zM19.3 352c28.6 67.9 86.5 120.4 158 141.6-24.4-33.8-41.2-84.7-50-141.6h-108z\"]\n};\nvar faGlobeAfrica = {\n prefix: 'fas',\n iconName: 'globe-africa',\n icon: [496, 512, [], \"f57c\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm160 215.5v6.93c0 5.87-3.32 11.24-8.57 13.86l-15.39 7.7a15.485 15.485 0 0 1-15.53-.97l-18.21-12.14a15.52 15.52 0 0 0-13.5-1.81l-2.65.88c-9.7 3.23-13.66 14.79-7.99 23.3l13.24 19.86c2.87 4.31 7.71 6.9 12.89 6.9h8.21c8.56 0 15.5 6.94 15.5 15.5v11.34c0 3.35-1.09 6.62-3.1 9.3l-18.74 24.98c-1.42 1.9-2.39 4.1-2.83 6.43l-4.3 22.83c-.62 3.29-2.29 6.29-4.76 8.56a159.608 159.608 0 0 0-25 29.16l-13.03 19.55a27.756 27.756 0 0 1-23.09 12.36c-10.51 0-20.12-5.94-24.82-15.34a78.902 78.902 0 0 1-8.33-35.29V367.5c0-8.56-6.94-15.5-15.5-15.5h-25.88c-14.49 0-28.38-5.76-38.63-16a54.659 54.659 0 0 1-16-38.63v-14.06c0-17.19 8.1-33.38 21.85-43.7l27.58-20.69a54.663 54.663 0 0 1 32.78-10.93h.89c8.48 0 16.85 1.97 24.43 5.77l14.72 7.36c3.68 1.84 7.93 2.14 11.83.84l47.31-15.77c6.33-2.11 10.6-8.03 10.6-14.7 0-8.56-6.94-15.5-15.5-15.5h-10.09c-4.11 0-8.05-1.63-10.96-4.54l-6.92-6.92a15.493 15.493 0 0 0-10.96-4.54H199.5c-8.56 0-15.5-6.94-15.5-15.5v-4.4c0-7.11 4.84-13.31 11.74-15.04l14.45-3.61c3.74-.94 7-3.23 9.14-6.44l8.08-12.11c2.87-4.31 7.71-6.9 12.89-6.9h24.21c8.56 0 15.5-6.94 15.5-15.5v-21.7C359.23 71.63 422.86 131.02 441.93 208H423.5c-8.56 0-15.5 6.94-15.5 15.5z\"]\n};\nvar faGlobeAmericas = {\n prefix: 'fas',\n iconName: 'globe-americas',\n icon: [496, 512, [], \"f57d\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm82.29 357.6c-3.9 3.88-7.99 7.95-11.31 11.28-2.99 3-5.1 6.7-6.17 10.71-1.51 5.66-2.73 11.38-4.77 16.87l-17.39 46.85c-13.76 3-28 4.69-42.65 4.69v-27.38c1.69-12.62-7.64-36.26-22.63-51.25-6-6-9.37-14.14-9.37-22.63v-32.01c0-11.64-6.27-22.34-16.46-27.97-14.37-7.95-34.81-19.06-48.81-26.11-11.48-5.78-22.1-13.14-31.65-21.75l-.8-.72a114.792 114.792 0 0 1-18.06-20.74c-9.38-13.77-24.66-36.42-34.59-51.14 20.47-45.5 57.36-82.04 103.2-101.89l24.01 12.01C203.48 89.74 216 82.01 216 70.11v-11.3c7.99-1.29 16.12-2.11 24.39-2.42l28.3 28.3c6.25 6.25 6.25 16.38 0 22.63L264 112l-10.34 10.34c-3.12 3.12-3.12 8.19 0 11.31l4.69 4.69c3.12 3.12 3.12 8.19 0 11.31l-8 8a8.008 8.008 0 0 1-5.66 2.34h-8.99c-2.08 0-4.08.81-5.58 2.27l-9.92 9.65a8.008 8.008 0 0 0-1.58 9.31l15.59 31.19c2.66 5.32-1.21 11.58-7.15 11.58h-5.64c-1.93 0-3.79-.7-5.24-1.96l-9.28-8.06a16.017 16.017 0 0 0-15.55-3.1l-31.17 10.39a11.95 11.95 0 0 0-8.17 11.34c0 4.53 2.56 8.66 6.61 10.69l11.08 5.54c9.41 4.71 19.79 7.16 30.31 7.16s22.59 27.29 32 32h66.75c8.49 0 16.62 3.37 22.63 9.37l13.69 13.69a30.503 30.503 0 0 1 8.93 21.57 46.536 46.536 0 0 1-13.72 32.98zM417 274.25c-5.79-1.45-10.84-5-14.15-9.97l-17.98-26.97a23.97 23.97 0 0 1 0-26.62l19.59-29.38c2.32-3.47 5.5-6.29 9.24-8.15l12.98-6.49C440.2 193.59 448 223.87 448 256c0 8.67-.74 17.16-1.82 25.54L417 274.25z\"]\n};\nvar faGlobeAsia = {\n prefix: 'fas',\n iconName: 'globe-asia',\n icon: [496, 512, [], \"f57e\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm-11.34 240.23c-2.89 4.82-8.1 7.77-13.72 7.77h-.31c-4.24 0-8.31 1.69-11.31 4.69l-5.66 5.66c-3.12 3.12-3.12 8.19 0 11.31l5.66 5.66c3 3 4.69 7.07 4.69 11.31V304c0 8.84-7.16 16-16 16h-6.11c-6.06 0-11.6-3.42-14.31-8.85l-22.62-45.23c-2.44-4.88-8.95-5.94-12.81-2.08l-19.47 19.46c-3 3-7.07 4.69-11.31 4.69H50.81C49.12 277.55 48 266.92 48 256c0-110.28 89.72-200 200-200 21.51 0 42.2 3.51 61.63 9.82l-50.16 38.53c-5.11 3.41-4.63 11.06.86 13.81l10.83 5.41c5.42 2.71 8.84 8.25 8.84 14.31V216c0 4.42-3.58 8-8 8h-3.06c-3.03 0-5.8-1.71-7.15-4.42-1.56-3.12-5.96-3.29-7.76-.3l-17.37 28.95zM408 358.43c0 4.24-1.69 8.31-4.69 11.31l-9.57 9.57c-3 3-7.07 4.69-11.31 4.69h-15.16c-4.24 0-8.31-1.69-11.31-4.69l-13.01-13.01a26.767 26.767 0 0 0-25.42-7.04l-21.27 5.32c-1.27.32-2.57.48-3.88.48h-10.34c-4.24 0-8.31-1.69-11.31-4.69l-11.91-11.91a8.008 8.008 0 0 1-2.34-5.66v-10.2c0-3.27 1.99-6.21 5.03-7.43l39.34-15.74c1.98-.79 3.86-1.82 5.59-3.05l23.71-16.89a7.978 7.978 0 0 1 4.64-1.48h12.09c3.23 0 6.15 1.94 7.39 4.93l5.35 12.85a4 4 0 0 0 3.69 2.46h3.8c1.78 0 3.35-1.18 3.84-2.88l4.2-14.47c.5-1.71 2.06-2.88 3.84-2.88h6.06c2.21 0 4 1.79 4 4v12.93c0 2.12.84 4.16 2.34 5.66l11.91 11.91c3 3 4.69 7.07 4.69 11.31v24.6z\"]\n};\nvar faGlobeEurope = {\n prefix: 'fas',\n iconName: 'globe-europe',\n icon: [496, 512, [], \"f7a2\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm200 248c0 22.5-3.9 44.2-10.8 64.4h-20.3c-4.3 0-8.4-1.7-11.4-4.8l-32-32.6c-4.5-4.6-4.5-12.1.1-16.7l12.5-12.5v-8.7c0-3-1.2-5.9-3.3-8l-9.4-9.4c-2.1-2.1-5-3.3-8-3.3h-16c-6.2 0-11.3-5.1-11.3-11.3 0-3 1.2-5.9 3.3-8l9.4-9.4c2.1-2.1 5-3.3 8-3.3h32c6.2 0 11.3-5.1 11.3-11.3v-9.4c0-6.2-5.1-11.3-11.3-11.3h-36.7c-8.8 0-16 7.2-16 16v4.5c0 6.9-4.4 13-10.9 15.2l-31.6 10.5c-3.3 1.1-5.5 4.1-5.5 7.6v2.2c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8s-3.6-8-8-8H247c-3 0-5.8 1.7-7.2 4.4l-9.4 18.7c-2.7 5.4-8.2 8.8-14.3 8.8H194c-8.8 0-16-7.2-16-16V199c0-4.2 1.7-8.3 4.7-11.3l20.1-20.1c4.6-4.6 7.2-10.9 7.2-17.5 0-3.4 2.2-6.5 5.5-7.6l40-13.3c1.7-.6 3.2-1.5 4.4-2.7l26.8-26.8c2.1-2.1 3.3-5 3.3-8 0-6.2-5.1-11.3-11.3-11.3H258l-16 16v8c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8v-20c0-2.5 1.2-4.9 3.2-6.4l28.9-21.7c1.9-.1 3.8-.3 5.7-.3C358.3 56 448 145.7 448 256zM130.1 149.1c0-3 1.2-5.9 3.3-8l25.4-25.4c2.1-2.1 5-3.3 8-3.3 6.2 0 11.3 5.1 11.3 11.3v16c0 3-1.2 5.9-3.3 8l-9.4 9.4c-2.1 2.1-5 3.3-8 3.3h-16c-6.2 0-11.3-5.1-11.3-11.3zm128 306.4v-7.1c0-8.8-7.2-16-16-16h-20.2c-10.8 0-26.7-5.3-35.4-11.8l-22.2-16.7c-11.5-8.6-18.2-22.1-18.2-36.4v-23.9c0-16 8.4-30.8 22.1-39l42.9-25.7c7.1-4.2 15.2-6.5 23.4-6.5h31.2c10.9 0 21.4 3.9 29.6 10.9l43.2 37.1h18.3c8.5 0 16.6 3.4 22.6 9.4l17.3 17.3c3.4 3.4 8.1 5.3 12.9 5.3H423c-32.4 58.9-93.8 99.5-164.9 103.1z\"]\n};\nvar faGolfBall = {\n prefix: 'fas',\n iconName: 'golf-ball',\n icon: [416, 512, [], \"f450\", \"M96 416h224c0 17.7-14.3 32-32 32h-16c-17.7 0-32 14.3-32 32v20c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-20c0-17.7-14.3-32-32-32h-16c-17.7 0-32-14.3-32-32zm320-208c0 74.2-39 139.2-97.5 176h-221C39 347.2 0 282.2 0 208 0 93.1 93.1 0 208 0s208 93.1 208 208zm-180.1 43.9c18.3 0 33.1-14.8 33.1-33.1 0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1zm49.1 46.9c0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1 18.3 0 33.1-14.9 33.1-33.1zm64-64c0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1 18.3 0 33.1-14.9 33.1-33.1z\"]\n};\nvar faGopuram = {\n prefix: 'fas',\n iconName: 'gopuram',\n icon: [512, 512, [], \"f664\", \"M496 352h-16V240c0-8.8-7.2-16-16-16h-16v-80c0-8.8-7.2-16-16-16h-16V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16S96 7.2 96 16v112H80c-8.8 0-16 7.2-16 16v80H48c-8.8 0-16 7.2-16 16v112H16c-8.8 0-16 7.2-16 16v128c0 8.8 7.2 16 16 16h80V352h32V224h32v-96h32v96h-32v128h-32v160h80v-80c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16v80h80V352h-32V224h-32v-96h32v96h32v128h32v160h80c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16zM232 176c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v48h-48zm56 176h-64v-64c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16z\"]\n};\nvar faGraduationCap = {\n prefix: 'fas',\n iconName: 'graduation-cap',\n icon: [640, 512, [], \"f19d\", \"M622.34 153.2L343.4 67.5c-15.2-4.67-31.6-4.67-46.79 0L17.66 153.2c-23.54 7.23-23.54 38.36 0 45.59l48.63 14.94c-10.67 13.19-17.23 29.28-17.88 46.9C38.78 266.15 32 276.11 32 288c0 10.78 5.68 19.85 13.86 25.65L20.33 428.53C18.11 438.52 25.71 448 35.94 448h56.11c10.24 0 17.84-9.48 15.62-19.47L82.14 313.65C90.32 307.85 96 298.78 96 288c0-11.57-6.47-21.25-15.66-26.87.76-15.02 8.44-28.3 20.69-36.72L296.6 284.5c9.06 2.78 26.44 6.25 46.79 0l278.95-85.7c23.55-7.24 23.55-38.36 0-45.6zM352.79 315.09c-28.53 8.76-52.84 3.92-65.59 0l-145.02-44.55L128 384c0 35.35 85.96 64 192 64s192-28.65 192-64l-14.18-113.47-145.03 44.56z\"]\n};\nvar faGreaterThan = {\n prefix: 'fas',\n iconName: 'greater-than',\n icon: [384, 512, [], \"f531\", \"M365.52 209.85L59.22 67.01c-16.06-7.49-35.15-.54-42.64 15.52L3.01 111.61c-7.49 16.06-.54 35.15 15.52 42.64L236.96 256.1 18.49 357.99C2.47 365.46-4.46 384.5 3.01 400.52l13.52 29C24 445.54 43.04 452.47 59.06 445l306.47-142.91a32.003 32.003 0 0 0 18.48-29v-34.23c-.01-12.45-7.21-23.76-18.49-29.01z\"]\n};\nvar faGreaterThanEqual = {\n prefix: 'fas',\n iconName: 'greater-than-equal',\n icon: [448, 512, [], \"f532\", \"M55.22 107.69l175.56 68.09-175.44 68.05c-18.39 6.03-27.88 24.39-21.2 41l12.09 30.08c6.68 16.61 26.99 25.19 45.38 19.15L393.02 214.2c13.77-4.52 22.98-16.61 22.98-30.17v-15.96c0-13.56-9.21-25.65-22.98-30.17L91.3 17.92c-18.29-6-38.51 2.53-45.15 19.06L34.12 66.9c-6.64 16.53 2.81 34.79 21.1 40.79zM424 400H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h400c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z\"]\n};\nvar faGrimace = {\n prefix: 'fas',\n iconName: 'grimace',\n icon: [496, 512, [], \"f57f\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM144 400h-8c-17.7 0-32-14.3-32-32v-8h40v40zm0-56h-40v-8c0-17.7 14.3-32 32-32h8v40zm-8-136c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm72 192h-48v-40h48v40zm0-56h-48v-40h48v40zm64 56h-48v-40h48v40zm0-56h-48v-40h48v40zm64 56h-48v-40h48v40zm0-56h-48v-40h48v40zm-8-104c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm64 128c0 17.7-14.3 32-32 32h-8v-40h40v8zm0-24h-40v-40h8c17.7 0 32 14.3 32 32v8z\"]\n};\nvar faGrin = {\n prefix: 'fas',\n iconName: 'grin',\n icon: [496, 512, [], \"f580\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm80 256c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.3-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinAlt = {\n prefix: 'fas',\n iconName: 'grin-alt',\n icon: [496, 512, [], \"f581\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm63.7 128.7c7.6-11.4 24.7-11.7 32.7 0 12.4 18.4 15.1 36.9 15.7 55.3-.5 18.4-3.3 36.9-15.7 55.3-7.6 11.4-24.7 11.7-32.7 0-12.4-18.4-15.1-36.9-15.7-55.3.5-18.4 3.3-36.9 15.7-55.3zm-160 0c7.6-11.4 24.7-11.7 32.7 0 12.4 18.4 15.1 36.9 15.7 55.3-.5 18.4-3.3 36.9-15.7 55.3-7.6 11.4-24.7 11.7-32.7 0-12.4-18.4-15.1-36.9-15.7-55.3.5-18.4 3.3-36.9 15.7-55.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinBeam = {\n prefix: 'fas',\n iconName: 'grin-beam',\n icon: [496, 512, [], \"f582\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 144c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.9 9.4-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinBeamSweat = {\n prefix: 'fas',\n iconName: 'grin-beam-sweat',\n icon: [504, 512, [], \"f583\", \"M456 128c26.5 0 48-21 48-47 0-20-28.5-60.4-41.6-77.8-3.2-4.3-9.6-4.3-12.8 0C436.5 20.6 408 61 408 81c0 26 21.5 47 48 47zm0 32c-44.1 0-80-35.4-80-79 0-4.4.3-14.2 8.1-32.2C345 23.1 298.3 8 248 8 111 8 0 119 0 256s111 248 248 248 248-111 248-248c0-35.1-7.4-68.4-20.5-98.6-6.3 1.5-12.7 2.6-19.5 2.6zm-128-8c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.2 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinHearts = {\n prefix: 'fas',\n iconName: 'grin-hearts',\n icon: [496, 512, [], \"f584\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM90.4 183.6c6.7-17.6 26.7-26.7 44.9-21.9l7.1 1.9 2-7.1c5-18.1 22.8-30.9 41.5-27.9 21.4 3.4 34.4 24.2 28.8 44.5L195.3 243c-1.2 4.5-5.9 7.2-10.5 6l-70.2-18.2c-20.4-5.4-31.9-27-24.2-47.2zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.2-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.6 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3zm133.4-201.3l-70.2 18.2c-4.5 1.2-9.2-1.5-10.5-6L281.3 173c-5.6-20.3 7.4-41.1 28.8-44.5 18.6-3 36.4 9.8 41.5 27.9l2 7.1 7.1-1.9c18.2-4.7 38.2 4.3 44.9 21.9 7.7 20.3-3.8 41.9-24.2 47.2z\"]\n};\nvar faGrinSquint = {\n prefix: 'fas',\n iconName: 'grin-squint',\n icon: [496, 512, [], \"f585\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 189.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 208l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.9 9.4-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.2 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinSquintTears = {\n prefix: 'fas',\n iconName: 'grin-squint-tears',\n icon: [512, 512, [], \"f586\", \"M409.6 111.9c22.6-3.2 73.5-12 88.3-26.8 19.2-19.2 18.9-50.6-.7-70.2S446-5 426.9 14.2c-14.8 14.8-23.5 65.7-26.8 88.3-.8 5.5 3.9 10.2 9.5 9.4zM102.4 400.1c-22.6 3.2-73.5 12-88.3 26.8-19.1 19.1-18.8 50.6.8 70.2s51 19.9 70.2.7c14.8-14.8 23.5-65.7 26.8-88.3.8-5.5-3.9-10.2-9.5-9.4zm311.7-256.5c-33 3.9-48.6-25.1-45.7-45.7 3.4-24 7.4-42.1 11.5-56.5C285.1-13.4 161.8-.5 80.6 80.6-.5 161.7-13.4 285 41.4 379.9c14.4-4.1 32.4-8 56.5-11.5 33.2-3.9 48.6 25.2 45.7 45.7-3.4 24-7.4 42.1-11.5 56.5 94.8 54.8 218.1 41.9 299.3-39.2s94-204.4 39.2-299.3c-14.4 4.1-32.5 8-56.5 11.5zM255.7 106c3.3-13.2 22.4-11.5 23.6 1.8l4.8 52.3 52.3 4.8c13.4 1.2 14.9 20.3 1.8 23.6l-90.5 22.6c-8.9 2.2-16.7-5.9-14.5-14.5l22.5-90.6zm-90.9 230.3L160 284l-52.3-4.8c-13.4-1.2-14.9-20.3-1.8-23.6l90.5-22.6c8.8-2.2 16.7 5.8 14.5 14.5L188.3 338c-3.1 13.2-22.2 11.7-23.5-1.7zm215.7 44.2c-29.3 29.3-75.7 50.4-116.7 50.4-18.9 0-36.6-4.5-51-14.7-9.8-6.9-8.7-21.8 2-27.2 28.3-14.6 63.9-42.4 97.8-76.3s61.7-69.6 76.3-97.8c5.4-10.5 20.2-11.9 27.3-2 32.3 45.3 7.1 124.7-35.7 167.6z\"]\n};\nvar faGrinStars = {\n prefix: 'fas',\n iconName: 'grin-stars',\n icon: [496, 512, [], \"f587\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM94.6 168.9l34.9-5 15.5-31.6c2.9-5.8 11-5.8 13.9 0l15.5 31.6 34.9 5c6.2 1 8.9 8.6 4.3 13.2l-25.4 24.6 6 34.9c1 6.2-5.3 11-11 7.9L152 233.3l-31.3 16.3c-5.7 3.1-12-1.7-11-7.9l6-34.9-25.4-24.6c-4.6-4.7-1.9-12.3 4.3-13.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3zm157.7-249.9l-25.4 24.6 6 34.9c1 6.2-5.3 11-11 7.9L344 233.3l-31.3 16.3c-5.7 3.1-12-1.7-11-7.9l6-34.9-25.4-24.6c-4.5-4.6-1.9-12.2 4.3-13.2l34.9-5 15.5-31.6c2.9-5.8 11-5.8 13.9 0l15.5 31.6 34.9 5c6.3.9 9 8.5 4.4 13.1z\"]\n};\nvar faGrinTears = {\n prefix: 'fas',\n iconName: 'grin-tears',\n icon: [640, 512, [], \"f588\", \"M102.4 256.1c-22.6 3.2-73.5 12-88.3 26.8-19.1 19.1-18.8 50.6.8 70.2s51 19.9 70.2.7c14.8-14.8 23.5-65.7 26.8-88.3.8-5.5-3.9-10.2-9.5-9.4zm523.4 26.8c-14.8-14.8-65.7-23.5-88.3-26.8-5.5-.8-10.3 3.9-9.5 9.5 3.2 22.6 12 73.5 26.8 88.3 19.2 19.2 50.6 18.9 70.2-.7s20-51.2.8-70.3zm-129.4-12.8c-3.8-26.6 19.1-49.5 45.7-45.7 8.9 1.3 16.8 2.7 24.3 4.1C552.7 104.5 447.7 8 320 8S87.3 104.5 73.6 228.5c7.5-1.4 15.4-2.8 24.3-4.1 33.2-3.9 48.6 25.3 45.7 45.7-11.8 82.3-29.9 100.4-35.8 106.4-.9.9-2 1.6-3 2.5 42.7 74.6 123 125 215.2 125s172.5-50.4 215.2-125.1c-1-.9-2.1-1.5-3-2.5-5.9-5.9-24-24-35.8-106.3zM400 152c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.7 9.2-21.6 20.7-17.9C227.1 330.5 272 336 320 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinTongue = {\n prefix: 'fas',\n iconName: 'grin-tongue',\n icon: [496, 512, [], \"f589\", \"M248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.6 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-34.9 134.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3z\"]\n};\nvar faGrinTongueSquint = {\n prefix: 'fas',\n iconName: 'grin-tongue-squint',\n icon: [496, 512, [], \"f58a\", \"M293.1 374.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3zM248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.2-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-33.8 210.3l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.7 4.7 7.7 15.9 0 20.6zm163 30c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.8-4.7-7.8-15.9 0-20.6l80-48c11.7-6.9 23.9 7.7 15.4 18L343.6 208l33.6 40.3z\"]\n};\nvar faGrinTongueWink = {\n prefix: 'fas',\n iconName: 'grin-tongue-wink',\n icon: [496, 512, [], \"f58b\", \"M344 184c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-56 225l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L112 233c-8.5 7.4-21.6.3-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S208 197 212 222.2c1.6 11.1-11.6 18.2-20 10.8zm152 39c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm-50.9 102.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3z\"]\n};\nvar faGrinWink = {\n prefix: 'fas',\n iconName: 'grin-wink',\n icon: [496, 512, [], \"f58c\", \"M0 256c0 137 111 248 248 248s248-111 248-248S385 8 248 8 0 119 0 256zm200-48c0 17.7-14.3 32-32 32s-32-14.3-32-32 14.3-32 32-32 32 14.3 32 32zm168 25l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L288 233c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S384 197 388 222.2c1.6 11-11.5 18.2-20 10.8zm-243.1 87.8C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.3-3.7 22.6 6 20.7 17.9-9.2 55-83.2 93.3-143.8 93.3s-134.5-38.3-143.8-93.3c-2-11.9 9.3-21.6 20.7-17.9z\"]\n};\nvar faGripHorizontal = {\n prefix: 'fas',\n iconName: 'grip-horizontal',\n icon: [448, 512, [], \"f58d\", \"M96 288H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zM96 96H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z\"]\n};\nvar faGripLines = {\n prefix: 'fas',\n iconName: 'grip-lines',\n icon: [512, 512, [], \"f7a4\", \"M496 288H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-128H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z\"]\n};\nvar faGripLinesVertical = {\n prefix: 'fas',\n iconName: 'grip-lines-vertical',\n icon: [256, 512, [], \"f7a5\", \"M96 496V16c0-8.8-7.2-16-16-16H48c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16zm128 0V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16z\"]\n};\nvar faGripVertical = {\n prefix: 'fas',\n iconName: 'grip-vertical',\n icon: [320, 512, [], \"f58e\", \"M96 32H32C14.33 32 0 46.33 0 64v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zm0 160H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm0 160H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zM288 32h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zm0 160h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm0 160h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z\"]\n};\nvar faGuitar = {\n prefix: 'fas',\n iconName: 'guitar',\n icon: [512, 512, [], \"f7a6\", \"M502.63 39L473 9.37a32 32 0 0 0-45.26 0L381.46 55.7a35.14 35.14 0 0 0-8.53 13.79L360.77 106l-76.26 76.26c-12.16-8.76-25.5-15.74-40.1-19.14-33.45-7.78-67-.88-89.88 22a82.45 82.45 0 0 0-20.24 33.47c-6 18.56-23.21 32.69-42.15 34.46-23.7 2.27-45.73 11.45-62.61 28.44C-16.11 327-7.9 409 47.58 464.45S185 528 230.56 482.52c17-16.88 26.16-38.9 28.45-62.71 1.76-18.85 15.89-36.13 34.43-42.14a82.6 82.6 0 0 0 33.48-20.25c22.87-22.88 29.74-56.36 22-89.75-3.39-14.64-10.37-28-19.16-40.2L406 151.23l36.48-12.16a35.14 35.14 0 0 0 13.79-8.53l46.33-46.32a32 32 0 0 0 .03-45.22zM208 352a48 48 0 1 1 48-48 48 48 0 0 1-48 48z\"]\n};\nvar faHSquare = {\n prefix: 'fas',\n iconName: 'h-square',\n icon: [448, 512, [], \"f0fd\", \"M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zm-112 48h-32c-8.837 0-16 7.163-16 16v80H160v-80c0-8.837-7.163-16-16-16h-32c-8.837 0-16 7.163-16 16v224c0 8.837 7.163 16 16 16h32c8.837 0 16-7.163 16-16v-80h128v80c0 8.837 7.163 16 16 16h32c8.837 0 16-7.163 16-16V144c0-8.837-7.163-16-16-16z\"]\n};\nvar faHamburger = {\n prefix: 'fas',\n iconName: 'hamburger',\n icon: [512, 512, [], \"f805\", \"M464 256H48a48 48 0 0 0 0 96h416a48 48 0 0 0 0-96zm16 128H32a16 16 0 0 0-16 16v16a64 64 0 0 0 64 64h352a64 64 0 0 0 64-64v-16a16 16 0 0 0-16-16zM58.64 224h394.72c34.57 0 54.62-43.9 34.82-75.88C448 83.2 359.55 32.1 256 32c-103.54.1-192 51.2-232.18 116.11C4 180.09 24.07 224 58.64 224zM384 112a16 16 0 1 1-16 16 16 16 0 0 1 16-16zM256 80a16 16 0 1 1-16 16 16 16 0 0 1 16-16zm-128 32a16 16 0 1 1-16 16 16 16 0 0 1 16-16z\"]\n};\nvar faHammer = {\n prefix: 'fas',\n iconName: 'hammer',\n icon: [576, 512, [], \"f6e3\", \"M571.31 193.94l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31-28.9-28.9c5.63-21.31.36-44.9-16.35-61.61l-45.25-45.25c-62.48-62.48-163.79-62.48-226.28 0l90.51 45.25v18.75c0 16.97 6.74 33.25 18.75 45.25l49.14 49.14c16.71 16.71 40.3 21.98 61.61 16.35l28.9 28.9-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l90.51-90.51c6.23-6.24 6.23-16.37-.02-22.62zm-286.72-15.2c-3.7-3.7-6.84-7.79-9.85-11.95L19.64 404.96c-25.57 23.88-26.26 64.19-1.53 88.93s65.05 24.05 88.93-1.53l238.13-255.07c-3.96-2.91-7.9-5.87-11.44-9.41l-49.14-49.14z\"]\n};\nvar faHamsa = {\n prefix: 'fas',\n iconName: 'hamsa',\n icon: [512, 512, [], \"f665\", \"M509.34 307.25C504.28 295.56 492.75 288 480 288h-64V80c0-22-18-40-40-40s-40 18-40 40v134c0 5.52-4.48 10-10 10h-20c-5.52 0-10-4.48-10-10V40c0-22-18-40-40-40s-40 18-40 40v174c0 5.52-4.48 10-10 10h-20c-5.52 0-10-4.48-10-10V80c0-22-18-40-40-40S96 58 96 80v208H32c-12.75 0-24.28 7.56-29.34 19.25a31.966 31.966 0 0 0 5.94 34.58l102.69 110.03C146.97 490.08 199.69 512 256 512s109.03-21.92 144.72-60.14L503.4 341.83a31.966 31.966 0 0 0 5.94-34.58zM256 416c-53.02 0-96-64-96-64s42.98-64 96-64 96 64 96 64-42.98 64-96 64zm0-96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z\"]\n};\nvar faHandHolding = {\n prefix: 'fas',\n iconName: 'hand-holding',\n icon: [576, 512, [], \"f4bd\", \"M565.3 328.1c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z\"]\n};\nvar faHandHoldingHeart = {\n prefix: 'fas',\n iconName: 'hand-holding-heart',\n icon: [576, 512, [], \"f4be\", \"M275.3 250.5c7 7.4 18.4 7.4 25.5 0l108.9-114.2c31.6-33.2 29.8-88.2-5.6-118.8-30.8-26.7-76.7-21.9-104.9 7.7L288 36.9l-11.1-11.6C248.7-4.4 202.8-9.2 172 17.5c-35.3 30.6-37.2 85.6-5.6 118.8l108.9 114.2zm290 77.6c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z\"]\n};\nvar faHandHoldingMedical = {\n prefix: 'fas',\n iconName: 'hand-holding-medical',\n icon: [576, 512, [], \"e05c\", \"M159.88,175.82h64v64a16,16,0,0,0,16,16h64a16,16,0,0,0,16-16v-64h64a16,16,0,0,0,16-16v-64a16,16,0,0,0-16-16h-64v-64a16,16,0,0,0-16-16h-64a16,16,0,0,0-16,16v64h-64a16,16,0,0,0-16,16v64A16,16,0,0,0,159.88,175.82ZM568.07,336.13a39.91,39.91,0,0,0-55.93-8.47L392.47,415.84H271.86a16,16,0,0,1,0-32H350.1c16,0,30.75-10.87,33.37-26.61a32.06,32.06,0,0,0-31.62-37.38h-160a117.7,117.7,0,0,0-74.12,26.25l-46.5,37.74H15.87a16.11,16.11,0,0,0-16,16v96a16.11,16.11,0,0,0,16,16h347a104.8,104.8,0,0,0,61.7-20.27L559.6,392A40,40,0,0,0,568.07,336.13Z\"]\n};\nvar faHandHoldingUsd = {\n prefix: 'fas',\n iconName: 'hand-holding-usd',\n icon: [576, 512, [], \"f4c0\", \"M271.06,144.3l54.27,14.3a8.59,8.59,0,0,1,6.63,8.1c0,4.6-4.09,8.4-9.12,8.4h-35.6a30,30,0,0,1-11.19-2.2c-5.24-2.2-11.28-1.7-15.3,2l-19,17.5a11.68,11.68,0,0,0-2.25,2.66,11.42,11.42,0,0,0,3.88,15.74,83.77,83.77,0,0,0,34.51,11.5V240c0,8.8,7.83,16,17.37,16h17.37c9.55,0,17.38-7.2,17.38-16V222.4c32.93-3.6,57.84-31,53.5-63-3.15-23-22.46-41.3-46.56-47.7L282.68,97.4a8.59,8.59,0,0,1-6.63-8.1c0-4.6,4.09-8.4,9.12-8.4h35.6A30,30,0,0,1,332,83.1c5.23,2.2,11.28,1.7,15.3-2l19-17.5A11.31,11.31,0,0,0,368.47,61a11.43,11.43,0,0,0-3.84-15.78,83.82,83.82,0,0,0-34.52-11.5V16c0-8.8-7.82-16-17.37-16H295.37C285.82,0,278,7.2,278,16V33.6c-32.89,3.6-57.85,31-53.51,63C227.63,119.6,247,137.9,271.06,144.3ZM565.27,328.1c-11.8-10.7-30.2-10-42.6,0L430.27,402a63.64,63.64,0,0,1-40,14H272a16,16,0,0,1,0-32h78.29c15.9,0,30.71-10.9,33.25-26.6a31.2,31.2,0,0,0,.46-5.46A32,32,0,0,0,352,320H192a117.66,117.66,0,0,0-74.1,26.29L71.4,384H16A16,16,0,0,0,0,400v96a16,16,0,0,0,16,16H372.77a64,64,0,0,0,40-14L564,377a32,32,0,0,0,1.28-48.9Z\"]\n};\nvar faHandHoldingWater = {\n prefix: 'fas',\n iconName: 'hand-holding-water',\n icon: [576, 512, [], \"f4c1\", \"M288 256c53 0 96-42.1 96-94 0-40-57.1-120.7-83.2-155.6-6.4-8.5-19.2-8.5-25.6 0C249.1 41.3 192 122 192 162c0 51.9 43 94 96 94zm277.3 72.1c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z\"]\n};\nvar faHandLizard = {\n prefix: 'fas',\n iconName: 'hand-lizard',\n icon: [576, 512, [], \"f258\", \"M384 480h192V363.778a95.998 95.998 0 0 0-14.833-51.263L398.127 54.368A48 48 0 0 0 357.544 32H24C10.745 32 0 42.745 0 56v16c0 30.928 25.072 56 56 56h229.981c12.844 0 21.556 13.067 16.615 24.923l-21.41 51.385A32 32 0 0 1 251.648 224H128c-35.346 0-64 28.654-64 64v8c0 13.255 10.745 24 24 24h147.406a47.995 47.995 0 0 1 25.692 7.455l111.748 70.811A24.001 24.001 0 0 1 384 418.539V480z\"]\n};\nvar faHandMiddleFinger = {\n prefix: 'fas',\n iconName: 'hand-middle-finger',\n icon: [512, 512, [], \"f806\", \"M479.93 317.12a37.33 37.33 0 0 0-28.28-36.19L416 272v-49.59c0-11.44-9.69-21.29-23.15-23.54l-38.4-6.4C336.63 189.5 320 200.86 320 216v32a8 8 0 0 1-16 0V50c0-26.28-20.25-49.2-46.52-50A48 48 0 0 0 208 48v200a8 8 0 0 1-16 0v-32c0-15.15-16.63-26.51-34.45-23.54l-30.68 5.12c-18 3-30.87 16.12-30.87 31.38V376a8 8 0 0 1-16 0v-76l-27.36 15A37.34 37.34 0 0 0 32 348.4v73.47a37.31 37.31 0 0 0 10.93 26.39l30.93 30.93A112 112 0 0 0 153.05 512h215A112 112 0 0 0 480 400z\"]\n};\nvar faHandPaper = {\n prefix: 'fas',\n iconName: 'hand-paper',\n icon: [448, 512, [], \"f256\", \"M408.781 128.007C386.356 127.578 368 146.36 368 168.79V256h-8V79.79c0-22.43-18.356-41.212-40.781-40.783C297.488 39.423 280 57.169 280 79v177h-8V40.79C272 18.36 253.644-.422 231.219.007 209.488.423 192 18.169 192 40v216h-8V80.79c0-22.43-18.356-41.212-40.781-40.783C121.488 40.423 104 58.169 104 80v235.992l-31.648-43.519c-12.993-17.866-38.009-21.817-55.877-8.823-17.865 12.994-21.815 38.01-8.822 55.877l125.601 172.705A48 48 0 0 0 172.073 512h197.59c22.274 0 41.622-15.324 46.724-37.006l26.508-112.66a192.011 192.011 0 0 0 5.104-43.975V168c.001-21.831-17.487-39.577-39.218-39.993z\"]\n};\nvar faHandPeace = {\n prefix: 'fas',\n iconName: 'hand-peace',\n icon: [448, 512, [], \"f25b\", \"M408 216c-22.092 0-40 17.909-40 40h-8v-32c0-22.091-17.908-40-40-40s-40 17.909-40 40v32h-8V48c0-26.51-21.49-48-48-48s-48 21.49-48 48v208h-13.572L92.688 78.449C82.994 53.774 55.134 41.63 30.461 51.324 5.787 61.017-6.356 88.877 3.337 113.551l74.765 190.342-31.09 24.872c-15.381 12.306-19.515 33.978-9.741 51.081l64 112A39.998 39.998 0 0 0 136 512h240c18.562 0 34.686-12.77 38.937-30.838l32-136A39.97 39.97 0 0 0 448 336v-80c0-22.091-17.908-40-40-40z\"]\n};\nvar faHandPointDown = {\n prefix: 'fas',\n iconName: 'hand-point-down',\n icon: [384, 512, [], \"f0a7\", \"M91.826 467.2V317.966c-8.248 5.841-16.558 10.57-24.918 14.153C35.098 345.752-.014 322.222 0 288c.008-18.616 10.897-32.203 29.092-40 28.286-12.122 64.329-78.648 77.323-107.534 7.956-17.857 25.479-28.453 43.845-28.464l.001-.002h171.526c11.812 0 21.897 8.596 23.703 20.269 7.25 46.837 38.483 61.76 38.315 123.731-.007 2.724.195 13.254.195 16 0 50.654-22.122 81.574-71.263 72.6-9.297 18.597-39.486 30.738-62.315 16.45-21.177 24.645-53.896 22.639-70.944 6.299V467.2c0 24.15-20.201 44.8-43.826 44.8-23.283 0-43.826-21.35-43.826-44.8zM112 72V24c0-13.255 10.745-24 24-24h192c13.255 0 24 10.745 24 24v48c0 13.255-10.745 24-24 24H136c-13.255 0-24-10.745-24-24zm212-24c0-11.046-8.954-20-20-20s-20 8.954-20 20 8.954 20 20 20 20-8.954 20-20z\"]\n};\nvar faHandPointLeft = {\n prefix: 'fas',\n iconName: 'hand-point-left',\n icon: [512, 512, [], \"f0a5\", \"M44.8 155.826h149.234c-5.841-8.248-10.57-16.558-14.153-24.918C166.248 99.098 189.778 63.986 224 64c18.616.008 32.203 10.897 40 29.092 12.122 28.286 78.648 64.329 107.534 77.323 17.857 7.956 28.453 25.479 28.464 43.845l.002.001v171.526c0 11.812-8.596 21.897-20.269 23.703-46.837 7.25-61.76 38.483-123.731 38.315-2.724-.007-13.254.195-16 .195-50.654 0-81.574-22.122-72.6-71.263-18.597-9.297-30.738-39.486-16.45-62.315-24.645-21.177-22.639-53.896-6.299-70.944H44.8c-24.15 0-44.8-20.201-44.8-43.826 0-23.283 21.35-43.826 44.8-43.826zM440 176h48c13.255 0 24 10.745 24 24v192c0 13.255-10.745 24-24 24h-48c-13.255 0-24-10.745-24-24V200c0-13.255 10.745-24 24-24zm24 212c11.046 0 20-8.954 20-20s-8.954-20-20-20-20 8.954-20 20 8.954 20 20 20z\"]\n};\nvar faHandPointRight = {\n prefix: 'fas',\n iconName: 'hand-point-right',\n icon: [512, 512, [], \"f0a4\", \"M512 199.652c0 23.625-20.65 43.826-44.8 43.826h-99.851c16.34 17.048 18.346 49.766-6.299 70.944 14.288 22.829 2.147 53.017-16.45 62.315C353.574 425.878 322.654 448 272 448c-2.746 0-13.276-.203-16-.195-61.971.168-76.894-31.065-123.731-38.315C120.596 407.683 112 397.599 112 385.786V214.261l.002-.001c.011-18.366 10.607-35.889 28.464-43.845 28.886-12.994 95.413-49.038 107.534-77.323 7.797-18.194 21.384-29.084 40-29.092 34.222-.014 57.752 35.098 44.119 66.908-3.583 8.359-8.312 16.67-14.153 24.918H467.2c23.45 0 44.8 20.543 44.8 43.826zM96 200v192c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V200c0-13.255 10.745-24 24-24h48c13.255 0 24 10.745 24 24zM68 368c0-11.046-8.954-20-20-20s-20 8.954-20 20 8.954 20 20 20 20-8.954 20-20z\"]\n};\nvar faHandPointUp = {\n prefix: 'fas',\n iconName: 'hand-point-up',\n icon: [384, 512, [], \"f0a6\", \"M135.652 0c23.625 0 43.826 20.65 43.826 44.8v99.851c17.048-16.34 49.766-18.346 70.944 6.299 22.829-14.288 53.017-2.147 62.315 16.45C361.878 158.426 384 189.346 384 240c0 2.746-.203 13.276-.195 16 .168 61.971-31.065 76.894-38.315 123.731C343.683 391.404 333.599 400 321.786 400H150.261l-.001-.002c-18.366-.011-35.889-10.607-43.845-28.464C93.421 342.648 57.377 276.122 29.092 264 10.897 256.203.008 242.616 0 224c-.014-34.222 35.098-57.752 66.908-44.119 8.359 3.583 16.67 8.312 24.918 14.153V44.8c0-23.45 20.543-44.8 43.826-44.8zM136 416h192c13.255 0 24 10.745 24 24v48c0 13.255-10.745 24-24 24H136c-13.255 0-24-10.745-24-24v-48c0-13.255 10.745-24 24-24zm168 28c-11.046 0-20 8.954-20 20s8.954 20 20 20 20-8.954 20-20-8.954-20-20-20z\"]\n};\nvar faHandPointer = {\n prefix: 'fas',\n iconName: 'hand-pointer',\n icon: [448, 512, [], \"f25a\", \"M448 240v96c0 3.084-.356 6.159-1.063 9.162l-32 136C410.686 499.23 394.562 512 376 512H168a40.004 40.004 0 0 1-32.35-16.473l-127.997-176c-12.993-17.866-9.043-42.883 8.822-55.876 17.867-12.994 42.884-9.043 55.877 8.823L104 315.992V40c0-22.091 17.908-40 40-40s40 17.909 40 40v200h8v-40c0-22.091 17.908-40 40-40s40 17.909 40 40v40h8v-24c0-22.091 17.908-40 40-40s40 17.909 40 40v24h8c0-22.091 17.908-40 40-40s40 17.909 40 40zm-256 80h-8v96h8v-96zm88 0h-8v96h8v-96zm88 0h-8v96h8v-96z\"]\n};\nvar faHandRock = {\n prefix: 'fas',\n iconName: 'hand-rock',\n icon: [512, 512, [], \"f255\", \"M464.8 80c-26.9-.4-48.8 21.2-48.8 48h-8V96.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v32h-8V80.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v48h-8V96.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v136l-8-7.1v-48.1c0-26.3-20.9-48.3-47.2-48.8C21.9 127.6 0 149.2 0 176v66.4c0 27.4 11.7 53.5 32.2 71.8l111.7 99.3c10.2 9.1 16.1 22.2 16.1 35.9v6.7c0 13.3 10.7 24 24 24h240c13.3 0 24-10.7 24-24v-2.9c0-12.8 2.6-25.5 7.5-37.3l49-116.3c5-11.8 7.5-24.5 7.5-37.3V128.8c0-26.3-20.9-48.4-47.2-48.8z\"]\n};\nvar faHandScissors = {\n prefix: 'fas',\n iconName: 'hand-scissors',\n icon: [512, 512, [], \"f257\", \"M216 440c0-22.092 17.909-40 40-40v-8h-32c-22.091 0-40-17.908-40-40s17.909-40 40-40h32v-8H48c-26.51 0-48-21.49-48-48s21.49-48 48-48h208v-13.572l-177.551-69.74c-24.674-9.694-36.818-37.555-27.125-62.228 9.693-24.674 37.554-36.817 62.228-27.124l190.342 74.765 24.872-31.09c12.306-15.381 33.978-19.515 51.081-9.741l112 64A40.002 40.002 0 0 1 512 168v240c0 18.562-12.77 34.686-30.838 38.937l-136 32A39.982 39.982 0 0 1 336 480h-80c-22.091 0-40-17.908-40-40z\"]\n};\nvar faHandSparkles = {\n prefix: 'fas',\n iconName: 'hand-sparkles',\n icon: [640, 512, [], \"e05d\", \"M106.66,170.64l.09,0,49.55-20.65a7.32,7.32,0,0,0,3.68-6h0a7.29,7.29,0,0,0-3.68-6l-49.57-20.67-.07,0L86,67.68a6.66,6.66,0,0,0-11.92,0l-20.7,49.63-.05,0L3.7,138A7.29,7.29,0,0,0,0,144H0a7.32,7.32,0,0,0,3.68,6L53.27,170.6l.07,0L74,220.26a6.65,6.65,0,0,0,11.92,0l20.69-49.62ZM471.38,467.41l-1-.42-1-.5a38.67,38.67,0,0,1,0-69.14l1-.49,1-.43,37.49-15.63,15.63-37.48.41-1,.47-.95c3.85-7.74,10.58-13.63,18.35-17.34,0-1.33.25-2.69.27-4V144a32,32,0,0,0-64,0v72a8,8,0,0,1-8,8H456a8,8,0,0,1-8-8V64a32,32,0,0,0-64,0V216a8,8,0,0,1-8,8H360a8,8,0,0,1-8-8V32a32,32,0,0,0-64,0V216a8,8,0,0,1-8,8H264a8,8,0,0,1-8-8V64a32,32,0,0,0-64,0v241l-23.59-32.49a40,40,0,0,0-64.71,47.09L229.3,492.21A48.07,48.07,0,0,0,268.09,512H465.7c19.24,0,35.65-11.73,43.24-28.79l-.07-.17ZM349.79,339.52,320,351.93l-12.42,29.78a4,4,0,0,1-7.15,0L288,351.93l-29.79-12.41a4,4,0,0,1,0-7.16L288,319.94l12.42-29.78a4,4,0,0,1,7.15,0L320,319.94l29.79,12.42a4,4,0,0,1,0,7.16ZM640,431.91a7.28,7.28,0,0,0-3.68-6l-49.57-20.67-.07,0L566,355.63a6.66,6.66,0,0,0-11.92,0l-20.7,49.63-.05,0L483.7,426a7.28,7.28,0,0,0-3.68,6h0a7.29,7.29,0,0,0,3.68,5.95l49.57,20.67.07,0L554,508.21a6.65,6.65,0,0,0,11.92,0l20.69-49.62h0l.09,0,49.55-20.66a7.29,7.29,0,0,0,3.68-5.95h0Z\"]\n};\nvar faHandSpock = {\n prefix: 'fas',\n iconName: 'hand-spock',\n icon: [512, 512, [], \"f259\", \"M510.9005,145.27027,442.604,432.09391A103.99507,103.99507,0,0,1,341.43745,512H214.074a135.96968,135.96968,0,0,1-93.18489-36.95291L12.59072,373.12723a39.992,39.992,0,0,1,54.8122-58.24988l60.59342,57.02528v0a283.24849,283.24849,0,0,0-11.6703-80.46734L73.63726,147.36011a40.00575,40.00575,0,1,1,76.71833-22.7187l37.15458,125.39477a8.33113,8.33113,0,0,0,16.05656-4.4414L153.26183,49.95406A39.99638,39.99638,0,1,1,230.73015,30.0166l56.09491,218.15825a10.42047,10.42047,0,0,0,20.30018-.501L344.80766,63.96966a40.052,40.052,0,0,1,51.30245-30.0893c19.86073,6.2998,30.86262,27.67378,26.67564,48.08487l-33.83869,164.966a7.55172,7.55172,0,0,0,14.74406,3.2666l29.3973-123.45874a39.99414,39.99414,0,1,1,77.81208,18.53121Z\"]\n};\nvar faHands = {\n prefix: 'fas',\n iconName: 'hands',\n icon: [640, 512, [], \"f4c2\", \"M204.8 230.4c-10.6-14.1-30.7-17-44.8-6.4-14.1 10.6-17 30.7-6.4 44.8l38.1 50.8c4.8 6.4 4.1 15.3-1.5 20.9l-12.8 12.8c-6.7 6.7-17.6 6.2-23.6-1.1L64 244.4V96c0-17.7-14.3-32-32-32S0 78.3 0 96v218.4c0 10.9 3.7 21.5 10.5 30l104.1 134.3c5 6.5 8.4 13.9 10.4 21.7 1.8 6.9 8.1 11.6 15.3 11.6H272c8.8 0 16-7.2 16-16V384c0-27.7-9-54.6-25.6-76.8l-57.6-76.8zM608 64c-17.7 0-32 14.3-32 32v148.4l-89.8 107.8c-6 7.2-17 7.7-23.6 1.1l-12.8-12.8c-5.6-5.6-6.3-14.5-1.5-20.9l38.1-50.8c10.6-14.1 7.7-34.2-6.4-44.8-14.1-10.6-34.2-7.7-44.8 6.4l-57.6 76.8C361 329.4 352 356.3 352 384v112c0 8.8 7.2 16 16 16h131.7c7.1 0 13.5-4.7 15.3-11.6 2-7.8 5.4-15.2 10.4-21.7l104.1-134.3c6.8-8.5 10.5-19.1 10.5-30V96c0-17.7-14.3-32-32-32z\"]\n};\nvar faHandsHelping = {\n prefix: 'fas',\n iconName: 'hands-helping',\n icon: [640, 512, [], \"f4c4\", \"M488 192H336v56c0 39.7-32.3 72-72 72s-72-32.3-72-72V126.4l-64.9 39C107.8 176.9 96 197.8 96 220.2v47.3l-80 46.2C.7 322.5-4.6 342.1 4.3 357.4l80 138.6c8.8 15.3 28.4 20.5 43.7 11.7L231.4 448H368c35.3 0 64-28.7 64-64h16c17.7 0 32-14.3 32-32v-64h8c13.3 0 24-10.7 24-24v-48c0-13.3-10.7-24-24-24zm147.7-37.4L555.7 16C546.9.7 527.3-4.5 512 4.3L408.6 64H306.4c-12 0-23.7 3.4-33.9 9.7L239 94.6c-9.4 5.8-15 16.1-15 27.1V248c0 22.1 17.9 40 40 40s40-17.9 40-40v-88h184c30.9 0 56 25.1 56 56v28.5l80-46.2c15.3-8.9 20.5-28.4 11.7-43.7z\"]\n};\nvar faHandsWash = {\n prefix: 'fas',\n iconName: 'hands-wash',\n icon: [576, 512, [], \"e05e\", \"M496,224a48,48,0,1,0-48-48A48,48,0,0,0,496,224ZM311.47,178.45A56.77,56.77,0,0,1,328,176a56,56,0,0,1,19,3.49l15.35-48.61A24,24,0,0,0,342,99.74c-11.53-1.35-22.21,6.44-25.71,17.51l-20.9,66.17ZM93.65,386.33c.8-.19,1.54-.54,2.35-.71V359.93a156,156,0,0,1,107.06-148l73.7-22.76L310.92,81.05a24,24,0,0,0-20.33-31.11c-11.53-1.34-22.22,6.45-25.72,17.52L231.42,173.88a8,8,0,0,1-15.26-4.83L259.53,31.26A24,24,0,0,0,239.2.15C227.67-1.19,217,6.6,213.49,17.66L165.56,169.37a8,8,0,1,1-15.26-4.82l38.56-122a24,24,0,0,0-20.33-31.11C157,10,146.32,17.83,142.82,28.9l-60,189.85L80.76,168.7A24,24,0,0,0,56.9,144.55c-13.23-.05-24.72,10.54-24.9,23.86V281.14A123.69,123.69,0,0,0,93.65,386.33ZM519.1,336H360a8,8,0,0,1,0-16H488a24,24,0,0,0,23.54-28.76C509.35,279.84,498.71,272,487.1,272H288l47.09-17.06a24,24,0,0,0-14.18-45.88L213.19,242.31A123.88,123.88,0,0,0,128,360v25.65a79.78,79.78,0,0,1,58,108.63A118.9,118.9,0,0,0,248,512H456a24,24,0,0,0,23.54-28.76C477.35,471.84,466.71,464,455.1,464H360a8,8,0,0,1,0-16H488a24,24,0,0,0,23.54-28.76C509.35,407.84,498.71,400,487.1,400H360a8,8,0,0,1,0-16H520a24,24,0,0,0,23.54-28.76C541.35,343.84,530.71,336,519.1,336ZM416,64a32,32,0,1,0-32-32A32,32,0,0,0,416,64ZM112,416a48,48,0,1,0,48,48A48,48,0,0,0,112,416Z\"]\n};\nvar faHandshake = {\n prefix: 'fas',\n iconName: 'handshake',\n icon: [640, 512, [], \"f2b5\", \"M434.7 64h-85.9c-8 0-15.7 3-21.6 8.4l-98.3 90c-.1.1-.2.3-.3.4-16.6 15.6-16.3 40.5-2.1 56 12.7 13.9 39.4 17.6 56.1 2.7.1-.1.3-.1.4-.2l79.9-73.2c6.5-5.9 16.7-5.5 22.6 1 6 6.5 5.5 16.6-1 22.6l-26.1 23.9L504 313.8c2.9 2.4 5.5 5 7.9 7.7V128l-54.6-54.6c-5.9-6-14.1-9.4-22.6-9.4zM544 128.2v223.9c0 17.7 14.3 32 32 32h64V128.2h-96zm48 223.9c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zM0 384h64c17.7 0 32-14.3 32-32V128.2H0V384zm48-63.9c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16c0-8.9 7.2-16 16-16zm435.9 18.6L334.6 217.5l-30 27.5c-29.7 27.1-75.2 24.5-101.7-4.4-26.9-29.4-24.8-74.9 4.4-101.7L289.1 64h-83.8c-8.5 0-16.6 3.4-22.6 9.4L128 128v223.9h18.3l90.5 81.9c27.4 22.3 67.7 18.1 90-9.3l.2-.2 17.9 15.5c15.9 13 39.4 10.5 52.3-5.4l31.4-38.6 5.4 4.4c13.7 11.1 33.9 9.1 45-4.7l9.5-11.7c11.2-13.8 9.1-33.9-4.6-45.1z\"]\n};\nvar faHandshakeAltSlash = {\n prefix: 'fas',\n iconName: 'handshake-alt-slash',\n icon: [640, 512, [], \"e05f\", \"M358.59,195.6,504.2,313.8a63.4,63.4,0,0,1,22.21,37.91H624a16.05,16.05,0,0,0,16-16V143.91A16,16,0,0,0,624,128H512L457.41,73.41A32,32,0,0,0,434.8,64H348.91a32,32,0,0,0-21.61,8.41l-88.12,80.68-25.69-19.85L289.09,64H205.3a32,32,0,0,0-22.6,9.41l-20.34,20.3L45.47,3.38A16,16,0,0,0,23,6.19L3.38,31.46A16,16,0,0,0,6.19,53.91L594.54,508.63A16,16,0,0,0,617,505.82l19.64-25.27a16,16,0,0,0-2.81-22.45L303.4,202.72l32.69-29.92,27-24.7a16,16,0,0,1,21.61,23.61ZM16,128A16.05,16.05,0,0,0,0,144V335.91a16,16,0,0,0,16,16H146.3l90.5,81.89a64,64,0,0,0,90-9.3l.2-.2,17.91,15.5a37.16,37.16,0,0,0,52.29-5.39l8.8-10.82L23.56,128Z\"]\n};\nvar faHandshakeSlash = {\n prefix: 'fas',\n iconName: 'handshake-slash',\n icon: [640, 512, [], \"e060\", \"M0,128.21V384H64a32,32,0,0,0,32-32V184L23.83,128.21ZM48,320.1a16,16,0,1,1-16,16A16,16,0,0,1,48,320.1Zm80,31.81h18.3l90.5,81.89a64,64,0,0,0,90-9.3l.2-.2,17.91,15.5a37.16,37.16,0,0,0,52.29-5.39l8.8-10.82L128,208.72Zm416-223.7V352.1a32,32,0,0,0,32,32h64V128.21ZM592,352.1a16,16,0,1,1,16-16A16,16,0,0,1,592,352.1ZM303.33,202.67l59.58-54.57a16,16,0,0,1,21.59,23.61L358.41,195.6,504,313.8a73.08,73.08,0,0,1,7.91,7.7V128L457.3,73.41A31.76,31.76,0,0,0,434.7,64H348.8a31.93,31.93,0,0,0-21.6,8.41l-88.07,80.64-25.64-19.81L289.09,64H205.3a32,32,0,0,0-22.6,9.41L162.36,93.72,45.47,3.38A16,16,0,0,0,23,6.19L3.38,31.46A16,16,0,0,0,6.19,53.91L594.53,508.63A16,16,0,0,0,617,505.82l19.65-25.27a16,16,0,0,0-2.82-22.45Z\"]\n};\nvar faHanukiah = {\n prefix: 'fas',\n iconName: 'hanukiah',\n icon: [640, 512, [], \"f6e6\", \"M232 160c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm-64 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm224 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm64 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm88 8c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v120h32V168zm-440-8c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm520 0h-32c-8.84 0-16 7.16-16 16v112c0 17.67-14.33 32-32 32H352V128c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v192H96c-17.67 0-32-14.33-32-32V176c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v112c0 53.02 42.98 96 96 96h192v64H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H352v-64h192c53.02 0 96-42.98 96-96V176c0-8.84-7.16-16-16-16zm-16-32c13.25 0 24-11.94 24-26.67S608 48 608 48s-24 38.61-24 53.33S594.75 128 608 128zm-576 0c13.25 0 24-11.94 24-26.67S32 48 32 48 8 86.61 8 101.33 18.75 128 32 128zm288-48c13.25 0 24-11.94 24-26.67S320 0 320 0s-24 38.61-24 53.33S306.75 80 320 80zm-208 48c13.25 0 24-11.94 24-26.67S112 48 112 48s-24 38.61-24 53.33S98.75 128 112 128zm64 0c13.25 0 24-11.94 24-26.67S176 48 176 48s-24 38.61-24 53.33S162.75 128 176 128zm64 0c13.25 0 24-11.94 24-26.67S240 48 240 48s-24 38.61-24 53.33S226.75 128 240 128zm160 0c13.25 0 24-11.94 24-26.67S400 48 400 48s-24 38.61-24 53.33S386.75 128 400 128zm64 0c13.25 0 24-11.94 24-26.67S464 48 464 48s-24 38.61-24 53.33S450.75 128 464 128zm64 0c13.25 0 24-11.94 24-26.67S528 48 528 48s-24 38.61-24 53.33S514.75 128 528 128z\"]\n};\nvar faHardHat = {\n prefix: 'fas',\n iconName: 'hard-hat',\n icon: [512, 512, [], \"f807\", \"M480 288c0-80.25-49.28-148.92-119.19-177.62L320 192V80a16 16 0 0 0-16-16h-96a16 16 0 0 0-16 16v112l-40.81-81.62C81.28 139.08 32 207.75 32 288v64h448zm16 96H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h480a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faHashtag = {\n prefix: 'fas',\n iconName: 'hashtag',\n icon: [448, 512, [], \"f292\", \"M440.667 182.109l7.143-40c1.313-7.355-4.342-14.109-11.813-14.109h-74.81l14.623-81.891C377.123 38.754 371.468 32 363.997 32h-40.632a12 12 0 0 0-11.813 9.891L296.175 128H197.54l14.623-81.891C213.477 38.754 207.822 32 200.35 32h-40.632a12 12 0 0 0-11.813 9.891L132.528 128H53.432a12 12 0 0 0-11.813 9.891l-7.143 40C33.163 185.246 38.818 192 46.289 192h74.81L98.242 320H19.146a12 12 0 0 0-11.813 9.891l-7.143 40C-1.123 377.246 4.532 384 12.003 384h74.81L72.19 465.891C70.877 473.246 76.532 480 84.003 480h40.632a12 12 0 0 0 11.813-9.891L151.826 384h98.634l-14.623 81.891C234.523 473.246 240.178 480 247.65 480h40.632a12 12 0 0 0 11.813-9.891L315.472 384h79.096a12 12 0 0 0 11.813-9.891l7.143-40c1.313-7.355-4.342-14.109-11.813-14.109h-74.81l22.857-128h79.096a12 12 0 0 0 11.813-9.891zM261.889 320h-98.634l22.857-128h98.634l-22.857 128z\"]\n};\nvar faHatCowboy = {\n prefix: 'fas',\n iconName: 'hat-cowboy',\n icon: [640, 512, [], \"f8c0\", \"M490 296.9C480.51 239.51 450.51 64 392.3 64c-14 0-26.49 5.93-37 14a58.21 58.21 0 0 1-70.58 0c-10.51-8-23-14-37-14-58.2 0-88.2 175.47-97.71 232.88C188.81 309.47 243.73 320 320 320s131.23-10.51 170-23.1zm142.9-37.18a16 16 0 0 0-19.75 1.5c-1 .9-101.27 90.78-293.16 90.78-190.82 0-292.22-89.94-293.24-90.84A16 16 0 0 0 1 278.53C1.73 280.55 78.32 480 320 480s318.27-199.45 319-201.47a16 16 0 0 0-6.09-18.81z\"]\n};\nvar faHatCowboySide = {\n prefix: 'fas',\n iconName: 'hat-cowboy-side',\n icon: [640, 512, [], \"f8c1\", \"M260.8 291.06c-28.63-22.94-62-35.06-96.4-35.06C87 256 21.47 318.72 1.43 412.06c-3.55 16.6-.43 33.83 8.57 47.3C18.75 472.47 31.83 480 45.88 480H592c-103.21 0-155-37.07-233.19-104.46zm234.65-18.29L468.4 116.2A64 64 0 0 0 392 64.41L200.85 105a64 64 0 0 0-50.35 55.79L143.61 226c6.9-.83 13.7-2 20.79-2 41.79 0 82 14.55 117.29 42.82l98 84.48C450.76 412.54 494.9 448 592 448a48 48 0 0 0 48-48c0-25.39-29.6-119.33-144.55-127.23z\"]\n};\nvar faHatWizard = {\n prefix: 'fas',\n iconName: 'hat-wizard',\n icon: [512, 512, [], \"f6e8\", \"M496 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-304-64l-64-32 64-32 32-64 32 64 64 32-64 32-16 32h208l-86.41-201.63a63.955 63.955 0 0 1-1.89-45.45L416 0 228.42 107.19a127.989 127.989 0 0 0-53.46 59.15L64 416h144l-16-32zm64-224l16-32 16 32 32 16-32 16-16 32-16-32-32-16 32-16z\"]\n};\nvar faHdd = {\n prefix: 'fas',\n iconName: 'hdd',\n icon: [576, 512, [], \"f0a0\", \"M576 304v96c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48v-96c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48zm-48-80a79.557 79.557 0 0 1 30.777 6.165L462.25 85.374A48.003 48.003 0 0 0 422.311 64H153.689a48 48 0 0 0-39.938 21.374L17.223 230.165A79.557 79.557 0 0 1 48 224h480zm-48 96c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm-96 0c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32z\"]\n};\nvar faHeadSideCough = {\n prefix: 'fas',\n iconName: 'head-side-cough',\n icon: [640, 512, [], \"e061\", \"M616,304a24,24,0,1,0-24-24A24,24,0,0,0,616,304ZM552,416a24,24,0,1,0,24,24A24,24,0,0,0,552,416Zm-64-56a24,24,0,1,0,24,24A24,24,0,0,0,488,360ZM616,464a24,24,0,1,0,24,24A24,24,0,0,0,616,464Zm0-104a24,24,0,1,0,24,24A24,24,0,0,0,616,360Zm-64-40a24,24,0,1,0,24,24A24,24,0,0,0,552,320Zm-74.78-45c-21-47.12-48.5-151.75-73.12-186.75A208.13,208.13,0,0,0,234.1,0H192C86,0,0,86,0,192c0,56.75,24.75,107.62,64,142.88V512H288V480h64a64,64,0,0,0,64-64H320a32,32,0,0,1,0-64h96V320h32A32,32,0,0,0,477.22,275ZM288,224a32,32,0,1,1,32-32A32.07,32.07,0,0,1,288,224Z\"]\n};\nvar faHeadSideCoughSlash = {\n prefix: 'fas',\n iconName: 'head-side-cough-slash',\n icon: [640, 512, [], \"e062\", \"M454.11,319.21c19.56-3.81,31.62-25,23.11-44.21-21-47.12-48.5-151.75-73.12-186.75A208.13,208.13,0,0,0,234.1,0H192A190.64,190.64,0,0,0,84.18,33.3L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.46A16,16,0,0,0,6.18,53.91L594.53,508.63A16,16,0,0,0,617,505.82l19.64-25.27a16,16,0,0,0-2.81-22.45ZM313.39,210.45,263.61,172c5.88-7.14,14.43-12,24.36-12a32.06,32.06,0,0,1,32,32C320,199,317.24,205.17,313.39,210.45ZM616,304a24,24,0,1,0-24-24A24,24,0,0,0,616,304Zm-64,64a24,24,0,1,0-24-24A24,24,0,0,0,552,368ZM288,384a32,32,0,0,1,32-32h19.54L20.73,105.59A190.86,190.86,0,0,0,0,192c0,56.75,24.75,107.62,64,142.88V512H288V480h64a64,64,0,0,0,64-64H320A32,32,0,0,1,288,384Zm328-24a24,24,0,1,0,24,24A24,24,0,0,0,616,360Z\"]\n};\nvar faHeadSideMask = {\n prefix: 'fas',\n iconName: 'head-side-mask',\n icon: [512, 512, [], \"e063\", \"M.15,184.42C-2.17,244.21,23,298.06,64,334.88V512H224V316.51L3.67,156.25A182.28,182.28,0,0,0,.15,184.42ZM509.22,275c-21-47.12-48.5-151.75-73.12-186.75A208.11,208.11,0,0,0,266.11,0H200C117,0,42.48,50.57,13.25,123.65L239.21,288H511.76A31.35,31.35,0,0,0,509.22,275ZM320,224a32,32,0,1,1,32-32A32.07,32.07,0,0,1,320,224Zm16,144H496l16-48H256V512H401.88a64,64,0,0,0,60.71-43.76L464,464H336a16,16,0,0,1,0-32H474.67l10.67-32H336a16,16,0,0,1,0-32Z\"]\n};\nvar faHeadSideVirus = {\n prefix: 'fas',\n iconName: 'head-side-virus',\n icon: [512, 512, [], \"e064\", \"M272,240a16,16,0,1,0,16,16A16,16,0,0,0,272,240Zm-64-64a16,16,0,1,0,16,16A16,16,0,0,0,208,176Zm301.2,99c-20.93-47.12-48.43-151.73-73.07-186.75A207.9,207.9,0,0,0,266.09,0H192C86,0,0,86,0,192A191.23,191.23,0,0,0,64,334.81V512H320V448h64a64,64,0,0,0,64-64V320H480A32,32,0,0,0,509.2,275ZM368,240H355.88c-28.51,0-42.79,34.47-22.63,54.63l8.58,8.57a16,16,0,1,1-22.63,22.63l-8.57-8.58C290.47,297.09,256,311.37,256,339.88V352a16,16,0,0,1-32,0V339.88c0-28.51-34.47-42.79-54.63-22.63l-8.57,8.58a16,16,0,0,1-22.63-22.63l8.58-8.57c20.16-20.16,5.88-54.63-22.63-54.63H112a16,16,0,0,1,0-32h12.12c28.51,0,42.79-34.47,22.63-54.63l-8.58-8.57a16,16,0,0,1,22.63-22.63l8.57,8.58c20.16,20.16,54.63,5.88,54.63-22.63V96a16,16,0,0,1,32,0v12.12c0,28.51,34.47,42.79,54.63,22.63l8.57-8.58a16,16,0,0,1,22.63,22.63l-8.58,8.57C313.09,173.53,327.37,208,355.88,208H368a16,16,0,0,1,0,32Z\"]\n};\nvar faHeading = {\n prefix: 'fas',\n iconName: 'heading',\n icon: [512, 512, [], \"f1dc\", \"M448 96v320h32a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H320a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32V288H160v128h32a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32V96H32a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h160a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16h-32v128h192V96h-32a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h160a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16z\"]\n};\nvar faHeadphones = {\n prefix: 'fas',\n iconName: 'headphones',\n icon: [512, 512, [], \"f025\", \"M256 32C114.52 32 0 146.496 0 288v48a32 32 0 0 0 17.689 28.622l14.383 7.191C34.083 431.903 83.421 480 144 480h24c13.255 0 24-10.745 24-24V280c0-13.255-10.745-24-24-24h-24c-31.342 0-59.671 12.879-80 33.627V288c0-105.869 86.131-192 192-192s192 86.131 192 192v1.627C427.671 268.879 399.342 256 368 256h-24c-13.255 0-24 10.745-24 24v176c0 13.255 10.745 24 24 24h24c60.579 0 109.917-48.098 111.928-108.187l14.382-7.191A32 32 0 0 0 512 336v-48c0-141.479-114.496-256-256-256z\"]\n};\nvar faHeadphonesAlt = {\n prefix: 'fas',\n iconName: 'headphones-alt',\n icon: [512, 512, [], \"f58f\", \"M160 288h-16c-35.35 0-64 28.7-64 64.12v63.76c0 35.41 28.65 64.12 64 64.12h16c17.67 0 32-14.36 32-32.06V320.06c0-17.71-14.33-32.06-32-32.06zm208 0h-16c-17.67 0-32 14.35-32 32.06v127.88c0 17.7 14.33 32.06 32 32.06h16c35.35 0 64-28.71 64-64.12v-63.76c0-35.41-28.65-64.12-64-64.12zM256 32C112.91 32 4.57 151.13 0 288v112c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V288c0-114.67 93.33-207.8 208-207.82 114.67.02 208 93.15 208 207.82v112c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V288C507.43 151.13 399.09 32 256 32z\"]\n};\nvar faHeadset = {\n prefix: 'fas',\n iconName: 'headset',\n icon: [512, 512, [], \"f590\", \"M192 208c0-17.67-14.33-32-32-32h-16c-35.35 0-64 28.65-64 64v48c0 35.35 28.65 64 64 64h16c17.67 0 32-14.33 32-32V208zm176 144c35.35 0 64-28.65 64-64v-48c0-35.35-28.65-64-64-64h-16c-17.67 0-32 14.33-32 32v112c0 17.67 14.33 32 32 32h16zM256 0C113.18 0 4.58 118.83 0 256v16c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-16c0-114.69 93.31-208 208-208s208 93.31 208 208h-.12c.08 2.43.12 165.72.12 165.72 0 23.35-18.93 42.28-42.28 42.28H320c0-26.51-21.49-48-48-48h-32c-26.51 0-48 21.49-48 48s21.49 48 48 48h181.72c49.86 0 90.28-40.42 90.28-90.28V256C507.42 118.83 398.82 0 256 0z\"]\n};\nvar faHeart = {\n prefix: 'fas',\n iconName: 'heart',\n icon: [512, 512, [], \"f004\", \"M462.3 62.6C407.5 15.9 326 24.3 275.7 76.2L256 96.5l-19.7-20.3C186.1 24.3 104.5 15.9 49.7 62.6c-62.8 53.6-66.1 149.8-9.9 207.9l193.5 199.8c12.5 12.9 32.8 12.9 45.3 0l193.5-199.8c56.3-58.1 53-154.3-9.8-207.9z\"]\n};\nvar faHeartBroken = {\n prefix: 'fas',\n iconName: 'heart-broken',\n icon: [512, 512, [], \"f7a9\", \"M473.7 73.8l-2.4-2.5c-46-47-118-51.7-169.6-14.8L336 159.9l-96 64 48 128-144-144 96-64-28.6-86.5C159.7 19.6 87 24 40.7 71.4l-2.4 2.4C-10.4 123.6-12.5 202.9 31 256l212.1 218.6c7.1 7.3 18.6 7.3 25.7 0L481 255.9c43.5-53 41.4-132.3-7.3-182.1z\"]\n};\nvar faHeartbeat = {\n prefix: 'fas',\n iconName: 'heartbeat',\n icon: [512, 512, [], \"f21e\", \"M320.2 243.8l-49.7 99.4c-6 12.1-23.4 11.7-28.9-.6l-56.9-126.3-30 71.7H60.6l182.5 186.5c7.1 7.3 18.6 7.3 25.7 0L451.4 288H342.3l-22.1-44.2zM473.7 73.9l-2.4-2.5c-51.5-52.6-135.8-52.6-187.4 0L256 100l-27.9-28.5c-51.5-52.7-135.9-52.7-187.4 0l-2.4 2.4C-10.4 123.7-12.5 203 31 256h102.4l35.9-86.2c5.4-12.9 23.6-13.2 29.4-.4l58.2 129.3 49-97.9c5.9-11.8 22.7-11.8 28.6 0l27.6 55.2H481c43.5-53 41.4-132.3-7.3-182.1z\"]\n};\nvar faHelicopter = {\n prefix: 'fas',\n iconName: 'helicopter',\n icon: [640, 512, [], \"f533\", \"M304 384h272c17.67 0 32-14.33 32-32 0-123.71-100.29-224-224-224V64h176c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16H144c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h176v64H112L68.8 70.4C65.78 66.37 61.03 64 56 64H16.01C5.6 64-2.04 73.78.49 83.88L32 192l160 64 86.4 115.2A31.992 31.992 0 0 0 304 384zm112-188.49C478.55 208.3 528.03 257.44 540.79 320H416V195.51zm219.37 263.3l-22.15-22.2c-6.25-6.26-16.24-6.1-22.64.01-7.09 6.77-13.84 11.25-24.64 11.25H240c-8.84 0-16 7.18-16 16.03v32.06c0 8.85 7.16 16.03 16 16.03h325.94c14.88 0 35.3-.47 68.45-29.52 7.02-6.14 7.57-17.05.98-23.66z\"]\n};\nvar faHighlighter = {\n prefix: 'fas',\n iconName: 'highlighter',\n icon: [544, 512, [], \"f591\", \"M0 479.98L99.92 512l35.45-35.45-67.04-67.04L0 479.98zm124.61-240.01a36.592 36.592 0 0 0-10.79 38.1l13.05 42.83-50.93 50.94 96.23 96.23 50.86-50.86 42.74 13.08c13.73 4.2 28.65-.01 38.15-10.78l35.55-41.64-173.34-173.34-41.52 35.44zm403.31-160.7l-63.2-63.2c-20.49-20.49-53.38-21.52-75.12-2.35L190.55 183.68l169.77 169.78L530.27 154.4c19.18-21.74 18.15-54.63-2.35-75.13z\"]\n};\nvar faHiking = {\n prefix: 'fas',\n iconName: 'hiking',\n icon: [384, 512, [], \"f6ec\", \"M80.95 472.23c-4.28 17.16 6.14 34.53 23.28 38.81 2.61.66 5.22.95 7.8.95 14.33 0 27.37-9.7 31.02-24.23l25.24-100.97-52.78-52.78-34.56 138.22zm14.89-196.12L137 117c2.19-8.42-3.14-16.95-11.92-19.06-43.88-10.52-88.35 15.07-99.32 57.17L.49 253.24c-2.19 8.42 3.14 16.95 11.92 19.06l63.56 15.25c8.79 2.1 17.68-3.02 19.87-11.44zM368 160h-16c-8.84 0-16 7.16-16 16v16h-34.75l-46.78-46.78C243.38 134.11 228.61 128 212.91 128c-27.02 0-50.47 18.3-57.03 44.52l-26.92 107.72a32.012 32.012 0 0 0 8.42 30.39L224 397.25V480c0 17.67 14.33 32 32 32s32-14.33 32-32v-82.75c0-17.09-6.66-33.16-18.75-45.25l-46.82-46.82c.15-.5.49-.89.62-1.41l19.89-79.57 22.43 22.43c6 6 14.14 9.38 22.62 9.38h48v240c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V176c.01-8.84-7.15-16-15.99-16zM240 96c26.51 0 48-21.49 48-48S266.51 0 240 0s-48 21.49-48 48 21.49 48 48 48z\"]\n};\nvar faHippo = {\n prefix: 'fas',\n iconName: 'hippo',\n icon: [640, 512, [], \"f6ed\", \"M581.12 96.2c-27.67-.15-52.5 17.58-76.6 26.62C489.98 88.27 455.83 64 416 64c-11.28 0-21.95 2.3-32 5.88V56c0-13.26-10.75-24-24-24h-16c-13.25 0-24 10.74-24 24v48.98C286.01 79.58 241.24 64 192 64 85.96 64 0 135.64 0 224v240c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16v-70.79C128.35 407.57 166.72 416 208 416s79.65-8.43 112-22.79V464c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16V288h128v32c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-32c17.67 0 32-14.33 32-32v-92.02c0-34.09-24.79-67.59-58.88-67.78zM448 176c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z\"]\n};\nvar faHistory = {\n prefix: 'fas',\n iconName: 'history',\n icon: [512, 512, [], \"f1da\", \"M504 255.531c.253 136.64-111.18 248.372-247.82 248.468-59.015.042-113.223-20.53-155.822-54.911-11.077-8.94-11.905-25.541-1.839-35.607l11.267-11.267c8.609-8.609 22.353-9.551 31.891-1.984C173.062 425.135 212.781 440 256 440c101.705 0 184-82.311 184-184 0-101.705-82.311-184-184-184-48.814 0-93.149 18.969-126.068 49.932l50.754 50.754c10.08 10.08 2.941 27.314-11.313 27.314H24c-8.837 0-16-7.163-16-16V38.627c0-14.254 17.234-21.393 27.314-11.314l49.372 49.372C129.209 34.136 189.552 8 256 8c136.81 0 247.747 110.78 248 247.531zm-180.912 78.784l9.823-12.63c8.138-10.463 6.253-25.542-4.21-33.679L288 256.349V152c0-13.255-10.745-24-24-24h-16c-13.255 0-24 10.745-24 24v135.651l65.409 50.874c10.463 8.137 25.541 6.253 33.679-4.21z\"]\n};\nvar faHockeyPuck = {\n prefix: 'fas',\n iconName: 'hockey-puck',\n icon: [512, 512, [], \"f453\", \"M0 160c0-53 114.6-96 256-96s256 43 256 96-114.6 96-256 96S0 213 0 160zm0 82.2V352c0 53 114.6 96 256 96s256-43 256-96V242.2c-113.4 82.3-398.5 82.4-512 0z\"]\n};\nvar faHollyBerry = {\n prefix: 'fas',\n iconName: 'holly-berry',\n icon: [448, 512, [], \"f7aa\", \"M144 192c26.5 0 48-21.5 48-48s-21.5-48-48-48-48 21.5-48 48 21.5 48 48 48zm112-48c0 26.5 21.5 48 48 48s48-21.5 48-48-21.5-48-48-48-48 21.5-48 48zm-32-48c26.5 0 48-21.5 48-48S250.5 0 224 0s-48 21.5-48 48 21.5 48 48 48zm-16.2 139.1c.1-12.4-13.1-20.1-23.8-13.7-34.3 20.3-71.4 32.7-108.7 36.2-9.7.9-15.6 11.3-11.6 20.2 6.2 13.9 11.1 28.6 14.7 43.8 3.6 15.2-5.3 30.6-20.2 35.1-14.9 4.5-30.1 7.6-45.3 9.1-9.7 1-15.7 11.3-11.7 20.2 15 32.8 22.9 69.5 23 107.7.1 14.4 15.2 23.1 27.6 16 33.2-19 68.9-30.5 104.8-33.9 9.7-.9 15.6-11.3 11.6-20.2-6.2-13.9-11.1-28.6-14.7-43.8-3.6-15.2 5.3-30.6 20.2-35.1 14.9-4.5 30.1-7.6 45.3-9.1 9.7-1 15.7-11.3 11.7-20.2-15.5-34.2-23.3-72.5-22.9-112.3zM435 365.6c-15.2-1.6-30.3-4.7-45.3-9.1-14.9-4.5-23.8-19.9-20.2-35.1 3.6-15.2 8.5-29.8 14.7-43.8 4-8.9-1.9-19.3-11.6-20.2-37.3-3.5-74.4-15.9-108.7-36.2-10.7-6.3-23.9 1.4-23.8 13.7 0 1.6-.2 3.2-.2 4.9.2 33.3 7 65.7 19.9 94 5.7 12.4 5.2 26.6-.6 38.9 4.9 1.2 9.9 2.2 14.8 3.7 14.9 4.5 23.8 19.9 20.2 35.1-3.6 15.2-8.5 29.8-14.7 43.8-4 8.9 1.9 19.3 11.6 20.2 35.9 3.4 71.6 14.9 104.8 33.9 12.5 7.1 27.6-1.6 27.6-16 .2-38.2 8-75 23-107.7 4.3-8.7-1.8-19.1-11.5-20.1z\"]\n};\nvar faHome = {\n prefix: 'fas',\n iconName: 'home',\n icon: [576, 512, [], \"f015\", \"M280.37 148.26L96 300.11V464a16 16 0 0 0 16 16l112.06-.29a16 16 0 0 0 15.92-16V368a16 16 0 0 1 16-16h64a16 16 0 0 1 16 16v95.64a16 16 0 0 0 16 16.05L464 480a16 16 0 0 0 16-16V300L295.67 148.26a12.19 12.19 0 0 0-15.3 0zM571.6 251.47L488 182.56V44.05a12 12 0 0 0-12-12h-56a12 12 0 0 0-12 12v72.61L318.47 43a48 48 0 0 0-61 0L4.34 251.47a12 12 0 0 0-1.6 16.9l25.5 31A12 12 0 0 0 45.15 301l235.22-193.74a12.19 12.19 0 0 1 15.3 0L530.9 301a12 12 0 0 0 16.9-1.6l25.5-31a12 12 0 0 0-1.7-16.93z\"]\n};\nvar faHorse = {\n prefix: 'fas',\n iconName: 'horse',\n icon: [576, 512, [], \"f6f0\", \"M575.92 76.6c-.01-8.13-3.02-15.87-8.58-21.8-3.78-4.03-8.58-9.12-13.69-14.5 11.06-6.84 19.5-17.49 22.18-30.66C576.85 4.68 572.96 0 567.9 0H447.92c-70.69 0-128 57.31-128 128H160c-28.84 0-54.4 12.98-72 33.11V160c-48.53 0-88 39.47-88 88v56c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-56c0-13.22 6.87-24.39 16.78-31.68-.21 2.58-.78 5.05-.78 7.68 0 27.64 11.84 52.36 30.54 69.88l-25.72 68.6a63.945 63.945 0 0 0-2.16 37.99l24.85 99.41A15.982 15.982 0 0 0 107.02 512h65.96c10.41 0 18.05-9.78 15.52-19.88l-26.31-105.26 23.84-63.59L320 345.6V496c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16V318.22c19.74-20.19 32-47.75 32-78.22 0-.22-.07-.42-.08-.64V136.89l16 7.11 18.9 37.7c7.45 14.87 25.05 21.55 40.49 15.37l32.55-13.02a31.997 31.997 0 0 0 20.12-29.74l-.06-77.71zm-64 19.4c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z\"]\n};\nvar faHorseHead = {\n prefix: 'fas',\n iconName: 'horse-head',\n icon: [512, 512, [], \"f7ab\", \"M509.8 332.5l-69.9-164.3c-14.9-41.2-50.4-71-93-79.2 18-10.6 46.3-35.9 34.2-82.3-1.3-5-7.1-7.9-12-6.1L166.9 76.3C35.9 123.4 0 238.9 0 398.8V480c0 17.7 14.3 32 32 32h236.2c23.8 0 39.3-25 28.6-46.3L256 384v-.7c-45.6-3.5-84.6-30.7-104.3-69.6-1.6-3.1-.9-6.9 1.6-9.3l12.1-12.1c3.9-3.9 10.6-2.7 12.9 2.4 14.8 33.7 48.2 57.4 87.4 57.4 17.2 0 33-5.1 46.8-13.2l46 63.9c6 8.4 15.7 13.3 26 13.3h50.3c8.5 0 16.6-3.4 22.6-9.4l45.3-39.8c8.9-9.1 11.7-22.6 7.1-34.4zM328 224c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24z\"]\n};\nvar faHospital = {\n prefix: 'fas',\n iconName: 'hospital',\n icon: [448, 512, [], \"f0f8\", \"M448 492v20H0v-20c0-6.627 5.373-12 12-12h20V120c0-13.255 10.745-24 24-24h88V24c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v72h88c13.255 0 24 10.745 24 24v360h20c6.627 0 12 5.373 12 12zM308 192h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zm-168 64h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12zm104 128h-40c-6.627 0-12 5.373-12 12v84h64v-84c0-6.627-5.373-12-12-12zm64-96h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zm-116 12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40zM182 96h26v26a6 6 0 0 0 6 6h20a6 6 0 0 0 6-6V96h26a6 6 0 0 0 6-6V70a6 6 0 0 0-6-6h-26V38a6 6 0 0 0-6-6h-20a6 6 0 0 0-6 6v26h-26a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6z\"]\n};\nvar faHospitalAlt = {\n prefix: 'fas',\n iconName: 'hospital-alt',\n icon: [576, 512, [], \"f47d\", \"M544 96H416V32c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32v64H32c-17.7 0-32 14.3-32 32v368c0 8.8 7.2 16 16 16h544c8.8 0 16-7.2 16-16V128c0-17.7-14.3-32-32-32zM160 436c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm160 128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm16-170c0 3.3-2.7 6-6 6h-26v26c0 3.3-2.7 6-6 6h-20c-3.3 0-6-2.7-6-6v-26h-26c-3.3 0-6-2.7-6-6v-20c0-3.3 2.7-6 6-6h26V86c0-3.3 2.7-6 6-6h20c3.3 0 6 2.7 6 6v26h26c3.3 0 6 2.7 6 6v20zm144 298c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40z\"]\n};\nvar faHospitalSymbol = {\n prefix: 'fas',\n iconName: 'hospital-symbol',\n icon: [512, 512, [], \"f47e\", \"M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256 256-114.6 256-256S397.4 0 256 0zm112 376c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-88h-96v88c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V136c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v88h96v-88c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v240z\"]\n};\nvar faHospitalUser = {\n prefix: 'fas',\n iconName: 'hospital-user',\n icon: [640, 512, [], \"f80d\", \"M480 320a96 96 0 1 0-96-96 96 96 0 0 0 96 96zm48 32a22.88 22.88 0 0 0-7.06 1.09 124.76 124.76 0 0 1-81.89 0A22.82 22.82 0 0 0 432 352a112 112 0 0 0-112 112.62c.14 26.26 21.73 47.38 48 47.38h224c26.27 0 47.86-21.12 48-47.38A112 112 0 0 0 528 352zm-198.09 10.45A145.19 145.19 0 0 1 352 344.62V128a32 32 0 0 0-32-32h-32V32a32 32 0 0 0-32-32H96a32 32 0 0 0-32 32v64H32a32 32 0 0 0-32 32v368a16 16 0 0 0 16 16h288.31A78.62 78.62 0 0 1 288 464.79a143.06 143.06 0 0 1 41.91-102.34zM144 404a12 12 0 0 1-12 12H92a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm0-128a12 12 0 0 1-12 12H92a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm48-122a6 6 0 0 1-6 6h-20a6 6 0 0 1-6-6v-26h-26a6 6 0 0 1-6-6v-20a6 6 0 0 1 6-6h26V70a6 6 0 0 1 6-6h20a6 6 0 0 1 6 6v26h26a6 6 0 0 1 6 6v20a6 6 0 0 1-6 6h-26zm80 250a12 12 0 0 1-12 12h-40a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm0-128a12 12 0 0 1-12 12h-40a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12z\"]\n};\nvar faHotTub = {\n prefix: 'fas',\n iconName: 'hot-tub',\n icon: [512, 512, [], \"f593\", \"M414.21 177.65c1.02 8.21 7.75 14.35 15.75 14.35h16.12c9.51 0 17.08-8.57 16-18.35-4.34-39.11-22.4-74.53-50.13-97.16-17.37-14.17-28.82-36.75-31.98-62.15C378.96 6.14 372.22 0 364.23 0h-16.12c-9.51 0-17.09 8.57-16 18.35 4.34 39.11 22.4 74.53 50.13 97.16 17.36 14.17 28.82 36.75 31.97 62.14zm-108 0c1.02 8.21 7.75 14.35 15.75 14.35h16.12c9.51 0 17.08-8.57 16-18.35-4.34-39.11-22.4-74.53-50.13-97.16-17.37-14.17-28.82-36.75-31.98-62.15C270.96 6.14 264.22 0 256.23 0h-16.12c-9.51 0-17.09 8.57-16 18.35 4.34 39.11 22.4 74.53 50.13 97.16 17.36 14.17 28.82 36.75 31.97 62.14zM480 256H256l-110.93-83.2a63.99 63.99 0 0 0-38.4-12.8H64c-35.35 0-64 28.65-64 64v224c0 35.35 28.65 64 64 64h384c35.35 0 64-28.65 64-64V288c0-17.67-14.33-32-32-32zM128 440c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zM64 128c35.35 0 64-28.65 64-64S99.35 0 64 0 0 28.65 0 64s28.65 64 64 64z\"]\n};\nvar faHotdog = {\n prefix: 'fas',\n iconName: 'hotdog',\n icon: [512, 512, [], \"f80f\", \"M488.56 23.44a80 80 0 0 0-113.12 0l-352 352a80 80 0 1 0 113.12 113.12l352-352a80 80 0 0 0 0-113.12zm-49.93 95.19c-19.6 19.59-37.52 22.67-51.93 25.14C373.76 146 364.4 147.6 352 160s-14 21.76-16.23 34.71c-2.48 14.4-5.55 32.33-25.15 51.92s-37.52 22.67-51.92 25.15C245.75 274 236.4 275.6 224 288s-14 21.75-16.23 34.7c-2.47 14.4-5.54 32.33-25.14 51.92s-37.53 22.68-51.93 25.15C117.76 402 108.4 403.6 96 416a16 16 0 0 1-22.63-22.63c19.6-19.59 37.52-22.67 51.92-25.14 13-2.22 22.3-3.82 34.71-16.23s14-21.75 16.22-34.7c2.48-14.4 5.55-32.33 25.15-51.92s37.52-22.67 51.92-25.14c13-2.22 22.3-3.83 34.7-16.23s14-21.76 16.24-34.71c2.47-14.4 5.54-32.33 25.14-51.92s37.52-22.68 51.92-25.15C394.24 110 403.59 108.41 416 96a16 16 0 0 1 22.63 22.63zM31.44 322.18L322.18 31.44l-11.54-11.55c-25-25-63.85-26.66-86.79-3.72L16.17 223.85c-22.94 22.94-21.27 61.79 3.72 86.78zm449.12-132.36L189.82 480.56l11.54 11.55c25 25 63.85 26.66 86.79 3.72l207.68-207.68c22.94-22.94 21.27-61.79-3.72-86.79z\"]\n};\nvar faHotel = {\n prefix: 'fas',\n iconName: 'hotel',\n icon: [576, 512, [], \"f594\", \"M560 64c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h15.98v384H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h240v-80c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v80h240c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-16V64h16zm-304 44.8c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zm0 96c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zm-128-96c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zM179.2 256h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8zM192 384c0-53.02 42.98-96 96-96s96 42.98 96 96H192zm256-140.8c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-96c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4z\"]\n};\nvar faHourglass = {\n prefix: 'fas',\n iconName: 'hourglass',\n icon: [384, 512, [], \"f254\", \"M360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64z\"]\n};\nvar faHourglassEnd = {\n prefix: 'fas',\n iconName: 'hourglass-end',\n icon: [384, 512, [], \"f253\", \"M360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64zM192 208c-57.787 0-104-66.518-104-144h208c0 77.945-46.51 144-104 144z\"]\n};\nvar faHourglassHalf = {\n prefix: 'fas',\n iconName: 'hourglass-half',\n icon: [384, 512, [], \"f252\", \"M360 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24zm-75.078 384H99.08c17.059-46.797 52.096-80 92.92-80 40.821 0 75.862 33.196 92.922 80zm.019-256H99.078C91.988 108.548 88 86.748 88 64h208c0 22.805-3.987 44.587-11.059 64z\"]\n};\nvar faHourglassStart = {\n prefix: 'fas',\n iconName: 'hourglass-start',\n icon: [384, 512, [], \"f251\", \"M360 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24zm-64 448H88c0-77.458 46.204-144 104-144 57.786 0 104 66.517 104 144z\"]\n};\nvar faHouseDamage = {\n prefix: 'fas',\n iconName: 'house-damage',\n icon: [576, 512, [], \"f6f1\", \"M288 114.96L69.47 307.71c-1.62 1.46-3.69 2.14-5.47 3.35V496c0 8.84 7.16 16 16 16h149.23L192 439.19l104.11-64-60.16-119.22L384 392.75l-104.11 64L319.81 512H496c8.84 0 16-7.16 16-16V311.1c-1.7-1.16-3.72-1.82-5.26-3.2L288 114.96zm282.69 121.32L512 184.45V48c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v51.69L314.75 10.31C307.12 3.45 297.56.01 288 0s-19.1 3.41-26.7 10.27L5.31 236.28c-6.57 5.91-7.12 16.02-1.21 22.6l21.4 23.82c5.9 6.57 16.02 7.12 22.6 1.21L277.42 81.63c6.05-5.33 15.12-5.33 21.17 0L527.91 283.9c6.57 5.9 16.69 5.36 22.6-1.21l21.4-23.82c5.9-6.57 5.36-16.69-1.22-22.59z\"]\n};\nvar faHouseUser = {\n prefix: 'fas',\n iconName: 'house-user',\n icon: [576, 512, [], \"e065\", \"M570.69,236.27,512,184.44V48a16,16,0,0,0-16-16H432a16,16,0,0,0-16,16V99.67L314.78,10.3C308.5,4.61,296.53,0,288,0s-20.46,4.61-26.74,10.3l-256,226A18.27,18.27,0,0,0,0,248.2a18.64,18.64,0,0,0,4.09,10.71L25.5,282.7a21.14,21.14,0,0,0,12,5.3,21.67,21.67,0,0,0,10.69-4.11l15.9-14V480a32,32,0,0,0,32,32H480a32,32,0,0,0,32-32V269.88l15.91,14A21.94,21.94,0,0,0,538.63,288a20.89,20.89,0,0,0,11.87-5.31l21.41-23.81A21.64,21.64,0,0,0,576,248.19,21,21,0,0,0,570.69,236.27ZM288,176a64,64,0,1,1-64,64A64,64,0,0,1,288,176ZM400,448H176a16,16,0,0,1-16-16,96,96,0,0,1,96-96h64a96,96,0,0,1,96,96A16,16,0,0,1,400,448Z\"]\n};\nvar faHryvnia = {\n prefix: 'fas',\n iconName: 'hryvnia',\n icon: [384, 512, [], \"f6f2\", \"M368 240c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-41.86c13.41-28.63 13.74-63.33-4.13-94.05C303.34 49.84 267.1 32 229.96 32h-78.82c-24.32 0-47.86 8.53-66.54 24.09L72.83 65.9c-10.18 8.49-11.56 23.62-3.07 33.8l20.49 24.59c8.49 10.19 23.62 11.56 33.81 3.07l11.73-9.78c4.32-3.6 9.77-5.57 15.39-5.57h83.62c11.69 0 21.2 9.52 21.2 21.2 0 5.91-2.48 11.58-6.81 15.58L219.7 176H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h134.37l-34.67 32H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h41.86c-13.41 28.63-13.74 63.33 4.13 94.05C80.66 462.15 116.9 480 154.04 480h78.82c24.32 0 47.86-8.53 66.54-24.09l11.77-9.81c10.18-8.49 11.56-23.62 3.07-33.8l-20.49-24.59c-8.49-10.19-23.62-11.56-33.81-3.07l-11.75 9.8a23.992 23.992 0 0 1-15.36 5.56H149.2c-11.69 0-21.2-9.52-21.2-21.2 0-5.91 2.48-11.58 6.81-15.58L164.3 336H368c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H233.63l34.67-32H368z\"]\n};\nvar faICursor = {\n prefix: 'fas',\n iconName: 'i-cursor',\n icon: [256, 512, [], \"f246\", \"M256 52.048V12.065C256 5.496 250.726.148 244.158.066 211.621-.344 166.469.011 128 37.959 90.266.736 46.979-.114 11.913.114 5.318.157 0 5.519 0 12.114v39.645c0 6.687 5.458 12.078 12.145 11.998C38.111 63.447 96 67.243 96 112.182V224H60c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h36v112c0 44.932-56.075 48.031-83.95 47.959C5.404 447.942 0 453.306 0 459.952v39.983c0 6.569 5.274 11.917 11.842 11.999 32.537.409 77.689.054 116.158-37.894 37.734 37.223 81.021 38.073 116.087 37.845 6.595-.043 11.913-5.405 11.913-12V460.24c0-6.687-5.458-12.078-12.145-11.998C217.889 448.553 160 444.939 160 400V288h36c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-36V112.182c0-44.932 56.075-48.213 83.95-48.142 6.646.018 12.05-5.346 12.05-11.992z\"]\n};\nvar faIceCream = {\n prefix: 'fas',\n iconName: 'ice-cream',\n icon: [448, 512, [], \"f810\", \"M368 160h-.94a144 144 0 1 0-286.12 0H80a48 48 0 0 0 0 96h288a48 48 0 0 0 0-96zM195.38 493.69a31.52 31.52 0 0 0 57.24 0L352 288H96z\"]\n};\nvar faIcicles = {\n prefix: 'fas',\n iconName: 'icicles',\n icon: [512, 512, [], \"f7ad\", \"M511.4 37.9C515.1 18.2 500 0 480 0H32C10.6 0-4.8 20.7 1.4 41.2l87.1 273.4c2.5 7.2 12.7 7.2 15.1 0L140 190.5l44.2 187.3c1.9 8.3 13.7 8.3 15.6 0l46.5-196.9 34.1 133.4c2.3 7.6 13 7.6 15.3 0l45.8-172.5 66.7 363.8c1.7 8.6 14 8.6 15.7 0l87.5-467.7z\"]\n};\nvar faIcons = {\n prefix: 'fas',\n iconName: 'icons',\n icon: [512, 512, [], \"f86d\", \"M116.65 219.35a15.68 15.68 0 0 0 22.65 0l96.75-99.83c28.15-29 26.5-77.1-4.91-103.88C203.75-7.7 163-3.5 137.86 22.44L128 32.58l-9.85-10.14C93.05-3.5 52.25-7.7 24.86 15.64c-31.41 26.78-33 74.85-5 103.88zm143.92 100.49h-48l-7.08-14.24a27.39 27.39 0 0 0-25.66-17.78h-71.71a27.39 27.39 0 0 0-25.66 17.78l-7 14.24h-48A27.45 27.45 0 0 0 0 347.3v137.25A27.44 27.44 0 0 0 27.43 512h233.14A27.45 27.45 0 0 0 288 484.55V347.3a27.45 27.45 0 0 0-27.43-27.46zM144 468a52 52 0 1 1 52-52 52 52 0 0 1-52 52zm355.4-115.9h-60.58l22.36-50.75c2.1-6.65-3.93-13.21-12.18-13.21h-75.59c-6.3 0-11.66 3.9-12.5 9.1l-16.8 106.93c-1 6.3 4.88 11.89 12.5 11.89h62.31l-24.2 83c-1.89 6.65 4.2 12.9 12.23 12.9a13.26 13.26 0 0 0 10.92-5.25l92.4-138.91c4.88-6.91-1.16-15.7-10.87-15.7zM478.08.33L329.51 23.17C314.87 25.42 304 38.92 304 54.83V161.6a83.25 83.25 0 0 0-16-1.7c-35.35 0-64 21.48-64 48s28.65 48 64 48c35.2 0 63.73-21.32 64-47.66V99.66l112-17.22v47.18a83.25 83.25 0 0 0-16-1.7c-35.35 0-64 21.48-64 48s28.65 48 64 48c35.2 0 63.73-21.32 64-47.66V32c0-19.48-16-34.42-33.92-31.67z\"]\n};\nvar faIdBadge = {\n prefix: 'fas',\n iconName: 'id-badge',\n icon: [384, 512, [], \"f2c1\", \"M336 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM144 32h96c8.8 0 16 7.2 16 16s-7.2 16-16 16h-96c-8.8 0-16-7.2-16-16s7.2-16 16-16zm48 128c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H102.4C90 416 80 407.4 80 396.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z\"]\n};\nvar faIdCard = {\n prefix: 'fas',\n iconName: 'id-card',\n icon: [576, 512, [], \"f2c2\", \"M528 32H48C21.5 32 0 53.5 0 80v16h576V80c0-26.5-21.5-48-48-48zM0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V128H0v304zm352-232c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zm0 64c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zm0 64c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zM176 192c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zM67.1 396.2C75.5 370.5 99.6 352 128 352h8.2c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h8.2c28.4 0 52.5 18.5 60.9 44.2 3.2 9.9-5.2 19.8-15.6 19.8H82.7c-10.4 0-18.8-10-15.6-19.8z\"]\n};\nvar faIdCardAlt = {\n prefix: 'fas',\n iconName: 'id-card-alt',\n icon: [576, 512, [], \"f47f\", \"M528 64H384v96H192V64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM288 224c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm93.3 224H194.7c-10.4 0-18.8-10-15.6-19.8 8.3-25.6 32.4-44.2 60.9-44.2h8.2c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h8.2c28.4 0 52.5 18.5 60.9 44.2 3.2 9.8-5.2 19.8-15.6 19.8zM352 32c0-17.7-14.3-32-32-32h-64c-17.7 0-32 14.3-32 32v96h128V32z\"]\n};\nvar faIgloo = {\n prefix: 'fas',\n iconName: 'igloo',\n icon: [576, 512, [], \"f7ae\", \"M320 33.9c-10.5-1.2-21.2-1.9-32-1.9-99.8 0-187.8 50.8-239.4 128H320V33.9zM96 192H30.3C11.1 230.6 0 274 0 320h96V192zM352 39.4V160h175.4C487.2 99.9 424.8 55.9 352 39.4zM480 320h96c0-46-11.1-89.4-30.3-128H480v128zm-64 64v96h128c17.7 0 32-14.3 32-32v-96H411.5c2.6 10.3 4.5 20.9 4.5 32zm32-192H128v128h49.8c22.2-38.1 63-64 110.2-64s88 25.9 110.2 64H448V192zM0 448c0 17.7 14.3 32 32 32h128v-96c0-11.1 1.9-21.7 4.5-32H0v96zm288-160c-53 0-96 43-96 96v96h192v-96c0-53-43-96-96-96z\"]\n};\nvar faImage = {\n prefix: 'fas',\n iconName: 'image',\n icon: [512, 512, [], \"f03e\", \"M464 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM112 120c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56zM64 384h384V272l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L208 320l-55.515-55.515c-4.686-4.686-12.284-4.686-16.971 0L64 336v48z\"]\n};\nvar faImages = {\n prefix: 'fas',\n iconName: 'images',\n icon: [576, 512, [], \"f302\", \"M480 416v16c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V176c0-26.51 21.49-48 48-48h16v208c0 44.112 35.888 80 80 80h336zm96-80V80c0-26.51-21.49-48-48-48H144c-26.51 0-48 21.49-48 48v256c0 26.51 21.49 48 48 48h384c26.51 0 48-21.49 48-48zM256 128c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zm-96 144l55.515-55.515c4.686-4.686 12.284-4.686 16.971 0L272 256l135.515-135.515c4.686-4.686 12.284-4.686 16.971 0L512 208v112H160v-48z\"]\n};\nvar faInbox = {\n prefix: 'fas',\n iconName: 'inbox',\n icon: [576, 512, [], \"f01c\", \"M567.938 243.908L462.25 85.374A48.003 48.003 0 0 0 422.311 64H153.689a48 48 0 0 0-39.938 21.374L8.062 243.908A47.994 47.994 0 0 0 0 270.533V400c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V270.533a47.994 47.994 0 0 0-8.062-26.625zM162.252 128h251.497l85.333 128H376l-32 64H232l-32-64H76.918l85.334-128z\"]\n};\nvar faIndent = {\n prefix: 'fas',\n iconName: 'indent',\n icon: [448, 512, [], \"f03c\", \"M27.31 363.3l96-96a16 16 0 0 0 0-22.62l-96-96C17.27 138.66 0 145.78 0 160v192c0 14.31 17.33 21.3 27.31 11.3zM432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-128H204.83A12.82 12.82 0 0 0 192 300.83v38.34A12.82 12.82 0 0 0 204.83 352h230.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288zm0-128H204.83A12.82 12.82 0 0 0 192 172.83v38.34A12.82 12.82 0 0 0 204.83 224h230.34A12.82 12.82 0 0 0 448 211.17v-38.34A12.82 12.82 0 0 0 435.17 160zM432 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faIndustry = {\n prefix: 'fas',\n iconName: 'industry',\n icon: [512, 512, [], \"f275\", \"M475.115 163.781L336 252.309v-68.28c0-18.916-20.931-30.399-36.885-20.248L160 252.309V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56v400c0 13.255 10.745 24 24 24h464c13.255 0 24-10.745 24-24V184.029c0-18.917-20.931-30.399-36.885-20.248z\"]\n};\nvar faInfinity = {\n prefix: 'fas',\n iconName: 'infinity',\n icon: [640, 512, [], \"f534\", \"M471.1 96C405 96 353.3 137.3 320 174.6 286.7 137.3 235 96 168.9 96 75.8 96 0 167.8 0 256s75.8 160 168.9 160c66.1 0 117.8-41.3 151.1-78.6 33.3 37.3 85 78.6 151.1 78.6 93.1 0 168.9-71.8 168.9-160S564.2 96 471.1 96zM168.9 320c-40.2 0-72.9-28.7-72.9-64s32.7-64 72.9-64c38.2 0 73.4 36.1 94 64-20.4 27.6-55.9 64-94 64zm302.2 0c-38.2 0-73.4-36.1-94-64 20.4-27.6 55.9-64 94-64 40.2 0 72.9 28.7 72.9 64s-32.7 64-72.9 64z\"]\n};\nvar faInfo = {\n prefix: 'fas',\n iconName: 'info',\n icon: [192, 512, [], \"f129\", \"M20 424.229h20V279.771H20c-11.046 0-20-8.954-20-20V212c0-11.046 8.954-20 20-20h112c11.046 0 20 8.954 20 20v212.229h20c11.046 0 20 8.954 20 20V492c0 11.046-8.954 20-20 20H20c-11.046 0-20-8.954-20-20v-47.771c0-11.046 8.954-20 20-20zM96 0C56.235 0 24 32.235 24 72s32.235 72 72 72 72-32.235 72-72S135.764 0 96 0z\"]\n};\nvar faInfoCircle = {\n prefix: 'fas',\n iconName: 'info-circle',\n icon: [512, 512, [], \"f05a\", \"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"]\n};\nvar faItalic = {\n prefix: 'fas',\n iconName: 'italic',\n icon: [320, 512, [], \"f033\", \"M320 48v32a16 16 0 0 1-16 16h-62.76l-80 320H208a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h62.76l80-320H112a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h192a16 16 0 0 1 16 16z\"]\n};\nvar faJedi = {\n prefix: 'fas',\n iconName: 'jedi',\n icon: [576, 512, [], \"f669\", \"M535.95308,352c-42.64069,94.17188-137.64086,160-247.9848,160q-6.39844,0-12.84377-.29688C171.15558,506.9375,81.26481,442.23438,40.01474,352H79.93668L21.3272,293.40625a264.82522,264.82522,0,0,1-5.10938-39.42187,273.6653,273.6653,0,0,1,.5-29.98438H63.93665L22.546,182.625A269.79782,269.79782,0,0,1,130.51489,20.54688a16.06393,16.06393,0,0,1,9.28127-3,16.36332,16.36332,0,0,1,13.5,7.25,16.02739,16.02739,0,0,1,1.625,15.09374,138.387,138.387,0,0,0-9.84376,51.26563c0,45.10937,21.04691,86.57813,57.71884,113.73437a16.29989,16.29989,0,0,1,1.20313,25.39063c-26.54692,23.98437-41.17194,56.5-41.17194,91.57813,0,60.03124,42.95319,110.28124,99.89079,121.92187l2.5-65.26563L238.062,397a8.33911,8.33911,0,0,1-10-.75,8.025,8.025,0,0,1-1.39063-9.9375l20.125-33.76562-42.06257-8.73438a7.9898,7.9898,0,0,1,0-15.65625l42.06257-8.71875-20.10941-33.73438a7.99122,7.99122,0,0,1,11.35939-10.71874L268.437,295.64062,279.95265,7.67188a7.97138,7.97138,0,0,1,8-7.67188h.04687a8.02064,8.02064,0,0,1,7.95314,7.70312L307.48394,295.625l30.39068-20.67188a8.08327,8.08327,0,0,1,10,.8125,7.99866,7.99866,0,0,1,1.39062,9.90626L329.12461,319.4375l42.07819,8.73438a7.99373,7.99373,0,0,1,0,15.65624l-42.07819,8.71876,20.1094,33.73437a7.97791,7.97791,0,0,1-1.32812,9.92187A8.25739,8.25739,0,0,1,337.87462,397L310.7027,378.53125l2.5,65.34375c48.48446-9.40625,87.57828-48.15625,97.31267-96.5A123.52652,123.52652,0,0,0,371.9528,230.29688a16.30634,16.30634,0,0,1,1.20313-25.42188c36.65631-27.17188,57.6876-68.60938,57.6876-113.73438a138.01689,138.01689,0,0,0-9.85939-51.3125,15.98132,15.98132,0,0,1,1.60937-15.09374,16.36914,16.36914,0,0,1,13.5-7.23438,16.02453,16.02453,0,0,1,9.25,2.98438A271.26947,271.26947,0,0,1,553.25,182.76562L511.99992,224h46.9532C559.3125,229.76562,560,235.45312,560,241.26562a270.092,270.092,0,0,1-5.125,51.85938L495.98427,352Z\"]\n};\nvar faJoint = {\n prefix: 'fas',\n iconName: 'joint',\n icon: [640, 512, [], \"f595\", \"M444.34 181.1c22.38 15.68 35.66 41.16 35.66 68.59V280c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-30.31c0-43.24-21.01-83.41-56.34-108.06C463.85 125.02 448 99.34 448 70.31V8c0-4.42-3.58-8-8-8h-48c-4.42 0-8 3.58-8 8v66.4c0 43.69 24.56 81.63 60.34 106.7zM194.97 358.98C126.03 370.07 59.69 394.69 0 432c83.65 52.28 180.3 80 278.94 80h88.57L254.79 380.49c-14.74-17.2-37.45-25.11-59.82-21.51zM553.28 87.09c-5.67-3.8-9.28-9.96-9.28-16.78V8c0-4.42-3.58-8-8-8h-48c-4.42 0-8 3.58-8 8v62.31c0 22.02 10.17 43.41 28.64 55.39C550.79 153.04 576 199.54 576 249.69V280c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-30.31c0-65.44-32.41-126.19-86.72-162.6zM360.89 352.05c-34.4.06-86.81.15-88.21.17l117.8 137.43A63.987 63.987 0 0 0 439.07 512h88.45L409.57 374.4a63.955 63.955 0 0 0-48.68-22.35zM616 352H432l117.99 137.65A63.987 63.987 0 0 0 598.58 512H616c13.25 0 24-10.75 24-24V376c0-13.26-10.75-24-24-24z\"]\n};\nvar faJournalWhills = {\n prefix: 'fas',\n iconName: 'journal-whills',\n icon: [448, 512, [], \"f66a\", \"M438.40625,377.59375c-3.20313,12.8125-3.20313,57.60937,0,73.60937Q447.9922,460.78907,448,470.40625v16c0,16-12.79688,25.59375-25.59375,25.59375H96c-54.40625,0-96-41.59375-96-96V96C0,41.59375,41.59375,0,96,0H422.40625C438.40625,0,448,9.59375,448,25.59375v332.8125Q448,372.79688,438.40625,377.59375ZM380.79688,384H96c-16,0-32,12.79688-32,32s12.79688,32,32,32H380.79688ZM128.01562,176.01562c0,.51563.14063.98438.14063,1.5l37.10937,32.46876A7.99954,7.99954,0,0,1,160,224h-.01562a9.17678,9.17678,0,0,1-5.25-1.98438L131.14062,201.375C142.6875,250.95312,186.90625,288,240,288s97.3125-37.04688,108.875-86.625l-23.59375,20.64062a8.02516,8.02516,0,0,1-5.26563,1.96876H320a9.14641,9.14641,0,0,1-6.01562-2.71876A9.26508,9.26508,0,0,1,312,216a9.097,9.097,0,0,1,2.73438-6.01562l37.10937-32.46876c.01563-.53124.15625-1,.15625-1.51562,0-11.04688-2.09375-21.51562-5.06251-31.59375l-21.26562,21.25a8.00467,8.00467,0,0,1-11.32812-11.3125l26.42187-26.40625a111.81517,111.81517,0,0,0-46.35937-49.26562,63.02336,63.02336,0,0,1-14.0625,82.64062A55.83846,55.83846,0,0,1,251.625,254.73438l-1.42188-34.28126,12.67188,8.625a3.967,3.967,0,0,0,2.25.6875,3.98059,3.98059,0,0,0,3.43749-6.03124l-8.53124-14.3125,17.90625-3.71876a4.00647,4.00647,0,0,0,0-7.84374l-17.90625-3.71876,8.53124-14.3125a3.98059,3.98059,0,0,0-3.43749-6.03124,4.726,4.726,0,0,0-2.25.67187L248.6875,184.125,244,71.82812a4.00386,4.00386,0,0,0-8,0l-4.625,110.8125-12-8.15624a4.003,4.003,0,0,0-5.68751,5.35937l8.53126,14.3125L204.3125,197.875a3.99686,3.99686,0,0,0,0,7.82812l17.90625,3.73438-8.53126,14.29688a4.72469,4.72469,0,0,0-.56249,2.04687,4.59547,4.59547,0,0,0,1.25,2.90625,4.01059,4.01059,0,0,0,2.75,1.09375,4.09016,4.09016,0,0,0,2.25-.6875l10.35937-7.04687L228.375,254.76562a55.86414,55.86414,0,0,1-28.71875-93.45312,63.01119,63.01119,0,0,1-14.04688-82.65625,111.93158,111.93158,0,0,0-46.375,49.26563l26.42187,26.42187a7.99917,7.99917,0,0,1-11.3125,11.3125l-21.26563-21.26563C130.09375,154.48438,128,164.95312,128.01562,176.01562Z\"]\n};\nvar faKaaba = {\n prefix: 'fas',\n iconName: 'kaaba',\n icon: [576, 512, [], \"f66b\", \"M554.12 83.51L318.36 4.93a95.962 95.962 0 0 0-60.71 0L21.88 83.51A32.006 32.006 0 0 0 0 113.87v49.01l265.02-79.51c15.03-4.5 30.92-4.5 45.98 0l265 79.51v-49.01c0-13.77-8.81-26-21.88-30.36zm-279.9 30.52L0 196.3v228.38c0 15 10.42 27.98 25.06 31.24l242.12 53.8a95.937 95.937 0 0 0 41.65 0l242.12-53.8c14.64-3.25 25.06-16.24 25.06-31.24V196.29l-274.2-82.26c-9.04-2.72-18.59-2.72-27.59 0zM128 230.11c0 3.61-2.41 6.77-5.89 7.72l-80 21.82C37.02 261.03 32 257.2 32 251.93v-16.58c0-3.61 2.41-6.77 5.89-7.72l80-21.82c5.09-1.39 10.11 2.44 10.11 7.72v16.58zm144-39.28c0 3.61-2.41 6.77-5.89 7.72l-96 26.18c-5.09 1.39-10.11-2.44-10.11-7.72v-16.58c0-3.61 2.41-6.77 5.89-7.72l96-26.18c5.09-1.39 10.11 2.44 10.11 7.72v16.58zm176 22.7c0-5.28 5.02-9.11 10.11-7.72l80 21.82c3.48.95 5.89 4.11 5.89 7.72v16.58c0 5.28-5.02 9.11-10.11 7.72l-80-21.82a7.997 7.997 0 0 1-5.89-7.72v-16.58zm-144-39.27c0-5.28 5.02-9.11 10.11-7.72l96 26.18c3.48.95 5.89 4.11 5.89 7.72v16.58c0 5.28-5.02 9.11-10.11 7.72l-96-26.18a7.997 7.997 0 0 1-5.89-7.72v-16.58z\"]\n};\nvar faKey = {\n prefix: 'fas',\n iconName: 'key',\n icon: [512, 512, [], \"f084\", \"M512 176.001C512 273.203 433.202 352 336 352c-11.22 0-22.19-1.062-32.827-3.069l-24.012 27.014A23.999 23.999 0 0 1 261.223 384H224v40c0 13.255-10.745 24-24 24h-40v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-78.059c0-6.365 2.529-12.47 7.029-16.971l161.802-161.802C163.108 213.814 160 195.271 160 176 160 78.798 238.797.001 335.999 0 433.488-.001 512 78.511 512 176.001zM336 128c0 26.51 21.49 48 48 48s48-21.49 48-48-21.49-48-48-48-48 21.49-48 48z\"]\n};\nvar faKeyboard = {\n prefix: 'fas',\n iconName: 'keyboard',\n icon: [576, 512, [], \"f11c\", \"M528 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM128 180v-40c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm288 0v-40c0-6.627-5.373-12-12-12H172c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h232c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12z\"]\n};\nvar faKhanda = {\n prefix: 'fas',\n iconName: 'khanda',\n icon: [512, 512, [], \"f66d\", \"M415.81 66c-6.37-3.5-14.37-2.33-19.36 3.02a15.974 15.974 0 0 0-1.91 19.52c16.49 26.16 25.2 56.39 25.2 87.41-.19 53.25-26.77 102.69-71.27 132.41l-76.63 53.35v-20.1l44.05-36.09c3.92-4.2 5-10.09 2.81-15.28L310.85 273c33.84-19.26 56.94-55.25 56.94-96.99 0-40.79-22.02-76.13-54.59-95.71l5.22-11.44c2.34-5.53.93-11.83-3.57-16.04L255.86 0l-58.99 52.81c-4.5 4.21-5.9 10.51-3.57 16.04l5.22 11.44c-32.57 19.58-54.59 54.93-54.59 95.72 0 41.75 23.09 77.73 56.94 96.99l-7.85 17.24c-2.19 5.18-1.1 11.07 2.81 15.28l44.05 36.09v19.9l-76.59-53.33C119.02 278.62 92.44 229.19 92.26 176c0-31.08 8.71-61.31 25.2-87.47 3.87-6.16 2.4-13.77-2.59-19.08-5-5.34-13.68-6.2-20.02-2.7C16.32 109.6-22.3 205.3 13.36 295.99c7.07 17.99 17.89 34.38 30.46 49.06l55.97 65.36c4.87 5.69 13.04 7.24 19.65 3.72l79.35-42.23L228 392.23l-47.08 32.78c-1.67-.37-3.23-1.01-5.01-1.01-13.25 0-23.99 10.74-23.99 24 0 13.25 10.74 24 23.99 24 12.1 0 21.69-9.11 23.33-20.76l40.63-28.28v29.95c-9.39 5.57-15.99 15.38-15.99 27.1 0 17.67 14.32 32 31.98 32s31.98-14.33 31.98-32c0-11.71-6.61-21.52-15.99-27.1v-30.15l40.91 28.48C314.41 462.89 324 472 336.09 472c13.25 0 23.99-10.75 23.99-24 0-13.26-10.74-24-23.99-24-1.78 0-3.34.64-5.01 1.01L284 392.23l29.21-20.34 79.35 42.23c6.61 3.52 14.78 1.97 19.65-3.71l52.51-61.31c18.87-22.02 34-47.5 41.25-75.59 21.62-83.66-16.45-167.27-90.16-207.51zm-95.99 110c0 22.3-11.49 41.92-28.83 53.38l-5.65-12.41c-8.75-24.52-8.75-51.04 0-75.56l7.83-17.18c16.07 11.65 26.65 30.45 26.65 51.77zm-127.93 0c0-21.32 10.58-40.12 26.66-51.76l7.83 17.18c8.75 24.52 8.75 51.03 0 75.56l-5.65 12.41c-17.34-11.46-28.84-31.09-28.84-53.39z\"]\n};\nvar faKiss = {\n prefix: 'fas',\n iconName: 'kiss',\n icon: [496, 512, [], \"f596\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm136 156c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-6.1-12.2 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.6-3.6-4.8-16.5 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C290.6 368.7 304 383 304 396zm24-156c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faKissBeam = {\n prefix: 'fas',\n iconName: 'kiss-beam',\n icon: [496, 512, [], \"f597\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-39 219.9l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.5 8.5-10.9 12-15.1 4.5zM304 396c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-6.1-12.2 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.6-3.6-4.8-16.5 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C290.6 368.7 304 383 304 396zm65-168.1l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.5 8.5-10.9 12-15.1 4.5z\"]\n};\nvar faKissWinkHeart = {\n prefix: 'fas',\n iconName: 'kiss-wink-heart',\n icon: [504, 512, [], \"f598\", \"M501.1 402.5c-8-20.8-31.5-31.5-53.1-25.9l-8.4 2.2-2.3-8.4c-5.9-21.4-27-36.5-49-33-25.2 4-40.6 28.6-34 52.6l22.9 82.6c1.5 5.3 7 8.5 12.4 7.1l83-21.5c24.1-6.3 37.7-31.8 28.5-55.7zm-177.6-4c-5.6-20.3-2.3-42 9-59.7 29.7-46.3 98.7-45.5 127.8 4.3 6.4.1 12.6 1.4 18.6 2.9 10.9-27.9 17.1-58.2 17.1-90C496 119 385 8 248 8S0 119 0 256s111 248 248 248c35.4 0 68.9-7.5 99.4-20.9-.3-.7-23.9-84.6-23.9-84.6zM168 240c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm120 156c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-5.7-12.3 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.8-3.7-4.6-16.6 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C274.6 368.7 288 383 288 396zm16-179c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S400 181 404 206.2c1.7 11.1-11.3 18.3-19.8 10.8l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L304 217z\"]\n};\nvar faKiwiBird = {\n prefix: 'fas',\n iconName: 'kiwi-bird',\n icon: [576, 512, [], \"f535\", \"M575.81 217.98C572.64 157.41 518.28 112 457.63 112h-9.37c-52.82 0-104.25-16.25-147.74-46.24-41.99-28.96-96.04-41.62-153.21-28.7C129.3 41.12-.08 78.24 0 224c.04 70.95 38.68 132.8 95.99 166.01V464c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-54.26c15.36 3.96 31.4 6.26 48 6.26 5.44 0 10.68-.73 16-1.18V464c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-59.43c14.24-5.06 27.88-11.39 40.34-19.51C342.07 355.25 393.86 336 448.46 336c25.48 0 16.01-.31 23.05-.78l74.41 136.44c2.86 5.23 8.3 8.34 14.05 8.34 1.31 0 2.64-.16 3.95-.5 7.09-1.8 12.05-8.19 12.05-15.5 0 0 .14-240.24-.16-246.02zM463.97 248c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm80 153.25l-39.86-73.08c15.12-5.83 28.73-14.6 39.86-25.98v99.06z\"]\n};\nvar faLandmark = {\n prefix: 'fas',\n iconName: 'landmark',\n icon: [512, 512, [], \"f66f\", \"M501.62 92.11L267.24 2.04a31.958 31.958 0 0 0-22.47 0L10.38 92.11A16.001 16.001 0 0 0 0 107.09V144c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-36.91c0-6.67-4.14-12.64-10.38-14.98zM64 192v160H48c-8.84 0-16 7.16-16 16v48h448v-48c0-8.84-7.16-16-16-16h-16V192h-64v160h-96V192h-64v160h-96V192H64zm432 256H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faLanguage = {\n prefix: 'fas',\n iconName: 'language',\n icon: [640, 512, [], \"f1ab\", \"M152.1 236.2c-3.5-12.1-7.8-33.2-7.8-33.2h-.5s-4.3 21.1-7.8 33.2l-11.1 37.5H163zM616 96H336v320h280c13.3 0 24-10.7 24-24V120c0-13.3-10.7-24-24-24zm-24 120c0 6.6-5.4 12-12 12h-11.4c-6.9 23.6-21.7 47.4-42.7 69.9 8.4 6.4 17.1 12.5 26.1 18 5.5 3.4 7.3 10.5 4.1 16.2l-7.9 13.9c-3.4 5.9-10.9 7.8-16.7 4.3-12.6-7.8-24.5-16.1-35.4-24.9-10.9 8.7-22.7 17.1-35.4 24.9-5.8 3.5-13.3 1.6-16.7-4.3l-7.9-13.9c-3.2-5.6-1.4-12.8 4.2-16.2 9.3-5.7 18-11.7 26.1-18-7.9-8.4-14.9-17-21-25.7-4-5.7-2.2-13.6 3.7-17.1l6.5-3.9 7.3-4.3c5.4-3.2 12.4-1.7 16 3.4 5 7 10.8 14 17.4 20.9 13.5-14.2 23.8-28.9 30-43.2H412c-6.6 0-12-5.4-12-12v-16c0-6.6 5.4-12 12-12h64v-16c0-6.6 5.4-12 12-12h16c6.6 0 12 5.4 12 12v16h64c6.6 0 12 5.4 12 12zM0 120v272c0 13.3 10.7 24 24 24h280V96H24c-13.3 0-24 10.7-24 24zm58.9 216.1L116.4 167c1.7-4.9 6.2-8.1 11.4-8.1h32.5c5.1 0 9.7 3.3 11.4 8.1l57.5 169.1c2.6 7.8-3.1 15.9-11.4 15.9h-22.9a12 12 0 0 1-11.5-8.6l-9.4-31.9h-60.2l-9.1 31.8c-1.5 5.1-6.2 8.7-11.5 8.7H70.3c-8.2 0-14-8.1-11.4-15.9z\"]\n};\nvar faLaptop = {\n prefix: 'fas',\n iconName: 'laptop',\n icon: [640, 512, [], \"f109\", \"M624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33.02-17.47-32.77-32H16c-8.8 0-16 7.2-16 16v16c0 35.2 28.8 64 64 64h512c35.2 0 64-28.8 64-64v-16c0-8.8-7.2-16-16-16zM576 48c0-26.4-21.6-48-48-48H112C85.6 0 64 21.6 64 48v336h512V48zm-64 272H128V64h384v256z\"]\n};\nvar faLaptopCode = {\n prefix: 'fas',\n iconName: 'laptop-code',\n icon: [640, 512, [], \"f5fc\", \"M255.03 261.65c6.25 6.25 16.38 6.25 22.63 0l11.31-11.31c6.25-6.25 6.25-16.38 0-22.63L253.25 192l35.71-35.72c6.25-6.25 6.25-16.38 0-22.63l-11.31-11.31c-6.25-6.25-16.38-6.25-22.63 0l-58.34 58.34c-6.25 6.25-6.25 16.38 0 22.63l58.35 58.34zm96.01-11.3l11.31 11.31c6.25 6.25 16.38 6.25 22.63 0l58.34-58.34c6.25-6.25 6.25-16.38 0-22.63l-58.34-58.34c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63L386.75 192l-35.71 35.72c-6.25 6.25-6.25 16.38 0 22.63zM624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33.02-17.47-32.77-32H16c-8.8 0-16 7.2-16 16v16c0 35.2 28.8 64 64 64h512c35.2 0 64-28.8 64-64v-16c0-8.8-7.2-16-16-16zM576 48c0-26.4-21.6-48-48-48H112C85.6 0 64 21.6 64 48v336h512V48zm-64 272H128V64h384v256z\"]\n};\nvar faLaptopHouse = {\n prefix: 'fas',\n iconName: 'laptop-house',\n icon: [640, 512, [], \"e066\", \"M272,288H208a16,16,0,0,1-16-16V208a16,16,0,0,1,16-16h64a16,16,0,0,1,16,16v37.12C299.11,232.24,315,224,332.8,224H469.74l6.65-7.53A16.51,16.51,0,0,0,480,207a16.31,16.31,0,0,0-4.75-10.61L416,144V48a16,16,0,0,0-16-16H368a16,16,0,0,0-16,16V87.3L263.5,8.92C258,4,247.45,0,240.05,0s-17.93,4-23.47,8.92L4.78,196.42A16.15,16.15,0,0,0,0,207a16.4,16.4,0,0,0,3.55,9.39L22.34,237.7A16.22,16.22,0,0,0,33,242.48,16.51,16.51,0,0,0,42.34,239L64,219.88V384a32,32,0,0,0,32,32H272ZM629.33,448H592V288c0-17.67-12.89-32-28.8-32H332.8c-15.91,0-28.8,14.33-28.8,32V448H266.67A10.67,10.67,0,0,0,256,458.67v10.66A42.82,42.82,0,0,0,298.6,512H597.4A42.82,42.82,0,0,0,640,469.33V458.67A10.67,10.67,0,0,0,629.33,448ZM544,448H352V304H544Z\"]\n};\nvar faLaptopMedical = {\n prefix: 'fas',\n iconName: 'laptop-medical',\n icon: [640, 512, [], \"f812\", \"M232 224h56v56a8 8 0 0 0 8 8h48a8 8 0 0 0 8-8v-56h56a8 8 0 0 0 8-8v-48a8 8 0 0 0-8-8h-56v-56a8 8 0 0 0-8-8h-48a8 8 0 0 0-8 8v56h-56a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8zM576 48a48.14 48.14 0 0 0-48-48H112a48.14 48.14 0 0 0-48 48v336h512zm-64 272H128V64h384zm112 96H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33-17.47-32.77-32H16a16 16 0 0 0-16 16v16a64.19 64.19 0 0 0 64 64h512a64.19 64.19 0 0 0 64-64v-16a16 16 0 0 0-16-16z\"]\n};\nvar faLaugh = {\n prefix: 'fas',\n iconName: 'laugh',\n icon: [496, 512, [], \"f599\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 152c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm88 272h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18-8.9 71-69.5 126-142.9 126z\"]\n};\nvar faLaughBeam = {\n prefix: 'fas',\n iconName: 'laugh-beam',\n icon: [496, 512, [], \"f59a\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm24 199.4c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.8 4.1-15.1-4.5zm-160 0c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.3 7.4-15.8 4-15.1-4.5zM398.9 306C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z\"]\n};\nvar faLaughSquint = {\n prefix: 'fas',\n iconName: 'laugh-squint',\n icon: [496, 512, [], \"f59b\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 161.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 180l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM398.9 306C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z\"]\n};\nvar faLaughWink = {\n prefix: 'fas',\n iconName: 'laugh-wink',\n icon: [496, 512, [], \"f59c\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm20.1 198.1c4-25.2 34.2-42.1 59.9-42.1s55.9 16.9 59.9 42.1c1.7 11.1-11.4 18.3-19.8 10.8l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L288 217c-8.4 7.4-21.6.3-19.9-10.9zM168 160c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm230.9 146C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z\"]\n};\nvar faLayerGroup = {\n prefix: 'fas',\n iconName: 'layer-group',\n icon: [512, 512, [], \"f5fd\", \"M12.41 148.02l232.94 105.67c6.8 3.09 14.49 3.09 21.29 0l232.94-105.67c16.55-7.51 16.55-32.52 0-40.03L266.65 2.31a25.607 25.607 0 0 0-21.29 0L12.41 107.98c-16.55 7.51-16.55 32.53 0 40.04zm487.18 88.28l-58.09-26.33-161.64 73.27c-7.56 3.43-15.59 5.17-23.86 5.17s-16.29-1.74-23.86-5.17L70.51 209.97l-58.1 26.33c-16.55 7.5-16.55 32.5 0 40l232.94 105.59c6.8 3.08 14.49 3.08 21.29 0L499.59 276.3c16.55-7.5 16.55-32.5 0-40zm0 127.8l-57.87-26.23-161.86 73.37c-7.56 3.43-15.59 5.17-23.86 5.17s-16.29-1.74-23.86-5.17L70.29 337.87 12.41 364.1c-16.55 7.5-16.55 32.5 0 40l232.94 105.59c6.8 3.08 14.49 3.08 21.29 0L499.59 404.1c16.55-7.5 16.55-32.5 0-40z\"]\n};\nvar faLeaf = {\n prefix: 'fas',\n iconName: 'leaf',\n icon: [576, 512, [], \"f06c\", \"M546.2 9.7c-5.6-12.5-21.6-13-28.3-1.2C486.9 62.4 431.4 96 368 96h-80C182 96 96 182 96 288c0 7 .8 13.7 1.5 20.5C161.3 262.8 253.4 224 384 224c8.8 0 16 7.2 16 16s-7.2 16-16 16C132.6 256 26 410.1 2.4 468c-6.6 16.3 1.2 34.9 17.5 41.6 16.4 6.8 35-1.1 41.8-17.3 1.5-3.6 20.9-47.9 71.9-90.6 32.4 43.9 94 85.8 174.9 77.2C465.5 467.5 576 326.7 576 154.3c0-50.2-10.8-102.2-29.8-144.6z\"]\n};\nvar faLemon = {\n prefix: 'fas',\n iconName: 'lemon',\n icon: [512, 512, [], \"f094\", \"M489.038 22.963C465.944-.13 434.648-5.93 413.947 6.129c-58.906 34.312-181.25-53.077-321.073 86.746S40.441 355.041 6.129 413.945c-12.059 20.702-6.26 51.999 16.833 75.093 23.095 23.095 54.392 28.891 75.095 16.832 58.901-34.31 181.246 53.079 321.068-86.743S471.56 156.96 505.871 98.056c12.059-20.702 6.261-51.999-16.833-75.093zM243.881 95.522c-58.189 14.547-133.808 90.155-148.358 148.358-1.817 7.27-8.342 12.124-15.511 12.124-1.284 0-2.59-.156-3.893-.481-8.572-2.144-13.784-10.83-11.642-19.403C81.901 166.427 166.316 81.93 236.119 64.478c8.575-2.143 17.261 3.069 19.403 11.642s-3.069 17.259-11.641 19.402z\"]\n};\nvar faLessThan = {\n prefix: 'fas',\n iconName: 'less-than',\n icon: [384, 512, [], \"f536\", \"M365.46 357.74L147.04 255.89l218.47-101.88c16.02-7.47 22.95-26.51 15.48-42.53l-13.52-29C360 66.46 340.96 59.53 324.94 67L18.48 209.91a32.014 32.014 0 0 0-18.48 29v34.24c0 12.44 7.21 23.75 18.48 29l306.31 142.83c16.06 7.49 35.15.54 42.64-15.52l13.56-29.08c7.49-16.06.54-35.15-15.53-42.64z\"]\n};\nvar faLessThanEqual = {\n prefix: 'fas',\n iconName: 'less-than-equal',\n icon: [448, 512, [], \"f537\", \"M54.98 214.2l301.41 119.87c18.39 6.03 38.71-2.54 45.38-19.15l12.09-30.08c6.68-16.61-2.82-34.97-21.21-41l-175.44-68.05 175.56-68.09c18.29-6 27.74-24.27 21.1-40.79l-12.03-29.92c-6.64-16.53-26.86-25.06-45.15-19.06L54.98 137.89C41.21 142.41 32 154.5 32 168.07v15.96c0 13.56 9.21 25.65 22.98 30.17zM424 400H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h400c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z\"]\n};\nvar faLevelDownAlt = {\n prefix: 'fas',\n iconName: 'level-down-alt',\n icon: [320, 512, [], \"f3be\", \"M313.553 392.331L209.587 504.334c-9.485 10.214-25.676 10.229-35.174 0L70.438 392.331C56.232 377.031 67.062 352 88.025 352H152V80H68.024a11.996 11.996 0 0 1-8.485-3.515l-56-56C-4.021 12.926 1.333 0 12.024 0H208c13.255 0 24 10.745 24 24v328h63.966c20.878 0 31.851 24.969 17.587 40.331z\"]\n};\nvar faLevelUpAlt = {\n prefix: 'fas',\n iconName: 'level-up-alt',\n icon: [320, 512, [], \"f3bf\", \"M313.553 119.669L209.587 7.666c-9.485-10.214-25.676-10.229-35.174 0L70.438 119.669C56.232 134.969 67.062 160 88.025 160H152v272H68.024a11.996 11.996 0 0 0-8.485 3.515l-56 56C-4.021 499.074 1.333 512 12.024 512H208c13.255 0 24-10.745 24-24V160h63.966c20.878 0 31.851-24.969 17.587-40.331z\"]\n};\nvar faLifeRing = {\n prefix: 'fas',\n iconName: 'life-ring',\n icon: [512, 512, [], \"f1cd\", \"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm173.696 119.559l-63.399 63.399c-10.987-18.559-26.67-34.252-45.255-45.255l63.399-63.399a218.396 218.396 0 0 1 45.255 45.255zM256 352c-53.019 0-96-42.981-96-96s42.981-96 96-96 96 42.981 96 96-42.981 96-96 96zM127.559 82.304l63.399 63.399c-18.559 10.987-34.252 26.67-45.255 45.255l-63.399-63.399a218.372 218.372 0 0 1 45.255-45.255zM82.304 384.441l63.399-63.399c10.987 18.559 26.67 34.252 45.255 45.255l-63.399 63.399a218.396 218.396 0 0 1-45.255-45.255zm302.137 45.255l-63.399-63.399c18.559-10.987 34.252-26.67 45.255-45.255l63.399 63.399a218.403 218.403 0 0 1-45.255 45.255z\"]\n};\nvar faLightbulb = {\n prefix: 'fas',\n iconName: 'lightbulb',\n icon: [352, 512, [], \"f0eb\", \"M96.06 454.35c.01 6.29 1.87 12.45 5.36 17.69l17.09 25.69a31.99 31.99 0 0 0 26.64 14.28h61.71a31.99 31.99 0 0 0 26.64-14.28l17.09-25.69a31.989 31.989 0 0 0 5.36-17.69l.04-38.35H96.01l.05 38.35zM0 176c0 44.37 16.45 84.85 43.56 115.78 16.52 18.85 42.36 58.23 52.21 91.45.04.26.07.52.11.78h160.24c.04-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45C335.55 260.85 352 220.37 352 176 352 78.61 272.91-.3 175.45 0 73.44.31 0 82.97 0 176zm176-80c-44.11 0-80 35.89-80 80 0 8.84-7.16 16-16 16s-16-7.16-16-16c0-61.76 50.24-112 112-112 8.84 0 16 7.16 16 16s-7.16 16-16 16z\"]\n};\nvar faLink = {\n prefix: 'fas',\n iconName: 'link',\n icon: [512, 512, [], \"f0c1\", \"M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z\"]\n};\nvar faLiraSign = {\n prefix: 'fas',\n iconName: 'lira-sign',\n icon: [384, 512, [], \"f195\", \"M371.994 256h-48.019C317.64 256 312 260.912 312 267.246 312 368 230.179 416 144 416V256.781l134.603-29.912A12 12 0 0 0 288 215.155v-40.976c0-7.677-7.109-13.38-14.603-11.714L144 191.219V160.78l134.603-29.912A12 12 0 0 0 288 119.154V78.179c0-7.677-7.109-13.38-14.603-11.714L144 95.219V44c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v68.997L9.397 125.131A12 12 0 0 0 0 136.845v40.976c0 7.677 7.109 13.38 14.603 11.714L64 178.558v30.439L9.397 221.131A12 12 0 0 0 0 232.845v40.976c0 7.677 7.109 13.38 14.603 11.714L64 274.558V468c0 6.627 5.373 12 12 12h79.583c134.091 0 223.255-77.834 228.408-211.592.261-6.782-5.211-12.408-11.997-12.408z\"]\n};\nvar faList = {\n prefix: 'fas',\n iconName: 'list',\n icon: [512, 512, [], \"f03a\", \"M80 368H16a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16zm0-320H16A16 16 0 0 0 0 64v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16V64a16 16 0 0 0-16-16zm0 160H16a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16zm416 176H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faListAlt = {\n prefix: 'fas',\n iconName: 'list-alt',\n icon: [512, 512, [], \"f022\", \"M464 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zM128 120c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm0 96c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm0 96c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm288-136v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12zm0 96v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12zm0 96v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12z\"]\n};\nvar faListOl = {\n prefix: 'fas',\n iconName: 'list-ol',\n icon: [512, 512, [], \"f0cb\", \"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"]\n};\nvar faListUl = {\n prefix: 'fas',\n iconName: 'list-ul',\n icon: [512, 512, [], \"f0ca\", \"M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm448 16H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faLocationArrow = {\n prefix: 'fas',\n iconName: 'location-arrow',\n icon: [512, 512, [], \"f124\", \"M444.52 3.52L28.74 195.42c-47.97 22.39-31.98 92.75 19.19 92.75h175.91v175.91c0 51.17 70.36 67.17 92.75 19.19l191.9-415.78c15.99-38.39-25.59-79.97-63.97-63.97z\"]\n};\nvar faLock = {\n prefix: 'fas',\n iconName: 'lock',\n icon: [448, 512, [], \"f023\", \"M400 224h-24v-72C376 68.2 307.8 0 224 0S72 68.2 72 152v72H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48zm-104 0H152v-72c0-39.7 32.3-72 72-72s72 32.3 72 72v72z\"]\n};\nvar faLockOpen = {\n prefix: 'fas',\n iconName: 'lock-open',\n icon: [576, 512, [], \"f3c1\", \"M423.5 0C339.5.3 272 69.5 272 153.5V224H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48h-48v-71.1c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v80c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-80C576 68 507.5-.3 423.5 0z\"]\n};\nvar faLongArrowAltDown = {\n prefix: 'fas',\n iconName: 'long-arrow-alt-down',\n icon: [256, 512, [], \"f309\", \"M168 345.941V44c0-6.627-5.373-12-12-12h-56c-6.627 0-12 5.373-12 12v301.941H41.941c-21.382 0-32.09 25.851-16.971 40.971l86.059 86.059c9.373 9.373 24.569 9.373 33.941 0l86.059-86.059c15.119-15.119 4.411-40.971-16.971-40.971H168z\"]\n};\nvar faLongArrowAltLeft = {\n prefix: 'fas',\n iconName: 'long-arrow-alt-left',\n icon: [448, 512, [], \"f30a\", \"M134.059 296H436c6.627 0 12-5.373 12-12v-56c0-6.627-5.373-12-12-12H134.059v-46.059c0-21.382-25.851-32.09-40.971-16.971L7.029 239.029c-9.373 9.373-9.373 24.569 0 33.941l86.059 86.059c15.119 15.119 40.971 4.411 40.971-16.971V296z\"]\n};\nvar faLongArrowAltRight = {\n prefix: 'fas',\n iconName: 'long-arrow-alt-right',\n icon: [448, 512, [], \"f30b\", \"M313.941 216H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h301.941v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.569 0-33.941l-86.059-86.059c-15.119-15.119-40.971-4.411-40.971 16.971V216z\"]\n};\nvar faLongArrowAltUp = {\n prefix: 'fas',\n iconName: 'long-arrow-alt-up',\n icon: [256, 512, [], \"f30c\", \"M88 166.059V468c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12V166.059h46.059c21.382 0 32.09-25.851 16.971-40.971l-86.059-86.059c-9.373-9.373-24.569-9.373-33.941 0l-86.059 86.059c-15.119 15.119-4.411 40.971 16.971 40.971H88z\"]\n};\nvar faLowVision = {\n prefix: 'fas',\n iconName: 'low-vision',\n icon: [576, 512, [], \"f2a8\", \"M569.344 231.631C512.96 135.949 407.81 72 288 72c-28.468 0-56.102 3.619-82.451 10.409L152.778 10.24c-7.601-10.858-22.564-13.5-33.423-5.9l-13.114 9.178c-10.86 7.601-13.502 22.566-5.9 33.426l43.131 58.395C89.449 131.73 40.228 174.683 6.682 231.581c-.01.017-.023.033-.034.05-8.765 14.875-8.964 33.528 0 48.739 38.5 65.332 99.742 115.862 172.859 141.349L55.316 244.302A272.194 272.194 0 0 1 83.61 208.39l119.4 170.58h.01l40.63 58.04a330.055 330.055 0 0 0 78.94 1.17l-189.98-271.4a277.628 277.628 0 0 1 38.777-21.563l251.836 356.544c7.601 10.858 22.564 13.499 33.423 5.9l13.114-9.178c10.86-7.601 13.502-22.567 5.9-33.426l-43.12-58.377-.007-.009c57.161-27.978 104.835-72.04 136.81-126.301a47.938 47.938 0 0 0 .001-48.739zM390.026 345.94l-19.066-27.23c24.682-32.567 27.711-76.353 8.8-111.68v.03c0 23.65-19.17 42.82-42.82 42.82-23.828 0-42.82-19.349-42.82-42.82 0-23.65 19.17-42.82 42.82-42.82h.03c-24.75-13.249-53.522-15.643-79.51-7.68l-19.068-27.237C253.758 123.306 270.488 120 288 120c75.162 0 136 60.826 136 136 0 34.504-12.833 65.975-33.974 89.94z\"]\n};\nvar faLuggageCart = {\n prefix: 'fas',\n iconName: 'luggage-cart',\n icon: [640, 512, [], \"f59d\", \"M224 320h32V96h-32c-17.67 0-32 14.33-32 32v160c0 17.67 14.33 32 32 32zm352-32V128c0-17.67-14.33-32-32-32h-32v224h32c17.67 0 32-14.33 32-32zm48 96H128V16c0-8.84-7.16-16-16-16H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h48v368c0 8.84 7.16 16 16 16h82.94c-1.79 5.03-2.94 10.36-2.94 16 0 26.51 21.49 48 48 48s48-21.49 48-48c0-5.64-1.15-10.97-2.94-16h197.88c-1.79 5.03-2.94 10.36-2.94 16 0 26.51 21.49 48 48 48s48-21.49 48-48c0-5.64-1.15-10.97-2.94-16H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM480 96V48c0-26.51-21.49-48-48-48h-96c-26.51 0-48 21.49-48 48v272h192V96zm-48 0h-96V48h96v48z\"]\n};\nvar faLungs = {\n prefix: 'fas',\n iconName: 'lungs',\n icon: [640, 512, [], \"f604\", \"M636.11 390.15C614.44 308.85 580.07 231 534.1 159.13 511.98 124.56 498.03 96 454.05 96 415.36 96 384 125.42 384 161.71v60.11l-32.88-21.92a15.996 15.996 0 0 1-7.12-13.31V16c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v170.59c0 5.35-2.67 10.34-7.12 13.31L256 221.82v-60.11C256 125.42 224.64 96 185.95 96c-43.98 0-57.93 28.56-80.05 63.13C59.93 231 25.56 308.85 3.89 390.15 1.3 399.84 0 409.79 0 419.78c0 61.23 62.48 105.44 125.24 88.62l59.5-15.95c42.18-11.3 71.26-47.47 71.26-88.62v-87.49l-85.84 57.23a7.992 7.992 0 0 1-11.09-2.22l-8.88-13.31a7.992 7.992 0 0 1 2.22-11.09L320 235.23l167.59 111.72a7.994 7.994 0 0 1 2.22 11.09l-8.88 13.31a7.994 7.994 0 0 1-11.09 2.22L384 316.34v87.49c0 41.15 29.08 77.31 71.26 88.62l59.5 15.95C577.52 525.22 640 481.01 640 419.78c0-9.99-1.3-19.94-3.89-29.63z\"]\n};\nvar faLungsVirus = {\n prefix: 'fas',\n iconName: 'lungs-virus',\n icon: [640, 512, [], \"e067\", \"M344,150.68V16A16,16,0,0,0,328,0H312a16,16,0,0,0-16,16V150.68a46.45,46.45,0,0,1,48,0ZM195.54,444.46a48.06,48.06,0,0,1,0-67.88l8.58-8.58H192a48,48,0,0,1,0-96h12.12l-8.58-8.57a48,48,0,0,1,60.46-74V161.75C256,125.38,224.62,96,186,96c-44,0-58,28.5-80.12,63.13a819.52,819.52,0,0,0-102,231A113.16,113.16,0,0,0,0,419.75C0,481,62.5,525.26,125.25,508.38l59.5-15.87a98.51,98.51,0,0,0,52.5-34.75,46.49,46.49,0,0,1-41.71-13.3Zm226.29-22.63a16,16,0,0,0,0-22.62l-8.58-8.58C393.09,370.47,407.37,336,435.88,336H448a16,16,0,0,0,0-32H435.88c-28.51,0-42.79-34.47-22.63-54.62l8.58-8.58a16,16,0,0,0-22.63-22.63l-8.57,8.58C370.47,246.91,336,232.63,336,204.12V192a16,16,0,0,0-32,0v12.12c0,28.51-34.47,42.79-54.63,22.63l-8.57-8.58a16,16,0,0,0-22.63,22.63l8.58,8.58c20.16,20.15,5.88,54.62-22.63,54.62H192a16,16,0,0,0,0,32h12.12c28.51,0,42.79,34.47,22.63,54.63l-8.58,8.58a16,16,0,1,0,22.63,22.62l8.57-8.57C269.53,393.1,304,407.38,304,435.88V448a16,16,0,0,0,32,0V435.88c0-28.5,34.47-42.78,54.63-22.62l8.57,8.57a16,16,0,0,0,22.63,0ZM288,304a16,16,0,1,1,16-16A16,16,0,0,1,288,304Zm64,64a16,16,0,1,1,16-16A16,16,0,0,1,352,368Zm284.12,22.13a819.52,819.52,0,0,0-102-231C512,124.5,498,96,454,96c-38.62,0-70,29.38-70,65.75v27.72a48,48,0,0,1,60.46,74L435.88,272H448a48,48,0,0,1,0,96H435.88l8.58,8.58a47.7,47.7,0,0,1-41.71,81.18,98.51,98.51,0,0,0,52.5,34.75l59.5,15.87C577.5,525.26,640,481,640,419.75A113.16,113.16,0,0,0,636.12,390.13Z\"]\n};\nvar faMagic = {\n prefix: 'fas',\n iconName: 'magic',\n icon: [512, 512, [], \"f0d0\", \"M224 96l16-32 32-16-32-16-16-32-16 32-32 16 32 16 16 32zM80 160l26.66-53.33L160 80l-53.34-26.67L80 0 53.34 53.33 0 80l53.34 26.67L80 160zm352 128l-26.66 53.33L352 368l53.34 26.67L432 448l26.66-53.33L512 368l-53.34-26.67L432 288zm70.62-193.77L417.77 9.38C411.53 3.12 403.34 0 395.15 0c-8.19 0-16.38 3.12-22.63 9.38L9.38 372.52c-12.5 12.5-12.5 32.76 0 45.25l84.85 84.85c6.25 6.25 14.44 9.37 22.62 9.37 8.19 0 16.38-3.12 22.63-9.37l363.14-363.15c12.5-12.48 12.5-32.75 0-45.24zM359.45 203.46l-50.91-50.91 86.6-86.6 50.91 50.91-86.6 86.6z\"]\n};\nvar faMagnet = {\n prefix: 'fas',\n iconName: 'magnet',\n icon: [512, 512, [], \"f076\", \"M164.07 148.1H12a12 12 0 0 1-12-12v-80a36 36 0 0 1 36-36h104a36 36 0 0 1 36 36v80a11.89 11.89 0 0 1-11.93 12zm347.93-12V56a36 36 0 0 0-36-36H372a36 36 0 0 0-36 36v80a12 12 0 0 0 12 12h152a11.89 11.89 0 0 0 12-11.9zm-164 44a12 12 0 0 0-12 12v52c0 128.1-160 127.9-160 0v-52a12 12 0 0 0-12-12H12.1a12 12 0 0 0-12 12.1c.1 21.4.6 40.3 0 53.3 0 150.6 136.17 246.6 256.75 246.6s255-96 255-246.7c-.6-12.8-.2-33 0-53.2a12 12 0 0 0-12-12.1z\"]\n};\nvar faMailBulk = {\n prefix: 'fas',\n iconName: 'mail-bulk',\n icon: [576, 512, [], \"f674\", \"M160 448c-25.6 0-51.2-22.4-64-32-64-44.8-83.2-60.8-96-70.4V480c0 17.67 14.33 32 32 32h256c17.67 0 32-14.33 32-32V345.6c-12.8 9.6-32 25.6-96 70.4-12.8 9.6-38.4 32-64 32zm128-192H32c-17.67 0-32 14.33-32 32v16c25.6 19.2 22.4 19.2 115.2 86.4 9.6 6.4 28.8 25.6 44.8 25.6s35.2-19.2 44.8-22.4c92.8-67.2 89.6-67.2 115.2-86.4V288c0-17.67-14.33-32-32-32zm256-96H224c-17.67 0-32 14.33-32 32v32h96c33.21 0 60.59 25.42 63.71 57.82l.29-.22V416h192c17.67 0 32-14.33 32-32V192c0-17.67-14.33-32-32-32zm-32 128h-64v-64h64v64zm-352-96c0-35.29 28.71-64 64-64h224V32c0-17.67-14.33-32-32-32H96C78.33 0 64 14.33 64 32v192h96v-32z\"]\n};\nvar faMale = {\n prefix: 'fas',\n iconName: 'male',\n icon: [192, 512, [], \"f183\", \"M96 0c35.346 0 64 28.654 64 64s-28.654 64-64 64-64-28.654-64-64S60.654 0 96 0m48 144h-11.36c-22.711 10.443-49.59 10.894-73.28 0H48c-26.51 0-48 21.49-48 48v136c0 13.255 10.745 24 24 24h16v136c0 13.255 10.745 24 24 24h64c13.255 0 24-10.745 24-24V352h16c13.255 0 24-10.745 24-24V192c0-26.51-21.49-48-48-48z\"]\n};\nvar faMap = {\n prefix: 'fas',\n iconName: 'map',\n icon: [576, 512, [], \"f279\", \"M0 117.66v346.32c0 11.32 11.43 19.06 21.94 14.86L160 416V32L20.12 87.95A32.006 32.006 0 0 0 0 117.66zM192 416l192 64V96L192 32v384zM554.06 33.16L416 96v384l139.88-55.95A31.996 31.996 0 0 0 576 394.34V48.02c0-11.32-11.43-19.06-21.94-14.86z\"]\n};\nvar faMapMarked = {\n prefix: 'fas',\n iconName: 'map-marked',\n icon: [576, 512, [], \"f59f\", \"M288 0c-69.59 0-126 56.41-126 126 0 56.26 82.35 158.8 113.9 196.02 6.39 7.54 17.82 7.54 24.2 0C331.65 284.8 414 182.26 414 126 414 56.41 357.59 0 288 0zM20.12 215.95A32.006 32.006 0 0 0 0 245.66v250.32c0 11.32 11.43 19.06 21.94 14.86L160 448V214.92c-8.84-15.98-16.07-31.54-21.25-46.42L20.12 215.95zM288 359.67c-14.07 0-27.38-6.18-36.51-16.96-19.66-23.2-40.57-49.62-59.49-76.72v182l192 64V266c-18.92 27.09-39.82 53.52-59.49 76.72-9.13 10.77-22.44 16.95-36.51 16.95zm266.06-198.51L416 224v288l139.88-55.95A31.996 31.996 0 0 0 576 426.34V176.02c0-11.32-11.43-19.06-21.94-14.86z\"]\n};\nvar faMapMarkedAlt = {\n prefix: 'fas',\n iconName: 'map-marked-alt',\n icon: [576, 512, [], \"f5a0\", \"M288 0c-69.59 0-126 56.41-126 126 0 56.26 82.35 158.8 113.9 196.02 6.39 7.54 17.82 7.54 24.2 0C331.65 284.8 414 182.26 414 126 414 56.41 357.59 0 288 0zm0 168c-23.2 0-42-18.8-42-42s18.8-42 42-42 42 18.8 42 42-18.8 42-42 42zM20.12 215.95A32.006 32.006 0 0 0 0 245.66v250.32c0 11.32 11.43 19.06 21.94 14.86L160 448V214.92c-8.84-15.98-16.07-31.54-21.25-46.42L20.12 215.95zM288 359.67c-14.07 0-27.38-6.18-36.51-16.96-19.66-23.2-40.57-49.62-59.49-76.72v182l192 64V266c-18.92 27.09-39.82 53.52-59.49 76.72-9.13 10.77-22.44 16.95-36.51 16.95zm266.06-198.51L416 224v288l139.88-55.95A31.996 31.996 0 0 0 576 426.34V176.02c0-11.32-11.43-19.06-21.94-14.86z\"]\n};\nvar faMapMarker = {\n prefix: 'fas',\n iconName: 'map-marker',\n icon: [384, 512, [], \"f041\", \"M172.268 501.67C26.97 291.031 0 269.413 0 192 0 85.961 85.961 0 192 0s192 85.961 192 192c0 77.413-26.97 99.031-172.268 309.67-9.535 13.774-29.93 13.773-39.464 0z\"]\n};\nvar faMapMarkerAlt = {\n prefix: 'fas',\n iconName: 'map-marker-alt',\n icon: [384, 512, [], \"f3c5\", \"M172.268 501.67C26.97 291.031 0 269.413 0 192 0 85.961 85.961 0 192 0s192 85.961 192 192c0 77.413-26.97 99.031-172.268 309.67-9.535 13.774-29.93 13.773-39.464 0zM192 272c44.183 0 80-35.817 80-80s-35.817-80-80-80-80 35.817-80 80 35.817 80 80 80z\"]\n};\nvar faMapPin = {\n prefix: 'fas',\n iconName: 'map-pin',\n icon: [288, 512, [], \"f276\", \"M112 316.94v156.69l22.02 33.02c4.75 7.12 15.22 7.12 19.97 0L176 473.63V316.94c-10.39 1.92-21.06 3.06-32 3.06s-21.61-1.14-32-3.06zM144 0C64.47 0 0 64.47 0 144s64.47 144 144 144 144-64.47 144-144S223.53 0 144 0zm0 76c-37.5 0-68 30.5-68 68 0 6.62-5.38 12-12 12s-12-5.38-12-12c0-50.73 41.28-92 92-92 6.62 0 12 5.38 12 12s-5.38 12-12 12z\"]\n};\nvar faMapSigns = {\n prefix: 'fas',\n iconName: 'map-signs',\n icon: [512, 512, [], \"f277\", \"M507.31 84.69L464 41.37c-6-6-14.14-9.37-22.63-9.37H288V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v16H56c-13.25 0-24 10.75-24 24v80c0 13.25 10.75 24 24 24h385.37c8.49 0 16.62-3.37 22.63-9.37l43.31-43.31c6.25-6.26 6.25-16.38 0-22.63zM224 496c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V384h-64v112zm232-272H288v-32h-64v32H70.63c-8.49 0-16.62 3.37-22.63 9.37L4.69 276.69c-6.25 6.25-6.25 16.38 0 22.63L48 342.63c6 6 14.14 9.37 22.63 9.37H456c13.25 0 24-10.75 24-24v-80c0-13.25-10.75-24-24-24z\"]\n};\nvar faMarker = {\n prefix: 'fas',\n iconName: 'marker',\n icon: [512, 512, [], \"f5a1\", \"M93.95 290.03A327.038 327.038 0 0 0 .17 485.11l-.03.23c-1.7 15.28 11.21 28.2 26.49 26.51a327.02 327.02 0 0 0 195.34-93.8l75.4-75.4-128.02-128.02-75.4 75.4zM485.49 26.51c-35.35-35.35-92.67-35.35-128.02 0l-21.76 21.76-36.56-36.55c-15.62-15.62-40.95-15.62-56.56 0L138.47 115.84c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0l87.15-87.15 19.59 19.59L191.98 192 320 320.02l165.49-165.49c35.35-35.35 35.35-92.66 0-128.02z\"]\n};\nvar faMars = {\n prefix: 'fas',\n iconName: 'mars',\n icon: [384, 512, [], \"f222\", \"M372 64h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7c-22.2-14-48.5-22.1-76.7-22.1C64.5 160 0 224.5 0 304s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V76c0-6.6-5.4-12-12-12zM144 384c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faMarsDouble = {\n prefix: 'fas',\n iconName: 'mars-double',\n icon: [512, 512, [], \"f227\", \"M340 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7C198.5 72.1 172.2 64 144 64 64.5 64 0 128.5 0 208s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.5 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12V12c0-6.6-5.4-12-12-12zM144 288c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80zm356-128.1h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7c-18.2-11.4-39-18.9-61.5-21.3-2.1 21.8-8.2 43.3-18.4 63.3 1.1 0 2.2-.1 3.2-.1 44.1 0 80 35.9 80 80s-35.9 80-80 80-80-35.9-80-80c0-1.1 0-2.2.1-3.2-20 10.2-41.5 16.4-63.3 18.4C168.4 455.6 229.6 512 304 512c79.5 0 144-64.5 144-144 0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.4 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12v-79c0-6.7-5.4-12.1-12-12.1z\"]\n};\nvar faMarsStroke = {\n prefix: 'fas',\n iconName: 'mars-stroke',\n icon: [384, 512, [], \"f229\", \"M372 64h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-17.5 17.5-14.1-14.1c-4.7-4.7-12.3-4.7-17 0L224.5 133c-4.7 4.7-4.7 12.3 0 17l14.1 14.1-18 18c-22.2-14-48.5-22.1-76.7-22.1C64.5 160 0 224.5 0 304s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l18-18 14.1 14.1c4.7 4.7 12.3 4.7 17 0l28.3-28.3c4.7-4.7 4.7-12.3 0-17L329.2 164l17.5-17.5 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V76c-.1-6.6-5.5-12-12.1-12zM144 384c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faMarsStrokeH = {\n prefix: 'fas',\n iconName: 'mars-stroke-h',\n icon: [480, 512, [], \"f22b\", \"M476.2 247.5l-55.9-55.9c-7.6-7.6-20.5-2.2-20.5 8.5V224H376v-20c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v20h-27.6c-5.8-25.6-18.7-49.9-38.6-69.8C189.6 98 98.4 98 42.2 154.2c-56.2 56.2-56.2 147.4 0 203.6 56.2 56.2 147.4 56.2 203.6 0 19.9-19.9 32.8-44.2 38.6-69.8H312v20c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-20h23.9v23.9c0 10.7 12.9 16 20.5 8.5l55.9-55.9c4.6-4.7 4.6-12.3-.1-17zm-275.6 65.1c-31.2 31.2-81.9 31.2-113.1 0-31.2-31.2-31.2-81.9 0-113.1 31.2-31.2 81.9-31.2 113.1 0 31.2 31.1 31.2 81.9 0 113.1z\"]\n};\nvar faMarsStrokeV = {\n prefix: 'fas',\n iconName: 'mars-stroke-v',\n icon: [288, 512, [], \"f22a\", \"M245.8 234.2c-19.9-19.9-44.2-32.8-69.8-38.6v-25.4h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V81.4h23.9c10.7 0 16-12.9 8.5-20.5L152.5 5.1c-4.7-4.7-12.3-4.7-17 0L79.6 61c-7.6 7.6-2.2 20.5 8.5 20.5H112v24.7H92c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h20v25.4c-25.6 5.8-49.9 18.7-69.8 38.6-56.2 56.2-56.2 147.4 0 203.6 56.2 56.2 147.4 56.2 203.6 0 56.3-56.2 56.3-147.4 0-203.6zm-45.2 158.4c-31.2 31.2-81.9 31.2-113.1 0-31.2-31.2-31.2-81.9 0-113.1 31.2-31.2 81.9-31.2 113.1 0 31.2 31.1 31.2 81.9 0 113.1z\"]\n};\nvar faMask = {\n prefix: 'fas',\n iconName: 'mask',\n icon: [640, 512, [], \"f6fa\", \"M320.67 64c-442.6 0-357.57 384-158.46 384 39.9 0 77.47-20.69 101.42-55.86l25.73-37.79c15.66-22.99 46.97-22.99 62.63 0l25.73 37.79C401.66 427.31 439.23 448 479.13 448c189.86 0 290.63-384-158.46-384zM184 308.36c-41.06 0-67.76-25.66-80.08-41.05-5.23-6.53-5.23-16.09 0-22.63 12.32-15.4 39.01-41.05 80.08-41.05s67.76 25.66 80.08 41.05c5.23 6.53 5.23 16.09 0 22.63-12.32 15.4-39.02 41.05-80.08 41.05zm272 0c-41.06 0-67.76-25.66-80.08-41.05-5.23-6.53-5.23-16.09 0-22.63 12.32-15.4 39.01-41.05 80.08-41.05s67.76 25.66 80.08 41.05c5.23 6.53 5.23 16.09 0 22.63-12.32 15.4-39.02 41.05-80.08 41.05z\"]\n};\nvar faMedal = {\n prefix: 'fas',\n iconName: 'medal',\n icon: [512, 512, [], \"f5a2\", \"M223.75 130.75L154.62 15.54A31.997 31.997 0 0 0 127.18 0H16.03C3.08 0-4.5 14.57 2.92 25.18l111.27 158.96c29.72-27.77 67.52-46.83 109.56-53.39zM495.97 0H384.82c-11.24 0-21.66 5.9-27.44 15.54l-69.13 115.21c42.04 6.56 79.84 25.62 109.56 53.38L509.08 25.18C516.5 14.57 508.92 0 495.97 0zM256 160c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm92.52 157.26l-37.93 36.96 8.97 52.22c1.6 9.36-8.26 16.51-16.65 12.09L256 393.88l-46.9 24.65c-8.4 4.45-18.25-2.74-16.65-12.09l8.97-52.22-37.93-36.96c-6.82-6.64-3.05-18.23 6.35-19.59l52.43-7.64 23.43-47.52c2.11-4.28 6.19-6.39 10.28-6.39 4.11 0 8.22 2.14 10.33 6.39l23.43 47.52 52.43 7.64c9.4 1.36 13.17 12.95 6.35 19.59z\"]\n};\nvar faMedkit = {\n prefix: 'fas',\n iconName: 'medkit',\n icon: [512, 512, [], \"f0fa\", \"M96 480h320V128h-32V80c0-26.51-21.49-48-48-48H176c-26.51 0-48 21.49-48 48v48H96v352zm96-384h128v32H192V96zm320 80v256c0 26.51-21.49 48-48 48h-16V128h16c26.51 0 48 21.49 48 48zM64 480H48c-26.51 0-48-21.49-48-48V176c0-26.51 21.49-48 48-48h16v352zm288-208v32c0 8.837-7.163 16-16 16h-48v48c0 8.837-7.163 16-16 16h-32c-8.837 0-16-7.163-16-16v-48h-48c-8.837 0-16-7.163-16-16v-32c0-8.837 7.163-16 16-16h48v-48c0-8.837 7.163-16 16-16h32c8.837 0 16 7.163 16 16v48h48c8.837 0 16 7.163 16 16z\"]\n};\nvar faMeh = {\n prefix: 'fas',\n iconName: 'meh',\n icon: [496, 512, [], \"f11a\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm176 192H152c-21.2 0-21.2-32 0-32h192c21.2 0 21.2 32 0 32zm-16-128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faMehBlank = {\n prefix: 'fas',\n iconName: 'meh-blank',\n icon: [496, 512, [], \"f5a4\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faMehRollingEyes = {\n prefix: 'fas',\n iconName: 'meh-rolling-eyes',\n icon: [496, 512, [], \"f5a5\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM88 224c0-24.3 13.7-45.2 33.6-56-.7 2.6-1.6 5.2-1.6 8 0 17.7 14.3 32 32 32s32-14.3 32-32c0-2.8-.9-5.4-1.6-8 19.9 10.8 33.6 31.7 33.6 56 0 35.3-28.7 64-64 64s-64-28.7-64-64zm224 176H184c-21.2 0-21.2-32 0-32h128c21.2 0 21.2 32 0 32zm32-112c-35.3 0-64-28.7-64-64 0-24.3 13.7-45.2 33.6-56-.7 2.6-1.6 5.2-1.6 8 0 17.7 14.3 32 32 32s32-14.3 32-32c0-2.8-.9-5.4-1.6-8 19.9 10.8 33.6 31.7 33.6 56 0 35.3-28.7 64-64 64z\"]\n};\nvar faMemory = {\n prefix: 'fas',\n iconName: 'memory',\n icon: [640, 512, [], \"f538\", \"M640 130.94V96c0-17.67-14.33-32-32-32H32C14.33 64 0 78.33 0 96v34.94c18.6 6.61 32 24.19 32 45.06s-13.4 38.45-32 45.06V320h640v-98.94c-18.6-6.61-32-24.19-32-45.06s13.4-38.45 32-45.06zM224 256h-64V128h64v128zm128 0h-64V128h64v128zm128 0h-64V128h64v128zM0 448h64v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h64v-96H0v96z\"]\n};\nvar faMenorah = {\n prefix: 'fas',\n iconName: 'menorah',\n icon: [640, 512, [], \"f676\", \"M144 128h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm96 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm192 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm96 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm80-32c17.67 0 32-14.33 32-32S608 0 608 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S512 0 512 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S416 0 416 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S320 0 320 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S224 0 224 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S128 0 128 0 96 46.33 96 64s14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S32 0 32 0 0 46.33 0 64s14.33 32 32 32zm544 192c0 17.67-14.33 32-32 32H352V144c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v176H96c-17.67 0-32-14.33-32-32V144c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v144c0 53.02 42.98 96 96 96h192v64H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H352v-64h192c53.02 0 96-42.98 96-96V144c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v144z\"]\n};\nvar faMercury = {\n prefix: 'fas',\n iconName: 'mercury',\n icon: [288, 512, [], \"f223\", \"M288 208c0-44.2-19.9-83.7-51.2-110.1 2.5-1.8 4.9-3.8 7.2-5.8 24.7-21.2 39.8-48.8 43.2-78.8.9-7.1-4.7-13.3-11.9-13.3h-40.5C229 0 224.1 4.1 223 9.8c-2.4 12.5-9.6 24.3-20.7 33.8C187 56.8 166.3 64 144 64s-43-7.2-58.4-20.4C74.5 34.1 67.4 22.3 64.9 9.8 63.8 4.1 58.9 0 53.2 0H12.7C5.5 0-.1 6.2.8 13.3 4.2 43.4 19.2 71 44 92.2c2.3 2 4.7 3.9 7.2 5.8C19.9 124.3 0 163.8 0 208c0 68.5 47.9 125.9 112 140.4V400H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80z\"]\n};\nvar faMeteor = {\n prefix: 'fas',\n iconName: 'meteor',\n icon: [512, 512, [], \"f753\", \"M511.328,20.8027c-11.60759,38.70264-34.30724,111.70173-61.30311,187.70077,6.99893,2.09372,13.4042,4,18.60653,5.59368a16.06158,16.06158,0,0,1,9.49854,22.906c-22.106,42.29635-82.69047,152.795-142.47819,214.40356-.99984,1.09373-1.99969,2.5-2.99954,3.49995A194.83046,194.83046,0,1,1,57.085,179.41009c.99985-1,2.40588-2,3.49947-3,61.59994-59.90549,171.97367-120.40473,214.37343-142.4982a16.058,16.058,0,0,1,22.90274,9.49988c1.59351,5.09368,3.49947,11.5936,5.5929,18.59351C379.34818,35.00565,452.43074,12.30281,491.12794.70921A16.18325,16.18325,0,0,1,511.328,20.8027ZM319.951,320.00207A127.98041,127.98041,0,1,0,191.97061,448.00046,127.97573,127.97573,0,0,0,319.951,320.00207Zm-127.98041-31.9996a31.9951,31.9951,0,1,1-31.9951-31.9996A31.959,31.959,0,0,1,191.97061,288.00247Zm31.9951,79.999a15.99755,15.99755,0,1,1-15.99755-15.9998A16.04975,16.04975,0,0,1,223.96571,368.00147Z\"]\n};\nvar faMicrochip = {\n prefix: 'fas',\n iconName: 'microchip',\n icon: [512, 512, [], \"f2db\", \"M416 48v416c0 26.51-21.49 48-48 48H144c-26.51 0-48-21.49-48-48V48c0-26.51 21.49-48 48-48h224c26.51 0 48 21.49 48 48zm96 58v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42V88h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zM30 376h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6z\"]\n};\nvar faMicrophone = {\n prefix: 'fas',\n iconName: 'microphone',\n icon: [352, 512, [], \"f130\", \"M176 352c53.02 0 96-42.98 96-96V96c0-53.02-42.98-96-96-96S80 42.98 80 96v160c0 53.02 42.98 96 96 96zm160-160h-16c-8.84 0-16 7.16-16 16v48c0 74.8-64.49 134.82-140.79 127.38C96.71 376.89 48 317.11 48 250.3V208c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v40.16c0 89.64 63.97 169.55 152 181.69V464H96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-56v-33.77C285.71 418.47 352 344.9 352 256v-48c0-8.84-7.16-16-16-16z\"]\n};\nvar faMicrophoneAlt = {\n prefix: 'fas',\n iconName: 'microphone-alt',\n icon: [352, 512, [], \"f3c9\", \"M336 192h-16c-8.84 0-16 7.16-16 16v48c0 74.8-64.49 134.82-140.79 127.38C96.71 376.89 48 317.11 48 250.3V208c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v40.16c0 89.64 63.97 169.55 152 181.69V464H96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-56v-33.77C285.71 418.47 352 344.9 352 256v-48c0-8.84-7.16-16-16-16zM176 352c53.02 0 96-42.98 96-96h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272c0-53.02-42.98-96-96-96S80 42.98 80 96v160c0 53.02 42.98 96 96 96z\"]\n};\nvar faMicrophoneAltSlash = {\n prefix: 'fas',\n iconName: 'microphone-alt-slash',\n icon: [640, 512, [], \"f539\", \"M633.82 458.1L476.26 336.33C488.74 312.21 496 284.98 496 256v-48c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v48c0 17.92-3.96 34.8-10.72 50.2l-26.55-20.52c3.1-9.4 5.28-19.22 5.28-29.67h-43.67l-41.4-32H416v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H416v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H416c0-53.02-42.98-96-96-96s-96 42.98-96 96v45.36L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM400 464h-56v-33.78c11.71-1.62 23.1-4.28 33.96-8.08l-50.4-38.96c-6.71.4-13.41.87-20.35.2-55.85-5.45-98.74-48.63-111.18-101.85L144 241.31v6.85c0 89.64 63.97 169.55 152 181.69V464h-56c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16z\"]\n};\nvar faMicrophoneSlash = {\n prefix: 'fas',\n iconName: 'microphone-slash',\n icon: [640, 512, [], \"f131\", \"M633.82 458.1l-157.8-121.96C488.61 312.13 496 285.01 496 256v-48c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v48c0 17.92-3.96 34.8-10.72 50.2l-26.55-20.52c3.1-9.4 5.28-19.22 5.28-29.67V96c0-53.02-42.98-96-96-96s-96 42.98-96 96v45.36L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM400 464h-56v-33.77c11.66-1.6 22.85-4.54 33.67-8.31l-50.11-38.73c-6.71.4-13.41.87-20.35.2-55.85-5.45-98.74-48.63-111.18-101.85L144 241.31v6.85c0 89.64 63.97 169.55 152 181.69V464h-56c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16z\"]\n};\nvar faMicroscope = {\n prefix: 'fas',\n iconName: 'microscope',\n icon: [512, 512, [], \"f610\", \"M160 320h12v16c0 8.84 7.16 16 16 16h40c8.84 0 16-7.16 16-16v-16h12c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32V16c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v16c-17.67 0-32 14.33-32 32v224c0 17.67 14.33 32 32 32zm304 128h-1.29C493.24 413.99 512 369.2 512 320c0-105.88-86.12-192-192-192v64c70.58 0 128 57.42 128 128s-57.42 128-128 128H48c-26.51 0-48 21.49-48 48 0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16 0-26.51-21.49-48-48-48zm-360-32h208c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8H104c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8z\"]\n};\nvar faMinus = {\n prefix: 'fas',\n iconName: 'minus',\n icon: [448, 512, [], \"f068\", \"M416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"]\n};\nvar faMinusCircle = {\n prefix: 'fas',\n iconName: 'minus-circle',\n icon: [512, 512, [], \"f056\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zM124 296c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h264c6.6 0 12 5.4 12 12v56c0 6.6-5.4 12-12 12H124z\"]\n};\nvar faMinusSquare = {\n prefix: 'fas',\n iconName: 'minus-square',\n icon: [448, 512, [], \"f146\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM92 296c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h264c6.6 0 12 5.4 12 12v56c0 6.6-5.4 12-12 12H92z\"]\n};\nvar faMitten = {\n prefix: 'fas',\n iconName: 'mitten',\n icon: [448, 512, [], \"f7b5\", \"M368 416H48c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h320c8.8 0 16-7.2 16-16v-64c0-8.8-7.2-16-16-16zm57-209.1c-27.2-22.6-67.5-19-90.1 8.2l-20.9 25-29.6-128.4c-18-77.5-95.4-125.9-172.8-108C34.2 21.6-14.2 98.9 3.7 176.4L51.6 384h309l72.5-87c22.7-27.2 19-67.5-8.1-90.1z\"]\n};\nvar faMobile = {\n prefix: 'fas',\n iconName: 'mobile',\n icon: [320, 512, [], \"f10b\", \"M272 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h224c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM160 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faMobileAlt = {\n prefix: 'fas',\n iconName: 'mobile-alt',\n icon: [320, 512, [], \"f3cd\", \"M272 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h224c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM160 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm112-108c0 6.6-5.4 12-12 12H60c-6.6 0-12-5.4-12-12V60c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v312z\"]\n};\nvar faMoneyBill = {\n prefix: 'fas',\n iconName: 'money-bill',\n icon: [640, 512, [], \"f0d6\", \"M608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM48 400v-64c35.35 0 64 28.65 64 64H48zm0-224v-64h64c0 35.35-28.65 64-64 64zm272 176c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96zm272 48h-64c0-35.35 28.65-64 64-64v64zm0-224c-35.35 0-64-28.65-64-64h64v64z\"]\n};\nvar faMoneyBillAlt = {\n prefix: 'fas',\n iconName: 'money-bill-alt',\n icon: [640, 512, [], \"f3d1\", \"M352 288h-16v-88c0-4.42-3.58-8-8-8h-13.58c-4.74 0-9.37 1.4-13.31 4.03l-15.33 10.22a7.994 7.994 0 0 0-2.22 11.09l8.88 13.31a7.994 7.994 0 0 0 11.09 2.22l.47-.31V288h-16c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8h64c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8zM608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM48 400v-64c35.35 0 64 28.65 64 64H48zm0-224v-64h64c0 35.35-28.65 64-64 64zm272 192c-53.02 0-96-50.15-96-112 0-61.86 42.98-112 96-112s96 50.14 96 112c0 61.87-43 112-96 112zm272 32h-64c0-35.35 28.65-64 64-64v64zm0-224c-35.35 0-64-28.65-64-64h64v64z\"]\n};\nvar faMoneyBillWave = {\n prefix: 'fas',\n iconName: 'money-bill-wave',\n icon: [640, 512, [], \"f53a\", \"M621.16 54.46C582.37 38.19 543.55 32 504.75 32c-123.17-.01-246.33 62.34-369.5 62.34-30.89 0-61.76-3.92-92.65-13.72-3.47-1.1-6.95-1.62-10.35-1.62C15.04 79 0 92.32 0 110.81v317.26c0 12.63 7.23 24.6 18.84 29.46C57.63 473.81 96.45 480 135.25 480c123.17 0 246.34-62.35 369.51-62.35 30.89 0 61.76 3.92 92.65 13.72 3.47 1.1 6.95 1.62 10.35 1.62 17.21 0 32.25-13.32 32.25-31.81V83.93c-.01-12.64-7.24-24.6-18.85-29.47zM48 132.22c20.12 5.04 41.12 7.57 62.72 8.93C104.84 170.54 79 192.69 48 192.69v-60.47zm0 285v-47.78c34.37 0 62.18 27.27 63.71 61.4-22.53-1.81-43.59-6.31-63.71-13.62zM320 352c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96zm272 27.78c-17.52-4.39-35.71-6.85-54.32-8.44 5.87-26.08 27.5-45.88 54.32-49.28v57.72zm0-236.11c-30.89-3.91-54.86-29.7-55.81-61.55 19.54 2.17 38.09 6.23 55.81 12.66v48.89z\"]\n};\nvar faMoneyBillWaveAlt = {\n prefix: 'fas',\n iconName: 'money-bill-wave-alt',\n icon: [640, 512, [], \"f53b\", \"M621.16 54.46C582.37 38.19 543.55 32 504.75 32c-123.17-.01-246.33 62.34-369.5 62.34-30.89 0-61.76-3.92-92.65-13.72-3.47-1.1-6.95-1.62-10.35-1.62C15.04 79 0 92.32 0 110.81v317.26c0 12.63 7.23 24.6 18.84 29.46C57.63 473.81 96.45 480 135.25 480c123.17 0 246.34-62.35 369.51-62.35 30.89 0 61.76 3.92 92.65 13.72 3.47 1.1 6.95 1.62 10.35 1.62 17.21 0 32.25-13.32 32.25-31.81V83.93c-.01-12.64-7.24-24.6-18.85-29.47zM320 352c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96z\"]\n};\nvar faMoneyCheck = {\n prefix: 'fas',\n iconName: 'money-check',\n icon: [640, 512, [], \"f53c\", \"M0 448c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V128H0v320zm448-208c0-8.84 7.16-16 16-16h96c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-96c-8.84 0-16-7.16-16-16v-32zm0 120c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H456c-4.42 0-8-3.58-8-8v-16zM64 264c0-4.42 3.58-8 8-8h304c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm0 96c0-4.42 3.58-8 8-8h176c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zM624 32H16C7.16 32 0 39.16 0 48v48h640V48c0-8.84-7.16-16-16-16z\"]\n};\nvar faMoneyCheckAlt = {\n prefix: 'fas',\n iconName: 'money-check-alt',\n icon: [640, 512, [], \"f53d\", \"M608 32H32C14.33 32 0 46.33 0 64v384c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zM176 327.88V344c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V152c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07zM416 312c0 4.42-3.58 8-8 8H296c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16zm160 0c0 4.42-3.58 8-8 8h-80c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16zm0-96c0 4.42-3.58 8-8 8H296c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h272c4.42 0 8 3.58 8 8v16z\"]\n};\nvar faMonument = {\n prefix: 'fas',\n iconName: 'monument',\n icon: [384, 512, [], \"f5a6\", \"M368 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h352c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-78.86-347.26a31.97 31.97 0 0 0-9.21-19.44L203.31 4.69c-6.25-6.25-16.38-6.25-22.63 0l-76.6 76.61a31.97 31.97 0 0 0-9.21 19.44L64 416h256l-30.86-315.26zM240 307.2c0 6.4-6.4 12.8-12.8 12.8h-70.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h70.4c6.4 0 12.8 6.4 12.8 12.8v38.4z\"]\n};\nvar faMoon = {\n prefix: 'fas',\n iconName: 'moon',\n icon: [512, 512, [], \"f186\", \"M283.211 512c78.962 0 151.079-35.925 198.857-94.792 7.068-8.708-.639-21.43-11.562-19.35-124.203 23.654-238.262-71.576-238.262-196.954 0-72.222 38.662-138.635 101.498-174.394 9.686-5.512 7.25-20.197-3.756-22.23A258.156 258.156 0 0 0 283.211 0c-141.309 0-256 114.511-256 256 0 141.309 114.511 256 256 256z\"]\n};\nvar faMortarPestle = {\n prefix: 'fas',\n iconName: 'mortar-pestle',\n icon: [512, 512, [], \"f5a7\", \"M501.54 60.91c17.22-17.22 12.51-46.25-9.27-57.14a35.696 35.696 0 0 0-37.37 3.37L251.09 160h151.37l99.08-99.09zM496 192H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c0 80.98 50.2 150.11 121.13 178.32-12.76 16.87-21.72 36.8-24.95 58.69-1.46 9.92 6.04 18.98 16.07 18.98h223.5c10.03 0 17.53-9.06 16.07-18.98-3.22-21.89-12.18-41.82-24.95-58.69C429.8 406.11 480 336.98 480 256h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faMosque = {\n prefix: 'fas',\n iconName: 'mosque',\n icon: [640, 512, [], \"f678\", \"M0 480c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V160H0v320zm579.16-192c17.86-17.39 28.84-37.34 28.84-58.91 0-52.86-41.79-93.79-87.92-122.9-41.94-26.47-80.63-57.77-111.96-96.22L400 0l-8.12 9.97c-31.33 38.45-70.01 69.76-111.96 96.22C233.79 135.3 192 176.23 192 229.09c0 21.57 10.98 41.52 28.84 58.91h358.32zM608 320H192c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h32v-64c0-17.67 14.33-32 32-32s32 14.33 32 32v64h64v-72c0-48 48-72 48-72s48 24 48 72v72h64v-64c0-17.67 14.33-32 32-32s32 14.33 32 32v64h32c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32zM64 0S0 32 0 96v32h128V96c0-64-64-96-64-96z\"]\n};\nvar faMotorcycle = {\n prefix: 'fas',\n iconName: 'motorcycle',\n icon: [640, 512, [], \"f21c\", \"M512.9 192c-14.9-.1-29.1 2.3-42.4 6.9L437.6 144H520c13.3 0 24-10.7 24-24V88c0-13.3-10.7-24-24-24h-45.3c-6.8 0-13.3 2.9-17.8 7.9l-37.5 41.7-22.8-38C392.2 68.4 384.4 64 376 64h-80c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h66.4l19.2 32H227.9c-17.7-23.1-44.9-40-99.9-40H72.5C59 104 47.7 115 48 128.5c.2 13 10.9 23.5 24 23.5h56c24.5 0 38.7 10.9 47.8 24.8l-11.3 20.5c-13-3.9-26.9-5.7-41.3-5.2C55.9 194.5 1.6 249.6 0 317c-1.6 72.1 56.3 131 128 131 59.6 0 109.7-40.8 124-96h84.2c13.7 0 24.6-11.4 24-25.1-2.1-47.1 17.5-93.7 56.2-125l12.5 20.8c-27.6 23.7-45.1 58.9-44.8 98.2.5 69.6 57.2 126.5 126.8 127.1 71.6.7 129.8-57.5 129.2-129.1-.7-69.6-57.6-126.4-127.2-126.9zM128 400c-44.1 0-80-35.9-80-80s35.9-80 80-80c4.2 0 8.4.3 12.5 1L99 316.4c-8.8 16 2.8 35.6 21 35.6h81.3c-12.4 28.2-40.6 48-73.3 48zm463.9-75.6c-2.2 40.6-35 73.4-75.5 75.5-46.1 2.5-84.4-34.3-84.4-79.9 0-21.4 8.4-40.8 22.1-55.1l49.4 82.4c4.5 7.6 14.4 10 22 5.5l13.7-8.2c7.6-4.5 10-14.4 5.5-22l-48.6-80.9c5.2-1.1 10.5-1.6 15.9-1.6 45.6-.1 82.3 38.2 79.9 84.3z\"]\n};\nvar faMountain = {\n prefix: 'fas',\n iconName: 'mountain',\n icon: [640, 512, [], \"f6fc\", \"M634.92 462.7l-288-448C341.03 5.54 330.89 0 320 0s-21.03 5.54-26.92 14.7l-288 448a32.001 32.001 0 0 0-1.17 32.64A32.004 32.004 0 0 0 32 512h576c11.71 0 22.48-6.39 28.09-16.67a31.983 31.983 0 0 0-1.17-32.63zM320 91.18L405.39 224H320l-64 64-38.06-38.06L320 91.18z\"]\n};\nvar faMouse = {\n prefix: 'fas',\n iconName: 'mouse',\n icon: [384, 512, [], \"f8cc\", \"M0 352a160 160 0 0 0 160 160h64a160 160 0 0 0 160-160V224H0zM176 0h-16A160 160 0 0 0 0 160v32h176zm48 0h-16v192h176v-32A160 160 0 0 0 224 0z\"]\n};\nvar faMousePointer = {\n prefix: 'fas',\n iconName: 'mouse-pointer',\n icon: [320, 512, [], \"f245\", \"M302.189 329.126H196.105l55.831 135.993c3.889 9.428-.555 19.999-9.444 23.999l-49.165 21.427c-9.165 4-19.443-.571-23.332-9.714l-53.053-129.136-86.664 89.138C18.729 472.71 0 463.554 0 447.977V18.299C0 1.899 19.921-6.096 30.277 5.443l284.412 292.542c11.472 11.179 3.007 31.141-12.5 31.141z\"]\n};\nvar faMugHot = {\n prefix: 'fas',\n iconName: 'mug-hot',\n icon: [512, 512, [], \"f7b6\", \"M127.1 146.5c1.3 7.7 8 13.5 16 13.5h16.5c9.8 0 17.6-8.5 16.3-18-3.8-28.2-16.4-54.2-36.6-74.7-14.4-14.7-23.6-33.3-26.4-53.5C111.8 5.9 105 0 96.8 0H80.4C70.6 0 63 8.5 64.1 18c3.9 31.9 18 61.3 40.6 84.4 12 12.2 19.7 27.5 22.4 44.1zm112 0c1.3 7.7 8 13.5 16 13.5h16.5c9.8 0 17.6-8.5 16.3-18-3.8-28.2-16.4-54.2-36.6-74.7-14.4-14.7-23.6-33.3-26.4-53.5C223.8 5.9 217 0 208.8 0h-16.4c-9.8 0-17.5 8.5-16.3 18 3.9 31.9 18 61.3 40.6 84.4 12 12.2 19.7 27.5 22.4 44.1zM400 192H32c-17.7 0-32 14.3-32 32v192c0 53 43 96 96 96h192c53 0 96-43 96-96h16c61.8 0 112-50.2 112-112s-50.2-112-112-112zm0 160h-16v-96h16c26.5 0 48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faMusic = {\n prefix: 'fas',\n iconName: 'music',\n icon: [512, 512, [], \"f001\", \"M470.38 1.51L150.41 96A32 32 0 0 0 128 126.51v261.41A139 139 0 0 0 96 384c-53 0-96 28.66-96 64s43 64 96 64 96-28.66 96-64V214.32l256-75v184.61a138.4 138.4 0 0 0-32-3.93c-53 0-96 28.66-96 64s43 64 96 64 96-28.65 96-64V32a32 32 0 0 0-41.62-30.49z\"]\n};\nvar faNetworkWired = {\n prefix: 'fas',\n iconName: 'network-wired',\n icon: [640, 512, [], \"f6ff\", \"M640 264v-16c0-8.84-7.16-16-16-16H344v-40h72c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32H224c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h72v40H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h104v40H64c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h160c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32h-56v-40h304v40h-56c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h160c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32h-56v-40h104c8.84 0 16-7.16 16-16zM256 128V64h128v64H256zm-64 320H96v-64h96v64zm352 0h-96v-64h96v64z\"]\n};\nvar faNeuter = {\n prefix: 'fas',\n iconName: 'neuter',\n icon: [288, 512, [], \"f22c\", \"M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V468c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12V316.4c64.1-14.5 112-71.9 112-140.4zm-144 80c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faNewspaper = {\n prefix: 'fas',\n iconName: 'newspaper',\n icon: [576, 512, [], \"f1ea\", \"M552 64H88c-13.255 0-24 10.745-24 24v8H24c-13.255 0-24 10.745-24 24v272c0 30.928 25.072 56 56 56h472c26.51 0 48-21.49 48-48V88c0-13.255-10.745-24-24-24zM56 400a8 8 0 0 1-8-8V144h16v248a8 8 0 0 1-8 8zm236-16H140c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm208 0H348c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm-208-96H140c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm208 0H348c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm0-96H140c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h360c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12z\"]\n};\nvar faNotEqual = {\n prefix: 'fas',\n iconName: 'not-equal',\n icon: [448, 512, [], \"f53e\", \"M416 208c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32h-23.88l51.87-66.81c5.37-7.02 4.04-17.06-2.97-22.43L415.61 3.3c-7.02-5.38-17.06-4.04-22.44 2.97L311.09 112H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h204.56l-74.53 96H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h55.49l-51.87 66.81c-5.37 7.01-4.04 17.05 2.97 22.43L64 508.7c7.02 5.38 17.06 4.04 22.43-2.97L168.52 400H416c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32H243.05l74.53-96H416z\"]\n};\nvar faNotesMedical = {\n prefix: 'fas',\n iconName: 'notes-medical',\n icon: [384, 512, [], \"f481\", \"M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm96 304c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48zm0-192c0 4.4-3.6 8-8 8H104c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h176c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faObjectGroup = {\n prefix: 'fas',\n iconName: 'object-group',\n icon: [512, 512, [], \"f247\", \"M480 128V96h20c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v20H64V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v40c0 6.627 5.373 12 12 12h20v320H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-20h384v20c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-20V128zM96 276V140c0-6.627 5.373-12 12-12h168c6.627 0 12 5.373 12 12v136c0 6.627-5.373 12-12 12H108c-6.627 0-12-5.373-12-12zm320 96c0 6.627-5.373 12-12 12H236c-6.627 0-12-5.373-12-12v-52h72c13.255 0 24-10.745 24-24v-72h84c6.627 0 12 5.373 12 12v136z\"]\n};\nvar faObjectUngroup = {\n prefix: 'fas',\n iconName: 'object-ungroup',\n icon: [576, 512, [], \"f248\", \"M64 320v26a6 6 0 0 1-6 6H6a6 6 0 0 1-6-6v-52a6 6 0 0 1 6-6h26V96H6a6 6 0 0 1-6-6V38a6 6 0 0 1 6-6h52a6 6 0 0 1 6 6v26h288V38a6 6 0 0 1 6-6h52a6 6 0 0 1 6 6v52a6 6 0 0 1-6 6h-26v192h26a6 6 0 0 1 6 6v52a6 6 0 0 1-6 6h-52a6 6 0 0 1-6-6v-26H64zm480-64v-32h26a6 6 0 0 0 6-6v-52a6 6 0 0 0-6-6h-52a6 6 0 0 0-6 6v26H408v72h8c13.255 0 24 10.745 24 24v64c0 13.255-10.745 24-24 24h-64c-13.255 0-24-10.745-24-24v-8H192v72h-26a6 6 0 0 0-6 6v52a6 6 0 0 0 6 6h52a6 6 0 0 0 6-6v-26h288v26a6 6 0 0 0 6 6h52a6 6 0 0 0 6-6v-52a6 6 0 0 0-6-6h-26V256z\"]\n};\nvar faOilCan = {\n prefix: 'fas',\n iconName: 'oil-can',\n icon: [640, 512, [], \"f613\", \"M629.8 160.31L416 224l-50.49-25.24a64.07 64.07 0 0 0-28.62-6.76H280v-48h56c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h56v48h-56L37.72 166.86a31.9 31.9 0 0 0-5.79-.53C14.67 166.33 0 180.36 0 198.34v94.95c0 15.46 11.06 28.72 26.28 31.48L96 337.46V384c0 17.67 14.33 32 32 32h274.63c8.55 0 16.75-3.42 22.76-9.51l212.26-214.75c1.5-1.5 2.34-3.54 2.34-5.66V168c.01-5.31-5.08-9.15-10.19-7.69zM96 288.67l-48-8.73v-62.43l48 8.73v62.43zm453.33 84.66c0 23.56 19.1 42.67 42.67 42.67s42.67-19.1 42.67-42.67S592 288 592 288s-42.67 61.77-42.67 85.33z\"]\n};\nvar faOm = {\n prefix: 'fas',\n iconName: 'om',\n icon: [512, 512, [], \"f679\", \"M360.6 60.94a10.43 10.43 0 0 0 14.76 0l21.57-21.56a10.43 10.43 0 0 0 0-14.76L375.35 3.06c-4.08-4.07-10.68-4.07-14.76 0l-21.57 21.56a10.43 10.43 0 0 0 0 14.76l21.58 21.56zM412.11 192c-26.69 0-51.77 10.39-70.64 29.25l-24.25 24.25c-6.78 6.77-15.78 10.5-25.38 10.5H245c10.54-22.1 14.17-48.11 7.73-75.23-10.1-42.55-46.36-76.11-89.52-83.19-36.15-5.93-70.9 5.04-96.01 28.78-7.36 6.96-6.97 18.85 1.12 24.93l26.15 19.63c5.72 4.3 13.66 4.32 19.2-.21 8.45-6.9 19.02-10.71 30.27-10.71 26.47 0 48.01 21.53 48.01 48s-21.54 48-48.01 48h-31.9c-11.96 0-19.74 12.58-14.39 23.28l16.09 32.17c2.53 5.06 7.6 8.1 13.17 8.55h33.03c35.3 0 64.01 28.7 64.01 64s-28.71 64-64.01 64c-96.02 0-122.35-54.02-145.15-92.03-4.53-7.55-14.77-3.58-14.79 5.22C-.09 416 41.13 512 159.94 512c70.59 0 128.02-57.42 128.02-128 0-23.42-6.78-45.1-17.81-64h21.69c26.69 0 51.77-10.39 70.64-29.25l24.25-24.25c6.78-6.77 15.78-10.5 25.38-10.5 19.78 0 35.88 16.09 35.88 35.88V392c0 13.23-18.77 24-32.01 24-39.4 0-66.67-24.24-81.82-42.89-4.77-5.87-14.2-2.54-14.2 5.02V416s0 64 96.02 64c48.54 0 96.02-39.47 96.02-88V291.88c0-55.08-44.8-99.88-99.89-99.88zm42.18-124.73c-85.55 65.12-169.05 2.75-172.58.05-6.02-4.62-14.44-4.38-20.14.55-5.74 4.92-7.27 13.17-3.66 19.8 1.61 2.95 40.37 72.34 118.8 72.34 79.92 0 98.78-31.36 101.75-37.66 1.02-2.12 1.53-4.47 1.53-6.83V80c0-13.22-15.14-20.69-25.7-12.73z\"]\n};\nvar faOtter = {\n prefix: 'fas',\n iconName: 'otter',\n icon: [640, 512, [], \"f700\", \"M608 32h-32l-13.25-13.25A63.97 63.97 0 0 0 517.49 0H497c-11.14 0-22.08 2.91-31.75 8.43L312 96h-56C149.96 96 64 181.96 64 288v1.61c0 32.75-16 62.14-39.56 84.89-18.19 17.58-28.1 43.68-23.19 71.8 6.76 38.8 42.9 65.7 82.28 65.7H192c17.67 0 32-14.33 32-32s-14.33-32-32-32H80c-8.83 0-16-7.17-16-16s7.17-16 16-16h224c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-64l149.49-80.5L448 416h80c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-28.22l-55.11-110.21L521.14 192H544c53.02 0 96-42.98 96-96V64c0-17.67-14.33-32-32-32zm-96 16c8.84 0 16 7.16 16 16s-7.16 16-16 16-16-7.16-16-16 7.16-16 16-16zm32 96h-34.96L407.2 198.84l-13.77-27.55L512 112h77.05c-6.62 18.58-24.22 32-45.05 32z\"]\n};\nvar faOutdent = {\n prefix: 'fas',\n iconName: 'outdent',\n icon: [448, 512, [], \"f03b\", \"M100.69 363.29c10 10 27.31 2.93 27.31-11.31V160c0-14.32-17.33-21.31-27.31-11.31l-96 96a16 16 0 0 0 0 22.62zM432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-128H204.83A12.82 12.82 0 0 0 192 300.83v38.34A12.82 12.82 0 0 0 204.83 352h230.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288zm0-128H204.83A12.82 12.82 0 0 0 192 172.83v38.34A12.82 12.82 0 0 0 204.83 224h230.34A12.82 12.82 0 0 0 448 211.17v-38.34A12.82 12.82 0 0 0 435.17 160zM432 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faPager = {\n prefix: 'fas',\n iconName: 'pager',\n icon: [512, 512, [], \"f815\", \"M448 64H64a64 64 0 0 0-64 64v256a64 64 0 0 0 64 64h384a64 64 0 0 0 64-64V128a64 64 0 0 0-64-64zM160 368H80a16 16 0 0 1-16-16v-16a16 16 0 0 1 16-16h80zm128-16a16 16 0 0 1-16 16h-80v-48h80a16 16 0 0 1 16 16zm160-128a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32v-64a32 32 0 0 1 32-32h320a32 32 0 0 1 32 32z\"]\n};\nvar faPaintBrush = {\n prefix: 'fas',\n iconName: 'paint-brush',\n icon: [512, 512, [], \"f1fc\", \"M167.02 309.34c-40.12 2.58-76.53 17.86-97.19 72.3-2.35 6.21-8 9.98-14.59 9.98-11.11 0-45.46-27.67-55.25-34.35C0 439.62 37.93 512 128 512c75.86 0 128-43.77 128-120.19 0-3.11-.65-6.08-.97-9.13l-88.01-73.34zM457.89 0c-15.16 0-29.37 6.71-40.21 16.45C213.27 199.05 192 203.34 192 257.09c0 13.7 3.25 26.76 8.73 38.7l63.82 53.18c7.21 1.8 14.64 3.03 22.39 3.03 62.11 0 98.11-45.47 211.16-256.46 7.38-14.35 13.9-29.85 13.9-45.99C512 20.64 486 0 457.89 0z\"]\n};\nvar faPaintRoller = {\n prefix: 'fas',\n iconName: 'paint-roller',\n icon: [512, 512, [], \"f5aa\", \"M416 128V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v96c0 17.67 14.33 32 32 32h352c17.67 0 32-14.33 32-32zm32-64v128c0 17.67-14.33 32-32 32H256c-35.35 0-64 28.65-64 64v32c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32v-32h160c53.02 0 96-42.98 96-96v-64c0-35.35-28.65-64-64-64z\"]\n};\nvar faPalette = {\n prefix: 'fas',\n iconName: 'palette',\n icon: [512, 512, [], \"f53f\", \"M204.3 5C104.9 24.4 24.8 104.3 5.2 203.4c-37 187 131.7 326.4 258.8 306.7 41.2-6.4 61.4-54.6 42.5-91.7-23.1-45.4 9.9-98.4 60.9-98.4h79.7c35.8 0 64.8-29.6 64.9-65.3C511.5 97.1 368.1-26.9 204.3 5zM96 320c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm32-128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128-64c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 64c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faPallet = {\n prefix: 'fas',\n iconName: 'pallet',\n icon: [640, 512, [], \"f482\", \"M144 256h352c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H384v128l-64-32-64 32V0H144c-8.8 0-16 7.2-16 16v224c0 8.8 7.2 16 16 16zm480 128c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v64H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16h-48v-64h48zm-336 64H128v-64h160v64zm224 0H352v-64h160v64z\"]\n};\nvar faPaperPlane = {\n prefix: 'fas',\n iconName: 'paper-plane',\n icon: [512, 512, [], \"f1d8\", \"M476 3.2L12.5 270.6c-18.1 10.4-15.8 35.6 2.2 43.2L121 358.4l287.3-253.2c5.5-4.9 13.3 2.6 8.6 8.3L176 407v80.5c0 23.6 28.5 32.9 42.5 15.8L282 426l124.6 52.2c14.2 6 30.4-2.9 33-18.2l72-432C515 7.8 493.3-6.8 476 3.2z\"]\n};\nvar faPaperclip = {\n prefix: 'fas',\n iconName: 'paperclip',\n icon: [448, 512, [], \"f0c6\", \"M43.246 466.142c-58.43-60.289-57.341-157.511 1.386-217.581L254.392 34c44.316-45.332 116.351-45.336 160.671 0 43.89 44.894 43.943 117.329 0 162.276L232.214 383.128c-29.855 30.537-78.633 30.111-107.982-.998-28.275-29.97-27.368-77.473 1.452-106.953l143.743-146.835c6.182-6.314 16.312-6.422 22.626-.241l22.861 22.379c6.315 6.182 6.422 16.312.241 22.626L171.427 319.927c-4.932 5.045-5.236 13.428-.648 18.292 4.372 4.634 11.245 4.711 15.688.165l182.849-186.851c19.613-20.062 19.613-52.725-.011-72.798-19.189-19.627-49.957-19.637-69.154 0L90.39 293.295c-34.763 35.56-35.299 93.12-1.191 128.313 34.01 35.093 88.985 35.137 123.058.286l172.06-175.999c6.177-6.319 16.307-6.433 22.626-.256l22.877 22.364c6.319 6.177 6.434 16.307.256 22.626l-172.06 175.998c-59.576 60.938-155.943 60.216-214.77-.485z\"]\n};\nvar faParachuteBox = {\n prefix: 'fas',\n iconName: 'parachute-box',\n icon: [512, 512, [], \"f4cd\", \"M511.9 175c-9.1-75.6-78.4-132.4-158.3-158.7C390 55.7 416 116.9 416 192h28.1L327.5 321.5c-2.5-.6-4.8-1.5-7.5-1.5h-48V192h112C384 76.8 315.1 0 256 0S128 76.8 128 192h112v128h-48c-2.7 0-5 .9-7.5 1.5L67.9 192H96c0-75.1 26-136.3 62.4-175.7C78.5 42.7 9.2 99.5.1 175c-1.1 9.1 6.8 17 16 17h8.7l136.7 151.9c-.7 2.6-1.6 5.2-1.6 8.1v128c0 17.7 14.3 32 32 32h128c17.7 0 32-14.3 32-32V352c0-2.9-.9-5.4-1.6-8.1L487.1 192h8.7c9.3 0 17.2-7.8 16.1-17z\"]\n};\nvar faParagraph = {\n prefix: 'fas',\n iconName: 'paragraph',\n icon: [448, 512, [], \"f1dd\", \"M448 48v32a16 16 0 0 1-16 16h-48v368a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V96h-32v368a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V352h-32a160 160 0 0 1 0-320h240a16 16 0 0 1 16 16z\"]\n};\nvar faParking = {\n prefix: 'fas',\n iconName: 'parking',\n icon: [448, 512, [], \"f540\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM240 320h-48v48c0 8.8-7.2 16-16 16h-32c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16h96c52.9 0 96 43.1 96 96s-43.1 96-96 96zm0-128h-48v64h48c17.6 0 32-14.4 32-32s-14.4-32-32-32z\"]\n};\nvar faPassport = {\n prefix: 'fas',\n iconName: 'passport',\n icon: [448, 512, [], \"f5ab\", \"M129.62 176h39.09c1.49-27.03 6.54-51.35 14.21-70.41-27.71 13.24-48.02 39.19-53.3 70.41zm0 32c5.29 31.22 25.59 57.17 53.3 70.41-7.68-19.06-12.72-43.38-14.21-70.41h-39.09zM224 286.69c7.69-7.45 20.77-34.42 23.43-78.69h-46.87c2.67 44.26 15.75 71.24 23.44 78.69zM200.57 176h46.87c-2.66-44.26-15.74-71.24-23.43-78.69-7.7 7.45-20.78 34.43-23.44 78.69zm64.51 102.41c27.71-13.24 48.02-39.19 53.3-70.41h-39.09c-1.49 27.03-6.53 51.35-14.21 70.41zM416 0H64C28.65 0 0 28.65 0 64v384c0 35.35 28.65 64 64 64h352c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32zm-80 416H112c-8.8 0-16-7.2-16-16s7.2-16 16-16h224c8.8 0 16 7.2 16 16s-7.2 16-16 16zm-112-96c-70.69 0-128-57.31-128-128S153.31 64 224 64s128 57.31 128 128-57.31 128-128 128zm41.08-214.41c7.68 19.06 12.72 43.38 14.21 70.41h39.09c-5.28-31.22-25.59-57.17-53.3-70.41z\"]\n};\nvar faPastafarianism = {\n prefix: 'fas',\n iconName: 'pastafarianism',\n icon: [640, 512, [], \"f67b\", \"M624.54 347.67c-32.7-12.52-57.36 4.25-75.37 16.45-17.06 11.53-23.25 14.42-31.41 11.36-8.12-3.09-10.83-9.38-15.89-29.38-3.33-13.15-7.44-29.32-17.95-42.65 2.24-2.91 4.43-5.79 6.38-8.57C500.47 304.45 513.71 312 532 312c33.95 0 50.87-25.78 62.06-42.83 10.59-16.14 15-21.17 21.94-21.17 13.25 0 24-10.75 24-24s-10.75-24-24-24c-33.95 0-50.87 25.78-62.06 42.83-10.6 16.14-15 21.17-21.94 21.17-17.31 0-37.48-61.43-97.26-101.91l17.25-34.5C485.43 125.5 512 97.98 512 64c0-35.35-28.65-64-64-64s-64 28.65-64 64c0 13.02 3.94 25.1 10.62 35.21l-18.15 36.3c-16.98-4.6-35.6-7.51-56.46-7.51s-39.49 2.91-56.46 7.51l-18.15-36.3C252.06 89.1 256 77.02 256 64c0-35.35-28.65-64-64-64s-64 28.65-64 64c0 33.98 26.56 61.5 60.02 63.6l17.25 34.5C145.68 202.44 125.15 264 108 264c-6.94 0-11.34-5.03-21.94-21.17C74.88 225.78 57.96 200 24 200c-13.25 0-24 10.75-24 24s10.75 24 24 24c6.94 0 11.34 5.03 21.94 21.17C57.13 286.22 74.05 312 108 312c18.29 0 31.53-7.55 41.7-17.11 1.95 2.79 4.14 5.66 6.38 8.57-10.51 13.33-14.62 29.5-17.95 42.65-5.06 20-7.77 26.28-15.89 29.38-8.11 3.06-14.33.17-31.41-11.36-18.03-12.2-42.72-28.92-75.37-16.45-12.39 4.72-18.59 18.58-13.87 30.97 4.72 12.41 18.61 18.61 30.97 13.88 8.16-3.09 14.34-.19 31.39 11.36 13.55 9.16 30.83 20.86 52.42 20.84 7.17 0 14.83-1.28 22.97-4.39 32.66-12.44 39.98-41.33 45.33-62.44 2.21-8.72 3.99-14.49 5.95-18.87 16.62 13.61 36.95 25.88 61.64 34.17-9.96 37-32.18 90.8-60.26 90.8-13.25 0-24 10.75-24 24s10.75 24 24 24c66.74 0 97.05-88.63 107.42-129.14 6.69.6 13.42 1.14 20.58 1.14s13.89-.54 20.58-1.14C350.95 423.37 381.26 512 448 512c13.25 0 24-10.75 24-24s-10.75-24-24-24c-27.94 0-50.21-53.81-60.22-90.81 24.69-8.29 45-20.56 61.62-34.16 1.96 4.38 3.74 10.15 5.95 18.87 5.34 21.11 12.67 50 45.33 62.44 8.14 3.11 15.8 4.39 22.97 4.39 21.59 0 38.87-11.69 52.42-20.84 17.05-11.55 23.28-14.45 31.39-11.36 12.39 4.75 26.27-1.47 30.97-13.88 4.71-12.4-1.49-26.26-13.89-30.98zM448 48c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16zm-256 0c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16z\"]\n};\nvar faPaste = {\n prefix: 'fas',\n iconName: 'paste',\n icon: [448, 512, [], \"f0ea\", \"M128 184c0-30.879 25.122-56 56-56h136V56c0-13.255-10.745-24-24-24h-80.61C204.306 12.89 183.637 0 160 0s-44.306 12.89-55.39 32H24C10.745 32 0 42.745 0 56v336c0 13.255 10.745 24 24 24h104V184zm32-144c13.255 0 24 10.745 24 24s-10.745 24-24 24-24-10.745-24-24 10.745-24 24-24zm184 248h104v200c0 13.255-10.745 24-24 24H184c-13.255 0-24-10.745-24-24V184c0-13.255 10.745-24 24-24h136v104c0 13.2 10.8 24 24 24zm104-38.059V256h-96v-96h6.059a24 24 0 0 1 16.97 7.029l65.941 65.941a24.002 24.002 0 0 1 7.03 16.971z\"]\n};\nvar faPause = {\n prefix: 'fas',\n iconName: 'pause',\n icon: [448, 512, [], \"f04c\", \"M144 479H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v352c0 26.5-21.5 48-48 48zm304-48V79c0-26.5-21.5-48-48-48h-96c-26.5 0-48 21.5-48 48v352c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48z\"]\n};\nvar faPauseCircle = {\n prefix: 'fas',\n iconName: 'pause-circle',\n icon: [512, 512, [], \"f28b\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm-16 328c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v160zm112 0c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v160z\"]\n};\nvar faPaw = {\n prefix: 'fas',\n iconName: 'paw',\n icon: [512, 512, [], \"f1b0\", \"M256 224c-79.41 0-192 122.76-192 200.25 0 34.9 26.81 55.75 71.74 55.75 48.84 0 81.09-25.08 120.26-25.08 39.51 0 71.85 25.08 120.26 25.08 44.93 0 71.74-20.85 71.74-55.75C448 346.76 335.41 224 256 224zm-147.28-12.61c-10.4-34.65-42.44-57.09-71.56-50.13-29.12 6.96-44.29 40.69-33.89 75.34 10.4 34.65 42.44 57.09 71.56 50.13 29.12-6.96 44.29-40.69 33.89-75.34zm84.72-20.78c30.94-8.14 46.42-49.94 34.58-93.36s-46.52-72.01-77.46-63.87-46.42 49.94-34.58 93.36c11.84 43.42 46.53 72.02 77.46 63.87zm281.39-29.34c-29.12-6.96-61.15 15.48-71.56 50.13-10.4 34.65 4.77 68.38 33.89 75.34 29.12 6.96 61.15-15.48 71.56-50.13 10.4-34.65-4.77-68.38-33.89-75.34zm-156.27 29.34c30.94 8.14 65.62-20.45 77.46-63.87 11.84-43.42-3.64-85.21-34.58-93.36s-65.62 20.45-77.46 63.87c-11.84 43.42 3.64 85.22 34.58 93.36z\"]\n};\nvar faPeace = {\n prefix: 'fas',\n iconName: 'peace',\n icon: [496, 512, [], \"f67c\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm184 248c0 31.93-8.2 61.97-22.57 88.17L280 240.63V74.97c86.23 15.21 152 90.5 152 181.03zM216 437.03c-33.86-5.97-64.49-21.2-89.29-43.02L216 322.57v114.46zm64-114.46L369.29 394c-24.8 21.82-55.43 37.05-89.29 43.02V322.57zm-64-247.6v165.66L86.57 344.17C72.2 317.97 64 287.93 64 256c0-90.53 65.77-165.82 152-181.03z\"]\n};\nvar faPen = {\n prefix: 'fas',\n iconName: 'pen',\n icon: [512, 512, [], \"f304\", \"M290.74 93.24l128.02 128.02-277.99 277.99-114.14 12.6C11.35 513.54-1.56 500.62.14 485.34l12.7-114.22 277.9-277.88zm207.2-19.06l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.76 18.75-49.16 0-67.91z\"]\n};\nvar faPenAlt = {\n prefix: 'fas',\n iconName: 'pen-alt',\n icon: [512, 512, [], \"f305\", \"M497.94 74.17l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.75 18.75-49.15 0-67.91zm-246.8-20.53c-15.62-15.62-40.94-15.62-56.56 0L75.8 172.43c-6.25 6.25-6.25 16.38 0 22.62l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l101.82-101.82 22.63 22.62L93.95 290.03A327.038 327.038 0 0 0 .17 485.11l-.03.23c-1.7 15.28 11.21 28.2 26.49 26.51a327.02 327.02 0 0 0 195.34-93.8l196.79-196.79-82.77-82.77-84.85-84.85z\"]\n};\nvar faPenFancy = {\n prefix: 'fas',\n iconName: 'pen-fancy',\n icon: [512, 512, [], \"f5ac\", \"M79.18 282.94a32.005 32.005 0 0 0-20.24 20.24L0 480l4.69 4.69 92.89-92.89c-.66-2.56-1.57-5.03-1.57-7.8 0-17.67 14.33-32 32-32s32 14.33 32 32-14.33 32-32 32c-2.77 0-5.24-.91-7.8-1.57l-92.89 92.89L32 512l176.82-58.94a31.983 31.983 0 0 0 20.24-20.24l33.07-84.07-98.88-98.88-84.07 33.07zM369.25 28.32L186.14 227.81l97.85 97.85 199.49-183.11C568.4 67.48 443.73-55.94 369.25 28.32z\"]\n};\nvar faPenNib = {\n prefix: 'fas',\n iconName: 'pen-nib',\n icon: [512, 512, [], \"f5ad\", \"M136.6 138.79a64.003 64.003 0 0 0-43.31 41.35L0 460l14.69 14.69L164.8 324.58c-2.99-6.26-4.8-13.18-4.8-20.58 0-26.51 21.49-48 48-48s48 21.49 48 48-21.49 48-48 48c-7.4 0-14.32-1.81-20.58-4.8L37.31 497.31 52 512l279.86-93.29a64.003 64.003 0 0 0 41.35-43.31L416 224 288 96l-151.4 42.79zm361.34-64.62l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.75 18.75-49.15 0-67.91z\"]\n};\nvar faPenSquare = {\n prefix: 'fas',\n iconName: 'pen-square',\n icon: [448, 512, [], \"f14b\", \"M400 480H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48v352c0 26.5-21.5 48-48 48zM238.1 177.9L102.4 313.6l-6.3 57.1c-.8 7.6 5.6 14.1 13.3 13.3l57.1-6.3L302.2 242c2.3-2.3 2.3-6.1 0-8.5L246.7 178c-2.5-2.4-6.3-2.4-8.6-.1zM345 165.1L314.9 135c-9.4-9.4-24.6-9.4-33.9 0l-23.1 23.1c-2.3 2.3-2.3 6.1 0 8.5l55.5 55.5c2.3 2.3 6.1 2.3 8.5 0L345 199c9.3-9.3 9.3-24.5 0-33.9z\"]\n};\nvar faPencilAlt = {\n prefix: 'fas',\n iconName: 'pencil-alt',\n icon: [512, 512, [], \"f303\", \"M497.9 142.1l-46.1 46.1c-4.7 4.7-12.3 4.7-17 0l-111-111c-4.7-4.7-4.7-12.3 0-17l46.1-46.1c18.7-18.7 49.1-18.7 67.9 0l60.1 60.1c18.8 18.7 18.8 49.1 0 67.9zM284.2 99.8L21.6 362.4.4 483.9c-2.9 16.4 11.4 30.6 27.8 27.8l121.5-21.3 262.6-262.6c4.7-4.7 4.7-12.3 0-17l-111-111c-4.8-4.7-12.4-4.7-17.1 0zM124.1 339.9c-5.5-5.5-5.5-14.3 0-19.8l154-154c5.5-5.5 14.3-5.5 19.8 0s5.5 14.3 0 19.8l-154 154c-5.5 5.5-14.3 5.5-19.8 0zM88 424h48v36.3l-64.5 11.3-31.1-31.1L51.7 376H88v48z\"]\n};\nvar faPencilRuler = {\n prefix: 'fas',\n iconName: 'pencil-ruler',\n icon: [512, 512, [], \"f5ae\", \"M109.46 244.04l134.58-134.56-44.12-44.12-61.68 61.68a7.919 7.919 0 0 1-11.21 0l-11.21-11.21c-3.1-3.1-3.1-8.12 0-11.21l61.68-61.68-33.64-33.65C131.47-3.1 111.39-3.1 99 9.29L9.29 99c-12.38 12.39-12.39 32.47 0 44.86l100.17 100.18zm388.47-116.8c18.76-18.76 18.75-49.17 0-67.93l-45.25-45.25c-18.76-18.76-49.18-18.76-67.95 0l-46.02 46.01 113.2 113.2 46.02-46.03zM316.08 82.71l-297 296.96L.32 487.11c-2.53 14.49 10.09 27.11 24.59 24.56l107.45-18.84L429.28 195.9 316.08 82.71zm186.63 285.43l-33.64-33.64-61.68 61.68c-3.1 3.1-8.12 3.1-11.21 0l-11.21-11.21c-3.09-3.1-3.09-8.12 0-11.21l61.68-61.68-44.14-44.14L267.93 402.5l100.21 100.2c12.39 12.39 32.47 12.39 44.86 0l89.71-89.7c12.39-12.39 12.39-32.47 0-44.86z\"]\n};\nvar faPeopleArrows = {\n prefix: 'fas',\n iconName: 'people-arrows',\n icon: [576, 512, [], \"e068\", \"M96,128A64,64,0,1,0,32,64,64,64,0,0,0,96,128Zm0,176.08a44.11,44.11,0,0,1,13.64-32L181.77,204c1.65-1.55,3.77-2.31,5.61-3.57A63.91,63.91,0,0,0,128,160H64A64,64,0,0,0,0,224v96a32,32,0,0,0,32,32V480a32,32,0,0,0,32,32h64a32,32,0,0,0,32-32V383.61l-50.36-47.53A44.08,44.08,0,0,1,96,304.08ZM480,128a64,64,0,1,0-64-64A64,64,0,0,0,480,128Zm32,32H448a63.91,63.91,0,0,0-59.38,40.42c1.84,1.27,4,2,5.62,3.59l72.12,68.06a44.37,44.37,0,0,1,0,64L416,383.62V480a32,32,0,0,0,32,32h64a32,32,0,0,0,32-32V352a32,32,0,0,0,32-32V224A64,64,0,0,0,512,160ZM444.4,295.34l-72.12-68.06A12,12,0,0,0,352,236v36H224V236a12,12,0,0,0-20.28-8.73L131.6,295.34a12.4,12.4,0,0,0,0,17.47l72.12,68.07A12,12,0,0,0,224,372.14V336H352v36.14a12,12,0,0,0,20.28,8.74l72.12-68.07A12.4,12.4,0,0,0,444.4,295.34Z\"]\n};\nvar faPeopleCarry = {\n prefix: 'fas',\n iconName: 'people-carry',\n icon: [640, 512, [], \"f4ce\", \"M128 96c26.5 0 48-21.5 48-48S154.5 0 128 0 80 21.5 80 48s21.5 48 48 48zm384 0c26.5 0 48-21.5 48-48S538.5 0 512 0s-48 21.5-48 48 21.5 48 48 48zm125.7 372.1l-44-110-41.1 46.4-2 18.2 27.7 69.2c5 12.5 17 20.1 29.7 20.1 4 0 8-.7 11.9-2.3 16.4-6.6 24.4-25.2 17.8-41.6zm-34.2-209.8L585 178.1c-4.6-20-18.6-36.8-37.5-44.9-18.5-8-39-6.7-56.1 3.3-22.7 13.4-39.7 34.5-48.1 59.4L432 229.8 416 240v-96c0-8.8-7.2-16-16-16H240c-8.8 0-16 7.2-16 16v96l-16.1-10.2-11.3-33.9c-8.3-25-25.4-46-48.1-59.4-17.2-10-37.6-11.3-56.1-3.3-18.9 8.1-32.9 24.9-37.5 44.9l-18.4 80.2c-4.6 20 .7 41.2 14.4 56.7l67.2 75.9 10.1 92.6C130 499.8 143.8 512 160 512c1.2 0 2.3-.1 3.5-.2 17.6-1.9 30.2-17.7 28.3-35.3l-10.1-92.8c-1.5-13-6.9-25.1-15.6-35l-43.3-49 17.6-70.3 6.8 20.4c4.1 12.5 11.9 23.4 24.5 32.6l51.1 32.5c4.6 2.9 12.1 4.6 17.2 5h160c5.1-.4 12.6-2.1 17.2-5l51.1-32.5c12.6-9.2 20.4-20 24.5-32.6l6.8-20.4 17.6 70.3-43.3 49c-8.7 9.9-14.1 22-15.6 35l-10.1 92.8c-1.9 17.6 10.8 33.4 28.3 35.3 1.2.1 2.3.2 3.5.2 16.1 0 30-12.1 31.8-28.5l10.1-92.6 67.2-75.9c13.6-15.5 19-36.7 14.4-56.7zM46.3 358.1l-44 110c-6.6 16.4 1.4 35 17.8 41.6 16.8 6.6 35.1-1.7 41.6-17.8l27.7-69.2-2-18.2-41.1-46.4z\"]\n};\nvar faPepperHot = {\n prefix: 'fas',\n iconName: 'pepper-hot',\n icon: [512, 512, [], \"f816\", \"M330.67 263.12V173.4l-52.75-24.22C219.44 218.76 197.58 400 56 400a56 56 0 0 0 0 112c212.64 0 370.65-122.87 419.18-210.34l-37.05-38.54zm131.09-128.37C493.92 74.91 477.18 26.48 458.62 3a8 8 0 0 0-11.93-.59l-22.9 23a8.06 8.06 0 0 0-.89 10.23c6.86 10.36 17.05 35.1-1.4 72.32A142.85 142.85 0 0 0 364.34 96c-28 0-54 8.54-76.34 22.59l74.67 34.29v78.24h89.09L506.44 288c3.26-12.62 5.56-25.63 5.56-39.31a154 154 0 0 0-50.24-113.94z\"]\n};\nvar faPercent = {\n prefix: 'fas',\n iconName: 'percent',\n icon: [448, 512, [], \"f295\", \"M112 224c61.9 0 112-50.1 112-112S173.9 0 112 0 0 50.1 0 112s50.1 112 112 112zm0-160c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48 21.5-48 48-48zm224 224c-61.9 0-112 50.1-112 112s50.1 112 112 112 112-50.1 112-112-50.1-112-112-112zm0 160c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zM392.3.2l31.6-.1c19.4-.1 30.9 21.8 19.7 37.8L77.4 501.6a23.95 23.95 0 0 1-19.6 10.2l-33.4.1c-19.5 0-30.9-21.9-19.7-37.8l368-463.7C377.2 4 384.5.2 392.3.2z\"]\n};\nvar faPercentage = {\n prefix: 'fas',\n iconName: 'percentage',\n icon: [384, 512, [], \"f541\", \"M109.25 173.25c24.99-24.99 24.99-65.52 0-90.51-24.99-24.99-65.52-24.99-90.51 0-24.99 24.99-24.99 65.52 0 90.51 25 25 65.52 25 90.51 0zm256 165.49c-24.99-24.99-65.52-24.99-90.51 0-24.99 24.99-24.99 65.52 0 90.51 24.99 24.99 65.52 24.99 90.51 0 25-24.99 25-65.51 0-90.51zm-1.94-231.43l-22.62-22.62c-12.5-12.5-32.76-12.5-45.25 0L20.69 359.44c-12.5 12.5-12.5 32.76 0 45.25l22.62 22.62c12.5 12.5 32.76 12.5 45.25 0l274.75-274.75c12.5-12.49 12.5-32.75 0-45.25z\"]\n};\nvar faPersonBooth = {\n prefix: 'fas',\n iconName: 'person-booth',\n icon: [576, 512, [], \"f756\", \"M192 496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320h-64v176zm32-272h-50.9l-45.2-45.3C115.8 166.6 99.7 160 82.7 160H64c-17.1 0-33.2 6.7-45.3 18.8C6.7 190.9 0 207 0 224.1L.2 320 0 480c0 17.7 14.3 32 31.9 32 17.6 0 32-14.3 32-32l.1-100.7c.9.5 1.6 1.3 2.5 1.7l29.1 43v56c0 17.7 14.3 32 32 32s32-14.3 32-32v-56.5c0-9.9-2.3-19.8-6.7-28.6l-41.2-61.3V253l20.9 20.9c9.1 9.1 21.1 14.1 33.9 14.1H224c17.7 0 32-14.3 32-32s-14.3-32-32-32zM64 128c26.5 0 48-21.5 48-48S90.5 32 64 32 16 53.5 16 80s21.5 48 48 48zm224-96l31.5 223.1-30.9 154.6c-4.3 21.6 13 38.3 31.4 38.3 15.2 0 28-9.1 32.3-30.4.9 16.9 14.6 30.4 31.7 30.4 17.7 0 32-14.3 32-32 0 17.7 14.3 32 32 32s32-14.3 32-32V0H288v32zm-96 0v160h64V0h-32c-17.7 0-32 14.3-32 32zM544 0h-32v496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V32c0-17.7-14.3-32-32-32z\"]\n};\nvar faPhone = {\n prefix: 'fas',\n iconName: 'phone',\n icon: [512, 512, [], \"f095\", \"M493.4 24.6l-104-24c-11.3-2.6-22.9 3.3-27.5 13.9l-48 112c-4.2 9.8-1.4 21.3 6.9 28l60.6 49.6c-36 76.7-98.9 140.5-177.2 177.2l-49.6-60.6c-6.8-8.3-18.2-11.1-28-6.9l-112 48C3.9 366.5-2 378.1.6 389.4l24 104C27.1 504.2 36.7 512 48 512c256.1 0 464-207.5 464-464 0-11.2-7.7-20.9-18.6-23.4z\"]\n};\nvar faPhoneAlt = {\n prefix: 'fas',\n iconName: 'phone-alt',\n icon: [512, 512, [], \"f879\", \"M497.39 361.8l-112-48a24 24 0 0 0-28 6.9l-49.6 60.6A370.66 370.66 0 0 1 130.6 204.11l60.6-49.6a23.94 23.94 0 0 0 6.9-28l-48-112A24.16 24.16 0 0 0 122.6.61l-104 24A24 24 0 0 0 0 48c0 256.5 207.9 464 464 464a24 24 0 0 0 23.4-18.6l24-104a24.29 24.29 0 0 0-14.01-27.6z\"]\n};\nvar faPhoneSlash = {\n prefix: 'fas',\n iconName: 'phone-slash',\n icon: [640, 512, [], \"f3dd\", \"M268.2 381.4l-49.6-60.6c-6.8-8.3-18.2-11.1-28-6.9l-112 48c-10.7 4.6-16.5 16.1-13.9 27.5l24 104c2.5 10.8 12.1 18.6 23.4 18.6 100.7 0 193.7-32.4 269.7-86.9l-80-61.8c-10.9 6.5-22.1 12.7-33.6 18.1zm365.6 76.7L475.1 335.5C537.9 256.4 576 156.9 576 48c0-11.2-7.7-20.9-18.6-23.4l-104-24c-11.3-2.6-22.9 3.3-27.5 13.9l-48 112c-4.2 9.8-1.4 21.3 6.9 28l60.6 49.6c-12.2 26.1-27.9 50.3-46 72.8L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3z\"]\n};\nvar faPhoneSquare = {\n prefix: 'fas',\n iconName: 'phone-square',\n icon: [448, 512, [], \"f098\", \"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM94 416c-7.033 0-13.057-4.873-14.616-11.627l-14.998-65a15 15 0 0 1 8.707-17.16l69.998-29.999a15 15 0 0 1 17.518 4.289l30.997 37.885c48.944-22.963 88.297-62.858 110.781-110.78l-37.886-30.997a15.001 15.001 0 0 1-4.289-17.518l30-69.998a15 15 0 0 1 17.16-8.707l65 14.998A14.997 14.997 0 0 1 384 126c0 160.292-129.945 290-290 290z\"]\n};\nvar faPhoneSquareAlt = {\n prefix: 'fas',\n iconName: 'phone-square-alt',\n icon: [448, 512, [], \"f87b\", \"M400 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48zm-16.39 307.37l-15 65A15 15 0 0 1 354 416C194 416 64 286.29 64 126a15.7 15.7 0 0 1 11.63-14.61l65-15A18.23 18.23 0 0 1 144 96a16.27 16.27 0 0 1 13.79 9.09l30 70A17.9 17.9 0 0 1 189 181a17 17 0 0 1-5.5 11.61l-37.89 31a231.91 231.91 0 0 0 110.78 110.78l31-37.89A17 17 0 0 1 299 291a17.85 17.85 0 0 1 5.91 1.21l70 30A16.25 16.25 0 0 1 384 336a17.41 17.41 0 0 1-.39 3.37z\"]\n};\nvar faPhoneVolume = {\n prefix: 'fas',\n iconName: 'phone-volume',\n icon: [384, 512, [], \"f2a0\", \"M97.333 506.966c-129.874-129.874-129.681-340.252 0-469.933 5.698-5.698 14.527-6.632 21.263-2.422l64.817 40.513a17.187 17.187 0 0 1 6.849 20.958l-32.408 81.021a17.188 17.188 0 0 1-17.669 10.719l-55.81-5.58c-21.051 58.261-20.612 122.471 0 179.515l55.811-5.581a17.188 17.188 0 0 1 17.669 10.719l32.408 81.022a17.188 17.188 0 0 1-6.849 20.958l-64.817 40.513a17.19 17.19 0 0 1-21.264-2.422zM247.126 95.473c11.832 20.047 11.832 45.008 0 65.055-3.95 6.693-13.108 7.959-18.718 2.581l-5.975-5.726c-3.911-3.748-4.793-9.622-2.261-14.41a32.063 32.063 0 0 0 0-29.945c-2.533-4.788-1.65-10.662 2.261-14.41l5.975-5.726c5.61-5.378 14.768-4.112 18.718 2.581zm91.787-91.187c60.14 71.604 60.092 175.882 0 247.428-4.474 5.327-12.53 5.746-17.552.933l-5.798-5.557c-4.56-4.371-4.977-11.529-.93-16.379 49.687-59.538 49.646-145.933 0-205.422-4.047-4.85-3.631-12.008.93-16.379l5.798-5.557c5.022-4.813 13.078-4.394 17.552.933zm-45.972 44.941c36.05 46.322 36.108 111.149 0 157.546-4.39 5.641-12.697 6.251-17.856 1.304l-5.818-5.579c-4.4-4.219-4.998-11.095-1.285-15.931 26.536-34.564 26.534-82.572 0-117.134-3.713-4.836-3.115-11.711 1.285-15.931l5.818-5.579c5.159-4.947 13.466-4.337 17.856 1.304z\"]\n};\nvar faPhotoVideo = {\n prefix: 'fas',\n iconName: 'photo-video',\n icon: [640, 512, [], \"f87c\", \"M608 0H160a32 32 0 0 0-32 32v96h160V64h192v320h128a32 32 0 0 0 32-32V32a32 32 0 0 0-32-32zM232 103a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9V73a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm352 208a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9v-30a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm0-104a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9v-30a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm0-104a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9V73a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm-168 57H32a32 32 0 0 0-32 32v288a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32V192a32 32 0 0 0-32-32zM96 224a32 32 0 1 1-32 32 32 32 0 0 1 32-32zm288 224H64v-32l64-64 32 32 128-128 96 96z\"]\n};\nvar faPiggyBank = {\n prefix: 'fas',\n iconName: 'piggy-bank',\n icon: [576, 512, [], \"f4d3\", \"M560 224h-29.5c-8.8-20-21.6-37.7-37.4-52.5L512 96h-32c-29.4 0-55.4 13.5-73 34.3-7.6-1.1-15.1-2.3-23-2.3H256c-77.4 0-141.9 55-156.8 128H56c-14.8 0-26.5-13.5-23.5-28.8C34.7 215.8 45.4 208 57 208h1c3.3 0 6-2.7 6-6v-20c0-3.3-2.7-6-6-6-28.5 0-53.9 20.4-57.5 48.6C-3.9 258.8 22.7 288 56 288h40c0 52.2 25.4 98.1 64 127.3V496c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-48h128v48c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-80.7c11.8-8.9 22.3-19.4 31.3-31.3H560c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16zm-128 64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zM256 96h128c5.4 0 10.7.4 15.9.8 0-.3.1-.5.1-.8 0-53-43-96-96-96s-96 43-96 96c0 2.1.5 4.1.6 6.2 15.2-3.9 31-6.2 47.4-6.2z\"]\n};\nvar faPills = {\n prefix: 'fas',\n iconName: 'pills',\n icon: [576, 512, [], \"f484\", \"M112 32C50.1 32 0 82.1 0 144v224c0 61.9 50.1 112 112 112s112-50.1 112-112V144c0-61.9-50.1-112-112-112zm48 224H64V144c0-26.5 21.5-48 48-48s48 21.5 48 48v112zm139.7-29.7c-3.5-3.5-9.4-3.1-12.3.8-45.3 62.5-40.4 150.1 15.9 206.4 56.3 56.3 143.9 61.2 206.4 15.9 4-2.9 4.3-8.8.8-12.3L299.7 226.3zm229.8-19c-56.3-56.3-143.9-61.2-206.4-15.9-4 2.9-4.3 8.8-.8 12.3l210.8 210.8c3.5 3.5 9.4 3.1 12.3-.8 45.3-62.6 40.5-150.1-15.9-206.4z\"]\n};\nvar faPizzaSlice = {\n prefix: 'fas',\n iconName: 'pizza-slice',\n icon: [512, 512, [], \"f818\", \"M158.87.15c-16.16-1.52-31.2 8.42-35.33 24.12l-14.81 56.27c187.62 5.49 314.54 130.61 322.48 317l56.94-15.78c15.72-4.36 25.49-19.68 23.62-35.9C490.89 165.08 340.78 17.32 158.87.15zm-58.47 112L.55 491.64a16.21 16.21 0 0 0 20 19.75l379-105.1c-4.27-174.89-123.08-292.14-299.15-294.1zM128 416a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm48-152a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm104 104a32 32 0 1 1 32-32 32 32 0 0 1-32 32z\"]\n};\nvar faPlaceOfWorship = {\n prefix: 'fas',\n iconName: 'place-of-worship',\n icon: [640, 512, [], \"f67f\", \"M620.61 366.55L512 320v192h112c8.84 0 16-7.16 16-16V395.96a32 32 0 0 0-19.39-29.41zM0 395.96V496c0 8.84 7.16 16 16 16h112V320L19.39 366.55A32 32 0 0 0 0 395.96zm464.46-149.28L416 217.6V102.63c0-8.49-3.37-16.62-9.38-22.63L331.31 4.69c-6.25-6.25-16.38-6.25-22.62 0L233.38 80c-6 6-9.38 14.14-9.38 22.63V217.6l-48.46 29.08A31.997 31.997 0 0 0 160 274.12V512h96v-96c0-35.35 28.66-64 64-64s64 28.65 64 64v96h96V274.12c0-11.24-5.9-21.66-15.54-27.44z\"]\n};\nvar faPlane = {\n prefix: 'fas',\n iconName: 'plane',\n icon: [576, 512, [], \"f072\", \"M480 192H365.71L260.61 8.06A16.014 16.014 0 0 0 246.71 0h-65.5c-10.63 0-18.3 10.17-15.38 20.39L214.86 192H112l-43.2-57.6c-3.02-4.03-7.77-6.4-12.8-6.4H16.01C5.6 128-2.04 137.78.49 147.88L32 256 .49 364.12C-2.04 374.22 5.6 384 16.01 384H56c5.04 0 9.78-2.37 12.8-6.4L112 320h102.86l-49.03 171.6c-2.92 10.22 4.75 20.4 15.38 20.4h65.5c5.74 0 11.04-3.08 13.89-8.06L365.71 320H480c35.35 0 96-28.65 96-64s-60.65-64-96-64z\"]\n};\nvar faPlaneArrival = {\n prefix: 'fas',\n iconName: 'plane-arrival',\n icon: [640, 512, [], \"f5af\", \"M624 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM44.81 205.66l88.74 80a62.607 62.607 0 0 0 25.47 13.93l287.6 78.35c26.48 7.21 54.56 8.72 81 1.36 29.67-8.27 43.44-21.21 47.25-35.71 3.83-14.5-1.73-32.71-23.37-54.96-19.28-19.82-44.35-32.79-70.83-40l-97.51-26.56L282.8 30.22c-1.51-5.81-5.95-10.35-11.66-11.91L206.05.58c-10.56-2.88-20.9 5.32-20.71 16.44l47.92 164.21-102.2-27.84-27.59-67.88c-1.93-4.89-6.01-8.57-11.02-9.93L52.72 64.75c-10.34-2.82-20.53 5-20.72 15.88l.23 101.78c.19 8.91 6.03 17.34 12.58 23.25z\"]\n};\nvar faPlaneDeparture = {\n prefix: 'fas',\n iconName: 'plane-departure',\n icon: [640, 512, [], \"f5b0\", \"M624 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM80.55 341.27c6.28 6.84 15.1 10.72 24.33 10.71l130.54-.18a65.62 65.62 0 0 0 29.64-7.12l290.96-147.65c26.74-13.57 50.71-32.94 67.02-58.31 18.31-28.48 20.3-49.09 13.07-63.65-7.21-14.57-24.74-25.27-58.25-27.45-29.85-1.94-59.54 5.92-86.28 19.48l-98.51 49.99-218.7-82.06a17.799 17.799 0 0 0-18-1.11L90.62 67.29c-10.67 5.41-13.25 19.65-5.17 28.53l156.22 98.1-103.21 52.38-72.35-36.47a17.804 17.804 0 0 0-16.07.02L9.91 230.22c-10.44 5.3-13.19 19.12-5.57 28.08l76.21 82.97z\"]\n};\nvar faPlaneSlash = {\n prefix: 'fas',\n iconName: 'plane-slash',\n icon: [640, 512, [], \"e069\", \"M32.48,147.88,64,256,32.48,364.13A16,16,0,0,0,48,384H88a16,16,0,0,0,12.8-6.41L144,320H246.85l-49,171.59A16,16,0,0,0,213.2,512h65.5a16,16,0,0,0,13.89-8.06l66.6-116.54L34.35,136.34A15.47,15.47,0,0,0,32.48,147.88ZM633.82,458.09,455.14,320H512c35.34,0,96-28.66,96-64s-60.66-64-96-64H397.7L292.61,8.06C290.06,3.61,283.84,0,278.71,0H213.2a16,16,0,0,0-15.38,20.39l36.94,129.29L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.45A16,16,0,0,0,6.18,53.91L594.54,508.63A16,16,0,0,0,617,505.81l19.64-25.26A16,16,0,0,0,633.82,458.09Z\"]\n};\nvar faPlay = {\n prefix: 'fas',\n iconName: 'play',\n icon: [448, 512, [], \"f04b\", \"M424.4 214.7L72.4 6.6C43.8-10.3 0 6.1 0 47.9V464c0 37.5 40.7 60.1 72.4 41.3l352-208c31.4-18.5 31.5-64.1 0-82.6z\"]\n};\nvar faPlayCircle = {\n prefix: 'fas',\n iconName: 'play-circle',\n icon: [512, 512, [], \"f144\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm115.7 272l-176 101c-15.8 8.8-35.7-2.5-35.7-21V152c0-18.4 19.8-29.8 35.7-21l176 107c16.4 9.2 16.4 32.9 0 42z\"]\n};\nvar faPlug = {\n prefix: 'fas',\n iconName: 'plug',\n icon: [384, 512, [], \"f1e6\", \"M320,32a32,32,0,0,0-64,0v96h64Zm48,128H16A16,16,0,0,0,0,176v32a16,16,0,0,0,16,16H32v32A160.07,160.07,0,0,0,160,412.8V512h64V412.8A160.07,160.07,0,0,0,352,256V224h16a16,16,0,0,0,16-16V176A16,16,0,0,0,368,160ZM128,32a32,32,0,0,0-64,0v96h64Z\"]\n};\nvar faPlus = {\n prefix: 'fas',\n iconName: 'plus',\n icon: [448, 512, [], \"f067\", \"M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"]\n};\nvar faPlusCircle = {\n prefix: 'fas',\n iconName: 'plus-circle',\n icon: [512, 512, [], \"f055\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm144 276c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92h-92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z\"]\n};\nvar faPlusSquare = {\n prefix: 'fas',\n iconName: 'plus-square',\n icon: [448, 512, [], \"f0fe\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-32 252c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92H92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z\"]\n};\nvar faPodcast = {\n prefix: 'fas',\n iconName: 'podcast',\n icon: [448, 512, [], \"f2ce\", \"M267.429 488.563C262.286 507.573 242.858 512 224 512c-18.857 0-38.286-4.427-43.428-23.437C172.927 460.134 160 388.898 160 355.75c0-35.156 31.142-43.75 64-43.75s64 8.594 64 43.75c0 32.949-12.871 104.179-20.571 132.813zM156.867 288.554c-18.693-18.308-29.958-44.173-28.784-72.599 2.054-49.724 42.395-89.956 92.124-91.881C274.862 121.958 320 165.807 320 220c0 26.827-11.064 51.116-28.866 68.552-2.675 2.62-2.401 6.986.628 9.187 9.312 6.765 16.46 15.343 21.234 25.363 1.741 3.654 6.497 4.66 9.449 1.891 28.826-27.043 46.553-65.783 45.511-108.565-1.855-76.206-63.595-138.208-139.793-140.369C146.869 73.753 80 139.215 80 220c0 41.361 17.532 78.7 45.55 104.989 2.953 2.771 7.711 1.77 9.453-1.887 4.774-10.021 11.923-18.598 21.235-25.363 3.029-2.2 3.304-6.566.629-9.185zM224 0C100.204 0 0 100.185 0 224c0 89.992 52.602 165.647 125.739 201.408 4.333 2.118 9.267-1.544 8.535-6.31-2.382-15.512-4.342-30.946-5.406-44.339-.146-1.836-1.149-3.486-2.678-4.512-47.4-31.806-78.564-86.016-78.187-147.347.592-96.237 79.29-174.648 175.529-174.899C320.793 47.747 400 126.797 400 224c0 61.932-32.158 116.49-80.65 147.867-.999 14.037-3.069 30.588-5.624 47.23-.732 4.767 4.203 8.429 8.535 6.31C395.227 389.727 448 314.187 448 224 448 100.205 347.815 0 224 0zm0 160c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64z\"]\n};\nvar faPoll = {\n prefix: 'fas',\n iconName: 'poll',\n icon: [448, 512, [], \"f681\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM160 368c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V240c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v128zm96 0c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V144c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v224zm96 0c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-64c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v64z\"]\n};\nvar faPollH = {\n prefix: 'fas',\n iconName: 'poll-h',\n icon: [448, 512, [], \"f682\", \"M448 432V80c0-26.5-21.5-48-48-48H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48zM112 192c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h128c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16H112zm0 96c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h224c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16H112zm0 96c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-64z\"]\n};\nvar faPoo = {\n prefix: 'fas',\n iconName: 'poo',\n icon: [512, 512, [], \"f2fe\", \"M451.4 369.1C468.7 356 480 335.4 480 312c0-39.8-32.2-72-72-72h-14.1c13.4-11.7 22.1-28.8 22.1-48 0-35.3-28.7-64-64-64h-5.9c3.6-10.1 5.9-20.7 5.9-32 0-53-43-96-96-96-5.2 0-10.2.7-15.1 1.5C250.3 14.6 256 30.6 256 48c0 44.2-35.8 80-80 80h-16c-35.3 0-64 28.7-64 64 0 19.2 8.7 36.3 22.1 48H104c-39.8 0-72 32.2-72 72 0 23.4 11.3 44 28.6 57.1C26.3 374.6 0 404.1 0 440c0 39.8 32.2 72 72 72h368c39.8 0 72-32.2 72-72 0-35.9-26.3-65.4-60.6-70.9zM192 256c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm159.5 139C341 422.9 293 448 256 448s-85-25.1-95.5-53c-2-5.3 2-11 7.8-11h175.4c5.8 0 9.8 5.7 7.8 11zM320 320c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faPooStorm = {\n prefix: 'fas',\n iconName: 'poo-storm',\n icon: [448, 512, [], \"f75a\", \"M308 336h-57.7l17.3-64.9c2-7.6-3.7-15.1-11.6-15.1h-68c-6 0-11.1 4.5-11.9 10.4l-16 120c-1 7.2 4.6 13.6 11.9 13.6h59.3l-23 97.2c-1.8 7.6 4 14.8 11.7 14.8 4.2 0 8.2-2.2 10.4-6l88-152c4.6-8-1.2-18-10.4-18zm66.4-111.3c5.9-9.6 9.6-20.6 9.6-32.7 0-35.3-28.7-64-64-64h-5.9c3.6-10.1 5.9-20.7 5.9-32 0-53-43-96-96-96-5.2 0-10.2.7-15.1 1.5C218.3 14.6 224 30.6 224 48c0 44.2-35.8 80-80 80h-16c-35.3 0-64 28.7-64 64 0 12.1 3.7 23.1 9.6 32.7C32.6 228 0 262.2 0 304c0 44 36 80 80 80h48.3c.1-.6 0-1.2 0-1.8l16-120c3-21.8 21.7-38.2 43.7-38.2h68c13.8 0 26.5 6.3 34.9 17.2s11.2 24.8 7.6 38.1l-6.6 24.7h16c15.7 0 30.3 8.4 38.1 22 7.8 13.6 7.8 30.5 0 44l-8.1 14h30c44 0 80-36 80-80 .1-41.8-32.5-76-73.5-79.3z\"]\n};\nvar faPoop = {\n prefix: 'fas',\n iconName: 'poop',\n icon: [512, 512, [], \"f619\", \"M451.36 369.14C468.66 355.99 480 335.41 480 312c0-39.77-32.24-72-72-72h-14.07c13.42-11.73 22.07-28.78 22.07-48 0-35.35-28.65-64-64-64h-5.88c3.57-10.05 5.88-20.72 5.88-32 0-53.02-42.98-96-96-96-5.17 0-10.15.74-15.11 1.52C250.31 14.64 256 30.62 256 48c0 44.18-35.82 80-80 80h-16c-35.35 0-64 28.65-64 64 0 19.22 8.65 36.27 22.07 48H104c-39.76 0-72 32.23-72 72 0 23.41 11.34 43.99 28.64 57.14C26.31 374.62 0 404.12 0 440c0 39.76 32.24 72 72 72h368c39.76 0 72-32.24 72-72 0-35.88-26.31-65.38-60.64-70.86z\"]\n};\nvar faPortrait = {\n prefix: 'fas',\n iconName: 'portrait',\n icon: [384, 512, [], \"f3e0\", \"M336 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM192 128c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H102.4C90 384 80 375.4 80 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z\"]\n};\nvar faPoundSign = {\n prefix: 'fas',\n iconName: 'pound-sign',\n icon: [320, 512, [], \"f154\", \"M308 352h-45.495c-6.627 0-12 5.373-12 12v50.848H128V288h84c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-84v-63.556c0-32.266 24.562-57.086 61.792-57.086 23.658 0 45.878 11.505 57.652 18.849 5.151 3.213 11.888 2.051 15.688-2.685l28.493-35.513c4.233-5.276 3.279-13.005-2.119-17.081C273.124 54.56 236.576 32 187.931 32 106.026 32 48 84.742 48 157.961V224H20c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h28v128H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h296c6.627 0 12-5.373 12-12V364c0-6.627-5.373-12-12-12z\"]\n};\nvar faPowerOff = {\n prefix: 'fas',\n iconName: 'power-off',\n icon: [512, 512, [], \"f011\", \"M400 54.1c63 45 104 118.6 104 201.9 0 136.8-110.8 247.7-247.5 248C120 504.3 8.2 393 8 256.4 7.9 173.1 48.9 99.3 111.8 54.2c11.7-8.3 28-4.8 35 7.7L162.6 90c5.9 10.5 3.1 23.8-6.6 31-41.5 30.8-68 79.6-68 134.9-.1 92.3 74.5 168.1 168 168.1 91.6 0 168.6-74.2 168-169.1-.3-51.8-24.7-101.8-68.1-134-9.7-7.2-12.4-20.5-6.5-30.9l15.8-28.1c7-12.4 23.2-16.1 34.8-7.8zM296 264V24c0-13.3-10.7-24-24-24h-32c-13.3 0-24 10.7-24 24v240c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24z\"]\n};\nvar faPray = {\n prefix: 'fas',\n iconName: 'pray',\n icon: [384, 512, [], \"f683\", \"M256 128c35.35 0 64-28.65 64-64S291.35 0 256 0s-64 28.65-64 64 28.65 64 64 64zm-30.63 169.75c14.06 16.72 39 19.09 55.97 5.22l88-72.02c17.09-13.98 19.59-39.19 5.62-56.28-13.97-17.11-39.19-19.59-56.31-5.62l-57.44 47-38.91-46.31c-15.44-18.39-39.22-27.92-64-25.33-24.19 2.48-45.25 16.27-56.37 36.92l-49.37 92.03c-23.4 43.64-8.69 96.37 34.19 123.75L131.56 432H40c-22.09 0-40 17.91-40 40s17.91 40 40 40h208c34.08 0 53.77-42.79 28.28-68.28L166.42 333.86l34.8-64.87 24.15 28.76z\"]\n};\nvar faPrayingHands = {\n prefix: 'fas',\n iconName: 'praying-hands',\n icon: [640, 512, [], \"f684\", \"M272 191.91c-17.6 0-32 14.4-32 32v80c0 8.84-7.16 16-16 16s-16-7.16-16-16v-76.55c0-17.39 4.72-34.47 13.69-49.39l77.75-129.59c9.09-15.16 4.19-34.81-10.97-43.91-14.45-8.67-32.72-4.3-42.3 9.21-.2.23-.62.21-.79.48l-117.26 175.9C117.56 205.9 112 224.31 112 243.29v80.23l-90.12 30.04A31.974 31.974 0 0 0 0 383.91v96c0 10.82 8.52 32 32 32 2.69 0 5.41-.34 8.06-1.03l179.19-46.62C269.16 449.99 304 403.8 304 351.91v-128c0-17.6-14.4-32-32-32zm346.12 161.73L528 323.6v-80.23c0-18.98-5.56-37.39-16.12-53.23L394.62 14.25c-.18-.27-.59-.24-.79-.48-9.58-13.51-27.85-17.88-42.3-9.21-15.16 9.09-20.06 28.75-10.97 43.91l77.75 129.59c8.97 14.92 13.69 32 13.69 49.39V304c0 8.84-7.16 16-16 16s-16-7.16-16-16v-80c0-17.6-14.4-32-32-32s-32 14.4-32 32v128c0 51.89 34.84 98.08 84.75 112.34l179.19 46.62c2.66.69 5.38 1.03 8.06 1.03 23.48 0 32-21.18 32-32v-96c0-13.77-8.81-25.99-21.88-30.35z\"]\n};\nvar faPrescription = {\n prefix: 'fas',\n iconName: 'prescription',\n icon: [384, 512, [], \"f5b1\", \"M301.26 352l78.06-78.06c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0L256 306.74l-83.96-83.96C219.31 216.8 256 176.89 256 128c0-53.02-42.98-96-96-96H16C7.16 32 0 39.16 0 48v256c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-80h18.75l128 128-78.06 78.06c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0L256 397.25l78.06 78.06c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63L301.26 352zM64 96h96c17.64 0 32 14.36 32 32s-14.36 32-32 32H64V96z\"]\n};\nvar faPrescriptionBottle = {\n prefix: 'fas',\n iconName: 'prescription-bottle',\n icon: [384, 512, [], \"f485\", \"M32 192h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64c0 17.6 14.4 32 32 32h256c17.6 0 32-14.4 32-32V128H32v64zM360 0H24C10.8 0 0 10.8 0 24v48c0 13.2 10.8 24 24 24h336c13.2 0 24-10.8 24-24V24c0-13.2-10.8-24-24-24z\"]\n};\nvar faPrescriptionBottleAlt = {\n prefix: 'fas',\n iconName: 'prescription-bottle-alt',\n icon: [384, 512, [], \"f486\", \"M360 0H24C10.8 0 0 10.8 0 24v48c0 13.2 10.8 24 24 24h336c13.2 0 24-10.8 24-24V24c0-13.2-10.8-24-24-24zM32 480c0 17.6 14.4 32 32 32h256c17.6 0 32-14.4 32-32V128H32v352zm64-184c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48z\"]\n};\nvar faPrint = {\n prefix: 'fas',\n iconName: 'print',\n icon: [512, 512, [], \"f02f\", \"M448 192V77.25c0-8.49-3.37-16.62-9.37-22.63L393.37 9.37c-6-6-14.14-9.37-22.63-9.37H96C78.33 0 64 14.33 64 32v160c-35.35 0-64 28.65-64 64v112c0 8.84 7.16 16 16 16h48v96c0 17.67 14.33 32 32 32h320c17.67 0 32-14.33 32-32v-96h48c8.84 0 16-7.16 16-16V256c0-35.35-28.65-64-64-64zm-64 256H128v-96h256v96zm0-224H128V64h192v48c0 8.84 7.16 16 16 16h48v96zm48 72c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faProcedures = {\n prefix: 'fas',\n iconName: 'procedures',\n icon: [640, 512, [], \"f487\", \"M528 224H272c-8.8 0-16 7.2-16 16v144H64V144c0-8.8-7.2-16-16-16H16c-8.8 0-16 7.2-16 16v352c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-48h512v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V336c0-61.9-50.1-112-112-112zM136 96h126.1l27.6 55.2c5.9 11.8 22.7 11.8 28.6 0L368 51.8 390.1 96H512c8.8 0 16-7.2 16-16s-7.2-16-16-16H409.9L382.3 8.8C376.4-3 359.6-3 353.7 8.8L304 108.2l-19.9-39.8c-1.4-2.7-4.1-4.4-7.2-4.4H136c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm24 256c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64z\"]\n};\nvar faProjectDiagram = {\n prefix: 'fas',\n iconName: 'project-diagram',\n icon: [640, 512, [], \"f542\", \"M384 320H256c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32zM192 32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v128c0 17.67 14.33 32 32 32h95.72l73.16 128.04C211.98 300.98 232.4 288 256 288h.28L192 175.51V128h224V64H192V32zM608 0H480c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32z\"]\n};\nvar faPumpMedical = {\n prefix: 'fas',\n iconName: 'pump-medical',\n icon: [384, 512, [], \"e06a\", \"M235.51,159.82H84.24A64,64,0,0,0,20.51,218L.14,442a64,64,0,0,0,63.74,69.8h192A64,64,0,0,0,319.61,442L299.24,218A64,64,0,0,0,235.51,159.82Zm4.37,173.33a13.35,13.35,0,0,1-13.34,13.34h-40v40a13.33,13.33,0,0,1-13.33,13.33H146.54a13.33,13.33,0,0,1-13.33-13.33v-40h-40a13.34,13.34,0,0,1-13.33-13.34V306.49a13.33,13.33,0,0,1,13.33-13.34h40v-40a13.33,13.33,0,0,1,13.33-13.33h26.67a13.33,13.33,0,0,1,13.33,13.33v40h40a13.34,13.34,0,0,1,13.34,13.34ZM379.19,93.88,335.87,50.56a64,64,0,0,0-45.24-18.74H223.88a32,32,0,0,0-32-32h-64a32,32,0,0,0-32,32v96h128v-32h66.75l43.31,43.31a16,16,0,0,0,22.63,0l22.62-22.62A16,16,0,0,0,379.19,93.88Z\"]\n};\nvar faPumpSoap = {\n prefix: 'fas',\n iconName: 'pump-soap',\n icon: [384, 512, [], \"e06b\", \"M235.63,160H84.37a64,64,0,0,0-63.74,58.21L.27,442.21A64,64,0,0,0,64,512H256a64,64,0,0,0,63.74-69.79l-20.36-224A64,64,0,0,0,235.63,160ZM160,416c-33.12,0-60-26.33-60-58.75,0-25,35.7-75.47,52-97.27A10,10,0,0,1,168,260c16.33,21.8,52,72.27,52,97.27C220,389.67,193.12,416,160,416ZM379.31,94.06,336,50.74A64,64,0,0,0,290.75,32H224A32,32,0,0,0,192,0H128A32,32,0,0,0,96,32v96H224V96h66.75l43.31,43.31a16,16,0,0,0,22.63,0l22.62-22.62A16,16,0,0,0,379.31,94.06Z\"]\n};\nvar faPuzzlePiece = {\n prefix: 'fas',\n iconName: 'puzzle-piece',\n icon: [576, 512, [], \"f12e\", \"M519.442 288.651c-41.519 0-59.5 31.593-82.058 31.593C377.409 320.244 432 144 432 144s-196.288 80-196.288-3.297c0-35.827 36.288-46.25 36.288-85.985C272 19.216 243.885 0 210.539 0c-34.654 0-66.366 18.891-66.366 56.346 0 41.364 31.711 59.277 31.711 81.75C175.885 207.719 0 166.758 0 166.758v333.237s178.635 41.047 178.635-28.662c0-22.473-40-40.107-40-81.471 0-37.456 29.25-56.346 63.577-56.346 33.673 0 61.788 19.216 61.788 54.717 0 39.735-36.288 50.158-36.288 85.985 0 60.803 129.675 25.73 181.23 25.73 0 0-34.725-120.101 25.827-120.101 35.962 0 46.423 36.152 86.308 36.152C556.712 416 576 387.99 576 354.443c0-34.199-18.962-65.792-56.558-65.792z\"]\n};\nvar faQrcode = {\n prefix: 'fas',\n iconName: 'qrcode',\n icon: [448, 512, [], \"f029\", \"M0 224h192V32H0v192zM64 96h64v64H64V96zm192-64v192h192V32H256zm128 128h-64V96h64v64zM0 480h192V288H0v192zm64-128h64v64H64v-64zm352-64h32v128h-96v-32h-32v96h-64V288h96v32h64v-32zm0 160h32v32h-32v-32zm-64 0h32v32h-32v-32z\"]\n};\nvar faQuestion = {\n prefix: 'fas',\n iconName: 'question',\n icon: [384, 512, [], \"f128\", \"M202.021 0C122.202 0 70.503 32.703 29.914 91.026c-7.363 10.58-5.093 25.086 5.178 32.874l43.138 32.709c10.373 7.865 25.132 6.026 33.253-4.148 25.049-31.381 43.63-49.449 82.757-49.449 30.764 0 68.816 19.799 68.816 49.631 0 22.552-18.617 34.134-48.993 51.164-35.423 19.86-82.299 44.576-82.299 106.405V320c0 13.255 10.745 24 24 24h72.471c13.255 0 24-10.745 24-24v-5.773c0-42.86 125.268-44.645 125.268-160.627C377.504 66.256 286.902 0 202.021 0zM192 373.459c-38.196 0-69.271 31.075-69.271 69.271 0 38.195 31.075 69.27 69.271 69.27s69.271-31.075 69.271-69.271-31.075-69.27-69.271-69.27z\"]\n};\nvar faQuestionCircle = {\n prefix: 'fas',\n iconName: 'question-circle',\n icon: [512, 512, [], \"f059\", \"M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zM262.655 90c-54.497 0-89.255 22.957-116.549 63.758-3.536 5.286-2.353 12.415 2.715 16.258l34.699 26.31c5.205 3.947 12.621 3.008 16.665-2.122 17.864-22.658 30.113-35.797 57.303-35.797 20.429 0 45.698 13.148 45.698 32.958 0 14.976-12.363 22.667-32.534 33.976C247.128 238.528 216 254.941 216 296v4c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12v-1.333c0-28.462 83.186-29.647 83.186-106.667 0-58.002-60.165-102-116.531-102zM256 338c-25.365 0-46 20.635-46 46 0 25.364 20.635 46 46 46s46-20.636 46-46c0-25.365-20.635-46-46-46z\"]\n};\nvar faQuidditch = {\n prefix: 'fas',\n iconName: 'quidditch',\n icon: [640, 512, [], \"f458\", \"M256.5 216.8L343.2 326s-16.6 102.4-76.6 150.1C206.7 523.8 0 510.2 0 510.2s3.8-23.1 11-55.4l94.6-112.2c4-4.7-.9-11.6-6.6-9.5l-60.4 22.1c14.4-41.7 32.7-80 54.6-97.5 59.9-47.8 163.3-40.9 163.3-40.9zm238 135c-44 0-79.8 35.8-79.8 79.9 0 44.1 35.7 79.9 79.8 79.9 44.1 0 79.8-35.8 79.8-79.9 0-44.2-35.8-79.9-79.8-79.9zM636.5 31L616.7 6c-5.5-6.9-15.5-8-22.4-2.6L361.8 181.3l-34.1-43c-5.1-6.4-15.1-5.2-18.6 2.2l-25.3 54.6 86.7 109.2 58.8-12.4c8-1.7 11.4-11.2 6.3-17.6l-34.1-42.9L634 53.5c6.9-5.5 8-15.6 2.5-22.5z\"]\n};\nvar faQuoteLeft = {\n prefix: 'fas',\n iconName: 'quote-left',\n icon: [512, 512, [], \"f10d\", \"M464 256h-80v-64c0-35.3 28.7-64 64-64h8c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24h-8c-88.4 0-160 71.6-160 160v240c0 26.5 21.5 48 48 48h128c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48zm-288 0H96v-64c0-35.3 28.7-64 64-64h8c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24h-8C71.6 32 0 103.6 0 192v240c0 26.5 21.5 48 48 48h128c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48z\"]\n};\nvar faQuoteRight = {\n prefix: 'fas',\n iconName: 'quote-right',\n icon: [512, 512, [], \"f10e\", \"M464 32H336c-26.5 0-48 21.5-48 48v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48zm-288 0H48C21.5 32 0 53.5 0 80v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48z\"]\n};\nvar faQuran = {\n prefix: 'fas',\n iconName: 'quran',\n icon: [448, 512, [], \"f687\", \"M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM301.08 145.82c.6-1.21 1.76-1.82 2.92-1.82s2.32.61 2.92 1.82l11.18 22.65 25 3.63c2.67.39 3.74 3.67 1.81 5.56l-18.09 17.63 4.27 24.89c.36 2.11-1.31 3.82-3.21 3.82-.5 0-1.02-.12-1.52-.38L304 211.87l-22.36 11.75c-.5.26-1.02.38-1.52.38-1.9 0-3.57-1.71-3.21-3.82l4.27-24.89-18.09-17.63c-1.94-1.89-.87-5.17 1.81-5.56l24.99-3.63 11.19-22.65zm-57.89-69.01c13.67 0 27.26 2.49 40.38 7.41a6.775 6.775 0 1 1-2.38 13.12c-.67 0-3.09-.21-4.13-.21-52.31 0-94.86 42.55-94.86 94.86 0 52.3 42.55 94.86 94.86 94.86 1.03 0 3.48-.21 4.13-.21 3.93 0 6.8 3.14 6.8 6.78 0 2.98-1.94 5.51-4.62 6.42-13.07 4.87-26.59 7.34-40.19 7.34C179.67 307.19 128 255.51 128 192c0-63.52 51.67-115.19 115.19-115.19zM380.8 448H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8v64z\"]\n};\nvar faRadiation = {\n prefix: 'fas',\n iconName: 'radiation',\n icon: [496, 512, [], \"f7b9\", \"M328.2 255.8h151.6c9.1 0 16.8-7.7 16.2-16.8-5.1-75.8-44.4-142.2-102.5-184.2-7.4-5.3-17.9-2.9-22.7 4.8L290.4 188c22.6 14.3 37.8 39.2 37.8 67.8zm-37.8 67.7c-12.3 7.7-26.8 12.4-42.4 12.4-15.6 0-30-4.7-42.4-12.4L125.2 452c-4.8 7.7-2.4 18.1 5.6 22.4C165.7 493.2 205.6 504 248 504s82.3-10.8 117.2-29.6c8-4.3 10.4-14.8 5.6-22.4l-80.4-128.5zM248 303.8c26.5 0 48-21.5 48-48s-21.5-48-48-48-48 21.5-48 48 21.5 48 48 48zm-231.8-48h151.6c0-28.6 15.2-53.5 37.8-67.7L125.2 59.7c-4.8-7.7-15.3-10.2-22.7-4.8C44.4 96.9 5.1 163.3 0 239.1c-.6 9 7.1 16.7 16.2 16.7z\"]\n};\nvar faRadiationAlt = {\n prefix: 'fas',\n iconName: 'radiation-alt',\n icon: [496, 512, [], \"f7ba\", \"M312 256h79.1c9.2 0 16.9-7.7 16-16.8-4.6-43.6-27-81.8-59.5-107.8-7.6-6.1-18.8-4.5-24 3.8L281.9 202c18 11.2 30.1 31.2 30.1 54zm-97.8 54.1L172.4 377c-4.9 7.8-2.4 18.4 5.8 22.5 21.1 10.4 44.7 16.5 69.8 16.5s48.7-6.1 69.9-16.5c8.2-4.1 10.6-14.7 5.8-22.5l-41.8-66.9c-9.8 6.2-21.4 9.9-33.8 9.9s-24.1-3.7-33.9-9.9zM104.9 256H184c0-22.8 12.1-42.8 30.2-54.1l-41.7-66.8c-5.2-8.3-16.4-9.9-24-3.8-32.6 26-54.9 64.2-59.5 107.8-1.1 9.2 6.7 16.9 15.9 16.9zM248 504c137 0 248-111 248-248S385 8 248 8 0 119 0 256s111 248 248 248zm0-432c101.5 0 184 82.5 184 184s-82.5 184-184 184S64 357.5 64 256 146.5 72 248 72zm0 216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32z\"]\n};\nvar faRainbow = {\n prefix: 'fas',\n iconName: 'rainbow',\n icon: [576, 512, [], \"f75b\", \"M268.3 32.7C115.4 42.9 0 176.9 0 330.2V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320C64 186.8 180.9 80.3 317.5 97.9 430.4 112.4 512 214 512 327.8V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-165.3-140-298.6-307.7-287.3zm-5.6 96.9C166 142 96 229.1 96 326.7V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-74.8 64.5-134.8 140.8-127.4 66.5 6.5 115.2 66.2 115.2 133.1V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-114.2-100.2-205.4-217.3-190.4zm6.2 96.3c-45.6 8.9-76.9 51.5-76.9 97.9V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-17.6 14.3-32 32-32s32 14.4 32 32v144c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-59.2-53.8-106-115.1-94.1z\"]\n};\nvar faRandom = {\n prefix: 'fas',\n iconName: 'random',\n icon: [512, 512, [], \"f074\", \"M504.971 359.029c9.373 9.373 9.373 24.569 0 33.941l-80 79.984c-15.01 15.01-40.971 4.49-40.971-16.971V416h-58.785a12.004 12.004 0 0 1-8.773-3.812l-70.556-75.596 53.333-57.143L352 336h32v-39.981c0-21.438 25.943-31.998 40.971-16.971l80 79.981zM12 176h84l52.781 56.551 53.333-57.143-70.556-75.596A11.999 11.999 0 0 0 122.785 96H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12zm372 0v39.984c0 21.46 25.961 31.98 40.971 16.971l80-79.984c9.373-9.373 9.373-24.569 0-33.941l-80-79.981C409.943 24.021 384 34.582 384 56.019V96h-58.785a12.004 12.004 0 0 0-8.773 3.812L96 336H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h110.785c3.326 0 6.503-1.381 8.773-3.812L352 176h32z\"]\n};\nvar faReceipt = {\n prefix: 'fas',\n iconName: 'receipt',\n icon: [384, 512, [], \"f543\", \"M358.4 3.2L320 48 265.6 3.2a15.9 15.9 0 0 0-19.2 0L192 48 137.6 3.2a15.9 15.9 0 0 0-19.2 0L64 48 25.6 3.2C15-4.7 0 2.8 0 16v480c0 13.2 15 20.7 25.6 12.8L64 464l54.4 44.8a15.9 15.9 0 0 0 19.2 0L192 464l54.4 44.8a15.9 15.9 0 0 0 19.2 0L320 464l38.4 44.8c10.5 7.9 25.6.4 25.6-12.8V16c0-13.2-15-20.7-25.6-12.8zM320 360c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faRecordVinyl = {\n prefix: 'fas',\n iconName: 'record-vinyl',\n icon: [512, 512, [], \"f8d9\", \"M256 152a104 104 0 1 0 104 104 104 104 0 0 0-104-104zm0 128a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm0-272C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 376a128 128 0 1 1 128-128 128 128 0 0 1-128 128z\"]\n};\nvar faRecycle = {\n prefix: 'fas',\n iconName: 'recycle',\n icon: [512, 512, [], \"f1b8\", \"M184.561 261.903c3.232 13.997-12.123 24.635-24.068 17.168l-40.736-25.455-50.867 81.402C55.606 356.273 70.96 384 96.012 384H148c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12H96.115c-75.334 0-121.302-83.048-81.408-146.88l50.822-81.388-40.725-25.448c-12.081-7.547-8.966-25.961 4.879-29.158l110.237-25.45c8.611-1.988 17.201 3.381 19.189 11.99l25.452 110.237zm98.561-182.915l41.289 66.076-40.74 25.457c-12.051 7.528-9 25.953 4.879 29.158l110.237 25.45c8.672 1.999 17.215-3.438 19.189-11.99l25.45-110.237c3.197-13.844-11.99-24.719-24.068-17.168l-40.687 25.424-41.263-66.082c-37.521-60.033-125.209-60.171-162.816 0l-17.963 28.766c-3.51 5.62-1.8 13.021 3.82 16.533l33.919 21.195c5.62 3.512 13.024 1.803 16.536-3.817l17.961-28.743c12.712-20.341 41.973-19.676 54.257-.022zM497.288 301.12l-27.515-44.065c-3.511-5.623-10.916-7.334-16.538-3.821l-33.861 21.159c-5.62 3.512-7.33 10.915-3.818 16.536l27.564 44.112c13.257 21.211-2.057 48.96-27.136 48.96H320V336.02c0-14.213-17.242-21.383-27.313-11.313l-80 79.981c-6.249 6.248-6.249 16.379 0 22.627l80 79.989C302.689 517.308 320 510.3 320 495.989V448h95.88c75.274 0 121.335-82.997 81.408-146.88z\"]\n};\nvar faRedo = {\n prefix: 'fas',\n iconName: 'redo',\n icon: [512, 512, [], \"f01e\", \"M500.33 0h-47.41a12 12 0 0 0-12 12.57l4 82.76A247.42 247.42 0 0 0 256 8C119.34 8 7.9 119.53 8 256.19 8.1 393.07 119.1 504 256 504a247.1 247.1 0 0 0 166.18-63.91 12 12 0 0 0 .48-17.43l-34-34a12 12 0 0 0-16.38-.55A176 176 0 1 1 402.1 157.8l-101.53-4.87a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12h200.33a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12z\"]\n};\nvar faRedoAlt = {\n prefix: 'fas',\n iconName: 'redo-alt',\n icon: [512, 512, [], \"f2f9\", \"M256.455 8c66.269.119 126.437 26.233 170.859 68.685l35.715-35.715C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.75c-30.864-28.899-70.801-44.907-113.23-45.273-92.398-.798-170.283 73.977-169.484 169.442C88.764 348.009 162.184 424 256 424c41.127 0 79.997-14.678 110.629-41.556 4.743-4.161 11.906-3.908 16.368.553l39.662 39.662c4.872 4.872 4.631 12.815-.482 17.433C378.202 479.813 319.926 504 256 504 119.034 504 8.001 392.967 8 256.002 7.999 119.193 119.646 7.755 256.455 8z\"]\n};\nvar faRegistered = {\n prefix: 'fas',\n iconName: 'registered',\n icon: [512, 512, [], \"f25d\", \"M285.363 207.475c0 18.6-9.831 28.431-28.431 28.431h-29.876v-56.14h23.378c28.668 0 34.929 8.773 34.929 27.709zM504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM363.411 360.414c-46.729-84.825-43.299-78.636-44.702-80.98 23.432-15.172 37.945-42.979 37.945-74.486 0-54.244-31.5-89.252-105.498-89.252h-70.667c-13.255 0-24 10.745-24 24V372c0 13.255 10.745 24 24 24h22.567c13.255 0 24-10.745 24-24v-71.663h25.556l44.129 82.937a24.001 24.001 0 0 0 21.188 12.727h24.464c18.261-.001 29.829-19.591 21.018-35.587z\"]\n};\nvar faRemoveFormat = {\n prefix: 'fas',\n iconName: 'remove-format',\n icon: [640, 512, [], \"f87d\", \"M336 416h-11.17l9.26-27.77L267 336.4 240.49 416H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm297.82 42.1L377 259.59 426.17 112H544v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16H176a16 16 0 0 0-16 16v43.9L45.46 3.38A16 16 0 0 0 23 6.19L3.37 31.46a16 16 0 0 0 2.81 22.45l588.36 454.72a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zM309.91 207.76L224 141.36V112h117.83z\"]\n};\nvar faReply = {\n prefix: 'fas',\n iconName: 'reply',\n icon: [512, 512, [], \"f3e5\", \"M8.309 189.836L184.313 37.851C199.719 24.546 224 35.347 224 56.015v80.053c160.629 1.839 288 34.032 288 186.258 0 61.441-39.581 122.309-83.333 154.132-13.653 9.931-33.111-2.533-28.077-18.631 45.344-145.012-21.507-183.51-176.59-185.742V360c0 20.7-24.3 31.453-39.687 18.164l-176.004-152c-11.071-9.562-11.086-26.753 0-36.328z\"]\n};\nvar faReplyAll = {\n prefix: 'fas',\n iconName: 'reply-all',\n icon: [576, 512, [], \"f122\", \"M136.309 189.836L312.313 37.851C327.72 24.546 352 35.348 352 56.015v82.763c129.182 10.231 224 52.212 224 183.548 0 61.441-39.582 122.309-83.333 154.132-13.653 9.931-33.111-2.533-28.077-18.631 38.512-123.162-3.922-169.482-112.59-182.015v84.175c0 20.701-24.3 31.453-39.687 18.164L136.309 226.164c-11.071-9.561-11.086-26.753 0-36.328zm-128 36.328L184.313 378.15C199.7 391.439 224 380.687 224 359.986v-15.818l-108.606-93.785A55.96 55.96 0 0 1 96 207.998a55.953 55.953 0 0 1 19.393-42.38L224 71.832V56.015c0-20.667-24.28-31.469-39.687-18.164L8.309 189.836c-11.086 9.575-11.071 26.767 0 36.328z\"]\n};\nvar faRepublican = {\n prefix: 'fas',\n iconName: 'republican',\n icon: [640, 512, [], \"f75e\", \"M544 192c0-88.4-71.6-160-160-160H160C71.6 32 0 103.6 0 192v64h544v-64zm-367.7-21.6l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L128 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zm144 0l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L272 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zm144 0l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L416 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zM624 320h-32c-8.8 0-16 7.2-16 16v64c0 8.8-7.2 16-16 16s-16-7.2-16-16V288H0v176c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16v-80h192v80c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16V352h32v43.3c0 41.8 30 80.1 71.6 84.3 47.8 4.9 88.4-32.7 88.4-79.6v-64c0-8.8-7.2-16-16-16z\"]\n};\nvar faRestroom = {\n prefix: 'fas',\n iconName: 'restroom',\n icon: [640, 512, [], \"f7bd\", \"M128 128c35.3 0 64-28.7 64-64S163.3 0 128 0 64 28.7 64 64s28.7 64 64 64zm384 0c35.3 0 64-28.7 64-64S547.3 0 512 0s-64 28.7-64 64 28.7 64 64 64zm127.3 226.5l-45.6-185.8c-3.3-13.5-15.5-23-29.8-24.2-15 9.7-32.8 15.5-52 15.5-19.2 0-37-5.8-52-15.5-14.3 1.2-26.5 10.7-29.8 24.2l-45.6 185.8C381 369.6 393 384 409.2 384H464v104c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V384h54.8c16.2 0 28.2-14.4 24.5-29.5zM336 0h-32c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16zM180.1 144.4c-15 9.8-32.9 15.6-52.1 15.6-19.2 0-37.1-5.8-52.1-15.6C51.3 146.5 32 166.9 32 192v136c0 13.3 10.7 24 24 24h8v136c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V352h8c13.3 0 24-10.7 24-24V192c0-25.1-19.3-45.5-43.9-47.6z\"]\n};\nvar faRetweet = {\n prefix: 'fas',\n iconName: 'retweet',\n icon: [640, 512, [], \"f079\", \"M629.657 343.598L528.971 444.284c-9.373 9.372-24.568 9.372-33.941 0L394.343 343.598c-9.373-9.373-9.373-24.569 0-33.941l10.823-10.823c9.562-9.562 25.133-9.34 34.419.492L480 342.118V160H292.451a24.005 24.005 0 0 1-16.971-7.029l-16-16C244.361 121.851 255.069 96 276.451 96H520c13.255 0 24 10.745 24 24v222.118l40.416-42.792c9.285-9.831 24.856-10.054 34.419-.492l10.823 10.823c9.372 9.372 9.372 24.569-.001 33.941zm-265.138 15.431A23.999 23.999 0 0 0 347.548 352H160V169.881l40.416 42.792c9.286 9.831 24.856 10.054 34.419.491l10.822-10.822c9.373-9.373 9.373-24.569 0-33.941L144.971 67.716c-9.373-9.373-24.569-9.373-33.941 0L10.343 168.402c-9.373 9.373-9.373 24.569 0 33.941l10.822 10.822c9.562 9.562 25.133 9.34 34.419-.491L96 169.881V392c0 13.255 10.745 24 24 24h243.549c21.382 0 32.09-25.851 16.971-40.971l-16.001-16z\"]\n};\nvar faRibbon = {\n prefix: 'fas',\n iconName: 'ribbon',\n icon: [448, 512, [], \"f4d6\", \"M6.1 444.3c-9.6 10.8-7.5 27.6 4.5 35.7l68.8 27.9c9.9 6.7 23.3 5 31.3-3.8l91.8-101.9-79.2-87.9-117.2 130zm435.8 0s-292-324.6-295.4-330.1c15.4-8.4 40.2-17.9 77.5-17.9s62.1 9.5 77.5 17.9c-3.3 5.6-56 64.6-56 64.6l79.1 87.7 34.2-38c28.7-31.9 33.3-78.6 11.4-115.5l-43.7-73.5c-4.3-7.2-9.9-13.3-16.8-18-40.7-27.6-127.4-29.7-171.4 0-6.9 4.7-12.5 10.8-16.8 18l-43.6 73.2c-1.5 2.5-37.1 62.2 11.5 116L337.5 504c8 8.9 21.4 10.5 31.3 3.8l68.8-27.9c11.9-8 14-24.8 4.3-35.6z\"]\n};\nvar faRing = {\n prefix: 'fas',\n iconName: 'ring',\n icon: [512, 512, [], \"f70b\", \"M256 64C110.06 64 0 125.91 0 208v98.13C0 384.48 114.62 448 256 448s256-63.52 256-141.87V208c0-82.09-110.06-144-256-144zm0 64c106.04 0 192 35.82 192 80 0 9.26-3.97 18.12-10.91 26.39C392.15 208.21 328.23 192 256 192s-136.15 16.21-181.09 42.39C67.97 226.12 64 217.26 64 208c0-44.18 85.96-80 192-80zM120.43 264.64C155.04 249.93 201.64 240 256 240s100.96 9.93 135.57 24.64C356.84 279.07 308.93 288 256 288s-100.84-8.93-135.57-23.36z\"]\n};\nvar faRoad = {\n prefix: 'fas',\n iconName: 'road',\n icon: [576, 512, [], \"f018\", \"M573.19 402.67l-139.79-320C428.43 71.29 417.6 64 405.68 64h-97.59l2.45 23.16c.5 4.72-3.21 8.84-7.96 8.84h-29.16c-4.75 0-8.46-4.12-7.96-8.84L267.91 64h-97.59c-11.93 0-22.76 7.29-27.73 18.67L2.8 402.67C-6.45 423.86 8.31 448 30.54 448h196.84l10.31-97.68c.86-8.14 7.72-14.32 15.91-14.32h68.8c8.19 0 15.05 6.18 15.91 14.32L348.62 448h196.84c22.23 0 36.99-24.14 27.73-45.33zM260.4 135.16a8 8 0 0 1 7.96-7.16h39.29c4.09 0 7.53 3.09 7.96 7.16l4.6 43.58c.75 7.09-4.81 13.26-11.93 13.26h-40.54c-7.13 0-12.68-6.17-11.93-13.26l4.59-43.58zM315.64 304h-55.29c-9.5 0-16.91-8.23-15.91-17.68l5.07-48c.86-8.14 7.72-14.32 15.91-14.32h45.15c8.19 0 15.05 6.18 15.91 14.32l5.07 48c1 9.45-6.41 17.68-15.91 17.68z\"]\n};\nvar faRobot = {\n prefix: 'fas',\n iconName: 'robot',\n icon: [640, 512, [], \"f544\", \"M32,224H64V416H32A31.96166,31.96166,0,0,1,0,384V256A31.96166,31.96166,0,0,1,32,224Zm512-48V448a64.06328,64.06328,0,0,1-64,64H160a64.06328,64.06328,0,0,1-64-64V176a79.974,79.974,0,0,1,80-80H288V32a32,32,0,0,1,64,0V96H464A79.974,79.974,0,0,1,544,176ZM264,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,264,256Zm-8,128H192v32h64Zm96,0H288v32h64ZM456,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,456,256Zm-8,128H384v32h64ZM640,256V384a31.96166,31.96166,0,0,1-32,32H576V224h32A31.96166,31.96166,0,0,1,640,256Z\"]\n};\nvar faRocket = {\n prefix: 'fas',\n iconName: 'rocket',\n icon: [512, 512, [], \"f135\", \"M505.12019,19.09375c-1.18945-5.53125-6.65819-11-12.207-12.1875C460.716,0,435.507,0,410.40747,0,307.17523,0,245.26909,55.20312,199.05238,128H94.83772c-16.34763.01562-35.55658,11.875-42.88664,26.48438L2.51562,253.29688A28.4,28.4,0,0,0,0,264a24.00867,24.00867,0,0,0,24.00582,24H127.81618l-22.47457,22.46875c-11.36521,11.36133-12.99607,32.25781,0,45.25L156.24582,406.625c11.15623,11.1875,32.15619,13.15625,45.27726,0l22.47457-22.46875V488a24.00867,24.00867,0,0,0,24.00581,24,28.55934,28.55934,0,0,0,10.707-2.51562l98.72834-49.39063c14.62888-7.29687,26.50776-26.5,26.50776-42.85937V312.79688c72.59753-46.3125,128.03493-108.40626,128.03493-211.09376C512.07526,76.5,512.07526,51.29688,505.12019,19.09375ZM384.04033,168A40,40,0,1,1,424.05,128,40.02322,40.02322,0,0,1,384.04033,168Z\"]\n};\nvar faRoute = {\n prefix: 'fas',\n iconName: 'route',\n icon: [512, 512, [], \"f4d7\", \"M416 320h-96c-17.6 0-32-14.4-32-32s14.4-32 32-32h96s96-107 96-160-43-96-96-96-96 43-96 96c0 25.5 22.2 63.4 45.3 96H320c-52.9 0-96 43.1-96 96s43.1 96 96 96h96c17.6 0 32 14.4 32 32s-14.4 32-32 32H185.5c-16 24.8-33.8 47.7-47.3 64H416c52.9 0 96-43.1 96-96s-43.1-96-96-96zm0-256c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zM96 256c-53 0-96 43-96 96s96 160 96 160 96-107 96-160-43-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faRss = {\n prefix: 'fas',\n iconName: 'rss',\n icon: [448, 512, [], \"f09e\", \"M128.081 415.959c0 35.369-28.672 64.041-64.041 64.041S0 451.328 0 415.959s28.672-64.041 64.041-64.041 64.04 28.673 64.04 64.041zm175.66 47.25c-8.354-154.6-132.185-278.587-286.95-286.95C7.656 175.765 0 183.105 0 192.253v48.069c0 8.415 6.49 15.472 14.887 16.018 111.832 7.284 201.473 96.702 208.772 208.772.547 8.397 7.604 14.887 16.018 14.887h48.069c9.149.001 16.489-7.655 15.995-16.79zm144.249.288C439.596 229.677 251.465 40.445 16.503 32.01 7.473 31.686 0 38.981 0 48.016v48.068c0 8.625 6.835 15.645 15.453 15.999 191.179 7.839 344.627 161.316 352.465 352.465.353 8.618 7.373 15.453 15.999 15.453h48.068c9.034-.001 16.329-7.474 16.005-16.504z\"]\n};\nvar faRssSquare = {\n prefix: 'fas',\n iconName: 'rss-square',\n icon: [448, 512, [], \"f143\", \"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM112 416c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm157.533 0h-34.335c-6.011 0-11.051-4.636-11.442-10.634-5.214-80.05-69.243-143.92-149.123-149.123-5.997-.39-10.633-5.431-10.633-11.441v-34.335c0-6.535 5.468-11.777 11.994-11.425 110.546 5.974 198.997 94.536 204.964 204.964.352 6.526-4.89 11.994-11.425 11.994zm103.027 0h-34.334c-6.161 0-11.175-4.882-11.427-11.038-5.598-136.535-115.204-246.161-251.76-251.76C68.882 152.949 64 147.935 64 141.774V107.44c0-6.454 5.338-11.664 11.787-11.432 167.83 6.025 302.21 141.191 308.205 308.205.232 6.449-4.978 11.787-11.432 11.787z\"]\n};\nvar faRubleSign = {\n prefix: 'fas',\n iconName: 'ruble-sign',\n icon: [384, 512, [], \"f158\", \"M239.36 320C324.48 320 384 260.542 384 175.071S324.48 32 239.36 32H76c-6.627 0-12 5.373-12 12v206.632H12c-6.627 0-12 5.373-12 12V308c0 6.627 5.373 12 12 12h52v32H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h52v52c0 6.627 5.373 12 12 12h58.56c6.627 0 12-5.373 12-12v-52H308c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12H146.56v-32h92.8zm-92.8-219.252h78.72c46.72 0 74.88 29.11 74.88 74.323 0 45.832-28.16 75.561-76.16 75.561h-77.44V100.748z\"]\n};\nvar faRuler = {\n prefix: 'fas',\n iconName: 'ruler',\n icon: [640, 512, [], \"f545\", \"M635.7 167.2L556.1 31.7c-8.8-15-28.3-20.1-43.5-11.5l-69 39.1L503.3 161c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L416 75l-55.2 31.3 27.9 47.4c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L333.2 122 278 153.3 337.8 255c2.2 3.7.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9l-59.7-101.7-55.2 31.3 27.9 47.4c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9l-27.9-47.5-55.2 31.3 59.7 101.7c2.2 3.7.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L84.9 262.9l-69 39.1C.7 310.7-4.6 329.8 4.2 344.8l79.6 135.6c8.8 15 28.3 20.1 43.5 11.5L624.1 210c15.2-8.6 20.4-27.8 11.6-42.8z\"]\n};\nvar faRulerCombined = {\n prefix: 'fas',\n iconName: 'ruler-combined',\n icon: [512, 512, [], \"f546\", \"M160 288h-56c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h56v-64h-56c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h56V96h-56c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8h56V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v448c0 2.77.91 5.24 1.57 7.8L160 329.38V288zm320 64h-32v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-64v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-64v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-41.37L24.2 510.43c2.56.66 5.04 1.57 7.8 1.57h448c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z\"]\n};\nvar faRulerHorizontal = {\n prefix: 'fas',\n iconName: 'ruler-horizontal',\n icon: [576, 512, [], \"f547\", \"M544 128h-48v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8H88c-4.42 0-8-3.58-8-8v-88H32c-17.67 0-32 14.33-32 32v192c0 17.67 14.33 32 32 32h512c17.67 0 32-14.33 32-32V160c0-17.67-14.33-32-32-32z\"]\n};\nvar faRulerVertical = {\n prefix: 'fas',\n iconName: 'ruler-vertical',\n icon: [256, 512, [], \"f548\", \"M168 416c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v448c0 17.67 14.33 32 32 32h192c17.67 0 32-14.33 32-32v-64h-88z\"]\n};\nvar faRunning = {\n prefix: 'fas',\n iconName: 'running',\n icon: [416, 512, [], \"f70c\", \"M272 96c26.51 0 48-21.49 48-48S298.51 0 272 0s-48 21.49-48 48 21.49 48 48 48zM113.69 317.47l-14.8 34.52H32c-17.67 0-32 14.33-32 32s14.33 32 32 32h77.45c19.25 0 36.58-11.44 44.11-29.09l8.79-20.52-10.67-6.3c-17.32-10.23-30.06-25.37-37.99-42.61zM384 223.99h-44.03l-26.06-53.25c-12.5-25.55-35.45-44.23-61.78-50.94l-71.08-21.14c-28.3-6.8-57.77-.55-80.84 17.14l-39.67 30.41c-14.03 10.75-16.69 30.83-5.92 44.86s30.84 16.66 44.86 5.92l39.69-30.41c7.67-5.89 17.44-8 25.27-6.14l14.7 4.37-37.46 87.39c-12.62 29.48-1.31 64.01 26.3 80.31l84.98 50.17-27.47 87.73c-5.28 16.86 4.11 34.81 20.97 40.09 3.19 1 6.41 1.48 9.58 1.48 13.61 0 26.23-8.77 30.52-22.45l31.64-101.06c5.91-20.77-2.89-43.08-21.64-54.39l-61.24-36.14 31.31-78.28 20.27 41.43c8 16.34 24.92 26.89 43.11 26.89H384c17.67 0 32-14.33 32-32s-14.33-31.99-32-31.99z\"]\n};\nvar faRupeeSign = {\n prefix: 'fas',\n iconName: 'rupee-sign',\n icon: [320, 512, [], \"f156\", \"M308 96c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v44.748c0 6.627 5.373 12 12 12h85.28c27.308 0 48.261 9.958 60.97 27.252H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h158.757c-6.217 36.086-32.961 58.632-74.757 58.632H12c-6.627 0-12 5.373-12 12v53.012c0 3.349 1.4 6.546 3.861 8.818l165.052 152.356a12.001 12.001 0 0 0 8.139 3.182h82.562c10.924 0 16.166-13.408 8.139-20.818L116.871 319.906c76.499-2.34 131.144-53.395 138.318-127.906H308c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-58.69c-3.486-11.541-8.28-22.246-14.252-32H308z\"]\n};\nvar faSadCry = {\n prefix: 'fas',\n iconName: 'sad-cry',\n icon: [496, 512, [], \"f5b3\", \"M248 8C111 8 0 119 0 256c0 90.1 48.2 168.7 120 212.1V288c0-8.8 7.2-16 16-16s16 7.2 16 16v196.7c29.5 12.4 62 19.3 96 19.3s66.5-6.9 96-19.3V288c0-8.8 7.2-16 16-16s16 7.2 16 16v180.1C447.8 424.7 496 346 496 256 496 119 385 8 248 8zm-65.5 216.5c-14.8-13.2-46.2-13.2-61 0L112 233c-3.8 3.3-9.3 4-13.7 1.6-4.4-2.4-6.9-7.4-6.1-12.4 4-25.2 34.2-42.1 59.9-42.1S208 197 212 222.2c.8 5-1.7 10-6.1 12.4-5.8 3.1-11.2.7-13.7-1.6l-9.7-8.5zM248 416c-26.5 0-48-28.7-48-64s21.5-64 48-64 48 28.7 48 64-21.5 64-48 64zm149.8-181.5c-5.8 3.1-11.2.7-13.7-1.6l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L304 233c-3.8 3.3-9.3 4-13.7 1.6-4.4-2.4-6.9-7.4-6.1-12.4 4-25.2 34.2-42.1 59.9-42.1S400 197 404 222.2c.6 4.9-1.8 9.9-6.2 12.3z\"]\n};\nvar faSadTear = {\n prefix: 'fas',\n iconName: 'sad-tear',\n icon: [496, 512, [], \"f5b4\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zM152 416c-26.5 0-48-21-48-47 0-20 28.5-60.4 41.6-77.8 3.2-4.3 9.6-4.3 12.8 0C171.5 308.6 200 349 200 369c0 26-21.5 47-48 47zm16-176c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm170.2 154.2C315.8 367.4 282.9 352 248 352c-21.2 0-21.2-32 0-32 44.4 0 86.3 19.6 114.7 53.8 13.8 16.4-11.2 36.5-24.5 20.4z\"]\n};\nvar faSatellite = {\n prefix: 'fas',\n iconName: 'satellite',\n icon: [512, 512, [], \"f7bf\", \"M502.60969,310.04206l-96.70393,96.71625a31.88151,31.88151,0,0,1-45.00765,0L280.572,326.34115l-9.89231,9.90759a190.56343,190.56343,0,0,1-5.40716,168.52287c-4.50077,8.50115-16.39342,9.59505-23.20707,2.79725L134.54715,400.05428l-17.7999,17.79929c.70324,2.60972,1.60965,5.00067,1.60965,7.79793a32.00544,32.00544,0,1,1-32.00544-32.00434c2.79735,0,5.18838.90637,7.7982,1.60959l17.7999-17.79929L4.43129,269.94287c-6.798-6.81342-5.70409-18.6119,2.79735-23.20627a190.58161,190.58161,0,0,1,168.52864-5.407l9.79854-9.79821-80.31053-80.41716a32.002,32.002,0,0,1,0-45.09987L201.96474,9.29814A31.62639,31.62639,0,0,1,224.46868,0a31.99951,31.99951,0,0,1,22.59759,9.29814l80.32615,80.30777,47.805-47.89713a33.6075,33.6075,0,0,1,47.50808,0l47.50807,47.50645a33.63308,33.63308,0,0,1,0,47.50644l-47.805,47.89713L502.71908,265.036A31.78938,31.78938,0,0,1,502.60969,310.04206ZM219.56159,197.433l73.82505-73.82252-68.918-68.9-73.80942,73.80689Zm237.74352,90.106-68.90233-68.9156-73.825,73.82252,68.918,68.9Z\"]\n};\nvar faSatelliteDish = {\n prefix: 'fas',\n iconName: 'satellite-dish',\n icon: [512, 512, [], \"f7c0\", \"M305.44954,462.59c7.39157,7.29792,6.18829,20.09661-3.00038,25.00356-77.713,41.80281-176.72559,29.9105-242.34331-35.7082C-5.49624,386.28227-17.404,287.362,24.41381,209.554c4.89125-9.095,17.68975-10.29834,25.00318-3.00043L166.22872,323.36708l27.39411-27.39452c-.68759-2.60974-1.594-5.00071-1.594-7.81361a32.00407,32.00407,0,1,1,32.00407,32.00455c-2.79723,0-5.20378-.89075-7.79786-1.594l-27.40974,27.41015ZM511.9758,303.06732a16.10336,16.10336,0,0,1-16.002,17.00242H463.86031a15.96956,15.96956,0,0,1-15.89265-15.00213C440.46671,175.5492,336.45348,70.53427,207.03078,63.53328a15.84486,15.84486,0,0,1-15.00191-15.90852V16.02652A16.09389,16.09389,0,0,1,209.031.02425C372.25491,8.61922,503.47472,139.841,511.9758,303.06732Zm-96.01221-.29692a16.21093,16.21093,0,0,1-16.11142,17.29934H367.645a16.06862,16.06862,0,0,1-15.89265-14.70522c-6.90712-77.01094-68.118-138.91037-144.92467-145.22376a15.94,15.94,0,0,1-14.79876-15.89289V112.13393a16.134,16.134,0,0,1,17.29908-16.096C319.45132,104.5391,407.55627,192.64538,415.96359,302.7704Z\"]\n};\nvar faSave = {\n prefix: 'fas',\n iconName: 'save',\n icon: [448, 512, [], \"f0c7\", \"M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM224 416c-35.346 0-64-28.654-64-64 0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64zm96-304.52V212c0 6.627-5.373 12-12 12H76c-6.627 0-12-5.373-12-12V108c0-6.627 5.373-12 12-12h228.52c3.183 0 6.235 1.264 8.485 3.515l3.48 3.48A11.996 11.996 0 0 1 320 111.48z\"]\n};\nvar faSchool = {\n prefix: 'fas',\n iconName: 'school',\n icon: [640, 512, [], \"f549\", \"M0 224v272c0 8.84 7.16 16 16 16h80V192H32c-17.67 0-32 14.33-32 32zm360-48h-24v-40c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v64c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8zm137.75-63.96l-160-106.67a32.02 32.02 0 0 0-35.5 0l-160 106.67A32.002 32.002 0 0 0 128 138.66V512h128V368c0-8.84 7.16-16 16-16h96c8.84 0 16 7.16 16 16v144h128V138.67c0-10.7-5.35-20.7-14.25-26.63zM320 256c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zm288-64h-64v320h80c8.84 0 16-7.16 16-16V224c0-17.67-14.33-32-32-32z\"]\n};\nvar faScrewdriver = {\n prefix: 'fas',\n iconName: 'screwdriver',\n icon: [512, 512, [], \"f54a\", \"M448 0L320 96v62.06l-83.03 83.03c6.79 4.25 13.27 9.06 19.07 14.87 5.8 5.8 10.62 12.28 14.87 19.07L353.94 192H416l96-128-64-64zM128 278.59L10.92 395.67c-14.55 14.55-14.55 38.15 0 52.71l52.7 52.7c14.56 14.56 38.15 14.56 52.71 0L233.41 384c29.11-29.11 29.11-76.3 0-105.41s-76.3-29.11-105.41 0z\"]\n};\nvar faScroll = {\n prefix: 'fas',\n iconName: 'scroll',\n icon: [640, 512, [], \"f70e\", \"M48 0C21.53 0 0 21.53 0 48v64c0 8.84 7.16 16 16 16h80V48C96 21.53 74.47 0 48 0zm208 412.57V352h288V96c0-52.94-43.06-96-96-96H111.59C121.74 13.41 128 29.92 128 48v368c0 38.87 34.65 69.65 74.75 63.12C234.22 474 256 444.46 256 412.57zM288 384v32c0 52.93-43.06 96-96 96h336c61.86 0 112-50.14 112-112 0-8.84-7.16-16-16-16H288z\"]\n};\nvar faSdCard = {\n prefix: 'fas',\n iconName: 'sd-card',\n icon: [384, 512, [], \"f7c2\", \"M320 0H128L0 128v320c0 35.3 28.7 64 64 64h256c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zM160 160h-48V64h48v96zm80 0h-48V64h48v96zm80 0h-48V64h48v96z\"]\n};\nvar faSearch = {\n prefix: 'fas',\n iconName: 'search',\n icon: [512, 512, [], \"f002\", \"M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z\"]\n};\nvar faSearchDollar = {\n prefix: 'fas',\n iconName: 'search-dollar',\n icon: [512, 512, [], \"f688\", \"M505.04 442.66l-99.71-99.69c-4.5-4.5-10.6-7-17-7h-16.3c27.6-35.3 44-79.69 44-127.99C416.03 93.09 322.92 0 208.02 0S0 93.09 0 207.98s93.11 207.98 208.02 207.98c48.3 0 92.71-16.4 128.01-44v16.3c0 6.4 2.5 12.5 7 17l99.71 99.69c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.59.1-33.99zm-297.02-90.7c-79.54 0-144-64.34-144-143.98 0-79.53 64.35-143.98 144-143.98 79.54 0 144 64.34 144 143.98 0 79.53-64.35 143.98-144 143.98zm27.11-152.54l-45.01-13.5c-5.16-1.55-8.77-6.78-8.77-12.73 0-7.27 5.3-13.19 11.8-13.19h28.11c4.56 0 8.96 1.29 12.82 3.72 3.24 2.03 7.36 1.91 10.13-.73l11.75-11.21c3.53-3.37 3.33-9.21-.57-12.14-9.1-6.83-20.08-10.77-31.37-11.35V112c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v16.12c-23.63.63-42.68 20.55-42.68 45.07 0 19.97 12.99 37.81 31.58 43.39l45.01 13.5c5.16 1.55 8.77 6.78 8.77 12.73 0 7.27-5.3 13.19-11.8 13.19h-28.1c-4.56 0-8.96-1.29-12.82-3.72-3.24-2.03-7.36-1.91-10.13.73l-11.75 11.21c-3.53 3.37-3.33 9.21.57 12.14 9.1 6.83 20.08 10.77 31.37 11.35V304c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-16.12c23.63-.63 42.68-20.54 42.68-45.07 0-19.97-12.99-37.81-31.59-43.39z\"]\n};\nvar faSearchLocation = {\n prefix: 'fas',\n iconName: 'search-location',\n icon: [512, 512, [], \"f689\", \"M505.04 442.66l-99.71-99.69c-4.5-4.5-10.6-7-17-7h-16.3c27.6-35.3 44-79.69 44-127.99C416.03 93.09 322.92 0 208.02 0S0 93.09 0 207.98s93.11 207.98 208.02 207.98c48.3 0 92.71-16.4 128.01-44v16.3c0 6.4 2.5 12.5 7 17l99.71 99.69c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.59.1-33.99zm-297.02-90.7c-79.54 0-144-64.34-144-143.98 0-79.53 64.35-143.98 144-143.98 79.54 0 144 64.34 144 143.98 0 79.53-64.35 143.98-144 143.98zm.02-239.96c-40.78 0-73.84 33.05-73.84 73.83 0 32.96 48.26 93.05 66.75 114.86a9.24 9.24 0 0 0 14.18 0c18.49-21.81 66.75-81.89 66.75-114.86 0-40.78-33.06-73.83-73.84-73.83zm0 96c-13.26 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faSearchMinus = {\n prefix: 'fas',\n iconName: 'search-minus',\n icon: [512, 512, [], \"f010\", \"M304 192v32c0 6.6-5.4 12-12 12H124c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm201 284.7L476.7 505c-9.4 9.4-24.6 9.4-33.9 0L343 405.3c-4.5-4.5-7-10.6-7-17V372c-35.3 27.6-79.7 44-128 44C93.1 416 0 322.9 0 208S93.1 0 208 0s208 93.1 208 208c0 48.3-16.4 92.7-44 128h16.3c6.4 0 12.5 2.5 17 7l99.7 99.7c9.3 9.4 9.3 24.6 0 34zM344 208c0-75.2-60.8-136-136-136S72 132.8 72 208s60.8 136 136 136 136-60.8 136-136z\"]\n};\nvar faSearchPlus = {\n prefix: 'fas',\n iconName: 'search-plus',\n icon: [512, 512, [], \"f00e\", \"M304 192v32c0 6.6-5.4 12-12 12h-56v56c0 6.6-5.4 12-12 12h-32c-6.6 0-12-5.4-12-12v-56h-56c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h56v-56c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v56h56c6.6 0 12 5.4 12 12zm201 284.7L476.7 505c-9.4 9.4-24.6 9.4-33.9 0L343 405.3c-4.5-4.5-7-10.6-7-17V372c-35.3 27.6-79.7 44-128 44C93.1 416 0 322.9 0 208S93.1 0 208 0s208 93.1 208 208c0 48.3-16.4 92.7-44 128h16.3c6.4 0 12.5 2.5 17 7l99.7 99.7c9.3 9.4 9.3 24.6 0 34zM344 208c0-75.2-60.8-136-136-136S72 132.8 72 208s60.8 136 136 136 136-60.8 136-136z\"]\n};\nvar faSeedling = {\n prefix: 'fas',\n iconName: 'seedling',\n icon: [512, 512, [], \"f4d8\", \"M64 96H0c0 123.7 100.3 224 224 224v144c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320C288 196.3 187.7 96 64 96zm384-64c-84.2 0-157.4 46.5-195.7 115.2 27.7 30.2 48.2 66.9 59 107.6C424 243.1 512 147.9 512 32h-64z\"]\n};\nvar faServer = {\n prefix: 'fas',\n iconName: 'server',\n icon: [512, 512, [], \"f233\", \"M480 160H32c-17.673 0-32-14.327-32-32V64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm112 248H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm112 248H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24z\"]\n};\nvar faShapes = {\n prefix: 'fas',\n iconName: 'shapes',\n icon: [512, 512, [], \"f61f\", \"M128,256A128,128,0,1,0,256,384,128,128,0,0,0,128,256Zm379-54.86L400.07,18.29a37.26,37.26,0,0,0-64.14,0L229,201.14C214.76,225.52,232.58,256,261.09,256H474.91C503.42,256,521.24,225.52,507,201.14ZM480,288H320a32,32,0,0,0-32,32V480a32,32,0,0,0,32,32H480a32,32,0,0,0,32-32V320A32,32,0,0,0,480,288Z\"]\n};\nvar faShare = {\n prefix: 'fas',\n iconName: 'share',\n icon: [512, 512, [], \"f064\", \"M503.691 189.836L327.687 37.851C312.281 24.546 288 35.347 288 56.015v80.053C127.371 137.907 0 170.1 0 322.326c0 61.441 39.581 122.309 83.333 154.132 13.653 9.931 33.111-2.533 28.077-18.631C66.066 312.814 132.917 274.316 288 272.085V360c0 20.7 24.3 31.453 39.687 18.164l176.004-152c11.071-9.562 11.086-26.753 0-36.328z\"]\n};\nvar faShareAlt = {\n prefix: 'fas',\n iconName: 'share-alt',\n icon: [448, 512, [], \"f1e0\", \"M352 320c-22.608 0-43.387 7.819-59.79 20.895l-102.486-64.054a96.551 96.551 0 0 0 0-41.683l102.486-64.054C308.613 184.181 329.392 192 352 192c53.019 0 96-42.981 96-96S405.019 0 352 0s-96 42.981-96 96c0 7.158.79 14.13 2.276 20.841L155.79 180.895C139.387 167.819 118.608 160 96 160c-53.019 0-96 42.981-96 96s42.981 96 96 96c22.608 0 43.387-7.819 59.79-20.895l102.486 64.054A96.301 96.301 0 0 0 256 416c0 53.019 42.981 96 96 96s96-42.981 96-96-42.981-96-96-96z\"]\n};\nvar faShareAltSquare = {\n prefix: 'fas',\n iconName: 'share-alt-square',\n icon: [448, 512, [], \"f1e1\", \"M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zM304 296c-14.562 0-27.823 5.561-37.783 14.671l-67.958-40.775a56.339 56.339 0 0 0 0-27.793l67.958-40.775C276.177 210.439 289.438 216 304 216c30.928 0 56-25.072 56-56s-25.072-56-56-56-56 25.072-56 56c0 4.797.605 9.453 1.74 13.897l-67.958 40.775C171.823 205.561 158.562 200 144 200c-30.928 0-56 25.072-56 56s25.072 56 56 56c14.562 0 27.823-5.561 37.783-14.671l67.958 40.775a56.088 56.088 0 0 0-1.74 13.897c0 30.928 25.072 56 56 56s56-25.072 56-56C360 321.072 334.928 296 304 296z\"]\n};\nvar faShareSquare = {\n prefix: 'fas',\n iconName: 'share-square',\n icon: [576, 512, [], \"f14d\", \"M568.482 177.448L424.479 313.433C409.3 327.768 384 317.14 384 295.985v-71.963c-144.575.97-205.566 35.113-164.775 171.353 4.483 14.973-12.846 26.567-25.006 17.33C155.252 383.105 120 326.488 120 269.339c0-143.937 117.599-172.5 264-173.312V24.012c0-21.174 25.317-31.768 40.479-17.448l144.003 135.988c10.02 9.463 10.028 25.425 0 34.896zM384 379.128V448H64V128h50.916a11.99 11.99 0 0 0 8.648-3.693c14.953-15.568 32.237-27.89 51.014-37.676C185.708 80.83 181.584 64 169.033 64H48C21.49 64 0 85.49 0 112v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48v-88.806c0-8.288-8.197-14.066-16.011-11.302a71.83 71.83 0 0 1-34.189 3.377c-7.27-1.046-13.8 4.514-13.8 11.859z\"]\n};\nvar faShekelSign = {\n prefix: 'fas',\n iconName: 'shekel-sign',\n icon: [448, 512, [], \"f20b\", \"M248 168v168c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V168c0-75.11-60.89-136-136-136H24C10.75 32 0 42.74 0 56v408c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V112h112c30.93 0 56 25.07 56 56zM432 32h-48c-8.84 0-16 7.16-16 16v296c0 30.93-25.07 56-56 56H200V176c0-8.84-7.16-16-16-16h-48c-8.84 0-16 7.16-16 16v280c0 13.25 10.75 24 24 24h168c75.11 0 136-60.89 136-136V48c0-8.84-7.16-16-16-16z\"]\n};\nvar faShieldAlt = {\n prefix: 'fas',\n iconName: 'shield-alt',\n icon: [512, 512, [], \"f3ed\", \"M466.5 83.7l-192-80a48.15 48.15 0 0 0-36.9 0l-192 80C27.7 91.1 16 108.6 16 128c0 198.5 114.5 335.7 221.5 380.3 11.8 4.9 25.1 4.9 36.9 0C360.1 472.6 496 349.3 496 128c0-19.4-11.7-36.9-29.5-44.3zM256.1 446.3l-.1-381 175.9 73.3c-3.3 151.4-82.1 261.1-175.8 307.7z\"]\n};\nvar faShieldVirus = {\n prefix: 'fas',\n iconName: 'shield-virus',\n icon: [512, 512, [], \"e06c\", \"M224,192a16,16,0,1,0,16,16A16,16,0,0,0,224,192ZM466.5,83.68l-192-80A57.4,57.4,0,0,0,256.05,0a57.4,57.4,0,0,0-18.46,3.67l-192,80A47.93,47.93,0,0,0,16,128C16,326.5,130.5,463.72,237.5,508.32a48.09,48.09,0,0,0,36.91,0C360.09,472.61,496,349.3,496,128A48,48,0,0,0,466.5,83.68ZM384,256H371.88c-28.51,0-42.79,34.47-22.63,54.63l8.58,8.57a16,16,0,1,1-22.63,22.63l-8.57-8.58C306.47,313.09,272,327.37,272,355.88V368a16,16,0,0,1-32,0V355.88c0-28.51-34.47-42.79-54.63-22.63l-8.57,8.58a16,16,0,0,1-22.63-22.63l8.58-8.57c20.16-20.16,5.88-54.63-22.63-54.63H128a16,16,0,0,1,0-32h12.12c28.51,0,42.79-34.47,22.63-54.63l-8.58-8.57a16,16,0,0,1,22.63-22.63l8.57,8.58c20.16,20.16,54.63,5.88,54.63-22.63V112a16,16,0,0,1,32,0v12.12c0,28.51,34.47,42.79,54.63,22.63l8.57-8.58a16,16,0,0,1,22.63,22.63l-8.58,8.57C329.09,189.53,343.37,224,371.88,224H384a16,16,0,0,1,0,32Zm-96,0a16,16,0,1,0,16,16A16,16,0,0,0,288,256Z\"]\n};\nvar faShip = {\n prefix: 'fas',\n iconName: 'ship',\n icon: [640, 512, [], \"f21a\", \"M496.616 372.639l70.012-70.012c16.899-16.9 9.942-45.771-12.836-53.092L512 236.102V96c0-17.673-14.327-32-32-32h-64V24c0-13.255-10.745-24-24-24H248c-13.255 0-24 10.745-24 24v40h-64c-17.673 0-32 14.327-32 32v140.102l-41.792 13.433c-22.753 7.313-29.754 36.173-12.836 53.092l70.012 70.012C125.828 416.287 85.587 448 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24 61.023 0 107.499-20.61 143.258-59.396C181.677 487.432 216.021 512 256 512h128c39.979 0 74.323-24.568 88.742-59.396C508.495 491.384 554.968 512 616 512c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24-60.817 0-101.542-31.001-119.384-75.361zM192 128h256v87.531l-118.208-37.995a31.995 31.995 0 0 0-19.584 0L192 215.531V128z\"]\n};\nvar faShippingFast = {\n prefix: 'fas',\n iconName: 'shipping-fast',\n icon: [640, 512, [], \"f48b\", \"M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H112C85.5 0 64 21.5 64 48v48H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h272c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H40c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h208c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h208c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H64v128c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm320 0c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z\"]\n};\nvar faShoePrints = {\n prefix: 'fas',\n iconName: 'shoe-prints',\n icon: [640, 512, [], \"f54b\", \"M192 160h32V32h-32c-35.35 0-64 28.65-64 64s28.65 64 64 64zM0 416c0 35.35 28.65 64 64 64h32V352H64c-35.35 0-64 28.65-64 64zm337.46-128c-34.91 0-76.16 13.12-104.73 32-24.79 16.38-44.52 32-104.73 32v128l57.53 15.97c26.21 7.28 53.01 13.12 80.31 15.05 32.69 2.31 65.6.67 97.58-6.2C472.9 481.3 512 429.22 512 384c0-64-84.18-96-174.54-96zM491.42 7.19C459.44.32 426.53-1.33 393.84.99c-27.3 1.93-54.1 7.77-80.31 15.04L256 32v128c60.2 0 79.94 15.62 104.73 32 28.57 18.88 69.82 32 104.73 32C555.82 224 640 192 640 128c0-45.22-39.1-97.3-148.58-120.81z\"]\n};\nvar faShoppingBag = {\n prefix: 'fas',\n iconName: 'shopping-bag',\n icon: [448, 512, [], \"f290\", \"M352 160v-32C352 57.42 294.579 0 224 0 153.42 0 96 57.42 96 128v32H0v272c0 44.183 35.817 80 80 80h288c44.183 0 80-35.817 80-80V160h-96zm-192-32c0-35.29 28.71-64 64-64s64 28.71 64 64v32H160v-32zm160 120c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24zm-192 0c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24z\"]\n};\nvar faShoppingBasket = {\n prefix: 'fas',\n iconName: 'shopping-basket',\n icon: [576, 512, [], \"f291\", \"M576 216v16c0 13.255-10.745 24-24 24h-8l-26.113 182.788C514.509 462.435 494.257 480 470.37 480H105.63c-23.887 0-44.139-17.565-47.518-41.212L32 256h-8c-13.255 0-24-10.745-24-24v-16c0-13.255 10.745-24 24-24h67.341l106.78-146.821c10.395-14.292 30.407-17.453 44.701-7.058 14.293 10.395 17.453 30.408 7.058 44.701L170.477 192h235.046L326.12 82.821c-10.395-14.292-7.234-34.306 7.059-44.701 14.291-10.395 34.306-7.235 44.701 7.058L484.659 192H552c13.255 0 24 10.745 24 24zM312 392V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24zm112 0V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24zm-224 0V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24z\"]\n};\nvar faShoppingCart = {\n prefix: 'fas',\n iconName: 'shopping-cart',\n icon: [576, 512, [], \"f07a\", \"M528.12 301.319l47.273-208C578.806 78.301 567.391 64 551.99 64H159.208l-9.166-44.81C147.758 8.021 137.93 0 126.529 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24h69.883l70.248 343.435C147.325 417.1 136 435.222 136 456c0 30.928 25.072 56 56 56s56-25.072 56-56c0-15.674-6.447-29.835-16.824-40h209.647C430.447 426.165 424 440.326 424 456c0 30.928 25.072 56 56 56s56-25.072 56-56c0-22.172-12.888-41.332-31.579-50.405l5.517-24.276c3.413-15.018-8.002-29.319-23.403-29.319H218.117l-6.545-32h293.145c11.206 0 20.92-7.754 23.403-18.681z\"]\n};\nvar faShower = {\n prefix: 'fas',\n iconName: 'shower',\n icon: [512, 512, [], \"f2cc\", \"M304,320a16,16,0,1,0,16,16A16,16,0,0,0,304,320Zm32-96a16,16,0,1,0,16,16A16,16,0,0,0,336,224Zm32,64a16,16,0,1,0-16-16A16,16,0,0,0,368,288Zm-32,32a16,16,0,1,0-16-16A16,16,0,0,0,336,320Zm-32-64a16,16,0,1,0,16,16A16,16,0,0,0,304,256Zm128-32a16,16,0,1,0-16-16A16,16,0,0,0,432,224Zm-48,16a16,16,0,1,0,16-16A16,16,0,0,0,384,240Zm-16-48a16,16,0,1,0,16,16A16,16,0,0,0,368,192Zm96,32a16,16,0,1,0,16,16A16,16,0,0,0,464,224Zm32-32a16,16,0,1,0,16,16A16,16,0,0,0,496,192Zm-64,64a16,16,0,1,0,16,16A16,16,0,0,0,432,256Zm-32,32a16,16,0,1,0,16,16A16,16,0,0,0,400,288Zm-64,64a16,16,0,1,0,16,16A16,16,0,0,0,336,352Zm-32,32a16,16,0,1,0,16,16A16,16,0,0,0,304,384Zm64-64a16,16,0,1,0,16,16A16,16,0,0,0,368,320Zm21.65-218.35-11.3-11.31a16,16,0,0,0-22.63,0L350.05,96A111.19,111.19,0,0,0,272,64c-19.24,0-37.08,5.3-52.9,13.85l-10-10A121.72,121.72,0,0,0,123.44,32C55.49,31.5,0,92.91,0,160.85V464a16,16,0,0,0,16,16H48a16,16,0,0,0,16-16V158.4c0-30.15,21-58.2,51-61.93a58.38,58.38,0,0,1,48.93,16.67l10,10C165.3,138.92,160,156.76,160,176a111.23,111.23,0,0,0,32,78.05l-5.66,5.67a16,16,0,0,0,0,22.62l11.3,11.31a16,16,0,0,0,22.63,0L389.65,124.28A16,16,0,0,0,389.65,101.65Z\"]\n};\nvar faShuttleVan = {\n prefix: 'fas',\n iconName: 'shuttle-van',\n icon: [640, 512, [], \"f5b6\", \"M628.88 210.65L494.39 49.27A48.01 48.01 0 0 0 457.52 32H32C14.33 32 0 46.33 0 64v288c0 17.67 14.33 32 32 32h32c0 53.02 42.98 96 96 96s96-42.98 96-96h128c0 53.02 42.98 96 96 96s96-42.98 96-96h32c17.67 0 32-14.33 32-32V241.38c0-11.23-3.94-22.1-11.12-30.73zM64 192V96h96v96H64zm96 240c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm160-240h-96V96h96v96zm160 240c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm-96-240V96h66.02l80 96H384z\"]\n};\nvar faSign = {\n prefix: 'fas',\n iconName: 'sign',\n icon: [512, 512, [], \"f4d9\", \"M496 64H128V16c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16v48H16C7.2 64 0 71.2 0 80v32c0 8.8 7.2 16 16 16h48v368c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V128h368c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16zM160 384h320V160H160v224z\"]\n};\nvar faSignInAlt = {\n prefix: 'fas',\n iconName: 'sign-in-alt',\n icon: [512, 512, [], \"f2f6\", \"M416 448h-84c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h84c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32h-84c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h84c53 0 96 43 96 96v192c0 53-43 96-96 96zm-47-201L201 79c-15-15-41-4.5-41 17v96H24c-13.3 0-24 10.7-24 24v96c0 13.3 10.7 24 24 24h136v96c0 21.5 26 32 41 17l168-168c9.3-9.4 9.3-24.6 0-34z\"]\n};\nvar faSignLanguage = {\n prefix: 'fas',\n iconName: 'sign-language',\n icon: [448, 512, [], \"f2a7\", \"M91.434 483.987c-.307-16.018 13.109-29.129 29.13-29.129h62.293v-5.714H56.993c-16.021 0-29.437-13.111-29.13-29.129C28.16 404.491 40.835 392 56.428 392h126.429v-5.714H29.136c-16.021 0-29.437-13.111-29.13-29.129.297-15.522 12.973-28.013 28.566-28.013h154.286v-5.714H57.707c-16.021 0-29.437-13.111-29.13-29.129.297-15.522 12.973-28.013 28.566-28.013h168.566l-31.085-22.606c-12.762-9.281-15.583-27.149-6.302-39.912 9.281-12.761 27.15-15.582 39.912-6.302l123.361 89.715a34.287 34.287 0 0 1 14.12 27.728v141.136c0 15.91-10.946 29.73-26.433 33.374l-80.471 18.934a137.16 137.16 0 0 1-31.411 3.646H120c-15.593-.001-28.269-12.492-28.566-28.014zm73.249-225.701h36.423l-11.187-8.136c-18.579-13.511-20.313-40.887-3.17-56.536l-13.004-16.7c-9.843-12.641-28.43-15.171-40.88-5.088-12.065 9.771-14.133 27.447-4.553 39.75l36.371 46.71zm283.298-2.103l-5.003-152.452c-.518-15.771-13.722-28.136-29.493-27.619-15.773.518-28.137 13.722-27.619 29.493l1.262 38.415L283.565 11.019c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l76.889 98.745-4.509 3.511-94.79-121.734c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l94.443 121.288-4.509 3.511-77.675-99.754c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l52.053 66.849c12.497-8.257 29.055-8.285 41.69.904l123.36 89.714c10.904 7.93 17.415 20.715 17.415 34.198v16.999l61.064-47.549a34.285 34.285 0 0 0 13.202-28.177z\"]\n};\nvar faSignOutAlt = {\n prefix: 'fas',\n iconName: 'sign-out-alt',\n icon: [512, 512, [], \"f2f5\", \"M497 273L329 441c-15 15-41 4.5-41-17v-96H152c-13.3 0-24-10.7-24-24v-96c0-13.3 10.7-24 24-24h136V88c0-21.4 25.9-32 41-17l168 168c9.3 9.4 9.3 24.6 0 34zM192 436v-40c0-6.6-5.4-12-12-12H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h84c6.6 0 12-5.4 12-12V76c0-6.6-5.4-12-12-12H96c-53 0-96 43-96 96v192c0 53 43 96 96 96h84c6.6 0 12-5.4 12-12z\"]\n};\nvar faSignal = {\n prefix: 'fas',\n iconName: 'signal',\n icon: [640, 512, [], \"f012\", \"M216 288h-48c-8.84 0-16 7.16-16 16v192c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V304c0-8.84-7.16-16-16-16zM88 384H40c-8.84 0-16 7.16-16 16v96c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16v-96c0-8.84-7.16-16-16-16zm256-192h-48c-8.84 0-16 7.16-16 16v288c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V208c0-8.84-7.16-16-16-16zm128-96h-48c-8.84 0-16 7.16-16 16v384c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V112c0-8.84-7.16-16-16-16zM600 0h-48c-8.84 0-16 7.16-16 16v480c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16z\"]\n};\nvar faSignature = {\n prefix: 'fas',\n iconName: 'signature',\n icon: [640, 512, [], \"f5b7\", \"M623.2 192c-51.8 3.5-125.7 54.7-163.1 71.5-29.1 13.1-54.2 24.4-76.1 24.4-22.6 0-26-16.2-21.3-51.9 1.1-8 11.7-79.2-42.7-76.1-25.1 1.5-64.3 24.8-169.5 126L192 182.2c30.4-75.9-53.2-151.5-129.7-102.8L7.4 116.3C0 121-2.2 130.9 2.5 138.4l17.2 27c4.7 7.5 14.6 9.7 22.1 4.9l58-38.9c18.4-11.7 40.7 7.2 32.7 27.1L34.3 404.1C27.5 421 37 448 64 448c8.3 0 16.5-3.2 22.6-9.4 42.2-42.2 154.7-150.7 211.2-195.8-2.2 28.5-2.1 58.9 20.6 83.8 15.3 16.8 37.3 25.3 65.5 25.3 35.6 0 68-14.6 102.3-30 33-14.8 99-62.6 138.4-65.8 8.5-.7 15.2-7.3 15.2-15.8v-32.1c.2-9.1-7.5-16.8-16.6-16.2z\"]\n};\nvar faSimCard = {\n prefix: 'fas',\n iconName: 'sim-card',\n icon: [384, 512, [], \"f7c4\", \"M0 64v384c0 35.3 28.7 64 64 64h256c35.3 0 64-28.7 64-64V128L256 0H64C28.7 0 0 28.7 0 64zm224 192h-64v-64h64v64zm96 0h-64v-64h32c17.7 0 32 14.3 32 32v32zm-64 128h64v32c0 17.7-14.3 32-32 32h-32v-64zm-96 0h64v64h-64v-64zm-96 0h64v64H96c-17.7 0-32-14.3-32-32v-32zm0-96h256v64H64v-64zm0-64c0-17.7 14.3-32 32-32h32v64H64v-32z\"]\n};\nvar faSink = {\n prefix: 'fas',\n iconName: 'sink',\n icon: [512, 512, [], \"e06d\", \"M32,416a96,96,0,0,0,96,96H384a96,96,0,0,0,96-96V384H32ZM496,288H400V256h64a16,16,0,0,0,16-16V224a16,16,0,0,0-16-16H384a32,32,0,0,0-32,32v48H288V96a32,32,0,0,1,64,0v16a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V96A96.16,96.16,0,0,0,300.87,1.86C255.29,10.71,224,53.36,224,99.79V288H160V240a32,32,0,0,0-32-32H48a16,16,0,0,0-16,16v16a16,16,0,0,0,16,16h64v32H16A16,16,0,0,0,0,304v32a16,16,0,0,0,16,16H496a16,16,0,0,0,16-16V304A16,16,0,0,0,496,288Z\"]\n};\nvar faSitemap = {\n prefix: 'fas',\n iconName: 'sitemap',\n icon: [640, 512, [], \"f0e8\", \"M128 352H32c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zm-24-80h192v48h48v-48h192v48h48v-57.59c0-21.17-17.23-38.41-38.41-38.41H344v-64h40c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32H256c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h40v64H94.41C73.23 224 56 241.23 56 262.41V320h48v-48zm264 80h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zm240 0h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z\"]\n};\nvar faSkating = {\n prefix: 'fas',\n iconName: 'skating',\n icon: [448, 512, [], \"f7c5\", \"M400 0c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm0 448c-8.8 0-16 7.2-16 16s-7.2 16-16 16h-96c-8.8 0-16 7.2-16 16s7.2 16 16 16h96c26.5 0 48-21.5 48-48 0-8.8-7.2-16-16-16zm-282.2 8.6c-6.2 6.2-16.4 6.3-22.6 0l-67.9-67.9c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l67.9 67.9c9.4 9.4 21.7 14 34 14s24.6-4.7 33.9-14c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.3-22.7 0zm56.1-179.8l-93.7 93.7c-12.5 12.5-12.5 32.8 0 45.2 6.2 6.2 14.4 9.4 22.6 9.4s16.4-3.1 22.6-9.4l91.9-91.9-30.2-30.2c-5-5-9.4-10.7-13.2-16.8zM128 160h105.5l-20.1 17.2c-13.5 11.5-21.6 28.4-22.3 46.1-.7 17.8 6.1 35.2 18.7 47.7l78.2 78.2V432c0 17.7 14.3 32 32 32s32-14.3 32-32v-89.4c0-12.6-5.1-25-14.1-33.9l-61-61c.5-.4 1.2-.6 1.7-1.1l82.3-82.3c11.5-11.5 14.9-28.6 8.7-43.6-6.2-15-20.7-24.7-37-24.7H128c-17.7 0-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faSkiing = {\n prefix: 'fas',\n iconName: 'skiing',\n icon: [512, 512, [], \"f7c9\", \"M432 96c26.5 0 48-21.5 48-48S458.5 0 432 0s-48 21.5-48 48 21.5 48 48 48zm73 356.1c-9.4-9.4-24.6-9.4-33.9 0-12.1 12.1-30.5 15.4-45.1 8.7l-135.8-70.2 49.2-73.8c12.7-19 10.2-44.5-6-60.6L293 215.7l-107-53.1c-2.9 19.9 3.4 40 17.7 54.4l75.1 75.2-45.9 68.8L35 258.7c-11.7-6-26.2-1.5-32.3 10.3-6.1 11.8-1.5 26.3 10.3 32.3l391.9 202.5c11.9 5.5 24.5 8.1 37.1 8.1 23.2 0 46-9 63-26 9.3-9.3 9.3-24.5 0-33.8zM120 91.6l-11.5 22.5c14.4 7.3 31.2 4.9 42.8-4.8l47.2 23.4c-.1.1-.1.2-.2.3l114.5 56.8 32.4-13 6.4 19.1c4 12.1 12.6 22 24 27.7l58.1 29c15.9 7.9 35 1.5 42.9-14.3 7.9-15.8 1.5-35-14.3-42.9l-52.1-26.1-17.1-51.2c-8.1-24.2-40.9-56.6-84.5-39.2l-81.2 32.5-62.5-31c.3-14.5-7.2-28.6-20.9-35.6l-11.1 21.7h-.2l-34.4-7c-1.8-.4-3.7.2-5 1.7-1.9 2.2-1.7 5.5.5 7.4l26.2 23z\"]\n};\nvar faSkiingNordic = {\n prefix: 'fas',\n iconName: 'skiing-nordic',\n icon: [576, 512, [], \"f7ca\", \"M336 96c26.5 0 48-21.5 48-48S362.5 0 336 0s-48 21.5-48 48 21.5 48 48 48zm216 320c-13.2 0-24 10.7-24 24 0 13.2-10.8 24-24 24h-69.5L460 285.6c11.7-4.7 20.1-16.2 20.1-29.6 0-17.7-14.3-32-32-32h-44L378 170.8c-12.5-25.5-35.5-44.2-61.8-50.9L245 98.7c-28.3-6.8-57.8-.5-80.8 17.1l-39.7 30.4c-14 10.7-16.7 30.8-5.9 44.9.7.9 1.7 1.3 2.4 2.1L66.9 464H24c-13.2 0-24 10.7-24 24s10.8 24 24 24h480c39.7 0 72-32.3 72-72 0-13.2-10.8-24-24-24zm-260.5 48h-96.9l43.1-91-22-13c-12.1-7.2-21.9-16.9-29.5-27.8L123.7 464H99.5l52.3-261.4c4.1-1 8.1-2.9 11.7-5.6l39.7-30.4c7.7-5.9 17.4-8 25.3-6.1l14.7 4.4-37.5 87.4c-12.6 29.5-1.3 64 26.3 80.3l85 50.2-25.5 81.2zm110.6 0h-43.6l23.6-75.5c5.9-20.8-2.9-43.1-21.6-54.4L299.3 298l31.3-78.3 20.3 41.4c8 16.3 24.9 26.9 43.1 26.9h33.3l-25.2 176z\"]\n};\nvar faSkull = {\n prefix: 'fas',\n iconName: 'skull',\n icon: [512, 512, [], \"f54c\", \"M256 0C114.6 0 0 100.3 0 224c0 70.1 36.9 132.6 94.5 173.7 9.6 6.9 15.2 18.1 13.5 29.9l-9.4 66.2c-1.4 9.6 6 18.2 15.7 18.2H192v-56c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v56h64v-56c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v56h77.7c9.7 0 17.1-8.6 15.7-18.2l-9.4-66.2c-1.7-11.7 3.8-23 13.5-29.9C475.1 356.6 512 294.1 512 224 512 100.3 397.4 0 256 0zm-96 320c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm192 0c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64z\"]\n};\nvar faSkullCrossbones = {\n prefix: 'fas',\n iconName: 'skull-crossbones',\n icon: [448, 512, [], \"f714\", \"M439.15 453.06L297.17 384l141.99-69.06c7.9-3.95 11.11-13.56 7.15-21.46L432 264.85c-3.95-7.9-13.56-11.11-21.47-7.16L224 348.41 37.47 257.69c-7.9-3.95-17.51-.75-21.47 7.16L1.69 293.48c-3.95 7.9-.75 17.51 7.15 21.46L150.83 384 8.85 453.06c-7.9 3.95-11.11 13.56-7.15 21.47l14.31 28.63c3.95 7.9 13.56 11.11 21.47 7.15L224 419.59l186.53 90.72c7.9 3.95 17.51.75 21.47-7.15l14.31-28.63c3.95-7.91.74-17.52-7.16-21.47zM150 237.28l-5.48 25.87c-2.67 12.62 5.42 24.85 16.45 24.85h126.08c11.03 0 19.12-12.23 16.45-24.85l-5.5-25.87c41.78-22.41 70-62.75 70-109.28C368 57.31 303.53 0 224 0S80 57.31 80 128c0 46.53 28.22 86.87 70 109.28zM280 112c17.65 0 32 14.35 32 32s-14.35 32-32 32-32-14.35-32-32 14.35-32 32-32zm-112 0c17.65 0 32 14.35 32 32s-14.35 32-32 32-32-14.35-32-32 14.35-32 32-32z\"]\n};\nvar faSlash = {\n prefix: 'fas',\n iconName: 'slash',\n icon: [640, 512, [], \"f715\", \"M594.53 508.63L6.18 53.9c-6.97-5.42-8.23-15.47-2.81-22.45L23.01 6.18C28.43-.8 38.49-2.06 45.47 3.37L633.82 458.1c6.97 5.42 8.23 15.47 2.81 22.45l-19.64 25.27c-5.42 6.98-15.48 8.23-22.46 2.81z\"]\n};\nvar faSleigh = {\n prefix: 'fas',\n iconName: 'sleigh',\n icon: [640, 512, [], \"f7cc\", \"M612.7 350.7l-9.3-7.4c-6.9-5.5-17-4.4-22.5 2.5l-10 12.5c-5.5 6.9-4.4 17 2.5 22.5l9.3 7.4c5.9 4.7 9.2 11.7 9.2 19.2 0 13.6-11 24.6-24.6 24.6H48c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h516c39 0 73.7-29.3 75.9-68.3 1.4-23.8-8.7-46.3-27.2-61zM32 224c0 59.6 40.9 109.2 96 123.5V400h64v-48h192v48h64v-48c53 0 96-43 96-96v-96c17.7 0 32-14.3 32-32s-14.3-32-32-32h-96v64c0 35.3-28.7 64-64 64h-20.7c-65.8 0-125.9-37.2-155.3-96-29.4-58.8-89.6-96-155.3-96H32C14.3 32 0 46.3 0 64s14.3 32 32 32v128z\"]\n};\nvar faSlidersH = {\n prefix: 'fas',\n iconName: 'sliders-h',\n icon: [512, 512, [], \"f1de\", \"M496 384H160v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h80v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h336c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160h-80v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h336v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h80c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160H288V48c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16C7.2 64 0 71.2 0 80v32c0 8.8 7.2 16 16 16h208v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h208c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16z\"]\n};\nvar faSmile = {\n prefix: 'fas',\n iconName: 'smile',\n icon: [496, 512, [], \"f118\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm194.8 170.2C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.6-16.3 11-36.7 24.6-20.5 22.4 26.9 55.2 42.2 90.2 42.2s67.8-15.4 90.2-42.2c13.4-16.2 38.1 4.2 24.6 20.5z\"]\n};\nvar faSmileBeam = {\n prefix: 'fas',\n iconName: 'smile-beam',\n icon: [496, 512, [], \"f5b8\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM112 223.4c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.3 7.4-15.8 4-15.1-4.5zm250.8 122.8C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.5-16.3 11-36.7 24.6-20.5 22.4 26.9 55.2 42.2 90.2 42.2s67.8-15.4 90.2-42.2c13.6-16.2 38.1 4.3 24.6 20.5zm6.2-118.3l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.6 8.6-11 11.9-15.1 4.5z\"]\n};\nvar faSmileWink = {\n prefix: 'fas',\n iconName: 'smile-wink',\n icon: [496, 512, [], \"f4da\", \"M0 256c0 137 111 248 248 248s248-111 248-248S385 8 248 8 0 119 0 256zm200-48c0 17.7-14.3 32-32 32s-32-14.3-32-32 14.3-32 32-32 32 14.3 32 32zm158.5 16.5c-14.8-13.2-46.2-13.2-61 0L288 233c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S384 197 388 222.2c1.7 11.1-11.4 18.3-19.8 10.8l-9.7-8.5zM157.8 325.8C180.2 352.7 213 368 248 368s67.8-15.4 90.2-42.2c13.6-16.2 38.1 4.2 24.6 20.5C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.5-16.3 11.2-36.7 24.6-20.4z\"]\n};\nvar faSmog = {\n prefix: 'fas',\n iconName: 'smog',\n icon: [640, 512, [], \"f75f\", \"M624 368H80c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h544c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm-480 96H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm416 0H224c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h336c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zM144 288h156.1c22.5 19.7 51.6 32 83.9 32s61.3-12.3 83.9-32H528c61.9 0 112-50.1 112-112S589.9 64 528 64c-18 0-34.7 4.6-49.7 12.1C454 31 406.8 0 352 0c-41 0-77.8 17.3-104 44.8C221.8 17.3 185 0 144 0 64.5 0 0 64.5 0 144s64.5 144 144 144z\"]\n};\nvar faSmoking = {\n prefix: 'fas',\n iconName: 'smoking',\n icon: [640, 512, [], \"f48d\", \"M632 352h-48c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8zM553.3 87.1c-5.7-3.8-9.3-10-9.3-16.8V8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v62.3c0 22 10.2 43.4 28.6 55.4 42.2 27.3 67.4 73.8 67.4 124V280c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-30.3c0-65.5-32.4-126.2-86.7-162.6zM432 352H48c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48h384c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16zm-32 112H224v-64h176v64zm87.7-322.4C463.8 125 448 99.3 448 70.3V8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v66.4c0 43.7 24.6 81.6 60.3 106.7 22.4 15.7 35.7 41.2 35.7 68.6V280c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-30.3c0-43.3-21-83.4-56.3-108.1zM536 352h-48c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8z\"]\n};\nvar faSmokingBan = {\n prefix: 'fas',\n iconName: 'smoking-ban',\n icon: [512, 512, [], \"f54d\", \"M96 304c0 8.8 7.2 16 16 16h117.5l-96-96H112c-8.8 0-16 7.2-16 16v64zM256 0C114.6 0 0 114.6 0 256s114.6 256 256 256 256-114.6 256-256S397.4 0 256 0zm0 448c-105.9 0-192-86.1-192-192 0-41.4 13.3-79.7 35.7-111.1l267.4 267.4C335.7 434.7 297.4 448 256 448zm45.2-192H384v32h-50.8l-32-32zm111.1 111.1L365.2 320H400c8.8 0 16-7.2 16-16v-64c0-8.8-7.2-16-16-16H269.2L144.9 99.7C176.3 77.3 214.6 64 256 64c105.9 0 192 86.1 192 192 0 41.4-13.3 79.7-35.7 111.1zM320.6 128c-15.6 0-28.6-11.2-31.4-25.9-.7-3.6-4-6.1-7.7-6.1h-16.2c-5 0-8.7 4.5-8 9.4 4.6 30.9 31.2 54.6 63.3 54.6 15.6 0 28.6 11.2 31.4 25.9.7 3.6 4 6.1 7.7 6.1h16.2c5 0 8.7-4.5 8-9.4-4.6-30.9-31.2-54.6-63.3-54.6z\"]\n};\nvar faSms = {\n prefix: 'fas',\n iconName: 'sms',\n icon: [512, 512, [], \"f7cd\", \"M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7 1.3 3 4.1 4.8 7.3 4.8 66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32zM128.2 304H116c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h12.3c6 0 10.4-3.5 10.4-6.6 0-1.3-.8-2.7-2.1-3.8l-21.9-18.8c-8.5-7.2-13.3-17.5-13.3-28.1 0-21.3 19-38.6 42.4-38.6H156c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8h-12.3c-6 0-10.4 3.5-10.4 6.6 0 1.3.8 2.7 2.1 3.8l21.9 18.8c8.5 7.2 13.3 17.5 13.3 28.1.1 21.3-19 38.6-42.4 38.6zm191.8-8c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8v-68.2l-24.8 55.8c-2.9 5.9-11.4 5.9-14.3 0L224 227.8V296c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V192c0-8.8 7.2-16 16-16h16c6.1 0 11.6 3.4 14.3 8.8l17.7 35.4 17.7-35.4c2.7-5.4 8.3-8.8 14.3-8.8h16c8.8 0 16 7.2 16 16v104zm48.3 8H356c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h12.3c6 0 10.4-3.5 10.4-6.6 0-1.3-.8-2.7-2.1-3.8l-21.9-18.8c-8.5-7.2-13.3-17.5-13.3-28.1 0-21.3 19-38.6 42.4-38.6H396c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8h-12.3c-6 0-10.4 3.5-10.4 6.6 0 1.3.8 2.7 2.1 3.8l21.9 18.8c8.5 7.2 13.3 17.5 13.3 28.1.1 21.3-18.9 38.6-42.3 38.6z\"]\n};\nvar faSnowboarding = {\n prefix: 'fas',\n iconName: 'snowboarding',\n icon: [512, 512, [], \"f7ce\", \"M432 96c26.5 0 48-21.5 48-48S458.5 0 432 0s-48 21.5-48 48 21.5 48 48 48zm28.8 153.6c5.8 4.3 12.5 6.4 19.2 6.4 9.7 0 19.3-4.4 25.6-12.8 10.6-14.1 7.8-34.2-6.4-44.8l-111.4-83.5c-13.8-10.3-29.1-18.4-45.4-23.8l-63.7-21.2-26.1-52.1C244.7 2 225.5-4.4 209.7 3.5c-15.8 7.9-22.2 27.1-14.3 42.9l29.1 58.1c5.7 11.4 15.6 19.9 27.7 24l16.4 5.5-41.2 20.6c-21.8 10.9-35.4 32.8-35.4 57.2v53.1l-74.1 24.7c-16.8 5.6-25.8 23.7-20.2 40.5 1.7 5.2 4.9 9.4 8.7 12.9l-38.7-14.1c-9.7-3.5-17.4-10.6-21.8-20-5.6-12-19.9-17.2-31.9-11.6s-17.2 19.9-11.6 31.9c9.8 21 27.1 36.9 48.9 44.8l364.8 132.7c9.7 3.5 19.7 5.3 29.7 5.3 12.5 0 24.9-2.7 36.5-8.2 12-5.6 17.2-19.9 11.6-31.9S474 454.7 462 460.3c-9.3 4.4-19.8 4.8-29.5 1.3l-90.8-33.1c8.7-4.1 15.6-11.8 17.8-21.9l21.9-102c3.9-18.2-3.2-37.2-18.1-48.4l-52-39 66-30.5 83.5 62.9zm-144.4 51.7l-19.7 92c-1.5 7.1-.1 13.9 2.8 20l-169.4-61.6c2.7-.2 5.4-.4 8-1.3l85-28.4c19.6-6.5 32.8-24.8 32.8-45.5V256l60.5 45.3z\"]\n};\nvar faSnowflake = {\n prefix: 'fas',\n iconName: 'snowflake',\n icon: [448, 512, [], \"f2dc\", \"M440.3 345.2l-33.8-19.5 26-7c8.2-2.2 13.1-10.7 10.9-18.9l-4-14.9c-2.2-8.2-10.7-13.1-18.9-10.9l-70.8 19-63.9-37 63.8-36.9 70.8 19c8.2 2.2 16.7-2.7 18.9-10.9l4-14.9c2.2-8.2-2.7-16.7-10.9-18.9l-26-7 33.8-19.5c7.4-4.3 9.9-13.7 5.7-21.1L430.4 119c-4.3-7.4-13.7-9.9-21.1-5.7l-33.8 19.5 7-26c2.2-8.2-2.7-16.7-10.9-18.9l-14.9-4c-8.2-2.2-16.7 2.7-18.9 10.9l-19 70.8-62.8 36.2v-77.5l53.7-53.7c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0L256 56.4V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v40.4l-19.7-19.7c-6.2-6.2-16.4-6.2-22.6 0L138.3 48c-6.3 6.2-6.3 16.4 0 22.6l53.7 53.7v77.5l-62.8-36.2-19-70.8c-2.2-8.2-10.7-13.1-18.9-10.9l-14.9 4c-8.2 2.2-13.1 10.7-10.9 18.9l7 26-33.8-19.5c-7.4-4.3-16.8-1.7-21.1 5.7L2.1 145.7c-4.3 7.4-1.7 16.8 5.7 21.1l33.8 19.5-26 7c-8.3 2.2-13.2 10.7-11 19l4 14.9c2.2 8.2 10.7 13.1 18.9 10.9l70.8-19 63.8 36.9-63.8 36.9-70.8-19c-8.2-2.2-16.7 2.7-18.9 10.9l-4 14.9c-2.2 8.2 2.7 16.7 10.9 18.9l26 7-33.8 19.6c-7.4 4.3-9.9 13.7-5.7 21.1l15.5 26.8c4.3 7.4 13.7 9.9 21.1 5.7l33.8-19.5-7 26c-2.2 8.2 2.7 16.7 10.9 18.9l14.9 4c8.2 2.2 16.7-2.7 18.9-10.9l19-70.8 62.8-36.2v77.5l-53.7 53.7c-6.3 6.2-6.3 16.4 0 22.6l11.3 11.3c6.2 6.2 16.4 6.2 22.6 0l19.7-19.7V496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-40.4l19.7 19.7c6.2 6.2 16.4 6.2 22.6 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6L256 387.7v-77.5l62.8 36.2 19 70.8c2.2 8.2 10.7 13.1 18.9 10.9l14.9-4c8.2-2.2 13.1-10.7 10.9-18.9l-7-26 33.8 19.5c7.4 4.3 16.8 1.7 21.1-5.7l15.5-26.8c4.3-7.3 1.8-16.8-5.6-21z\"]\n};\nvar faSnowman = {\n prefix: 'fas',\n iconName: 'snowman',\n icon: [512, 512, [], \"f7d0\", \"M510.9 152.3l-5.9-14.5c-3.3-8-12.6-11.9-20.8-8.7L456 140.6v-29c0-8.6-7.2-15.6-16-15.6h-16c-8.8 0-16 7-16 15.6v46.9c0 .5.3 1 .3 1.5l-56.4 23c-5.9-10-13.3-18.9-22-26.6 13.6-16.6 22-37.4 22-60.5 0-53-43-96-96-96s-96 43-96 96c0 23.1 8.5 43.9 22 60.5-8.7 7.7-16 16.6-22 26.6l-56.4-23c.1-.5.3-1 .3-1.5v-46.9C104 103 96.8 96 88 96H72c-8.8 0-16 7-16 15.6v29l-28.1-11.5c-8.2-3.2-17.5.7-20.8 8.7l-5.9 14.5c-3.3 8 .7 17.1 8.9 20.3l135.2 55.2c-.4 4-1.2 8-1.2 12.2 0 10.1 1.7 19.6 4.2 28.9C120.9 296.4 104 334.2 104 376c0 54 28.4 100.9 70.8 127.8 9.3 5.9 20.3 8.2 31.3 8.2h99.2c13.3 0 26.3-4.1 37.2-11.7 46.5-32.3 74.4-89.4 62.9-152.6-5.5-30.2-20.5-57.6-41.6-79 2.5-9.2 4.2-18.7 4.2-28.7 0-4.2-.8-8.1-1.2-12.2L502 172.6c8.1-3.1 12.1-12.2 8.9-20.3zM224 96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32 272c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-88s-16-23.2-16-32 7.2-16 16-16 16 7.2 16 16-16 32-16 32zm32-56c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\"]\n};\nvar faSnowplow = {\n prefix: 'fas',\n iconName: 'snowplow',\n icon: [640, 512, [], \"f7d2\", \"M120 376c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm238.6 49.4c-14.5-14.5-22.6-34.1-22.6-54.6V269.2c0-20.5 8.1-40.1 22.6-54.6l36.7-36.7c6.2-6.2 6.2-16.4 0-22.6l-22.6-22.6c-6.2-6.2-16.4-6.2-22.6 0l-36.7 36.7c-26.5 26.5-41.4 62.4-41.4 99.9V288h-64v-50.9c0-8.7-1.8-17.2-5.2-25.2L364.5 29.1C356.9 11.4 339.6 0 320.3 0H176c-26.5 0-48 21.5-48 48v112h-16c-26.5 0-48 21.5-48 48v91.2C26.3 317.2 0 355.4 0 400c0 61.9 50.1 112 112 112h256c61.9 0 112-50.1 112-112 0-17.3-4.2-33.4-11.2-48H512v18.7c0 37.5 14.9 73.4 41.4 99.9l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0l22.6-22.6c6.2-6.2 6.2-16.4 0-22.6l-36.7-36.7zM192 64h117.8l68.6 160H256l-64-64V64zm176 384H112c-26.5 0-48-21.5-48-48s21.5-48 48-48h256c26.5 0 48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faSoap = {\n prefix: 'fas',\n iconName: 'soap',\n icon: [512, 512, [], \"e06e\", \"M416,192a95.42,95.42,0,0,1-30.94,70.21A95.8,95.8,0,0,1,352,448H160a96,96,0,0,1,0-192h88.91A95.3,95.3,0,0,1,224,192H96A96,96,0,0,0,0,288V416a96,96,0,0,0,96,96H416a96,96,0,0,0,96-96V288A96,96,0,0,0,416,192Zm-96,64a64,64,0,1,0-64-64A64,64,0,0,0,320,256ZM208,96a48,48,0,1,0-48-48A48,48,0,0,0,208,96ZM384,64a32,32,0,1,0-32-32A32,32,0,0,0,384,64ZM160,288a64,64,0,0,0,0,128H352a64,64,0,0,0,0-128Z\"]\n};\nvar faSocks = {\n prefix: 'fas',\n iconName: 'socks',\n icon: [512, 512, [], \"f696\", \"M214.66 311.01L288 256V96H128v176l-86.65 64.61c-39.4 29.56-53.86 84.42-29.21 127.06C30.39 495.25 63.27 512 96.08 512c20.03 0 40.25-6.25 57.52-19.2l21.86-16.39c-29.85-55.38-13.54-125.84 39.2-165.4zM288 32c0-11.05 3.07-21.3 8.02-30.38C293.4.92 290.85 0 288 0H160c-17.67 0-32 14.33-32 32v32h160V32zM480 0H352c-17.67 0-32 14.33-32 32v32h192V32c0-17.67-14.33-32-32-32zM320 272l-86.13 64.61c-39.4 29.56-53.86 84.42-29.21 127.06 18.25 31.58 50.61 48.33 83.42 48.33 20.03 0 40.25-6.25 57.52-19.2l115.2-86.4A127.997 127.997 0 0 0 512 304V96H320v176z\"]\n};\nvar faSolarPanel = {\n prefix: 'fas',\n iconName: 'solar-panel',\n icon: [640, 512, [], \"f5ba\", \"M431.98 448.01l-47.97.05V416h-128v32.21l-47.98.05c-8.82.01-15.97 7.16-15.98 15.99l-.05 31.73c-.01 8.85 7.17 16.03 16.02 16.02l223.96-.26c8.82-.01 15.97-7.16 15.98-15.98l.04-31.73c.01-8.85-7.17-16.03-16.02-16.02zM585.2 26.74C582.58 11.31 568.99 0 553.06 0H86.93C71 0 57.41 11.31 54.79 26.74-3.32 369.16.04 348.08.03 352c-.03 17.32 14.29 32 32.6 32h574.74c18.23 0 32.51-14.56 32.59-31.79.02-4.08 3.35 16.95-54.76-325.47zM259.83 64h120.33l9.77 96H250.06l9.77-96zm-75.17 256H71.09L90.1 208h105.97l-11.41 112zm16.29-160H98.24l16.29-96h96.19l-9.77 96zm32.82 160l11.4-112h149.65l11.4 112H233.77zm195.5-256h96.19l16.29 96H439.04l-9.77-96zm26.06 256l-11.4-112H549.9l19.01 112H455.33z\"]\n};\nvar faSort = {\n prefix: 'fas',\n iconName: 'sort',\n icon: [320, 512, [], \"f0dc\", \"M41 288h238c21.4 0 32.1 25.9 17 41L177 448c-9.4 9.4-24.6 9.4-33.9 0L24 329c-15.1-15.1-4.4-41 17-41zm255-105L177 64c-9.4-9.4-24.6-9.4-33.9 0L24 183c-15.1 15.1-4.4 41 17 41h238c21.4 0 32.1-25.9 17-41z\"]\n};\nvar faSortAlphaDown = {\n prefix: 'fas',\n iconName: 'sort-alpha-down',\n icon: [448, 512, [], \"f15d\", \"M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm240-64H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 446.37V464a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 321.63V304a16 16 0 0 0-16-16zm31.06-85.38l-59.27-160A16 16 0 0 0 372.72 32h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 224h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 224H432a16 16 0 0 0 15.06-21.38zM335.61 144L352 96l16.39 48z\"]\n};\nvar faSortAlphaDownAlt = {\n prefix: 'fas',\n iconName: 'sort-alpha-down-alt',\n icon: [448, 512, [], \"f881\", \"M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm112-128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 65.63V48a16 16 0 0 0-16-16H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 190.37V208a16 16 0 0 0 16 16zm159.06 234.62l-59.27-160A16 16 0 0 0 372.72 288h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 480h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 480H432a16 16 0 0 0 15.06-21.38zM335.61 400L352 352l16.39 48z\"]\n};\nvar faSortAlphaUp = {\n prefix: 'fas',\n iconName: 'sort-alpha-up',\n icon: [448, 512, [], \"f15e\", \"M16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160zm400 128H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 446.37V464a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 321.63V304a16 16 0 0 0-16-16zm31.06-85.38l-59.27-160A16 16 0 0 0 372.72 32h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 224h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 224H432a16 16 0 0 0 15.06-21.38zM335.61 144L352 96l16.39 48z\"]\n};\nvar faSortAlphaUpAlt = {\n prefix: 'fas',\n iconName: 'sort-alpha-up-alt',\n icon: [448, 512, [], \"f882\", \"M16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160zm272 64h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 65.63V48a16 16 0 0 0-16-16H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 190.37V208a16 16 0 0 0 16 16zm159.06 234.62l-59.27-160A16 16 0 0 0 372.72 288h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 480h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 480H432a16 16 0 0 0 15.06-21.38zM335.61 400L352 352l16.39 48z\"]\n};\nvar faSortAmountDown = {\n prefix: 'fas',\n iconName: 'sort-amount-down',\n icon: [512, 512, [], \"f160\", \"M304 416h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-128-64h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.37 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm256-192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-64 128H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM496 32H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faSortAmountDownAlt = {\n prefix: 'fas',\n iconName: 'sort-amount-down-alt',\n icon: [512, 512, [], \"f884\", \"M240 96h64a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0 128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm256 192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-256-64h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm-64 0h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.37 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352z\"]\n};\nvar faSortAmountUp = {\n prefix: 'fas',\n iconName: 'sort-amount-up',\n icon: [512, 512, [], \"f161\", \"M304 416h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.77 160 16 160zm416 0H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-64 128H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM496 32H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faSortAmountUpAlt = {\n prefix: 'fas',\n iconName: 'sort-amount-up-alt',\n icon: [512, 512, [], \"f885\", \"M240 96h64a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0 128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm256 192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-256-64h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zM16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.39-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160z\"]\n};\nvar faSortDown = {\n prefix: 'fas',\n iconName: 'sort-down',\n icon: [320, 512, [], \"f0dd\", \"M41 288h238c21.4 0 32.1 25.9 17 41L177 448c-9.4 9.4-24.6 9.4-33.9 0L24 329c-15.1-15.1-4.4-41 17-41z\"]\n};\nvar faSortNumericDown = {\n prefix: 'fas',\n iconName: 'sort-numeric-down',\n icon: [448, 512, [], \"f162\", \"M304 96h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-16V48a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 96zm26.15 162.91a79 79 0 0 0-55 54.17c-14.25 51.05 21.21 97.77 68.85 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.76 86.25-61.61 86.25-132V336c-.02-51.21-48.4-91.34-101.85-77.09zM352 356a20 20 0 1 1 20-20 20 20 0 0 1-20 20zm-176-4h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352z\"]\n};\nvar faSortNumericDownAlt = {\n prefix: 'fas',\n iconName: 'sort-numeric-down-alt',\n icon: [448, 512, [], \"f886\", \"M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm224 64h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 352h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM330.17 34.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.77 86.25-61.61 86.25-132V112c-.02-51.21-48.4-91.34-101.85-77.09zM352 132a20 20 0 1 1 20-20 20 20 0 0 1-20 20z\"]\n};\nvar faSortNumericUp = {\n prefix: 'fas',\n iconName: 'sort-numeric-up',\n icon: [448, 512, [], \"f163\", \"M330.17 258.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.76 86.25-61.61 86.25-132V336c-.02-51.21-48.4-91.34-101.85-77.09zM352 356a20 20 0 1 1 20-20 20 20 0 0 1-20 20zM304 96h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-16V48a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 96zM107.31 36.69a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31z\"]\n};\nvar faSortNumericUpAlt = {\n prefix: 'fas',\n iconName: 'sort-numeric-up-alt',\n icon: [448, 512, [], \"f887\", \"M107.31 36.69a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31zM400 416h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 352h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM330.17 34.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.77 86.25-61.61 86.25-132V112c-.02-51.21-48.4-91.34-101.85-77.09zM352 132a20 20 0 1 1 20-20 20 20 0 0 1-20 20z\"]\n};\nvar faSortUp = {\n prefix: 'fas',\n iconName: 'sort-up',\n icon: [320, 512, [], \"f0de\", \"M279 224H41c-21.4 0-32.1-25.9-17-41L143 64c9.4-9.4 24.6-9.4 33.9 0l119 119c15.2 15.1 4.5 41-16.9 41z\"]\n};\nvar faSpa = {\n prefix: 'fas',\n iconName: 'spa',\n icon: [576, 512, [], \"f5bb\", \"M568.25 192c-29.04.13-135.01 6.16-213.84 83-33.12 29.63-53.36 63.3-66.41 94.86-13.05-31.56-33.29-65.23-66.41-94.86-78.83-76.84-184.8-82.87-213.84-83-4.41-.02-7.79 3.4-7.75 7.82.23 27.92 7.14 126.14 88.77 199.3C172.79 480.94 256 480 288 480s115.19.95 199.23-80.88c81.64-73.17 88.54-171.38 88.77-199.3.04-4.42-3.34-7.84-7.75-7.82zM287.98 302.6c12.82-18.85 27.6-35.78 44.09-50.52 19.09-18.61 39.58-33.3 60.26-45.18-16.44-70.5-51.72-133.05-96.73-172.22-4.11-3.58-11.02-3.58-15.14 0-44.99 39.14-80.27 101.63-96.74 172.07 20.37 11.7 40.5 26.14 59.22 44.39a282.768 282.768 0 0 1 45.04 51.46z\"]\n};\nvar faSpaceShuttle = {\n prefix: 'fas',\n iconName: 'space-shuttle',\n icon: [640, 512, [], \"f197\", \"M592.604 208.244C559.735 192.836 515.777 184 472 184H186.327c-4.952-6.555-10.585-11.978-16.72-16H376C229.157 137.747 219.403 32 96.003 32H96v128H80V32c-26.51 0-48 28.654-48 64v64c-23.197 0-32 10.032-32 24v40c0 13.983 8.819 24 32 24v16c-23.197 0-32 10.032-32 24v40c0 13.983 8.819 24 32 24v64c0 35.346 21.49 64 48 64V352h16v128h.003c123.4 0 133.154-105.747 279.997-136H169.606c6.135-4.022 11.768-9.445 16.72-16H472c43.777 0 87.735-8.836 120.604-24.244C622.282 289.845 640 271.992 640 256s-17.718-33.845-47.396-47.756zM488 296a8 8 0 0 1-8-8v-64a8 8 0 0 1 8-8c31.909 0 31.942 80 0 80z\"]\n};\nvar faSpellCheck = {\n prefix: 'fas',\n iconName: 'spell-check',\n icon: [576, 512, [], \"f891\", \"M272 256h91.36c43.2 0 82-32.2 84.51-75.34a79.82 79.82 0 0 0-25.26-63.07 79.81 79.81 0 0 0 9.06-44.91C427.9 30.57 389.3 0 347 0h-75a16 16 0 0 0-16 16v224a16 16 0 0 0 16 16zm40-200h40a24 24 0 0 1 0 48h-40zm0 96h56a24 24 0 0 1 0 48h-56zM155.12 22.25A32 32 0 0 0 124.64 0H99.36a32 32 0 0 0-30.48 22.25L.59 235.73A16 16 0 0 0 16 256h24.93a16 16 0 0 0 15.42-11.73L68.29 208h87.42l11.94 36.27A16 16 0 0 0 183.07 256H208a16 16 0 0 0 15.42-20.27zM89.37 144L112 75.3l22.63 68.7zm482 132.48l-45.21-45.3a15.88 15.88 0 0 0-22.59 0l-151.5 151.5-55.41-55.5a15.88 15.88 0 0 0-22.59 0l-45.3 45.3a16 16 0 0 0 0 22.59l112 112.21a15.89 15.89 0 0 0 22.6 0l208-208.21a16 16 0 0 0-.02-22.59z\"]\n};\nvar faSpider = {\n prefix: 'fas',\n iconName: 'spider',\n icon: [576, 512, [], \"f717\", \"M151.17 167.35L177.1 176h4.67l5.22-26.12c.72-3.58 1.8-7.58 3.21-11.79l-20.29-40.58 23.8-71.39c2.79-8.38-1.73-17.44-10.12-20.24L168.42.82c-8.38-2.8-17.45 1.73-20.24 10.12l-25.89 77.68a32.04 32.04 0 0 0 1.73 24.43l27.15 54.3zm422.14 182.03l-52.75-79.12a32.002 32.002 0 0 0-26.62-14.25H416l68.99-24.36a32.03 32.03 0 0 0 16.51-12.61l53.6-80.41c4.9-7.35 2.91-17.29-4.44-22.19l-13.31-8.88c-7.35-4.9-17.29-2.91-22.19 4.44l-50.56 75.83L404.1 208H368l-10.37-51.85C355.44 145.18 340.26 96 288 96c-52.26 0-67.44 49.18-69.63 60.15L208 208h-36.1l-60.49-20.17L60.84 112c-4.9-7.35-14.83-9.34-22.19-4.44l-13.31 8.88c-7.35 4.9-9.34 14.83-4.44 22.19l53.6 80.41a32.03 32.03 0 0 0 16.51 12.61L160 256H82.06a32.02 32.02 0 0 0-26.63 14.25L2.69 349.38c-4.9 7.35-2.92 17.29 4.44 22.19l13.31 8.88c7.35 4.9 17.29 2.91 22.19-4.44l48-72h47.06l-60.83 97.33A31.988 31.988 0 0 0 72 418.3V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-73.11l74.08-118.53c-1.01 14.05-2.08 28.11-2.08 42.21C192 399.64 232.76 448 288 448s96-48.36 96-101.43c0-14.1-1.08-28.16-2.08-42.21L456 422.89V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-77.71c0-6-1.69-11.88-4.86-16.96L438.31 304h47.06l48 72c4.9 7.35 14.84 9.34 22.19 4.44l13.31-8.88c7.36-4.9 9.34-14.83 4.44-22.18zM406.09 97.51l-20.29 40.58c1.41 4.21 2.49 8.21 3.21 11.79l5.22 26.12h4.67l25.93-8.65 27.15-54.3a31.995 31.995 0 0 0 1.73-24.43l-25.89-77.68C425.03 2.56 415.96-1.98 407.58.82l-15.17 5.06c-8.38 2.8-12.91 11.86-10.12 20.24l23.8 71.39z\"]\n};\nvar faSpinner = {\n prefix: 'fas',\n iconName: 'spinner',\n icon: [512, 512, [], \"f110\", \"M304 48c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zm-48 368c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm208-208c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zM96 256c0-26.51-21.49-48-48-48S0 229.49 0 256s21.49 48 48 48 48-21.49 48-48zm12.922 99.078c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.491-48-48-48zm294.156 0c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.49-48-48-48zM108.922 60.922c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.491-48-48-48z\"]\n};\nvar faSplotch = {\n prefix: 'fas',\n iconName: 'splotch',\n icon: [512, 512, [], \"f5bc\", \"M472.29 195.89l-67.06-22.95c-19.28-6.6-33.54-20.92-38.14-38.3L351.1 74.19c-11.58-43.77-76.57-57.13-109.98-22.62l-46.14 47.67c-13.26 13.71-33.54 20.93-54.2 19.31l-71.88-5.62c-52.05-4.07-86.93 44.88-59.03 82.83l38.54 52.42c11.08 15.07 12.82 33.86 4.64 50.24L24.62 355.4c-20.59 41.25 22.84 84.87 73.49 73.81l69.96-15.28c20.11-4.39 41.45 0 57.07 11.73l54.32 40.83c39.32 29.56 101.04 7.57 104.45-37.22l4.7-61.86c1.35-17.79 12.8-33.86 30.63-42.99l62-31.74c44.88-22.96 39.59-80.17-8.95-96.79z\"]\n};\nvar faSprayCan = {\n prefix: 'fas',\n iconName: 'spray-can',\n icon: [512, 512, [], \"f5bd\", \"M224 32c0-17.67-14.33-32-32-32h-64c-17.67 0-32 14.33-32 32v96h128V32zm256 96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm-256 32H96c-53.02 0-96 42.98-96 96v224c0 17.67 14.33 32 32 32h256c17.67 0 32-14.33 32-32V256c0-53.02-42.98-96-96-96zm-64 256c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zM480 96c17.67 0 32-14.33 32-32s-14.33-32-32-32-32 14.33-32 32 14.33 32 32 32zm-96 32c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm-96-96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm96 0c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm96 192c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z\"]\n};\nvar faSquare = {\n prefix: 'fas',\n iconName: 'square',\n icon: [448, 512, [], \"f0c8\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z\"]\n};\nvar faSquareFull = {\n prefix: 'fas',\n iconName: 'square-full',\n icon: [512, 512, [], \"f45c\", \"M512 512H0V0h512v512z\"]\n};\nvar faSquareRootAlt = {\n prefix: 'fas',\n iconName: 'square-root-alt',\n icon: [576, 512, [], \"f698\", \"M571.31 251.31l-22.62-22.62c-6.25-6.25-16.38-6.25-22.63 0L480 274.75l-46.06-46.06c-6.25-6.25-16.38-6.25-22.63 0l-22.62 22.62c-6.25 6.25-6.25 16.38 0 22.63L434.75 320l-46.06 46.06c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0L480 365.25l46.06 46.06c6.25 6.25 16.38 6.25 22.63 0l22.62-22.62c6.25-6.25 6.25-16.38 0-22.63L525.25 320l46.06-46.06c6.25-6.25 6.25-16.38 0-22.63zM552 0H307.65c-14.54 0-27.26 9.8-30.95 23.87l-84.79 322.8-58.41-106.1A32.008 32.008 0 0 0 105.47 224H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h43.62l88.88 163.73C168.99 503.5 186.3 512 204.94 512c17.27 0 44.44-9 54.28-41.48L357.03 96H552c13.25 0 24-10.75 24-24V24c0-13.26-10.75-24-24-24z\"]\n};\nvar faStamp = {\n prefix: 'fas',\n iconName: 'stamp',\n icon: [512, 512, [], \"f5bf\", \"M32 512h448v-64H32v64zm384-256h-66.56c-16.26 0-29.44-13.18-29.44-29.44v-9.46c0-27.37 8.88-53.41 21.46-77.72 9.11-17.61 12.9-38.39 9.05-60.42-6.77-38.78-38.47-70.7-77.26-77.45C212.62-9.04 160 37.33 160 96c0 14.16 3.12 27.54 8.69 39.58C182.02 164.43 192 194.7 192 226.49v.07c0 16.26-13.18 29.44-29.44 29.44H96c-53.02 0-96 42.98-96 96v32c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32v-32c0-53.02-42.98-96-96-96z\"]\n};\nvar faStar = {\n prefix: 'fas',\n iconName: 'star',\n icon: [576, 512, [], \"f005\", \"M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z\"]\n};\nvar faStarAndCrescent = {\n prefix: 'fas',\n iconName: 'star-and-crescent',\n icon: [512, 512, [], \"f699\", \"M340.47 466.36c-1.45 0-6.89.46-9.18.46-116.25 0-210.82-94.57-210.82-210.82S215.04 45.18 331.29 45.18c2.32 0 7.7.46 9.18.46 7.13 0 13.33-5.03 14.75-12.07 1.46-7.25-2.55-14.49-9.47-17.09C316.58 5.54 286.39 0 256 0 114.84 0 0 114.84 0 256s114.84 256 256 256c30.23 0 60.28-5.49 89.32-16.32 5.96-2.02 10.28-7.64 10.28-14.26 0-8.09-6.39-15.06-15.13-15.06zm162.99-252.5l-76.38-11.1-34.16-69.21c-1.83-3.7-5.38-5.55-8.93-5.55s-7.1 1.85-8.93 5.55l-34.16 69.21-76.38 11.1c-8.17 1.18-11.43 11.22-5.52 16.99l55.27 53.87-13.05 76.07c-1.11 6.44 4.01 11.66 9.81 11.66 1.53 0 3.11-.36 4.64-1.17L384 335.37l68.31 35.91c1.53.8 3.11 1.17 4.64 1.17 5.8 0 10.92-5.23 9.81-11.66l-13.05-76.07 55.27-53.87c5.91-5.77 2.65-15.81-5.52-16.99z\"]\n};\nvar faStarHalf = {\n prefix: 'fas',\n iconName: 'star-half',\n icon: [576, 512, [], \"f089\", \"M288 0c-11.4 0-22.8 5.9-28.7 17.8L194 150.2 47.9 171.4c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.1 23 46 46.4 33.7L288 439.6V0z\"]\n};\nvar faStarHalfAlt = {\n prefix: 'fas',\n iconName: 'star-half-alt',\n icon: [536, 512, [], \"f5c0\", \"M508.55 171.51L362.18 150.2 296.77 17.81C290.89 5.98 279.42 0 267.95 0c-11.4 0-22.79 5.9-28.69 17.81l-65.43 132.38-146.38 21.29c-26.25 3.8-36.77 36.09-17.74 54.59l105.89 103-25.06 145.48C86.98 495.33 103.57 512 122.15 512c4.93 0 10-1.17 14.87-3.75l130.95-68.68 130.94 68.7c4.86 2.55 9.92 3.71 14.83 3.71 18.6 0 35.22-16.61 31.66-37.4l-25.03-145.49 105.91-102.98c19.04-18.5 8.52-50.8-17.73-54.6zm-121.74 123.2l-18.12 17.62 4.28 24.88 19.52 113.45-102.13-53.59-22.38-11.74.03-317.19 51.03 103.29 11.18 22.63 25.01 3.64 114.23 16.63-82.65 80.38z\"]\n};\nvar faStarOfDavid = {\n prefix: 'fas',\n iconName: 'star-of-david',\n icon: [464, 512, [], \"f69a\", \"M405.68 256l53.21-89.39C473.3 142.4 455.48 112 426.88 112H319.96l-55.95-93.98C256.86 6.01 244.43 0 232 0s-24.86 6.01-32.01 18.02L144.04 112H37.11c-28.6 0-46.42 30.4-32.01 54.61L58.32 256 5.1 345.39C-9.31 369.6 8.51 400 37.11 400h106.93l55.95 93.98C207.14 505.99 219.57 512 232 512s24.86-6.01 32.01-18.02L319.96 400h106.93c28.6 0 46.42-30.4 32.01-54.61L405.68 256zm-12.78-88l-19.8 33.26L353.3 168h39.6zm-52.39 88l-52.39 88H175.88l-52.39-88 52.38-88h112.25l52.39 88zM232 73.72L254.79 112h-45.57L232 73.72zM71.1 168h39.6l-19.8 33.26L71.1 168zm0 176l19.8-33.26L110.7 344H71.1zM232 438.28L209.21 400h45.57L232 438.28zM353.29 344l19.8-33.26L392.9 344h-39.61z\"]\n};\nvar faStarOfLife = {\n prefix: 'fas',\n iconName: 'star-of-life',\n icon: [480, 512, [], \"f621\", \"M471.99 334.43L336.06 256l135.93-78.43c7.66-4.42 10.28-14.2 5.86-21.86l-32.02-55.43c-4.42-7.65-14.21-10.28-21.87-5.86l-135.93 78.43V16c0-8.84-7.17-16-16.01-16h-64.04c-8.84 0-16.01 7.16-16.01 16v156.86L56.04 94.43c-7.66-4.42-17.45-1.79-21.87 5.86L2.15 155.71c-4.42 7.65-1.8 17.44 5.86 21.86L143.94 256 8.01 334.43c-7.66 4.42-10.28 14.21-5.86 21.86l32.02 55.43c4.42 7.65 14.21 10.27 21.87 5.86l135.93-78.43V496c0 8.84 7.17 16 16.01 16h64.04c8.84 0 16.01-7.16 16.01-16V339.14l135.93 78.43c7.66 4.42 17.45 1.8 21.87-5.86l32.02-55.43c4.42-7.65 1.8-17.43-5.86-21.85z\"]\n};\nvar faStepBackward = {\n prefix: 'fas',\n iconName: 'step-backward',\n icon: [448, 512, [], \"f048\", \"M64 468V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12v176.4l195.5-181C352.1 22.3 384 36.6 384 64v384c0 27.4-31.9 41.7-52.5 24.6L136 292.7V468c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12z\"]\n};\nvar faStepForward = {\n prefix: 'fas',\n iconName: 'step-forward',\n icon: [448, 512, [], \"f051\", \"M384 44v424c0 6.6-5.4 12-12 12h-48c-6.6 0-12-5.4-12-12V291.6l-195.5 181C95.9 489.7 64 475.4 64 448V64c0-27.4 31.9-41.7 52.5-24.6L312 219.3V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12z\"]\n};\nvar faStethoscope = {\n prefix: 'fas',\n iconName: 'stethoscope',\n icon: [512, 512, [], \"f0f1\", \"M447.1 112c-34.2.5-62.3 28.4-63 62.6-.5 24.3 12.5 45.6 32 56.8V344c0 57.3-50.2 104-112 104-60 0-109.2-44.1-111.9-99.2C265 333.8 320 269.2 320 192V36.6c0-11.4-8.1-21.3-19.3-23.5L237.8.5c-13-2.6-25.6 5.8-28.2 18.8L206.4 35c-2.6 13 5.8 25.6 18.8 28.2l30.7 6.1v121.4c0 52.9-42.2 96.7-95.1 97.2-53.4.5-96.9-42.7-96.9-96V69.4l30.7-6.1c13-2.6 21.4-15.2 18.8-28.2l-3.1-15.7C107.7 6.4 95.1-2 82.1.6L19.3 13C8.1 15.3 0 25.1 0 36.6V192c0 77.3 55.1 142 128.1 156.8C130.7 439.2 208.6 512 304 512c97 0 176-75.4 176-168V231.4c19.1-11.1 32-31.7 32-55.4 0-35.7-29.2-64.5-64.9-64zm.9 80c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\"]\n};\nvar faStickyNote = {\n prefix: 'fas',\n iconName: 'sticky-note',\n icon: [448, 512, [], \"f249\", \"M312 320h136V56c0-13.3-10.7-24-24-24H24C10.7 32 0 42.7 0 56v400c0 13.3 10.7 24 24 24h264V344c0-13.2 10.8-24 24-24zm129 55l-98 98c-4.5 4.5-10.6 7-17 7h-6V352h128v6.1c0 6.3-2.5 12.4-7 16.9z\"]\n};\nvar faStop = {\n prefix: 'fas',\n iconName: 'stop',\n icon: [448, 512, [], \"f04d\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z\"]\n};\nvar faStopCircle = {\n prefix: 'fas',\n iconName: 'stop-circle',\n icon: [512, 512, [], \"f28d\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm96 328c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h160c8.8 0 16 7.2 16 16v160z\"]\n};\nvar faStopwatch = {\n prefix: 'fas',\n iconName: 'stopwatch',\n icon: [448, 512, [], \"f2f2\", \"M432 304c0 114.9-93.1 208-208 208S16 418.9 16 304c0-104 76.3-190.2 176-205.5V64h-28c-6.6 0-12-5.4-12-12V12c0-6.6 5.4-12 12-12h120c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-28v34.5c37.5 5.8 71.7 21.6 99.7 44.6l27.5-27.5c4.7-4.7 12.3-4.7 17 0l28.3 28.3c4.7 4.7 4.7 12.3 0 17l-29.4 29.4-.6.6C419.7 223.3 432 262.2 432 304zm-176 36V188.5c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12V340c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12z\"]\n};\nvar faStopwatch20 = {\n prefix: 'fas',\n iconName: 'stopwatch-20',\n icon: [448, 512, [], \"e06f\", \"M398.5,190.91l.59-.61,26.59-26.58a16,16,0,0,0,0-22.63L403,118.41a16,16,0,0,0-22.63,0l-24.68,24.68A206.68,206.68,0,0,0,256,98.5V64h32a16,16,0,0,0,16-16V16A16,16,0,0,0,288,0H160a16.05,16.05,0,0,0-16,16V48a16.05,16.05,0,0,0,16,16h32V98.5A207.92,207.92,0,0,0,16.09,297.57C12.64,411.5,106.76,510.22,220.72,512,337.13,513.77,432,420,432,304A206,206,0,0,0,398.5,190.91ZM204.37,377.55a8.2,8.2,0,0,1,8.32,8.07v22.31a8.2,8.2,0,0,1-8.32,8.07H121.52a16.46,16.46,0,0,1-16.61-17.62c2.78-35.22,14.67-57.41,38.45-91.37,20.42-29.19,27.1-37.32,27.1-62.34,0-16.92-1.79-24.27-12.21-24.27-9.39,0-12.69,7.4-12.69,22.68v5.23a8.2,8.2,0,0,1-8.33,8.07h-24.9a8.2,8.2,0,0,1-8.33-8.07v-4.07c0-27.3,8.48-60.24,56.43-60.24,43,0,55.57,25.85,55.57,61,0,35.58-12.44,51.21-34.35,81.31-11.56,15-24.61,35.57-26.41,51.2ZM344,352.32c0,35.16-12.3,63.68-57.23,63.68C243.19,416,232,386.48,232,352.55V247.22c0-40.73,19.58-63.22,56.2-63.22C325,184,344,206.64,344,245.3ZM287.87,221.73c-9.41,0-13.23,7.5-13.23,20V357.68c0,13.11,3.59,20.59,13.23,20.59s13-8,13-21.27V241.06C300.89,229.79,297.88,221.73,287.87,221.73Z\"]\n};\nvar faStore = {\n prefix: 'fas',\n iconName: 'store',\n icon: [616, 512, [], \"f54e\", \"M602 118.6L537.1 15C531.3 5.7 521 0 510 0H106C95 0 84.7 5.7 78.9 15L14 118.6c-33.5 53.5-3.8 127.9 58.8 136.4 4.5.6 9.1.9 13.7.9 29.6 0 55.8-13 73.8-33.1 18 20.1 44.3 33.1 73.8 33.1 29.6 0 55.8-13 73.8-33.1 18 20.1 44.3 33.1 73.8 33.1 29.6 0 55.8-13 73.8-33.1 18.1 20.1 44.3 33.1 73.8 33.1 4.7 0 9.2-.3 13.7-.9 62.8-8.4 92.6-82.8 59-136.4zM529.5 288c-10 0-19.9-1.5-29.5-3.8V384H116v-99.8c-9.6 2.2-19.5 3.8-29.5 3.8-6 0-12.1-.4-18-1.2-5.6-.8-11.1-2.1-16.4-3.6V480c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32V283.2c-5.4 1.6-10.8 2.9-16.4 3.6-6.1.8-12.1 1.2-18.2 1.2z\"]\n};\nvar faStoreAlt = {\n prefix: 'fas',\n iconName: 'store-alt',\n icon: [640, 512, [], \"f54f\", \"M320 384H128V224H64v256c0 17.7 14.3 32 32 32h256c17.7 0 32-14.3 32-32V224h-64v160zm314.6-241.8l-85.3-128c-6-8.9-16-14.2-26.7-14.2H117.4c-10.7 0-20.7 5.3-26.6 14.2l-85.3 128c-14.2 21.3 1 49.8 26.6 49.8H608c25.5 0 40.7-28.5 26.6-49.8zM512 496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V224h-64v272z\"]\n};\nvar faStoreAltSlash = {\n prefix: 'fas',\n iconName: 'store-alt-slash',\n icon: [640, 512, [], \"e070\", \"M17.89,123.62,5.51,142.2c-14.2,21.3,1,49.8,26.59,49.8h74.26ZM576,413.42V224H512V364L384,265V224H330.92l-41.4-32H608c25.5,0,40.7-28.5,26.59-49.8l-85.29-128A32.18,32.18,0,0,0,522.6,0H117.42A31.87,31.87,0,0,0,90.81,14.2l-10.66,16L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.46A16,16,0,0,0,6.18,53.91L594.53,508.63A16,16,0,0,0,617,505.81l19.64-25.26a16,16,0,0,0-2.81-22.45ZM320,384H128V224H64V480a32,32,0,0,0,32,32H352a32,32,0,0,0,32-32V406.59l-64-49.47Z\"]\n};\nvar faStoreSlash = {\n prefix: 'fas',\n iconName: 'store-slash',\n icon: [640, 512, [], \"e071\", \"M121.51,384V284.2a119.43,119.43,0,0,1-28,3.8,123.46,123.46,0,0,1-17.1-1.2,114.88,114.88,0,0,1-15.58-3.6V480c0,17.7,13.59,32,30.4,32H505.75L348.42,384Zm-28-128.09c25.1,0,47.29-10.72,64-27.24L24,120.05c-30.52,53.39-2.45,126.53,56.49,135A95.68,95.68,0,0,0,93.48,255.91ZM602.13,458.09,547.2,413.41V283.2a93.5,93.5,0,0,1-15.57,3.6,127.31,127.31,0,0,1-17.29,1.2,114.89,114.89,0,0,1-28-3.8v79.68L348.52,251.77a88.06,88.06,0,0,0,25.41,4.14c28.11,0,53-13,70.11-33.11,17.19,20.11,42.08,33.11,70.11,33.11a94.31,94.31,0,0,0,13-.91c59.66-8.41,88-82.8,56.06-136.4L521.55,15A30.1,30.1,0,0,0,495.81,0H112A30.11,30.11,0,0,0,86.27,15L76.88,30.78,43.19,3.38A14.68,14.68,0,0,0,21.86,6.19L3.2,31.45A16.58,16.58,0,0,0,5.87,53.91L564.81,508.63a14.69,14.69,0,0,0,21.33-2.82l18.66-25.26A16.58,16.58,0,0,0,602.13,458.09Z\"]\n};\nvar faStream = {\n prefix: 'fas',\n iconName: 'stream',\n icon: [512, 512, [], \"f550\", \"M16 128h416c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16H16C7.16 32 0 39.16 0 48v64c0 8.84 7.16 16 16 16zm480 80H80c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm-64 176H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16z\"]\n};\nvar faStreetView = {\n prefix: 'fas',\n iconName: 'street-view',\n icon: [512, 512, [], \"f21d\", \"M367.9 329.76c-4.62 5.3-9.78 10.1-15.9 13.65v22.94c66.52 9.34 112 28.05 112 49.65 0 30.93-93.12 56-208 56S48 446.93 48 416c0-21.6 45.48-40.3 112-49.65v-22.94c-6.12-3.55-11.28-8.35-15.9-13.65C58.87 345.34 0 378.05 0 416c0 53.02 114.62 96 256 96s256-42.98 256-96c0-37.95-58.87-70.66-144.1-86.24zM256 128c35.35 0 64-28.65 64-64S291.35 0 256 0s-64 28.65-64 64 28.65 64 64 64zm-64 192v96c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-96c17.67 0 32-14.33 32-32v-96c0-26.51-21.49-48-48-48h-11.8c-11.07 5.03-23.26 8-36.2 8s-25.13-2.97-36.2-8H208c-26.51 0-48 21.49-48 48v96c0 17.67 14.33 32 32 32z\"]\n};\nvar faStrikethrough = {\n prefix: 'fas',\n iconName: 'strikethrough',\n icon: [512, 512, [], \"f0cc\", \"M496 224H293.9l-87.17-26.83A43.55 43.55 0 0 1 219.55 112h66.79A49.89 49.89 0 0 1 331 139.58a16 16 0 0 0 21.46 7.15l42.94-21.47a16 16 0 0 0 7.16-21.46l-.53-1A128 128 0 0 0 287.51 32h-68a123.68 123.68 0 0 0-123 135.64c2 20.89 10.1 39.83 21.78 56.36H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h480a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-180.24 96A43 43 0 0 1 336 356.45 43.59 43.59 0 0 1 292.45 400h-66.79A49.89 49.89 0 0 1 181 372.42a16 16 0 0 0-21.46-7.15l-42.94 21.47a16 16 0 0 0-7.16 21.46l.53 1A128 128 0 0 0 224.49 480h68a123.68 123.68 0 0 0 123-135.64 114.25 114.25 0 0 0-5.34-24.36z\"]\n};\nvar faStroopwafel = {\n prefix: 'fas',\n iconName: 'stroopwafel',\n icon: [512, 512, [], \"f551\", \"M188.12 210.74L142.86 256l45.25 45.25L233.37 256l-45.25-45.26zm113.13-22.62L256 142.86l-45.25 45.25L256 233.37l45.25-45.25zm-90.5 135.76L256 369.14l45.26-45.26L256 278.63l-45.25 45.25zM256 0C114.62 0 0 114.62 0 256s114.62 256 256 256 256-114.62 256-256S397.38 0 256 0zm186.68 295.6l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-28.29-28.29-45.25 45.25 33.94 33.94 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-33.94-33.94-45.26 45.26 28.29 28.29c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0L256 414.39l-28.29 28.29c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l28.29-28.29-45.25-45.26-33.94 33.94 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 33.94-33.94-45.25-45.25-28.29 28.29c-3.12 3.12-8.19 3.12-11.31 0L69.32 295.6c-3.12-3.12-3.12-8.19 0-11.31L97.61 256l-28.29-28.29c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l28.29 28.29 45.25-45.26-33.94-33.94-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 33.94 33.94 45.26-45.25-28.29-28.29c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0L256 97.61l28.29-28.29c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-28.29 28.29 45.26 45.25 33.94-33.94-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-33.94 33.94 45.25 45.26 28.29-28.29c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31L414.39 256l28.29 28.28a8.015 8.015 0 0 1 0 11.32zM278.63 256l45.26 45.25L369.14 256l-45.25-45.26L278.63 256z\"]\n};\nvar faSubscript = {\n prefix: 'fas',\n iconName: 'subscript',\n icon: [512, 512, [], \"f12c\", \"M496 448h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 400 352h16v96h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM336 64h-67a16 16 0 0 0-13.14 6.87l-79.9 115-79.9-115A16 16 0 0 0 83 64H16A16 16 0 0 0 0 80v48a16 16 0 0 0 16 16h33.48l77.81 112-77.81 112H16a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h67a16 16 0 0 0 13.14-6.87l79.9-115 79.9 115A16 16 0 0 0 269 448h67a16 16 0 0 0 16-16v-48a16 16 0 0 0-16-16h-33.48l-77.81-112 77.81-112H336a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16z\"]\n};\nvar faSubway = {\n prefix: 'fas',\n iconName: 'subway',\n icon: [448, 512, [], \"f239\", \"M448 96v256c0 51.815-61.624 96-130.022 96l62.98 49.721C386.905 502.417 383.562 512 376 512H72c-7.578 0-10.892-9.594-4.957-14.279L130.022 448C61.82 448 0 403.954 0 352V96C0 42.981 64 0 128 0h192c65 0 128 42.981 128 96zM200 232V120c0-13.255-10.745-24-24-24H72c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h104c13.255 0 24-10.745 24-24zm200 0V120c0-13.255-10.745-24-24-24H272c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h104c13.255 0 24-10.745 24-24zm-48 56c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm-256 0c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48z\"]\n};\nvar faSuitcase = {\n prefix: 'fas',\n iconName: 'suitcase',\n icon: [512, 512, [], \"f0f2\", \"M128 480h256V80c0-26.5-21.5-48-48-48H176c-26.5 0-48 21.5-48 48v400zm64-384h128v32H192V96zm320 80v256c0 26.5-21.5 48-48 48h-48V128h48c26.5 0 48 21.5 48 48zM96 480H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48h48v352z\"]\n};\nvar faSuitcaseRolling = {\n prefix: 'fas',\n iconName: 'suitcase-rolling',\n icon: [384, 512, [], \"f5c1\", \"M336 160H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h16v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16h128v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16h16c26.51 0 48-21.49 48-48V208c0-26.51-21.49-48-48-48zm-16 216c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h240c4.42 0 8 3.58 8 8v16zm0-96c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h240c4.42 0 8 3.58 8 8v16zM144 48h96v80h48V48c0-26.51-21.49-48-48-48h-96c-26.51 0-48 21.49-48 48v80h48V48z\"]\n};\nvar faSun = {\n prefix: 'fas',\n iconName: 'sun',\n icon: [512, 512, [], \"f185\", \"M256 160c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm246.4 80.5l-94.7-47.3 33.5-100.4c4.5-13.6-8.4-26.5-21.9-21.9l-100.4 33.5-47.4-94.8c-6.4-12.8-24.6-12.8-31 0l-47.3 94.7L92.7 70.8c-13.6-4.5-26.5 8.4-21.9 21.9l33.5 100.4-94.7 47.4c-12.8 6.4-12.8 24.6 0 31l94.7 47.3-33.5 100.5c-4.5 13.6 8.4 26.5 21.9 21.9l100.4-33.5 47.3 94.7c6.4 12.8 24.6 12.8 31 0l47.3-94.7 100.4 33.5c13.6 4.5 26.5-8.4 21.9-21.9l-33.5-100.4 94.7-47.3c13-6.5 13-24.7.2-31.1zm-155.9 106c-49.9 49.9-131.1 49.9-181 0-49.9-49.9-49.9-131.1 0-181 49.9-49.9 131.1-49.9 181 0 49.9 49.9 49.9 131.1 0 181z\"]\n};\nvar faSuperscript = {\n prefix: 'fas',\n iconName: 'superscript',\n icon: [512, 512, [], \"f12b\", \"M496 160h-16V16a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 400 64h16v96h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM336 64h-67a16 16 0 0 0-13.14 6.87l-79.9 115-79.9-115A16 16 0 0 0 83 64H16A16 16 0 0 0 0 80v48a16 16 0 0 0 16 16h33.48l77.81 112-77.81 112H16a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h67a16 16 0 0 0 13.14-6.87l79.9-115 79.9 115A16 16 0 0 0 269 448h67a16 16 0 0 0 16-16v-48a16 16 0 0 0-16-16h-33.48l-77.81-112 77.81-112H336a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16z\"]\n};\nvar faSurprise = {\n prefix: 'fas',\n iconName: 'surprise',\n icon: [496, 512, [], \"f5c2\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 208c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm112 208c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm80-176c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faSwatchbook = {\n prefix: 'fas',\n iconName: 'swatchbook',\n icon: [512, 512, [], \"f5c3\", \"M434.66,167.71h0L344.5,77.36a31.83,31.83,0,0,0-45-.07h0l-.07.07L224,152.88V424L434.66,212.9A32,32,0,0,0,434.66,167.71ZM480,320H373.09L186.68,506.51c-2.06,2.07-4.5,3.58-6.68,5.49H480a32,32,0,0,0,32-32V352A32,32,0,0,0,480,320ZM192,32A32,32,0,0,0,160,0H32A32,32,0,0,0,0,32V416a96,96,0,0,0,192,0ZM96,440a24,24,0,1,1,24-24A24,24,0,0,1,96,440Zm32-184H64V192h64Zm0-128H64V64h64Z\"]\n};\nvar faSwimmer = {\n prefix: 'fas',\n iconName: 'swimmer',\n icon: [640, 512, [], \"f5c4\", \"M189.61 310.58c3.54 3.26 15.27 9.42 34.39 9.42s30.86-6.16 34.39-9.42c16.02-14.77 34.5-22.58 53.46-22.58h16.3c18.96 0 37.45 7.81 53.46 22.58 3.54 3.26 15.27 9.42 34.39 9.42s30.86-6.16 34.39-9.42c14.86-13.71 31.88-21.12 49.39-22.16l-112.84-80.6 18-12.86c3.64-2.58 8.28-3.52 12.62-2.61l100.35 21.53c25.91 5.53 51.44-10.97 57-36.88 5.55-25.92-10.95-51.44-36.88-57L437.68 98.47c-30.73-6.58-63.02.12-88.56 18.38l-80.02 57.17c-10.38 7.39-19.36 16.44-26.72 26.94L173.75 299c5.47 3.23 10.82 6.93 15.86 11.58zM624 352h-16c-26.04 0-45.8-8.42-56.09-17.9-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C461.8 343.58 442.04 352 416 352s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C269.8 343.58 250.04 352 224 352s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C77.8 343.58 58.04 352 32 352H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c38.62 0 72.72-12.19 96-31.84 23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-512-96c44.18 0 80-35.82 80-80s-35.82-80-80-80-80 35.82-80 80 35.82 80 80 80z\"]\n};\nvar faSwimmingPool = {\n prefix: 'fas',\n iconName: 'swimming-pool',\n icon: [640, 512, [], \"f5c5\", \"M624 416h-16c-26.04 0-45.8-8.42-56.09-17.9-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C461.8 407.58 442.04 416 416 416s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C269.8 407.58 250.04 416 224 416s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C77.8 407.58 58.04 416 32 416H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c38.62 0 72.72-12.19 96-31.84 23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-400-32v-96h192v96c19.12 0 30.86-6.16 34.39-9.42 9.17-8.46 19.2-14.34 29.61-18.07V128c0-17.64 14.36-32 32-32s32 14.36 32 32v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16c0-52.94-43.06-96-96-96s-96 43.06-96 96v96H224v-96c0-17.64 14.36-32 32-32s32 14.36 32 32v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16c0-52.94-43.06-96-96-96s-96 43.06-96 96v228.5c10.41 3.73 20.44 9.62 29.61 18.07 3.53 3.27 15.27 9.43 34.39 9.43z\"]\n};\nvar faSynagogue = {\n prefix: 'fas',\n iconName: 'synagogue',\n icon: [640, 512, [], \"f69b\", \"M70 196.51L6.67 268.29A26.643 26.643 0 0 0 0 285.93V512h128V239.58l-38-43.07c-5.31-6.01-14.69-6.01-20 0zm563.33 71.78L570 196.51c-5.31-6.02-14.69-6.02-20 0l-38 43.07V512h128V285.93c0-6.5-2.37-12.77-6.67-17.64zM339.99 7.01c-11.69-9.35-28.29-9.35-39.98 0l-128 102.4A32.005 32.005 0 0 0 160 134.4V512h96v-92.57c0-31.88 21.78-61.43 53.25-66.55C349.34 346.35 384 377.13 384 416v96h96V134.4c0-9.72-4.42-18.92-12.01-24.99l-128-102.4zm52.07 215.55c1.98 3.15-.29 7.24-4 7.24h-38.94L324 269.79c-1.85 2.95-6.15 2.95-8 0l-25.12-39.98h-38.94c-3.72 0-5.98-4.09-4-7.24l19.2-30.56-19.2-30.56c-1.98-3.15.29-7.24 4-7.24h38.94l25.12-40c1.85-2.95 6.15-2.95 8 0l25.12 39.98h38.95c3.71 0 5.98 4.09 4 7.24L372.87 192l19.19 30.56z\"]\n};\nvar faSync = {\n prefix: 'fas',\n iconName: 'sync',\n icon: [512, 512, [], \"f021\", \"M440.65 12.57l4 82.77A247.16 247.16 0 0 0 255.83 8C134.73 8 33.91 94.92 12.29 209.82A12 12 0 0 0 24.09 224h49.05a12 12 0 0 0 11.67-9.26 175.91 175.91 0 0 1 317-56.94l-101.46-4.86a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12H500a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12h-47.37a12 12 0 0 0-11.98 12.57zM255.83 432a175.61 175.61 0 0 1-146-77.8l101.8 4.87a12 12 0 0 0 12.57-12v-47.4a12 12 0 0 0-12-12H12a12 12 0 0 0-12 12V500a12 12 0 0 0 12 12h47.35a12 12 0 0 0 12-12.6l-4.15-82.57A247.17 247.17 0 0 0 255.83 504c121.11 0 221.93-86.92 243.55-201.82a12 12 0 0 0-11.8-14.18h-49.05a12 12 0 0 0-11.67 9.26A175.86 175.86 0 0 1 255.83 432z\"]\n};\nvar faSyncAlt = {\n prefix: 'fas',\n iconName: 'sync-alt',\n icon: [512, 512, [], \"f2f1\", \"M370.72 133.28C339.458 104.008 298.888 87.962 255.848 88c-77.458.068-144.328 53.178-162.791 126.85-1.344 5.363-6.122 9.15-11.651 9.15H24.103c-7.498 0-13.194-6.807-11.807-14.176C33.933 94.924 134.813 8 256 8c66.448 0 126.791 26.136 171.315 68.685L463.03 40.97C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.749zM32 296h134.059c21.382 0 32.09 25.851 16.971 40.971l-41.75 41.75c31.262 29.273 71.835 45.319 114.876 45.28 77.418-.07 144.315-53.144 162.787-126.849 1.344-5.363 6.122-9.15 11.651-9.15h57.304c7.498 0 13.194 6.807 11.807 14.176C478.067 417.076 377.187 504 256 504c-66.448 0-126.791-26.136-171.315-68.685L48.97 471.03C33.851 486.149 8 475.441 8 454.059V320c0-13.255 10.745-24 24-24z\"]\n};\nvar faSyringe = {\n prefix: 'fas',\n iconName: 'syringe',\n icon: [512, 512, [], \"f48e\", \"M201.5 174.8l55.7 55.8c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-55.7-55.8-45.3 45.3 55.8 55.8c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L111 265.2l-26.4 26.4c-17.3 17.3-25.6 41.1-23 65.4l7.1 63.6L2.3 487c-3.1 3.1-3.1 8.2 0 11.3l11.3 11.3c3.1 3.1 8.2 3.1 11.3 0l66.3-66.3 63.6 7.1c23.9 2.6 47.9-5.4 65.4-23l181.9-181.9-135.7-135.7-64.9 65zm308.2-93.3L430.5 2.3c-3.1-3.1-8.2-3.1-11.3 0l-11.3 11.3c-3.1 3.1-3.1 8.2 0 11.3l28.3 28.3-45.3 45.3-56.6-56.6-17-17c-3.1-3.1-8.2-3.1-11.3 0l-33.9 33.9c-3.1 3.1-3.1 8.2 0 11.3l17 17L424.8 223l17 17c3.1 3.1 8.2 3.1 11.3 0l33.9-34c3.1-3.1 3.1-8.2 0-11.3l-73.5-73.5 45.3-45.3 28.3 28.3c3.1 3.1 8.2 3.1 11.3 0l11.3-11.3c3.1-3.2 3.1-8.2 0-11.4z\"]\n};\nvar faTable = {\n prefix: 'fas',\n iconName: 'table',\n icon: [512, 512, [], \"f0ce\", \"M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM224 416H64v-96h160v96zm0-160H64v-96h160v96zm224 160H288v-96h160v96zm0-160H288v-96h160v96z\"]\n};\nvar faTableTennis = {\n prefix: 'fas',\n iconName: 'table-tennis',\n icon: [512, 512, [], \"f45d\", \"M496.2 296.5C527.7 218.7 512 126.2 449 63.1 365.1-21 229-21 145.1 63.1l-56 56.1 211.5 211.5c46.1-62.1 131.5-77.4 195.6-34.2zm-217.9 79.7L57.9 155.9c-27.3 45.3-21.7 105 17.3 144.1l34.5 34.6L6.7 424c-8.6 7.5-9.1 20.7-1 28.8l53.4 53.5c8 8.1 21.2 7.6 28.7-1L177.1 402l35.7 35.7c19.7 19.7 44.6 30.5 70.3 33.3-7.1-17-11-35.6-11-55.1-.1-13.8 2.5-27 6.2-39.7zM416 320c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96z\"]\n};\nvar faTablet = {\n prefix: 'fas',\n iconName: 'tablet',\n icon: [448, 512, [], \"f10a\", \"M400 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM224 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faTabletAlt = {\n prefix: 'fas',\n iconName: 'tablet-alt',\n icon: [448, 512, [], \"f3fa\", \"M400 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM224 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm176-108c0 6.6-5.4 12-12 12H60c-6.6 0-12-5.4-12-12V60c0-6.6 5.4-12 12-12h328c6.6 0 12 5.4 12 12v312z\"]\n};\nvar faTablets = {\n prefix: 'fas',\n iconName: 'tablets',\n icon: [640, 512, [], \"f490\", \"M160 192C78.9 192 12.5 250.5.1 326.7c-.8 4.8 3.3 9.3 8.3 9.3h303.3c5 0 9.1-4.5 8.3-9.3C307.5 250.5 241.1 192 160 192zm151.6 176H8.4c-5 0-9.1 4.5-8.3 9.3C12.5 453.5 78.9 512 160 512s147.5-58.5 159.9-134.7c.8-4.8-3.3-9.3-8.3-9.3zM593.4 46.6c-56.5-56.5-144.2-61.4-206.9-16-4 2.9-4.3 8.9-.8 12.3L597 254.3c3.5 3.5 9.5 3.2 12.3-.8 45.5-62.7 40.6-150.4-15.9-206.9zM363 65.7c-3.5-3.5-9.5-3.2-12.3.8-45.4 62.7-40.5 150.4 15.9 206.9 56.5 56.5 144.2 61.4 206.9 15.9 4-2.9 4.3-8.9.8-12.3L363 65.7z\"]\n};\nvar faTachometerAlt = {\n prefix: 'fas',\n iconName: 'tachometer-alt',\n icon: [576, 512, [], \"f3fd\", \"M288 32C128.94 32 0 160.94 0 320c0 52.8 14.25 102.26 39.06 144.8 5.61 9.62 16.3 15.2 27.44 15.2h443c11.14 0 21.83-5.58 27.44-15.2C561.75 422.26 576 372.8 576 320c0-159.06-128.94-288-288-288zm0 64c14.71 0 26.58 10.13 30.32 23.65-1.11 2.26-2.64 4.23-3.45 6.67l-9.22 27.67c-5.13 3.49-10.97 6.01-17.64 6.01-17.67 0-32-14.33-32-32S270.33 96 288 96zM96 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm48-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm246.77-72.41l-61.33 184C343.13 347.33 352 364.54 352 384c0 11.72-3.38 22.55-8.88 32H232.88c-5.5-9.45-8.88-20.28-8.88-32 0-33.94 26.5-61.43 59.9-63.59l61.34-184.01c4.17-12.56 17.73-19.45 30.36-15.17 12.57 4.19 19.35 17.79 15.17 30.36zm14.66 57.2l15.52-46.55c3.47-1.29 7.13-2.23 11.05-2.23 17.67 0 32 14.33 32 32s-14.33 32-32 32c-11.38-.01-20.89-6.28-26.57-15.22zM480 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faTag = {\n prefix: 'fas',\n iconName: 'tag',\n icon: [512, 512, [], \"f02b\", \"M0 252.118V48C0 21.49 21.49 0 48 0h204.118a48 48 0 0 1 33.941 14.059l211.882 211.882c18.745 18.745 18.745 49.137 0 67.882L293.823 497.941c-18.745 18.745-49.137 18.745-67.882 0L14.059 286.059A48 48 0 0 1 0 252.118zM112 64c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48z\"]\n};\nvar faTags = {\n prefix: 'fas',\n iconName: 'tags',\n icon: [640, 512, [], \"f02c\", \"M497.941 225.941L286.059 14.059A48 48 0 0 0 252.118 0H48C21.49 0 0 21.49 0 48v204.118a48 48 0 0 0 14.059 33.941l211.882 211.882c18.744 18.745 49.136 18.746 67.882 0l204.118-204.118c18.745-18.745 18.745-49.137 0-67.882zM112 160c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm513.941 133.823L421.823 497.941c-18.745 18.745-49.137 18.745-67.882 0l-.36-.36L527.64 323.522c16.999-16.999 26.36-39.6 26.36-63.64s-9.362-46.641-26.36-63.64L331.397 0h48.721a48 48 0 0 1 33.941 14.059l211.882 211.882c18.745 18.745 18.745 49.137 0 67.882z\"]\n};\nvar faTape = {\n prefix: 'fas',\n iconName: 'tape',\n icon: [640, 512, [], \"f4db\", \"M224 192c-35.3 0-64 28.7-64 64s28.7 64 64 64 64-28.7 64-64-28.7-64-64-64zm400 224H380.6c41.5-40.7 67.4-97.3 67.4-160 0-123.7-100.3-224-224-224S0 132.3 0 256s100.3 224 224 224h400c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400-64c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96z\"]\n};\nvar faTasks = {\n prefix: 'fas',\n iconName: 'tasks',\n icon: [512, 512, [], \"f0ae\", \"M139.61 35.5a12 12 0 0 0-17 0L58.93 98.81l-22.7-22.12a12 12 0 0 0-17 0L3.53 92.41a12 12 0 0 0 0 17l47.59 47.4a12.78 12.78 0 0 0 17.61 0l15.59-15.62L156.52 69a12.09 12.09 0 0 0 .09-17zm0 159.19a12 12 0 0 0-17 0l-63.68 63.72-22.7-22.1a12 12 0 0 0-17 0L3.53 252a12 12 0 0 0 0 17L51 316.5a12.77 12.77 0 0 0 17.6 0l15.7-15.69 72.2-72.22a12 12 0 0 0 .09-16.9zM64 368c-26.49 0-48.59 21.5-48.59 48S37.53 464 64 464a48 48 0 0 0 0-96zm432 16H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faTaxi = {\n prefix: 'fas',\n iconName: 'taxi',\n icon: [512, 512, [], \"f1ba\", \"M462 241.64l-22-84.84c-9.6-35.2-41.6-60.8-76.8-60.8H352V64c0-17.67-14.33-32-32-32H192c-17.67 0-32 14.33-32 32v32h-11.2c-35.2 0-67.2 25.6-76.8 60.8l-22 84.84C21.41 248.04 0 273.47 0 304v48c0 23.63 12.95 44.04 32 55.12V448c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-40.88c19.05-11.09 32-31.5 32-55.12v-48c0-30.53-21.41-55.96-50-62.36zM96 352c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm20.55-112l17.2-66.36c2.23-8.16 9.59-13.64 15.06-13.64h214.4c5.47 0 12.83 5.48 14.85 12.86L395.45 240h-278.9zM416 352c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faTeeth = {\n prefix: 'fas',\n iconName: 'teeth',\n icon: [640, 512, [], \"f62e\", \"M544 0H96C42.98 0 0 42.98 0 96v320c0 53.02 42.98 96 96 96h448c53.02 0 96-42.98 96-96V96c0-53.02-42.98-96-96-96zM160 368c0 26.51-21.49 48-48 48s-48-21.49-48-48v-64c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v64zm0-128c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-64c0-26.51 21.49-48 48-48s48 21.49 48 48v64zm144 120c0 30.93-25.07 56-56 56s-56-25.07-56-56v-56c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v56zm0-120c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-88c0-30.93 25.07-56 56-56s56 25.07 56 56v88zm144 120c0 30.93-25.07 56-56 56s-56-25.07-56-56v-56c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v56zm0-120c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-88c0-30.93 25.07-56 56-56s56 25.07 56 56v88zm128 128c0 26.51-21.49 48-48 48s-48-21.49-48-48v-64c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v64zm0-128c0 8.84-7.16 16-16 16h-64c-8.84 0-16-7.16-16-16v-64c0-26.51 21.49-48 48-48s48 21.49 48 48v64z\"]\n};\nvar faTeethOpen = {\n prefix: 'fas',\n iconName: 'teeth-open',\n icon: [640, 512, [], \"f62f\", \"M544 0H96C42.98 0 0 42.98 0 96v64c0 35.35 28.66 64 64 64h512c35.34 0 64-28.65 64-64V96c0-53.02-42.98-96-96-96zM160 176c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-32c0-26.51 21.49-48 48-48s48 21.49 48 48v32zm144 0c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-56c0-30.93 25.07-56 56-56s56 25.07 56 56v56zm144 0c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-56c0-30.93 25.07-56 56-56s56 25.07 56 56v56zm128 0c0 8.84-7.16 16-16 16h-64c-8.84 0-16-7.16-16-16v-32c0-26.51 21.49-48 48-48s48 21.49 48 48v32zm0 144H64c-35.34 0-64 28.65-64 64v32c0 53.02 42.98 96 96 96h448c53.02 0 96-42.98 96-96v-32c0-35.35-28.66-64-64-64zm-416 80c0 26.51-21.49 48-48 48s-48-21.49-48-48v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32zm144-8c0 30.93-25.07 56-56 56s-56-25.07-56-56v-24c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v24zm144 0c0 30.93-25.07 56-56 56s-56-25.07-56-56v-24c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v24zm128 8c0 26.51-21.49 48-48 48s-48-21.49-48-48v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32z\"]\n};\nvar faTemperatureHigh = {\n prefix: 'fas',\n iconName: 'temperature-high',\n icon: [512, 512, [], \"f769\", \"M416 0c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-160-16C256 50.1 205.9 0 144 0S32 50.1 32 112v166.5C12.3 303.2 0 334 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-34-12.3-64.9-32-89.5V112zM144 448c-44.1 0-80-35.9-80-80 0-25.5 12.2-48.9 32-63.8V112c0-26.5 21.5-48 48-48s48 21.5 48 48v192.2c19.8 14.8 32 38.3 32 63.8 0 44.1-35.9 80-80 80zm16-125.1V112c0-8.8-7.2-16-16-16s-16 7.2-16 16v210.9c-18.6 6.6-32 24.2-32 45.1 0 26.5 21.5 48 48 48s48-21.5 48-48c0-20.9-13.4-38.5-32-45.1z\"]\n};\nvar faTemperatureLow = {\n prefix: 'fas',\n iconName: 'temperature-low',\n icon: [512, 512, [], \"f76b\", \"M416 0c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-160-16C256 50.1 205.9 0 144 0S32 50.1 32 112v166.5C12.3 303.2 0 334 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-34-12.3-64.9-32-89.5V112zM144 448c-44.1 0-80-35.9-80-80 0-25.5 12.2-48.9 32-63.8V112c0-26.5 21.5-48 48-48s48 21.5 48 48v192.2c19.8 14.8 32 38.3 32 63.8 0 44.1-35.9 80-80 80zm16-125.1V304c0-8.8-7.2-16-16-16s-16 7.2-16 16v18.9c-18.6 6.6-32 24.2-32 45.1 0 26.5 21.5 48 48 48s48-21.5 48-48c0-20.9-13.4-38.5-32-45.1z\"]\n};\nvar faTenge = {\n prefix: 'fas',\n iconName: 'tenge',\n icon: [384, 512, [], \"f7d7\", \"M372 160H12c-6.6 0-12 5.4-12 12v56c0 6.6 5.4 12 12 12h140v228c0 6.6 5.4 12 12 12h56c6.6 0 12-5.4 12-12V240h140c6.6 0 12-5.4 12-12v-56c0-6.6-5.4-12-12-12zm0-128H12C5.4 32 0 37.4 0 44v56c0 6.6 5.4 12 12 12h360c6.6 0 12-5.4 12-12V44c0-6.6-5.4-12-12-12z\"]\n};\nvar faTerminal = {\n prefix: 'fas',\n iconName: 'terminal',\n icon: [640, 512, [], \"f120\", \"M257.981 272.971L63.638 467.314c-9.373 9.373-24.569 9.373-33.941 0L7.029 444.647c-9.357-9.357-9.375-24.522-.04-33.901L161.011 256 6.99 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L257.981 239.03c9.373 9.372 9.373 24.568 0 33.941zM640 456v-32c0-13.255-10.745-24-24-24H312c-13.255 0-24 10.745-24 24v32c0 13.255 10.745 24 24 24h304c13.255 0 24-10.745 24-24z\"]\n};\nvar faTextHeight = {\n prefix: 'fas',\n iconName: 'text-height',\n icon: [576, 512, [], \"f034\", \"M304 32H16A16 16 0 0 0 0 48v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32h56v304H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h160a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-40V112h56v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm256 336h-48V144h48c14.31 0 21.33-17.31 11.31-27.31l-80-80a16 16 0 0 0-22.62 0l-80 80C379.36 126 384.36 144 400 144h48v224h-48c-14.31 0-21.32 17.31-11.31 27.31l80 80a16 16 0 0 0 22.62 0l80-80C580.64 386 575.64 368 560 368z\"]\n};\nvar faTextWidth = {\n prefix: 'fas',\n iconName: 'text-width',\n icon: [448, 512, [], \"f035\", \"M432 32H16A16 16 0 0 0 0 48v80a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-16h120v112h-24a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-24V112h120v16a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm-68.69 260.69C354 283.36 336 288.36 336 304v48H112v-48c0-14.31-17.31-21.32-27.31-11.31l-80 80a16 16 0 0 0 0 22.62l80 80C94 484.64 112 479.64 112 464v-48h224v48c0 14.31 17.31 21.33 27.31 11.31l80-80a16 16 0 0 0 0-22.62z\"]\n};\nvar faTh = {\n prefix: 'fas',\n iconName: 'th',\n icon: [512, 512, [], \"f00a\", \"M149.333 56v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V56c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24zm181.334 240v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm32-240v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24zm-32 80V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm-205.334 56H24c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24zM0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zm386.667-56H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zm0 160H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zM181.333 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24z\"]\n};\nvar faThLarge = {\n prefix: 'fas',\n iconName: 'th-large',\n icon: [512, 512, [], \"f009\", \"M296 32h192c13.255 0 24 10.745 24 24v160c0 13.255-10.745 24-24 24H296c-13.255 0-24-10.745-24-24V56c0-13.255 10.745-24 24-24zm-80 0H24C10.745 32 0 42.745 0 56v160c0 13.255 10.745 24 24 24h192c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24zM0 296v160c0 13.255 10.745 24 24 24h192c13.255 0 24-10.745 24-24V296c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zm296 184h192c13.255 0 24-10.745 24-24V296c0-13.255-10.745-24-24-24H296c-13.255 0-24 10.745-24 24v160c0 13.255 10.745 24 24 24z\"]\n};\nvar faThList = {\n prefix: 'fas',\n iconName: 'th-list',\n icon: [512, 512, [], \"f00b\", \"M149.333 216v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-80c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24zM0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zM125.333 32H24C10.745 32 0 42.745 0 56v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24zm80 448H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zm-24-424v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24zm24 264H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24z\"]\n};\nvar faTheaterMasks = {\n prefix: 'fas',\n iconName: 'theater-masks',\n icon: [640, 512, [], \"f630\", \"M206.86 245.15c-35.88 10.45-59.95 41.2-57.53 74.1 11.4-12.72 28.81-23.7 49.9-30.92l7.63-43.18zM95.81 295L64.08 115.49c-.29-1.62.28-2.62.24-2.65 57.76-32.06 123.12-49.01 189.01-49.01 1.61 0 3.23.17 4.85.19 13.95-13.47 31.73-22.83 51.59-26 18.89-3.02 38.05-4.55 57.18-5.32-9.99-13.95-24.48-24.23-41.77-27C301.27 1.89 277.24 0 253.32 0 176.66 0 101.02 19.42 33.2 57.06 9.03 70.48-3.92 98.48 1.05 126.58l31.73 179.51c14.23 80.52 136.33 142.08 204.45 142.08 3.59 0 6.75-.46 10.01-.8-13.52-17.08-28.94-40.48-39.5-67.58-47.61-12.98-106.06-51.62-111.93-84.79zm97.55-137.46c-.73-4.12-2.23-7.87-4.07-11.4-8.25 8.91-20.67 15.75-35.32 18.32-14.65 2.58-28.67.4-39.48-5.17-.52 3.94-.64 7.98.09 12.1 3.84 21.7 24.58 36.19 46.34 32.37 21.75-3.82 36.28-24.52 32.44-46.22zM606.8 120.9c-88.98-49.38-191.43-67.41-291.98-51.35-27.31 4.36-49.08 26.26-54.04 54.36l-31.73 179.51c-15.39 87.05 95.28 196.27 158.31 207.35 63.03 11.09 204.47-53.79 219.86-140.84l31.73-179.51c4.97-28.11-7.98-56.11-32.15-69.52zm-273.24 96.8c3.84-21.7 24.58-36.19 46.34-32.36 21.76 3.83 36.28 24.52 32.45 46.22-.73 4.12-2.23 7.87-4.07 11.4-8.25-8.91-20.67-15.75-35.32-18.32-14.65-2.58-28.67-.4-39.48 5.17-.53-3.95-.65-7.99.08-12.11zm70.47 198.76c-55.68-9.79-93.52-59.27-89.04-112.9 20.6 25.54 56.21 46.17 99.49 53.78 43.28 7.61 83.82.37 111.93-16.6-14.18 51.94-66.71 85.51-122.38 75.72zm130.3-151.34c-8.25-8.91-20.68-15.75-35.33-18.32-14.65-2.58-28.67-.4-39.48 5.17-.52-3.94-.64-7.98.09-12.1 3.84-21.7 24.58-36.19 46.34-32.37 21.75 3.83 36.28 24.52 32.45 46.22-.73 4.13-2.23 7.88-4.07 11.4z\"]\n};\nvar faThermometer = {\n prefix: 'fas',\n iconName: 'thermometer',\n icon: [512, 512, [], \"f491\", \"M476.8 20.4c-37.5-30.7-95.5-26.3-131.9 10.2l-45.7 46 50.5 50.5c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-50.4-50.5-45.1 45.4 50.3 50.4c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L209 167.4l-45.1 45.4L214 263c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-50.1-50.2L96 281.1V382L7 471c-9.4 9.4-9.4 24.6 0 33.9 9.4 9.4 24.6 9.4 33.9 0l89-89h99.9L484 162.6c34.9-34.9 42.2-101.5-7.2-142.2z\"]\n};\nvar faThermometerEmpty = {\n prefix: 'fas',\n iconName: 'thermometer-empty',\n icon: [256, 512, [], \"f2cb\", \"M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-35.346 28.654-64 64-64s64 28.654 64 64zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z\"]\n};\nvar faThermometerFull = {\n prefix: 'fas',\n iconName: 'thermometer-full',\n icon: [256, 512, [], \"f2c7\", \"M224 96c0-53.019-42.981-96-96-96S32 42.981 32 96v203.347C12.225 321.756.166 351.136.002 383.333c-.359 70.303 56.787 128.176 127.089 128.664.299.002.61.003.909.003 70.698 0 128-57.304 128-128 0-32.459-12.088-62.09-32-84.653V96zm-96 368l-.576-.002c-43.86-.304-79.647-36.544-79.423-80.42.173-33.98 19.266-51.652 31.999-66.08V96c0-26.467 21.533-48 48-48s48 21.533 48 48v221.498c12.63 14.312 32 32.164 32 66.502 0 44.112-35.888 80-80 80zm64-80c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V96c0-17.673 14.327-32 32-32s32 14.327 32 32v232.583c19.124 11.068 32 31.732 32 55.417z\"]\n};\nvar faThermometerHalf = {\n prefix: 'fas',\n iconName: 'thermometer-half',\n icon: [256, 512, [], \"f2c9\", \"M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V224c0-17.673 14.327-32 32-32s32 14.327 32 32v104.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z\"]\n};\nvar faThermometerQuarter = {\n prefix: 'fas',\n iconName: 'thermometer-quarter',\n icon: [256, 512, [], \"f2ca\", \"M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V288c0-17.673 14.327-32 32-32s32 14.327 32 32v40.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z\"]\n};\nvar faThermometerThreeQuarters = {\n prefix: 'fas',\n iconName: 'thermometer-three-quarters',\n icon: [256, 512, [], \"f2c8\", \"M192 384c0 35.346-28.654 64-64 64-35.346 0-64-28.654-64-64 0-23.685 12.876-44.349 32-55.417V160c0-17.673 14.327-32 32-32s32 14.327 32 32v168.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z\"]\n};\nvar faThumbsDown = {\n prefix: 'fas',\n iconName: 'thumbs-down',\n icon: [512, 512, [], \"f165\", \"M0 56v240c0 13.255 10.745 24 24 24h80c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56zm40 200c0-13.255 10.745-24 24-24s24 10.745 24 24-10.745 24-24 24-24-10.745-24-24zm272 256c-20.183 0-29.485-39.293-33.931-57.795-5.206-21.666-10.589-44.07-25.393-58.902-32.469-32.524-49.503-73.967-89.117-113.111a11.98 11.98 0 0 1-3.558-8.521V59.901c0-6.541 5.243-11.878 11.783-11.998 15.831-.29 36.694-9.079 52.651-16.178C256.189 17.598 295.709.017 343.995 0h2.844c42.777 0 93.363.413 113.774 29.737 8.392 12.057 10.446 27.034 6.148 44.632 16.312 17.053 25.063 48.863 16.382 74.757 17.544 23.432 19.143 56.132 9.308 79.469l.11.11c11.893 11.949 19.523 31.259 19.439 49.197-.156 30.352-26.157 58.098-59.553 58.098H350.723C358.03 364.34 384 388.132 384 430.548 384 504 336 512 312 512z\"]\n};\nvar faThumbsUp = {\n prefix: 'fas',\n iconName: 'thumbs-up',\n icon: [512, 512, [], \"f164\", \"M104 224H24c-13.255 0-24 10.745-24 24v240c0 13.255 10.745 24 24 24h80c13.255 0 24-10.745 24-24V248c0-13.255-10.745-24-24-24zM64 472c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24zM384 81.452c0 42.416-25.97 66.208-33.277 94.548h101.723c33.397 0 59.397 27.746 59.553 58.098.084 17.938-7.546 37.249-19.439 49.197l-.11.11c9.836 23.337 8.237 56.037-9.308 79.469 8.681 25.895-.069 57.704-16.382 74.757 4.298 17.598 2.244 32.575-6.148 44.632C440.202 511.587 389.616 512 346.839 512l-2.845-.001c-48.287-.017-87.806-17.598-119.56-31.725-15.957-7.099-36.821-15.887-52.651-16.178-6.54-.12-11.783-5.457-11.783-11.998v-213.77c0-3.2 1.282-6.271 3.558-8.521 39.614-39.144 56.648-80.587 89.117-113.111 14.804-14.832 20.188-37.236 25.393-58.902C282.515 39.293 291.817 0 312 0c24 0 72 8 72 81.452z\"]\n};\nvar faThumbtack = {\n prefix: 'fas',\n iconName: 'thumbtack',\n icon: [384, 512, [], \"f08d\", \"M298.028 214.267L285.793 96H328c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H56C42.745 0 32 10.745 32 24v48c0 13.255 10.745 24 24 24h42.207L85.972 214.267C37.465 236.82 0 277.261 0 328c0 13.255 10.745 24 24 24h136v104.007c0 1.242.289 2.467.845 3.578l24 48c2.941 5.882 11.364 5.893 14.311 0l24-48a8.008 8.008 0 0 0 .845-3.578V352h136c13.255 0 24-10.745 24-24-.001-51.183-37.983-91.42-85.973-113.733z\"]\n};\nvar faTicketAlt = {\n prefix: 'fas',\n iconName: 'ticket-alt',\n icon: [576, 512, [], \"f3ff\", \"M128 160h320v192H128V160zm400 96c0 26.51 21.49 48 48 48v96c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48v-96c26.51 0 48-21.49 48-48s-21.49-48-48-48v-96c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48v96c-26.51 0-48 21.49-48 48zm-48-104c0-13.255-10.745-24-24-24H120c-13.255 0-24 10.745-24 24v208c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V152z\"]\n};\nvar faTimes = {\n prefix: 'fas',\n iconName: 'times',\n icon: [352, 512, [], \"f00d\", \"M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z\"]\n};\nvar faTimesCircle = {\n prefix: 'fas',\n iconName: 'times-circle',\n icon: [512, 512, [], \"f057\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z\"]\n};\nvar faTint = {\n prefix: 'fas',\n iconName: 'tint',\n icon: [352, 512, [], \"f043\", \"M205.22 22.09c-7.94-28.78-49.44-30.12-58.44 0C100.01 179.85 0 222.72 0 333.91 0 432.35 78.72 512 176 512s176-79.65 176-178.09c0-111.75-99.79-153.34-146.78-311.82zM176 448c-61.75 0-112-50.25-112-112 0-8.84 7.16-16 16-16s16 7.16 16 16c0 44.11 35.89 80 80 80 8.84 0 16 7.16 16 16s-7.16 16-16 16z\"]\n};\nvar faTintSlash = {\n prefix: 'fas',\n iconName: 'tint-slash',\n icon: [640, 512, [], \"f5c7\", \"M633.82 458.1L494.97 350.78c.52-5.57 1.03-11.16 1.03-16.87 0-111.76-99.79-153.34-146.78-311.82-7.94-28.78-49.44-30.12-58.44 0-15.52 52.34-36.87 91.96-58.49 125.68L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM144 333.91C144 432.35 222.72 512 320 512c44.71 0 85.37-16.96 116.4-44.7L162.72 255.78c-11.41 23.5-18.72 48.35-18.72 78.13z\"]\n};\nvar faTired = {\n prefix: 'fas',\n iconName: 'tired',\n icon: [496, 512, [], \"f5c8\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 189.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 208l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM248 288c51.9 0 115.3 43.8 123.2 106.7 1.7 13.6-8 24.6-17.7 20.4-25.9-11.1-64.4-17.4-105.5-17.4s-79.6 6.3-105.5 17.4c-9.8 4.2-19.4-7-17.7-20.4C132.7 331.8 196.1 288 248 288z\"]\n};\nvar faToggleOff = {\n prefix: 'fas',\n iconName: 'toggle-off',\n icon: [576, 512, [], \"f204\", \"M384 64H192C85.961 64 0 149.961 0 256s85.961 192 192 192h192c106.039 0 192-85.961 192-192S490.039 64 384 64zM64 256c0-70.741 57.249-128 128-128 70.741 0 128 57.249 128 128 0 70.741-57.249 128-128 128-70.741 0-128-57.249-128-128zm320 128h-48.905c65.217-72.858 65.236-183.12 0-256H384c70.741 0 128 57.249 128 128 0 70.74-57.249 128-128 128z\"]\n};\nvar faToggleOn = {\n prefix: 'fas',\n iconName: 'toggle-on',\n icon: [576, 512, [], \"f205\", \"M384 64H192C86 64 0 150 0 256s86 192 192 192h192c106 0 192-86 192-192S490 64 384 64zm0 320c-70.8 0-128-57.3-128-128 0-70.8 57.3-128 128-128 70.8 0 128 57.3 128 128 0 70.8-57.3 128-128 128z\"]\n};\nvar faToilet = {\n prefix: 'fas',\n iconName: 'toilet',\n icon: [384, 512, [], \"f7d8\", \"M368 48c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H16C7.2 0 0 7.2 0 16v16c0 8.8 7.2 16 16 16h16v156.7C11.8 214.8 0 226.9 0 240c0 67.2 34.6 126.2 86.8 160.5l-21.4 70.2C59.1 491.2 74.5 512 96 512h192c21.5 0 36.9-20.8 30.6-41.3l-21.4-70.2C349.4 366.2 384 307.2 384 240c0-13.1-11.8-25.2-32-35.3V48h16zM80 72c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H88c-4.4 0-8-3.6-8-8V72zm112 200c-77.1 0-139.6-14.3-139.6-32s62.5-32 139.6-32 139.6 14.3 139.6 32-62.5 32-139.6 32z\"]\n};\nvar faToiletPaper = {\n prefix: 'fas',\n iconName: 'toilet-paper',\n icon: [576, 512, [], \"f71e\", \"M128 0C74.98 0 32 85.96 32 192v172.07c0 41.12-9.8 62.77-31.17 126.87C-2.62 501.3 5.09 512 16.01 512h280.92c13.77 0 26-8.81 30.36-21.88 12.83-38.48 24.71-72.4 24.71-126.05V192c0-83.6 23.67-153.52 60.44-192H128zM96 224c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zM480 0c-53.02 0-96 85.96-96 192s42.98 192 96 192 96-85.96 96-192S533.02 0 480 0zm0 256c-17.67 0-32-28.65-32-64s14.33-64 32-64 32 28.65 32 64-14.33 64-32 64z\"]\n};\nvar faToiletPaperSlash = {\n prefix: 'fas',\n iconName: 'toilet-paper-slash',\n icon: [640, 512, [], \"e072\", \"M64,192V364.13c0,41.12-9.75,62.75-31.12,126.87A16,16,0,0,0,48,512H328.86a31.87,31.87,0,0,0,30.38-21.87c9.31-27.83,18-53.35,22.18-85.55l-316-244.25C64.53,170.66,64,181.19,64,192ZM633.82,458.09l-102-78.81C575.28,360.91,608,284.32,608,192,608,86,565,0,512,0s-96,86-96,192c0,42,7,80.4,18.43,112L384,265V192c0-83.62,23.63-153.5,60.5-192H160c-23.33,0-44.63,16.83-61.26,44.53L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.45A16,16,0,0,0,6.18,53.91L594.54,508.63A16,16,0,0,0,617,505.81l19.64-25.26A16,16,0,0,0,633.82,458.09ZM512,256c-17.63,0-32-28.62-32-64s14.37-64,32-64,32,28.63,32,64S529.62,256,512,256Z\"]\n};\nvar faToolbox = {\n prefix: 'fas',\n iconName: 'toolbox',\n icon: [512, 512, [], \"f552\", \"M502.63 214.63l-45.25-45.25c-6-6-14.14-9.37-22.63-9.37H384V80c0-26.51-21.49-48-48-48H176c-26.51 0-48 21.49-48 48v80H77.25c-8.49 0-16.62 3.37-22.63 9.37L9.37 214.63c-6 6-9.37 14.14-9.37 22.63V320h128v-16c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v16h128v-16c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v16h128v-82.75c0-8.48-3.37-16.62-9.37-22.62zM320 160H192V96h128v64zm64 208c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-16H192v16c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-16H0v96c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32v-96H384v16z\"]\n};\nvar faTools = {\n prefix: 'fas',\n iconName: 'tools',\n icon: [512, 512, [], \"f7d9\", \"M501.1 395.7L384 278.6c-23.1-23.1-57.6-27.6-85.4-13.9L192 158.1V96L64 0 0 64l96 128h62.1l106.6 106.6c-13.6 27.8-9.2 62.3 13.9 85.4l117.1 117.1c14.6 14.6 38.2 14.6 52.7 0l52.7-52.7c14.5-14.6 14.5-38.2 0-52.7zM331.7 225c28.3 0 54.9 11 74.9 31l19.4 19.4c15.8-6.9 30.8-16.5 43.8-29.5 37.1-37.1 49.7-89.3 37.9-136.7-2.2-9-13.5-12.1-20.1-5.5l-74.4 74.4-67.9-11.3L334 98.9l74.4-74.4c6.6-6.6 3.4-17.9-5.7-20.2-47.4-11.7-99.6.9-136.6 37.9-28.5 28.5-41.9 66.1-41.2 103.6l82.1 82.1c8.1-1.9 16.5-2.9 24.7-2.9zm-103.9 82l-56.7-56.7L18.7 402.8c-25 25-25 65.5 0 90.5s65.5 25 90.5 0l123.6-123.6c-7.6-19.9-9.9-41.6-5-62.7zM64 472c-13.2 0-24-10.8-24-24 0-13.3 10.7-24 24-24s24 10.7 24 24c0 13.2-10.7 24-24 24z\"]\n};\nvar faTooth = {\n prefix: 'fas',\n iconName: 'tooth',\n icon: [448, 512, [], \"f5c9\", \"M443.98 96.25c-11.01-45.22-47.11-82.06-92.01-93.72-32.19-8.36-63 5.1-89.14 24.33-3.25 2.39-6.96 3.73-10.5 5.48l28.32 18.21c7.42 4.77 9.58 14.67 4.8 22.11-4.46 6.95-14.27 9.86-22.11 4.8L162.83 12.84c-20.7-10.85-43.38-16.4-66.81-10.31-44.9 11.67-81 48.5-92.01 93.72-10.13 41.62-.42 80.81 21.5 110.43 23.36 31.57 32.68 68.66 36.29 107.35 4.4 47.16 10.33 94.16 20.94 140.32l7.8 33.95c3.19 13.87 15.49 23.7 29.67 23.7 13.97 0 26.15-9.55 29.54-23.16l34.47-138.42c4.56-18.32 20.96-31.16 39.76-31.16s35.2 12.85 39.76 31.16l34.47 138.42c3.39 13.61 15.57 23.16 29.54 23.16 14.18 0 26.48-9.83 29.67-23.7l7.8-33.95c10.61-46.15 16.53-93.16 20.94-140.32 3.61-38.7 12.93-75.78 36.29-107.35 21.95-29.61 31.66-68.8 21.53-110.43z\"]\n};\nvar faTorah = {\n prefix: 'fas',\n iconName: 'torah',\n icon: [640, 512, [], \"f6a0\", \"M320.05 366.48l17.72-29.64h-35.46zm99.21-166H382.4l18.46 30.82zM48 0C21.49 0 0 14.33 0 32v448c0 17.67 21.49 32 48 32s48-14.33 48-32V32C96 14.33 74.51 0 48 0zm172.74 311.5h36.85l-18.46-30.82zm161.71 0h36.86l-18.45-30.8zM128 464h384V48H128zm66.77-278.13a21.22 21.22 0 0 1 18.48-10.71h59.45l29.13-48.71a21.13 21.13 0 0 1 18.22-10.37A20.76 20.76 0 0 1 338 126.29l29.25 48.86h59.52a21.12 21.12 0 0 1 18.1 32L415.63 256 445 305a20.69 20.69 0 0 1 .24 21.12 21.25 21.25 0 0 1-18.48 10.72h-59.47l-29.13 48.7a21.13 21.13 0 0 1-18.16 10.4 20.79 20.79 0 0 1-18-10.22l-29.25-48.88h-59.5a21.11 21.11 0 0 1-18.1-32L224.36 256 195 207a20.7 20.7 0 0 1-.23-21.13zM592 0c-26.51 0-48 14.33-48 32v448c0 17.67 21.49 32 48 32s48-14.33 48-32V32c0-17.67-21.49-32-48-32zM320 145.53l-17.78 29.62h35.46zm-62.45 55h-36.81l18.44 30.8zm29.58 111h65.79L386.09 256l-33.23-55.52h-65.79L253.9 256z\"]\n};\nvar faToriiGate = {\n prefix: 'fas',\n iconName: 'torii-gate',\n icon: [512, 512, [], \"f6a1\", \"M376.45 32h-240.9A303.17 303.17 0 0 1 0 0v96c0 17.67 14.33 32 32 32h32v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h48v240c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V256h256v240c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V256h48c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-48v-64h32c17.67 0 32-14.33 32-32V0a303.17 303.17 0 0 1-135.55 32zM128 128h96v64h-96v-64zm256 64h-96v-64h96v64z\"]\n};\nvar faTractor = {\n prefix: 'fas',\n iconName: 'tractor',\n icon: [640, 512, [], \"f722\", \"M528 336c-48.6 0-88 39.4-88 88s39.4 88 88 88 88-39.4 88-88-39.4-88-88-88zm0 112c-13.23 0-24-10.77-24-24s10.77-24 24-24 24 10.77 24 24-10.77 24-24 24zm80-288h-64v-40.2c0-14.12 4.7-27.76 13.15-38.84 4.42-5.8 3.55-14.06-1.32-19.49L534.2 37.3c-6.66-7.45-18.32-6.92-24.7.78C490.58 60.9 480 89.81 480 119.8V160H377.67L321.58 29.14A47.914 47.914 0 0 0 277.45 0H144c-26.47 0-48 21.53-48 48v146.52c-8.63-6.73-20.96-6.46-28.89 1.47L36 227.1c-8.59 8.59-8.59 22.52 0 31.11l5.06 5.06c-4.99 9.26-8.96 18.82-11.91 28.72H22c-12.15 0-22 9.85-22 22v44c0 12.15 9.85 22 22 22h7.14c2.96 9.91 6.92 19.46 11.91 28.73l-5.06 5.06c-8.59 8.59-8.59 22.52 0 31.11L67.1 476c8.59 8.59 22.52 8.59 31.11 0l5.06-5.06c9.26 4.99 18.82 8.96 28.72 11.91V490c0 12.15 9.85 22 22 22h44c12.15 0 22-9.85 22-22v-7.14c9.9-2.95 19.46-6.92 28.72-11.91l5.06 5.06c8.59 8.59 22.52 8.59 31.11 0l31.11-31.11c8.59-8.59 8.59-22.52 0-31.11l-5.06-5.06c4.99-9.26 8.96-18.82 11.91-28.72H330c12.15 0 22-9.85 22-22v-6h80.54c21.91-28.99 56.32-48 95.46-48 18.64 0 36.07 4.61 51.8 12.2l50.82-50.82c6-6 9.37-14.14 9.37-22.63V192c.01-17.67-14.32-32-31.99-32zM176 416c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zm22-256h-38V64h106.89l41.15 96H198z\"]\n};\nvar faTrademark = {\n prefix: 'fas',\n iconName: 'trademark',\n icon: [640, 512, [], \"f25c\", \"M260.6 96H12c-6.6 0-12 5.4-12 12v43.1c0 6.6 5.4 12 12 12h85.1V404c0 6.6 5.4 12 12 12h54.3c6.6 0 12-5.4 12-12V163.1h85.1c6.6 0 12-5.4 12-12V108c.1-6.6-5.3-12-11.9-12zM640 403l-24-296c-.5-6.2-5.7-11-12-11h-65.4c-5.1 0-9.7 3.3-11.3 8.1l-43.8 127.1c-7.2 20.6-16.1 52.8-16.1 52.8h-.9s-8.9-32.2-16.1-52.8l-43.8-127.1c-1.7-4.8-6.2-8.1-11.3-8.1h-65.4c-6.2 0-11.4 4.8-12 11l-24.4 296c-.6 7 4.9 13 12 13H360c6.3 0 11.5-4.9 12-11.2l9.1-132.9c1.8-24.2 0-53.7 0-53.7h.9s10.7 33.6 17.9 53.7l30.7 84.7c1.7 4.7 6.2 7.9 11.3 7.9h50.3c5.1 0 9.6-3.2 11.3-7.9l30.7-84.7c7.2-20.1 17.9-53.7 17.9-53.7h.9s-1.8 29.5 0 53.7l9.1 132.9c.4 6.3 5.7 11.2 12 11.2H628c7 0 12.5-6 12-13z\"]\n};\nvar faTrafficLight = {\n prefix: 'fas',\n iconName: 'traffic-light',\n icon: [384, 512, [], \"f637\", \"M384 192h-64v-37.88c37.2-13.22 64-48.38 64-90.12h-64V32c0-17.67-14.33-32-32-32H96C78.33 0 64 14.33 64 32v32H0c0 41.74 26.8 76.9 64 90.12V192H0c0 41.74 26.8 76.9 64 90.12V320H0c0 42.84 28.25 78.69 66.99 91.05C79.42 468.72 130.6 512 192 512s112.58-43.28 125.01-100.95C355.75 398.69 384 362.84 384 320h-64v-37.88c37.2-13.22 64-48.38 64-90.12zM192 416c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm0-128c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm0-128c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48z\"]\n};\nvar faTrailer = {\n prefix: 'fas',\n iconName: 'trailer',\n icon: [640, 512, [], \"e041\", \"M624,320H544V80a16,16,0,0,0-16-16H16A16,16,0,0,0,0,80V368a16,16,0,0,0,16,16H65.61c7.83-54.21,54-96,110.39-96s102.56,41.79,110.39,96H624a16,16,0,0,0,16-16V336A16,16,0,0,0,624,320ZM96,243.68a176.29,176.29,0,0,0-32,20.71V136a8,8,0,0,1,8-8H88a8,8,0,0,1,8,8Zm96-18.54c-5.31-.49-10.57-1.14-16-1.14s-10.69.65-16,1.14V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm96,39.25a176.29,176.29,0,0,0-32-20.71V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8ZM384,320H352V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm96,0H448V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm-304,0a80,80,0,1,0,80,80A80,80,0,0,0,176,320Zm0,112a32,32,0,1,1,32-32A32,32,0,0,1,176,432Z\"]\n};\nvar faTrain = {\n prefix: 'fas',\n iconName: 'train',\n icon: [448, 512, [], \"f238\", \"M448 96v256c0 51.815-61.624 96-130.022 96l62.98 49.721C386.905 502.417 383.562 512 376 512H72c-7.578 0-10.892-9.594-4.957-14.279L130.022 448C61.82 448 0 403.954 0 352V96C0 42.981 64 0 128 0h192c65 0 128 42.981 128 96zm-48 136V120c0-13.255-10.745-24-24-24H72c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h304c13.255 0 24-10.745 24-24zm-176 64c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56z\"]\n};\nvar faTram = {\n prefix: 'fas',\n iconName: 'tram',\n icon: [512, 512, [], \"f7da\", \"M288 64c17.7 0 32-14.3 32-32S305.7 0 288 0s-32 14.3-32 32 14.3 32 32 32zm223.5-12.1c-2.3-8.6-11-13.6-19.6-11.3l-480 128c-8.5 2.3-13.6 11-11.3 19.6C2.5 195.3 8.9 200 16 200c1.4 0 2.8-.2 4.1-.5L240 140.8V224H64c-17.7 0-32 14.3-32 32v224c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32H272v-91.7l228.1-60.8c8.6-2.3 13.6-11.1 11.4-19.6zM176 384H80v-96h96v96zm160-96h96v96h-96v-96zm-32 0v96h-96v-96h96zM192 96c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32z\"]\n};\nvar faTransgender = {\n prefix: 'fas',\n iconName: 'transgender',\n icon: [384, 512, [], \"f224\", \"M372 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7C198.5 104.1 172.2 96 144 96 64.5 96 0 160.5 0 240c0 68.5 47.9 125.9 112 140.4V408H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v28c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-28h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-27.6c64.1-14.6 112-71.9 112-140.4 0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V12c0-6.6-5.4-12-12-12zM144 320c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faTransgenderAlt = {\n prefix: 'fas',\n iconName: 'transgender-alt',\n icon: [480, 512, [], \"f225\", \"M468 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7C294.5 104.1 268.2 96 240 96c-28.2 0-54.5 8.1-76.7 22.1l-16.5-16.5 19.8-19.8c4.7-4.7 4.7-12.3 0-17l-28.3-28.3c-4.7-4.7-12.3-4.7-17 0l-19.8 19.8-19-19 16.9-16.9C107.1 12.9 101.7 0 91 0H12C5.4 0 0 5.4 0 12v79c0 10.7 12.9 16 20.5 8.5l16.9-16.9 19 19-19.8 19.8c-4.7 4.7-4.7 12.3 0 17l28.3 28.3c4.7 4.7 12.3 4.7 17 0l19.8-19.8 16.5 16.5C104.1 185.5 96 211.8 96 240c0 68.5 47.9 125.9 112 140.4V408h-36c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v28c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-28h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-27.6c64.1-14.6 112-71.9 112-140.4 0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V12c0-6.6-5.4-12-12-12zM240 320c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faTrash = {\n prefix: 'fas',\n iconName: 'trash',\n icon: [448, 512, [], \"f1f8\", \"M432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32z\"]\n};\nvar faTrashAlt = {\n prefix: 'fas',\n iconName: 'trash-alt',\n icon: [448, 512, [], \"f2ed\", \"M32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm272-256a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faTrashRestore = {\n prefix: 'fas',\n iconName: 'trash-restore',\n icon: [448, 512, [], \"f829\", \"M53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32zm70.11-175.8l89.38-94.26a15.41 15.41 0 0 1 22.62 0l89.38 94.26c10.08 10.62 2.94 28.8-11.32 28.8H256v112a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V320h-57.37c-14.26 0-21.4-18.18-11.32-28.8zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faTrashRestoreAlt = {\n prefix: 'fas',\n iconName: 'trash-restore-alt',\n icon: [448, 512, [], \"f82a\", \"M32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm91.31-172.8l89.38-94.26a15.41 15.41 0 0 1 22.62 0l89.38 94.26c10.08 10.62 2.94 28.8-11.32 28.8H256v112a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V320h-57.37c-14.26 0-21.4-18.18-11.32-28.8zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faTree = {\n prefix: 'fas',\n iconName: 'tree',\n icon: [384, 512, [], \"f1bb\", \"M378.31 378.49L298.42 288h30.63c9.01 0 16.98-5 20.78-13.06 3.8-8.04 2.55-17.26-3.28-24.05L268.42 160h28.89c9.1 0 17.3-5.35 20.86-13.61 3.52-8.13 1.86-17.59-4.24-24.08L203.66 4.83c-6.03-6.45-17.28-6.45-23.32 0L70.06 122.31c-6.1 6.49-7.75 15.95-4.24 24.08C69.38 154.65 77.59 160 86.69 160h28.89l-78.14 90.91c-5.81 6.78-7.06 15.99-3.27 24.04C37.97 283 45.93 288 54.95 288h30.63L5.69 378.49c-6 6.79-7.36 16.09-3.56 24.26 3.75 8.05 12 13.25 21.01 13.25H160v24.45l-30.29 48.4c-5.32 10.64 2.42 23.16 14.31 23.16h95.96c11.89 0 19.63-12.52 14.31-23.16L224 440.45V416h136.86c9.01 0 17.26-5.2 21.01-13.25 3.8-8.17 2.44-17.47-3.56-24.26z\"]\n};\nvar faTrophy = {\n prefix: 'fas',\n iconName: 'trophy',\n icon: [576, 512, [], \"f091\", \"M552 64H448V24c0-13.3-10.7-24-24-24H152c-13.3 0-24 10.7-24 24v40H24C10.7 64 0 74.7 0 88v56c0 35.7 22.5 72.4 61.9 100.7 31.5 22.7 69.8 37.1 110 41.7C203.3 338.5 240 360 240 360v72h-48c-35.3 0-64 20.7-64 56v12c0 6.6 5.4 12 12 12h296c6.6 0 12-5.4 12-12v-12c0-35.3-28.7-56-64-56h-48v-72s36.7-21.5 68.1-73.6c40.3-4.6 78.6-19 110-41.7 39.3-28.3 61.9-65 61.9-100.7V88c0-13.3-10.7-24-24-24zM99.3 192.8C74.9 175.2 64 155.6 64 144v-16h64.2c1 32.6 5.8 61.2 12.8 86.2-15.1-5.2-29.2-12.4-41.7-21.4zM512 144c0 16.1-17.7 36.1-35.3 48.8-12.5 9-26.7 16.2-41.8 21.4 7-25 11.8-53.6 12.8-86.2H512v16z\"]\n};\nvar faTruck = {\n prefix: 'fas',\n iconName: 'truck',\n icon: [640, 512, [], \"f0d1\", \"M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h16c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm320 0c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z\"]\n};\nvar faTruckLoading = {\n prefix: 'fas',\n iconName: 'truck-loading',\n icon: [640, 512, [], \"f4de\", \"M50.2 375.6c2.3 8.5 11.1 13.6 19.6 11.3l216.4-58c8.5-2.3 13.6-11.1 11.3-19.6l-49.7-185.5c-2.3-8.5-11.1-13.6-19.6-11.3L151 133.3l24.8 92.7-61.8 16.5-24.8-92.7-77.3 20.7C3.4 172.8-1.7 181.6.6 190.1l49.6 185.5zM384 0c-17.7 0-32 14.3-32 32v323.6L5.9 450c-4.3 1.2-6.8 5.6-5.6 9.8l12.6 46.3c1.2 4.3 5.6 6.8 9.8 5.6l393.7-107.4C418.8 464.1 467.6 512 528 512c61.9 0 112-50.1 112-112V0H384zm144 448c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\"]\n};\nvar faTruckMonster = {\n prefix: 'fas',\n iconName: 'truck-monster',\n icon: [640, 512, [], \"f63b\", \"M624 224h-16v-64c0-17.67-14.33-32-32-32h-73.6L419.22 24.02A64.025 64.025 0 0 0 369.24 0H256c-17.67 0-32 14.33-32 32v96H48c-8.84 0-16 7.16-16 16v80H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16.72c29.21-38.65 75.1-64 127.28-64s98.07 25.35 127.28 64h65.45c29.21-38.65 75.1-64 127.28-64s98.07 25.35 127.28 64H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-336-96V64h81.24l51.2 64H288zm304 224h-5.2c-2.2-7.33-5.07-14.28-8.65-20.89l3.67-3.67c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-3.67 3.67A110.85 110.85 0 0 0 512 277.2V272c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v5.2c-7.33 2.2-14.28 5.07-20.89 8.65l-3.67-3.67c-6.25-6.25-16.38-6.25-22.63 0l-22.63 22.63c-6.25 6.25-6.25 16.38 0 22.63l3.67 3.67A110.85 110.85 0 0 0 373.2 352H368c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h5.2c2.2 7.33 5.07 14.28 8.65 20.89l-3.67 3.67c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l3.67-3.67c6.61 3.57 13.57 6.45 20.9 8.65v5.2c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-5.2c7.33-2.2 14.28-5.07 20.9-8.65l3.67 3.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63l-3.67-3.67a110.85 110.85 0 0 0 8.65-20.89h5.2c8.84 0 16-7.16 16-16v-32c-.02-8.84-7.18-16-16.02-16zm-112 80c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm-208-80h-5.2c-2.2-7.33-5.07-14.28-8.65-20.89l3.67-3.67c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-3.67 3.67A110.85 110.85 0 0 0 192 277.2V272c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v5.2c-7.33 2.2-14.28 5.07-20.89 8.65l-3.67-3.67c-6.25-6.25-16.38-6.25-22.63 0L58.18 304.8c-6.25 6.25-6.25 16.38 0 22.63l3.67 3.67a110.85 110.85 0 0 0-8.65 20.89H48c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h5.2c2.2 7.33 5.07 14.28 8.65 20.89l-3.67 3.67c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l3.67-3.67c6.61 3.57 13.57 6.45 20.9 8.65v5.2c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-5.2c7.33-2.2 14.28-5.07 20.9-8.65l3.67 3.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63l-3.67-3.67a110.85 110.85 0 0 0 8.65-20.89h5.2c8.84 0 16-7.16 16-16v-32C288 359.16 280.84 352 272 352zm-112 80c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48z\"]\n};\nvar faTruckMoving = {\n prefix: 'fas',\n iconName: 'truck-moving',\n icon: [640, 512, [], \"f4df\", \"M621.3 237.3l-58.5-58.5c-12-12-28.3-18.7-45.3-18.7H480V64c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64v336c0 44.2 35.8 80 80 80 26.3 0 49.4-12.9 64-32.4 14.6 19.6 37.7 32.4 64 32.4 44.2 0 80-35.8 80-80 0-5.5-.6-10.8-1.6-16h163.2c-1.1 5.2-1.6 10.5-1.6 16 0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16H624c8.8 0 16-7.2 16-16v-85.5c0-17-6.7-33.2-18.7-45.2zM80 432c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm128 0c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm272-224h37.5c4.3 0 8.3 1.7 11.3 4.7l43.3 43.3H480v-48zm48 224c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32z\"]\n};\nvar faTruckPickup = {\n prefix: 'fas',\n iconName: 'truck-pickup',\n icon: [640, 512, [], \"f63c\", \"M624 288h-16v-64c0-17.67-14.33-32-32-32h-48L419.22 56.02A64.025 64.025 0 0 0 369.24 32H256c-17.67 0-32 14.33-32 32v128H64c-17.67 0-32 14.33-32 32v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h49.61c-.76 5.27-1.61 10.52-1.61 16 0 61.86 50.14 112 112 112s112-50.14 112-112c0-5.48-.85-10.73-1.61-16h67.23c-.76 5.27-1.61 10.52-1.61 16 0 61.86 50.14 112 112 112s112-50.14 112-112c0-5.48-.85-10.73-1.61-16H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM288 96h81.24l76.8 96H288V96zM176 416c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48zm288 0c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48z\"]\n};\nvar faTshirt = {\n prefix: 'fas',\n iconName: 'tshirt',\n icon: [640, 512, [], \"f553\", \"M631.2 96.5L436.5 0C416.4 27.8 371.9 47.2 320 47.2S223.6 27.8 203.5 0L8.8 96.5c-7.9 4-11.1 13.6-7.2 21.5l57.2 114.5c4 7.9 13.6 11.1 21.5 7.2l56.6-27.7c10.6-5.2 23 2.5 23 14.4V480c0 17.7 14.3 32 32 32h256c17.7 0 32-14.3 32-32V226.3c0-11.8 12.4-19.6 23-14.4l56.6 27.7c7.9 4 17.5.8 21.5-7.2L638.3 118c4-7.9.8-17.6-7.1-21.5z\"]\n};\nvar faTty = {\n prefix: 'fas',\n iconName: 'tty',\n icon: [512, 512, [], \"f1e4\", \"M5.37 103.822c138.532-138.532 362.936-138.326 501.262 0 6.078 6.078 7.074 15.496 2.583 22.681l-43.214 69.138a18.332 18.332 0 0 1-22.356 7.305l-86.422-34.569a18.335 18.335 0 0 1-11.434-18.846L351.741 90c-62.145-22.454-130.636-21.986-191.483 0l5.953 59.532a18.331 18.331 0 0 1-11.434 18.846l-86.423 34.568a18.334 18.334 0 0 1-22.356-7.305L2.787 126.502a18.333 18.333 0 0 1 2.583-22.68zM96 308v-40c0-6.627-5.373-12-12-12H44c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12H92c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zM96 500v-40c0-6.627-5.373-12-12-12H44c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm288 0v-40c0-6.627-5.373-12-12-12H140c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h232c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12z\"]\n};\nvar faTv = {\n prefix: 'fas',\n iconName: 'tv',\n icon: [640, 512, [], \"f26c\", \"M592 0H48A48 48 0 0 0 0 48v320a48 48 0 0 0 48 48h240v32H112a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H352v-32h240a48 48 0 0 0 48-48V48a48 48 0 0 0-48-48zm-16 352H64V64h512z\"]\n};\nvar faUmbrella = {\n prefix: 'fas',\n iconName: 'umbrella',\n icon: [576, 512, [], \"f0e9\", \"M575.7 280.8C547.1 144.5 437.3 62.6 320 49.9V32c0-17.7-14.3-32-32-32s-32 14.3-32 32v17.9C138.3 62.6 29.5 144.5.3 280.8c-2.2 10.1 8.5 21.3 18.7 11.4 52-55 107.7-52.4 158.6 37 5.3 9.5 14.9 8.6 19.7 0 20.2-35.4 44.9-73.2 90.7-73.2 58.5 0 88.2 68.8 90.7 73.2 4.8 8.6 14.4 9.5 19.7 0 51-89.5 107.1-91.4 158.6-37 10.3 10 20.9-1.3 18.7-11.4zM256 301.7V432c0 8.8-7.2 16-16 16-7.8 0-13.2-5.3-15.1-10.7-5.9-16.7-24.1-25.4-40.8-19.5-16.7 5.9-25.4 24.2-19.5 40.8 11.2 31.9 41.6 53.3 75.4 53.3 44.1 0 80-35.9 80-80V301.6c-9.1-7.9-19.8-13.6-32-13.6-12.3.1-22.4 4.8-32 13.7z\"]\n};\nvar faUmbrellaBeach = {\n prefix: 'fas',\n iconName: 'umbrella-beach',\n icon: [640, 512, [], \"f5ca\", \"M115.38 136.9l102.11 37.18c35.19-81.54 86.21-144.29 139-173.7-95.88-4.89-188.78 36.96-248.53 111.8-6.69 8.4-2.66 21.05 7.42 24.72zm132.25 48.16l238.48 86.83c35.76-121.38 18.7-231.66-42.63-253.98-7.4-2.7-15.13-4-23.09-4-58.02.01-128.27 69.17-172.76 171.15zM521.48 60.5c6.22 16.3 10.83 34.6 13.2 55.19 5.74 49.89-1.42 108.23-18.95 166.98l102.62 37.36c10.09 3.67 21.31-3.43 21.57-14.17 2.32-95.69-41.91-187.44-118.44-245.36zM560 447.98H321.06L386 269.5l-60.14-21.9-72.9 200.37H16c-8.84 0-16 7.16-16 16.01v32.01C0 504.83 7.16 512 16 512h544c8.84 0 16-7.17 16-16.01v-32.01c0-8.84-7.16-16-16-16z\"]\n};\nvar faUnderline = {\n prefix: 'fas',\n iconName: 'underline',\n icon: [448, 512, [], \"f0cd\", \"M32 64h32v160c0 88.22 71.78 160 160 160s160-71.78 160-160V64h32a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H272a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32v160a80 80 0 0 1-160 0V64h32a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm400 384H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faUndo = {\n prefix: 'fas',\n iconName: 'undo',\n icon: [512, 512, [], \"f0e2\", \"M212.333 224.333H12c-6.627 0-12-5.373-12-12V12C0 5.373 5.373 0 12 0h48c6.627 0 12 5.373 12 12v78.112C117.773 39.279 184.26 7.47 258.175 8.007c136.906.994 246.448 111.623 246.157 248.532C504.041 393.258 393.12 504 256.333 504c-64.089 0-122.496-24.313-166.51-64.215-5.099-4.622-5.334-12.554-.467-17.42l33.967-33.967c4.474-4.474 11.662-4.717 16.401-.525C170.76 415.336 211.58 432 256.333 432c97.268 0 176-78.716 176-176 0-97.267-78.716-176-176-176-58.496 0-110.28 28.476-142.274 72.333h98.274c6.627 0 12 5.373 12 12v48c0 6.627-5.373 12-12 12z\"]\n};\nvar faUndoAlt = {\n prefix: 'fas',\n iconName: 'undo-alt',\n icon: [512, 512, [], \"f2ea\", \"M255.545 8c-66.269.119-126.438 26.233-170.86 68.685L48.971 40.971C33.851 25.851 8 36.559 8 57.941V192c0 13.255 10.745 24 24 24h134.059c21.382 0 32.09-25.851 16.971-40.971l-41.75-41.75c30.864-28.899 70.801-44.907 113.23-45.273 92.398-.798 170.283 73.977 169.484 169.442C423.236 348.009 349.816 424 256 424c-41.127 0-79.997-14.678-110.63-41.556-4.743-4.161-11.906-3.908-16.368.553L89.34 422.659c-4.872 4.872-4.631 12.815.482 17.433C133.798 479.813 192.074 504 256 504c136.966 0 247.999-111.033 248-247.998C504.001 119.193 392.354 7.755 255.545 8z\"]\n};\nvar faUniversalAccess = {\n prefix: 'fas',\n iconName: 'universal-access',\n icon: [512, 512, [], \"f29a\", \"M256 48c114.953 0 208 93.029 208 208 0 114.953-93.029 208-208 208-114.953 0-208-93.029-208-208 0-114.953 93.029-208 208-208m0-40C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 56C149.961 64 64 149.961 64 256s85.961 192 192 192 192-85.961 192-192S362.039 64 256 64zm0 44c19.882 0 36 16.118 36 36s-16.118 36-36 36-36-16.118-36-36 16.118-36 36-36zm117.741 98.023c-28.712 6.779-55.511 12.748-82.14 15.807.851 101.023 12.306 123.052 25.037 155.621 3.617 9.26-.957 19.698-10.217 23.315-9.261 3.617-19.699-.957-23.316-10.217-8.705-22.308-17.086-40.636-22.261-78.549h-9.686c-5.167 37.851-13.534 56.208-22.262 78.549-3.615 9.255-14.05 13.836-23.315 10.217-9.26-3.617-13.834-14.056-10.217-23.315 12.713-32.541 24.185-54.541 25.037-155.621-26.629-3.058-53.428-9.027-82.141-15.807-8.6-2.031-13.926-10.648-11.895-19.249s10.647-13.926 19.249-11.895c96.686 22.829 124.283 22.783 220.775 0 8.599-2.03 17.218 3.294 19.249 11.895 2.029 8.601-3.297 17.219-11.897 19.249z\"]\n};\nvar faUniversity = {\n prefix: 'fas',\n iconName: 'university',\n icon: [512, 512, [], \"f19c\", \"M496 128v16a8 8 0 0 1-8 8h-24v12c0 6.627-5.373 12-12 12H60c-6.627 0-12-5.373-12-12v-12H24a8 8 0 0 1-8-8v-16a8 8 0 0 1 4.941-7.392l232-88a7.996 7.996 0 0 1 6.118 0l232 88A8 8 0 0 1 496 128zm-24 304H40c-13.255 0-24 10.745-24 24v16a8 8 0 0 0 8 8h464a8 8 0 0 0 8-8v-16c0-13.255-10.745-24-24-24zM96 192v192H60c-6.627 0-12 5.373-12 12v20h416v-20c0-6.627-5.373-12-12-12h-36V192h-64v192h-64V192h-64v192h-64V192H96z\"]\n};\nvar faUnlink = {\n prefix: 'fas',\n iconName: 'unlink',\n icon: [512, 512, [], \"f127\", \"M304.083 405.907c4.686 4.686 4.686 12.284 0 16.971l-44.674 44.674c-59.263 59.262-155.693 59.266-214.961 0-59.264-59.265-59.264-155.696 0-214.96l44.675-44.675c4.686-4.686 12.284-4.686 16.971 0l39.598 39.598c4.686 4.686 4.686 12.284 0 16.971l-44.675 44.674c-28.072 28.073-28.072 73.75 0 101.823 28.072 28.072 73.75 28.073 101.824 0l44.674-44.674c4.686-4.686 12.284-4.686 16.971 0l39.597 39.598zm-56.568-260.216c4.686 4.686 12.284 4.686 16.971 0l44.674-44.674c28.072-28.075 73.75-28.073 101.824 0 28.072 28.073 28.072 73.75 0 101.823l-44.675 44.674c-4.686 4.686-4.686 12.284 0 16.971l39.598 39.598c4.686 4.686 12.284 4.686 16.971 0l44.675-44.675c59.265-59.265 59.265-155.695 0-214.96-59.266-59.264-155.695-59.264-214.961 0l-44.674 44.674c-4.686 4.686-4.686 12.284 0 16.971l39.597 39.598zm234.828 359.28l22.627-22.627c9.373-9.373 9.373-24.569 0-33.941L63.598 7.029c-9.373-9.373-24.569-9.373-33.941 0L7.029 29.657c-9.373 9.373-9.373 24.569 0 33.941l441.373 441.373c9.373 9.372 24.569 9.372 33.941 0z\"]\n};\nvar faUnlock = {\n prefix: 'fas',\n iconName: 'unlock',\n icon: [448, 512, [], \"f09c\", \"M400 256H152V152.9c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v16c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-16C376 68 307.5-.3 223.5 0 139.5.3 72 69.5 72 153.5V256H48c-26.5 0-48 21.5-48 48v160c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48z\"]\n};\nvar faUnlockAlt = {\n prefix: 'fas',\n iconName: 'unlock-alt',\n icon: [448, 512, [], \"f13e\", \"M400 256H152V152.9c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v16c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-16C376 68 307.5-.3 223.5 0 139.5.3 72 69.5 72 153.5V256H48c-26.5 0-48 21.5-48 48v160c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48zM264 408c0 22.1-17.9 40-40 40s-40-17.9-40-40v-48c0-22.1 17.9-40 40-40s40 17.9 40 40v48z\"]\n};\nvar faUpload = {\n prefix: 'fas',\n iconName: 'upload',\n icon: [512, 512, [], \"f093\", \"M296 384h-80c-13.3 0-24-10.7-24-24V192h-87.7c-17.8 0-26.7-21.5-14.1-34.1L242.3 5.7c7.5-7.5 19.8-7.5 27.3 0l152.2 152.2c12.6 12.6 3.7 34.1-14.1 34.1H320v168c0 13.3-10.7 24-24 24zm216-8v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h136v8c0 30.9 25.1 56 56 56h80c30.9 0 56-25.1 56-56v-8h136c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z\"]\n};\nvar faUser = {\n prefix: 'fas',\n iconName: 'user',\n icon: [448, 512, [], \"f007\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\"]\n};\nvar faUserAlt = {\n prefix: 'fas',\n iconName: 'user-alt',\n icon: [512, 512, [], \"f406\", \"M256 288c79.5 0 144-64.5 144-144S335.5 0 256 0 112 64.5 112 144s64.5 144 144 144zm128 32h-55.1c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16H128C57.3 320 0 377.3 0 448v16c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48v-16c0-70.7-57.3-128-128-128z\"]\n};\nvar faUserAltSlash = {\n prefix: 'fas',\n iconName: 'user-alt-slash',\n icon: [640, 512, [], \"f4fa\", \"M633.8 458.1L389.6 269.3C433.8 244.7 464 198.1 464 144 464 64.5 399.5 0 320 0c-67.1 0-123 46.1-139 108.2L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3zM198.4 320C124.2 320 64 380.2 64 454.4v9.6c0 26.5 21.5 48 48 48h382.2L245.8 320h-47.4z\"]\n};\nvar faUserAstronaut = {\n prefix: 'fas',\n iconName: 'user-astronaut',\n icon: [448, 512, [], \"f4fb\", \"M64 224h13.5c24.7 56.5 80.9 96 146.5 96s121.8-39.5 146.5-96H384c8.8 0 16-7.2 16-16v-96c0-8.8-7.2-16-16-16h-13.5C345.8 39.5 289.6 0 224 0S102.2 39.5 77.5 96H64c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16zm40-88c0-22.1 21.5-40 48-40h144c26.5 0 48 17.9 48 40v24c0 53-43 96-96 96h-48c-53 0-96-43-96-96v-24zm72 72l12-36 36-12-36-12-12-36-12 36-36 12 36 12 12 36zm151.6 113.4C297.7 340.7 262.2 352 224 352s-73.7-11.3-103.6-30.6C52.9 328.5 0 385 0 454.4v9.6c0 26.5 21.5 48 48 48h80v-64c0-17.7 14.3-32 32-32h128c17.7 0 32 14.3 32 32v64h80c26.5 0 48-21.5 48-48v-9.6c0-69.4-52.9-125.9-120.4-133zM272 448c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm-96 0c-8.8 0-16 7.2-16 16v48h32v-48c0-8.8-7.2-16-16-16z\"]\n};\nvar faUserCheck = {\n prefix: 'fas',\n iconName: 'user-check',\n icon: [640, 512, [], \"f4fc\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4zm323-128.4l-27.8-28.1c-4.6-4.7-12.1-4.7-16.8-.1l-104.8 104-45.5-45.8c-4.6-4.7-12.1-4.7-16.8-.1l-28.1 27.9c-4.7 4.6-4.7 12.1-.1 16.8l81.7 82.3c4.6 4.7 12.1 4.7 16.8.1l141.3-140.2c4.6-4.7 4.7-12.2.1-16.8z\"]\n};\nvar faUserCircle = {\n prefix: 'fas',\n iconName: 'user-circle',\n icon: [496, 512, [], \"f2bd\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 96c48.6 0 88 39.4 88 88s-39.4 88-88 88-88-39.4-88-88 39.4-88 88-88zm0 344c-58.7 0-111.3-26.6-146.5-68.2 18.8-35.4 55.6-59.8 98.5-59.8 2.4 0 4.8.4 7.1 1.1 13 4.2 26.6 6.9 40.9 6.9 14.3 0 28-2.7 40.9-6.9 2.3-.7 4.7-1.1 7.1-1.1 42.9 0 79.7 24.4 98.5 59.8C359.3 421.4 306.7 448 248 448z\"]\n};\nvar faUserClock = {\n prefix: 'fas',\n iconName: 'user-clock',\n icon: [640, 512, [], \"f4fd\", \"M496 224c-79.6 0-144 64.4-144 144s64.4 144 144 144 144-64.4 144-144-64.4-144-144-144zm64 150.3c0 5.3-4.4 9.7-9.7 9.7h-60.6c-5.3 0-9.7-4.4-9.7-9.7v-76.6c0-5.3 4.4-9.7 9.7-9.7h12.6c5.3 0 9.7 4.4 9.7 9.7V352h38.3c5.3 0 9.7 4.4 9.7 9.7v12.6zM320 368c0-27.8 6.7-54.1 18.2-77.5-8-1.5-16.2-2.5-24.6-2.5h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h347.1c-45.3-31.9-75.1-84.5-75.1-144zm-96-112c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128z\"]\n};\nvar faUserCog = {\n prefix: 'fas',\n iconName: 'user-cog',\n icon: [640, 512, [], \"f4fe\", \"M610.5 373.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 400.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm201.2 226.5c-2.3-1.2-4.6-2.6-6.8-3.9l-7.9 4.6c-6 3.4-12.8 5.3-19.6 5.3-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-5.5-17.7 1.9-36.4 17.9-45.7l7.9-4.6c-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-16-9.2-23.4-28-17.9-45.7.9-2.9 2.2-5.8 3.2-8.7-3.8-.3-7.5-1.2-11.4-1.2h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c10.1 0 19.5-3.2 27.2-8.5-1.2-3.8-2-7.7-2-11.8v-9.2z\"]\n};\nvar faUserEdit = {\n prefix: 'fas',\n iconName: 'user-edit',\n icon: [640, 512, [], \"f4ff\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h274.9c-2.4-6.8-3.4-14-2.6-21.3l6.8-60.9 1.2-11.1 7.9-7.9 77.3-77.3c-24.5-27.7-60-45.5-99.9-45.5zm45.3 145.3l-6.8 61c-1.1 10.2 7.5 18.8 17.6 17.6l60.9-6.8 137.9-137.9-71.7-71.7-137.9 137.8zM633 268.9L595.1 231c-9.3-9.3-24.5-9.3-33.8 0l-37.8 37.8-4.1 4.1 71.8 71.7 41.8-41.8c9.3-9.4 9.3-24.5 0-33.9z\"]\n};\nvar faUserFriends = {\n prefix: 'fas',\n iconName: 'user-friends',\n icon: [640, 512, [], \"f500\", \"M192 256c61.9 0 112-50.1 112-112S253.9 32 192 32 80 82.1 80 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C51.6 288 0 339.6 0 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zM480 256c53 0 96-43 96-96s-43-96-96-96-96 43-96 96 43 96 96 96zm48 32h-3.8c-13.9 4.8-28.6 8-44.2 8s-30.3-3.2-44.2-8H432c-20.4 0-39.2 5.9-55.7 15.4 24.4 26.3 39.7 61.2 39.7 99.8v38.4c0 2.2-.5 4.3-.6 6.4H592c26.5 0 48-21.5 48-48 0-61.9-50.1-112-112-112z\"]\n};\nvar faUserGraduate = {\n prefix: 'fas',\n iconName: 'user-graduate',\n icon: [448, 512, [], \"f501\", \"M319.4 320.6L224 416l-95.4-95.4C57.1 323.7 0 382.2 0 454.4v9.6c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-9.6c0-72.2-57.1-130.7-128.6-133.8zM13.6 79.8l6.4 1.5v58.4c-7 4.2-12 11.5-12 20.3 0 8.4 4.6 15.4 11.1 19.7L3.5 242c-1.7 6.9 2.1 14 7.6 14h41.8c5.5 0 9.3-7.1 7.6-14l-15.6-62.3C51.4 175.4 56 168.4 56 160c0-8.8-5-16.1-12-20.3V87.1l66 15.9c-8.6 17.2-14 36.4-14 57 0 70.7 57.3 128 128 128s128-57.3 128-128c0-20.6-5.3-39.8-14-57l96.3-23.2c18.2-4.4 18.2-27.1 0-31.5l-190.4-46c-13-3.1-26.7-3.1-39.7 0L13.6 48.2c-18.1 4.4-18.1 27.2 0 31.6z\"]\n};\nvar faUserInjured = {\n prefix: 'fas',\n iconName: 'user-injured',\n icon: [448, 512, [], \"f728\", \"M277.37 11.98C261.08 4.47 243.11 0 224 0c-53.69 0-99.5 33.13-118.51 80h81.19l90.69-68.02zM342.51 80c-7.9-19.47-20.67-36.2-36.49-49.52L239.99 80h102.52zM224 256c70.69 0 128-57.31 128-128 0-5.48-.95-10.7-1.61-16H97.61c-.67 5.3-1.61 10.52-1.61 16 0 70.69 57.31 128 128 128zM80 299.7V512h128.26l-98.45-221.52A132.835 132.835 0 0 0 80 299.7zM0 464c0 26.51 21.49 48 48 48V320.24C18.88 344.89 0 381.26 0 422.4V464zm256-48h-55.38l42.67 96H256c26.47 0 48-21.53 48-48s-21.53-48-48-48zm57.6-128h-16.71c-22.24 10.18-46.88 16-72.89 16s-50.65-5.82-72.89-16h-7.37l42.67 96H256c44.11 0 80 35.89 80 80 0 18.08-6.26 34.59-16.41 48H400c26.51 0 48-21.49 48-48v-41.6c0-74.23-60.17-134.4-134.4-134.4z\"]\n};\nvar faUserLock = {\n prefix: 'fas',\n iconName: 'user-lock',\n icon: [640, 512, [], \"f502\", \"M224 256A128 128 0 1 0 96 128a128 128 0 0 0 128 128zm96 64a63.08 63.08 0 0 1 8.1-30.5c-4.8-.5-9.5-1.5-14.5-1.5h-16.7a174.08 174.08 0 0 1-145.8 0h-16.7A134.43 134.43 0 0 0 0 422.4V464a48 48 0 0 0 48 48h280.9a63.54 63.54 0 0 1-8.9-32zm288-32h-32v-80a80 80 0 0 0-160 0v80h-32a32 32 0 0 0-32 32v160a32 32 0 0 0 32 32h224a32 32 0 0 0 32-32V320a32 32 0 0 0-32-32zM496 432a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm32-144h-64v-80a32 32 0 0 1 64 0z\"]\n};\nvar faUserMd = {\n prefix: 'fas',\n iconName: 'user-md',\n icon: [448, 512, [], \"f0f0\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zM104 424c0 13.3 10.7 24 24 24s24-10.7 24-24-10.7-24-24-24-24 10.7-24 24zm216-135.4v49c36.5 7.4 64 39.8 64 78.4v41.7c0 7.6-5.4 14.2-12.9 15.7l-32.2 6.4c-4.3.9-8.5-1.9-9.4-6.3l-3.1-15.7c-.9-4.3 1.9-8.6 6.3-9.4l19.3-3.9V416c0-62.8-96-65.1-96 1.9v26.7l19.3 3.9c4.3.9 7.1 5.1 6.3 9.4l-3.1 15.7c-.9 4.3-5.1 7.1-9.4 6.3l-31.2-4.2c-7.9-1.1-13.8-7.8-13.8-15.9V416c0-38.6 27.5-70.9 64-78.4v-45.2c-2.2.7-4.4 1.1-6.6 1.9-18 6.3-37.3 9.8-57.4 9.8s-39.4-3.5-57.4-9.8c-7.4-2.6-14.9-4.2-22.6-5.2v81.6c23.1 6.9 40 28.1 40 53.4 0 30.9-25.1 56-56 56s-56-25.1-56-56c0-25.3 16.9-46.5 40-53.4v-80.4C48.5 301 0 355.8 0 422.4v44.8C0 491.9 20.1 512 44.8 512h358.4c24.7 0 44.8-20.1 44.8-44.8v-44.8c0-72-56.8-130.3-128-133.8z\"]\n};\nvar faUserMinus = {\n prefix: 'fas',\n iconName: 'user-minus',\n icon: [640, 512, [], \"f503\", \"M624 208H432c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h192c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400 48c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\"]\n};\nvar faUserNinja = {\n prefix: 'fas',\n iconName: 'user-ninja',\n icon: [448, 512, [], \"f504\", \"M325.4 289.2L224 390.6 122.6 289.2C54 295.3 0 352.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-70.2-54-127.1-122.6-133.2zM32 192c27.3 0 51.8-11.5 69.2-29.7 15.1 53.9 64 93.7 122.8 93.7 70.7 0 128-57.3 128-128S294.7 0 224 0c-50.4 0-93.6 29.4-114.5 71.8C92.1 47.8 64 32 32 32c0 33.4 17.1 62.8 43.1 80-26 17.2-43.1 46.6-43.1 80zm144-96h96c17.7 0 32 14.3 32 32H144c0-17.7 14.3-32 32-32z\"]\n};\nvar faUserNurse = {\n prefix: 'fas',\n iconName: 'user-nurse',\n icon: [448, 512, [], \"f82f\", \"M319.41,320,224,415.39,128.59,320C57.1,323.1,0,381.6,0,453.79A58.21,58.21,0,0,0,58.21,512H389.79A58.21,58.21,0,0,0,448,453.79C448,381.6,390.9,323.1,319.41,320ZM224,304A128,128,0,0,0,352,176V65.82a32,32,0,0,0-20.76-30L246.47,4.07a64,64,0,0,0-44.94,0L116.76,35.86A32,32,0,0,0,96,65.82V176A128,128,0,0,0,224,304ZM184,71.67a5,5,0,0,1,5-5h21.67V45a5,5,0,0,1,5-5h16.66a5,5,0,0,1,5,5V66.67H259a5,5,0,0,1,5,5V88.33a5,5,0,0,1-5,5H237.33V115a5,5,0,0,1-5,5H215.67a5,5,0,0,1-5-5V93.33H189a5,5,0,0,1-5-5ZM144,160H304v16a80,80,0,0,1-160,0Z\"]\n};\nvar faUserPlus = {\n prefix: 'fas',\n iconName: 'user-plus',\n icon: [640, 512, [], \"f234\", \"M624 208h-64v-64c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v64h-64c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h64v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-64h64c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400 48c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\"]\n};\nvar faUserSecret = {\n prefix: 'fas',\n iconName: 'user-secret',\n icon: [448, 512, [], \"f21b\", \"M383.9 308.3l23.9-62.6c4-10.5-3.7-21.7-15-21.7h-58.5c11-18.9 17.8-40.6 17.8-64v-.3c39.2-7.8 64-19.1 64-31.7 0-13.3-27.3-25.1-70.1-33-9.2-32.8-27-65.8-40.6-82.8-9.5-11.9-25.9-15.6-39.5-8.8l-27.6 13.8c-9 4.5-19.6 4.5-28.6 0L182.1 3.4c-13.6-6.8-30-3.1-39.5 8.8-13.5 17-31.4 50-40.6 82.8-42.7 7.9-70 19.7-70 33 0 12.6 24.8 23.9 64 31.7v.3c0 23.4 6.8 45.1 17.8 64H56.3c-11.5 0-19.2 11.7-14.7 22.3l25.8 60.2C27.3 329.8 0 372.7 0 422.4v44.8C0 491.9 20.1 512 44.8 512h358.4c24.7 0 44.8-20.1 44.8-44.8v-44.8c0-48.4-25.8-90.4-64.1-114.1zM176 480l-41.6-192 49.6 32 24 40-32 120zm96 0l-32-120 24-40 49.6-32L272 480zm41.7-298.5c-3.9 11.9-7 24.6-16.5 33.4-10.1 9.3-48 22.4-64-25-2.8-8.4-15.4-8.4-18.3 0-17 50.2-56 32.4-64 25-9.5-8.8-12.7-21.5-16.5-33.4-.8-2.5-6.3-5.7-6.3-5.8v-10.8c28.3 3.6 61 5.8 96 5.8s67.7-2.1 96-5.8v10.8c-.1.1-5.6 3.2-6.4 5.8z\"]\n};\nvar faUserShield = {\n prefix: 'fas',\n iconName: 'user-shield',\n icon: [640, 512, [], \"f505\", \"M622.3 271.1l-115.2-45c-4.1-1.6-12.6-3.7-22.2 0l-115.2 45c-10.7 4.2-17.7 14-17.7 24.9 0 111.6 68.7 188.8 132.9 213.9 9.6 3.7 18 1.6 22.2 0C558.4 489.9 640 420.5 640 296c0-10.9-7-20.7-17.7-24.9zM496 462.4V273.3l95.5 37.3c-5.6 87.1-60.9 135.4-95.5 151.8zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm96 40c0-2.5.8-4.8 1.1-7.2-2.5-.1-4.9-.8-7.5-.8h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c6.8 0 13.3-1.5 19.2-4-54-42.9-99.2-116.7-99.2-212z\"]\n};\nvar faUserSlash = {\n prefix: 'fas',\n iconName: 'user-slash',\n icon: [640, 512, [], \"f506\", \"M633.8 458.1L362.3 248.3C412.1 230.7 448 183.8 448 128 448 57.3 390.7 0 320 0c-67.1 0-121.5 51.8-126.9 117.4L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3zM96 422.4V464c0 26.5 21.5 48 48 48h350.2L207.4 290.3C144.2 301.3 96 356 96 422.4z\"]\n};\nvar faUserTag = {\n prefix: 'fas',\n iconName: 'user-tag',\n icon: [640, 512, [], \"f507\", \"M630.6 364.9l-90.3-90.2c-12-12-28.3-18.7-45.3-18.7h-79.3c-17.7 0-32 14.3-32 32v79.2c0 17 6.7 33.2 18.7 45.2l90.3 90.2c12.5 12.5 32.8 12.5 45.3 0l92.5-92.5c12.6-12.5 12.6-32.7.1-45.2zm-182.8-21c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24c0 13.2-10.7 24-24 24zm-223.8-88c70.7 0 128-57.3 128-128C352 57.3 294.7 0 224 0S96 57.3 96 128c0 70.6 57.3 127.9 128 127.9zm127.8 111.2V294c-12.2-3.6-24.9-6.2-38.2-6.2h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 287.9 0 348.1 0 422.3v41.6c0 26.5 21.5 48 48 48h352c15.5 0 29.1-7.5 37.9-18.9l-58-58c-18.1-18.1-28.1-42.2-28.1-67.9z\"]\n};\nvar faUserTie = {\n prefix: 'fas',\n iconName: 'user-tie',\n icon: [448, 512, [], \"f508\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm95.8 32.6L272 480l-32-136 32-56h-96l32 56-32 136-47.8-191.4C56.9 292 0 350.3 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-72.1-56.9-130.4-128.2-133.8z\"]\n};\nvar faUserTimes = {\n prefix: 'fas',\n iconName: 'user-times',\n icon: [640, 512, [], \"f235\", \"M589.6 240l45.6-45.6c6.3-6.3 6.3-16.5 0-22.8l-22.8-22.8c-6.3-6.3-16.5-6.3-22.8 0L544 194.4l-45.6-45.6c-6.3-6.3-16.5-6.3-22.8 0l-22.8 22.8c-6.3 6.3-6.3 16.5 0 22.8l45.6 45.6-45.6 45.6c-6.3 6.3-6.3 16.5 0 22.8l22.8 22.8c6.3 6.3 16.5 6.3 22.8 0l45.6-45.6 45.6 45.6c6.3 6.3 16.5 6.3 22.8 0l22.8-22.8c6.3-6.3 6.3-16.5 0-22.8L589.6 240zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\"]\n};\nvar faUsers = {\n prefix: 'fas',\n iconName: 'users',\n icon: [640, 512, [], \"f0c0\", \"M96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm448 0c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm32 32h-64c-17.6 0-33.5 7.1-45.1 18.6 40.3 22.1 68.9 62 75.1 109.4h66c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64zm-256 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zm-223.7-13.4C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z\"]\n};\nvar faUsersCog = {\n prefix: 'fas',\n iconName: 'users-cog',\n icon: [640, 512, [], \"f509\", \"M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z\"]\n};\nvar faUsersSlash = {\n prefix: 'fas',\n iconName: 'users-slash',\n icon: [640, 512, [], \"e073\", \"M132.65,212.32,36.21,137.78A63.4,63.4,0,0,0,32,160a63.84,63.84,0,0,0,100.65,52.32Zm40.44,62.28A63.79,63.79,0,0,0,128,256H64A64.06,64.06,0,0,0,0,320v32a32,32,0,0,0,32,32H97.91A146.62,146.62,0,0,1,173.09,274.6ZM544,224a64,64,0,1,0-64-64A64.06,64.06,0,0,0,544,224ZM500.56,355.11a114.24,114.24,0,0,0-84.47-65.28L361,247.23c41.46-16.3,71-55.92,71-103.23A111.93,111.93,0,0,0,320,32c-57.14,0-103.69,42.83-110.6,98.08L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.46A16,16,0,0,0,6.18,53.91L594.53,508.63A16,16,0,0,0,617,505.82l19.64-25.27a16,16,0,0,0-2.81-22.45ZM128,403.21V432a48,48,0,0,0,48,48H464a47.45,47.45,0,0,0,12.57-1.87L232,289.13C173.74,294.83,128,343.42,128,403.21ZM576,256H512a63.79,63.79,0,0,0-45.09,18.6A146.29,146.29,0,0,1,542,384h66a32,32,0,0,0,32-32V320A64.06,64.06,0,0,0,576,256Z\"]\n};\nvar faUtensilSpoon = {\n prefix: 'fas',\n iconName: 'utensil-spoon',\n icon: [512, 512, [], \"f2e5\", \"M480.1 31.9c-55-55.1-164.9-34.5-227.8 28.5-49.3 49.3-55.1 110-28.8 160.4L9 413.2c-11.6 10.5-12.1 28.5-1 39.5L59.3 504c11 11 29.1 10.5 39.5-1.1l192.4-214.4c50.4 26.3 111.1 20.5 160.4-28.8 63-62.9 83.6-172.8 28.5-227.8z\"]\n};\nvar faUtensils = {\n prefix: 'fas',\n iconName: 'utensils',\n icon: [416, 512, [], \"f2e7\", \"M207.9 15.2c.8 4.7 16.1 94.5 16.1 128.8 0 52.3-27.8 89.6-68.9 104.6L168 486.7c.7 13.7-10.2 25.3-24 25.3H80c-13.7 0-24.7-11.5-24-25.3l12.9-238.1C27.7 233.6 0 196.2 0 144 0 109.6 15.3 19.9 16.1 15.2 19.3-5.1 61.4-5.4 64 16.3v141.2c1.3 3.4 15.1 3.2 16 0 1.4-25.3 7.9-139.2 8-141.8 3.3-20.8 44.7-20.8 47.9 0 .2 2.7 6.6 116.5 8 141.8.9 3.2 14.8 3.4 16 0V16.3c2.6-21.6 44.8-21.4 48-1.1zm119.2 285.7l-15 185.1c-1.2 14 9.9 26 23.9 26h56c13.3 0 24-10.7 24-24V24c0-13.2-10.7-24-24-24-82.5 0-221.4 178.5-64.9 300.9z\"]\n};\nvar faVectorSquare = {\n prefix: 'fas',\n iconName: 'vector-square',\n icon: [512, 512, [], \"f5cb\", \"M512 128V32c0-17.67-14.33-32-32-32h-96c-17.67 0-32 14.33-32 32H160c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v96c0 17.67 14.33 32 32 32v192c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32h192c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32V160c17.67 0 32-14.33 32-32zm-96-64h32v32h-32V64zM64 64h32v32H64V64zm32 384H64v-32h32v32zm352 0h-32v-32h32v32zm-32-96h-32c-17.67 0-32 14.33-32 32v32H160v-32c0-17.67-14.33-32-32-32H96V160h32c17.67 0 32-14.33 32-32V96h192v32c0 17.67 14.33 32 32 32h32v192z\"]\n};\nvar faVenus = {\n prefix: 'fas',\n iconName: 'venus',\n icon: [288, 512, [], \"f221\", \"M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V368H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80z\"]\n};\nvar faVenusDouble = {\n prefix: 'fas',\n iconName: 'venus-double',\n icon: [512, 512, [], \"f226\", \"M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V368H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80zm336 140.4V368h36c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-36v36c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-36h-36c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h36v-51.6c-21.2-4.8-40.6-14.3-57.2-27.3 14-16.7 25-36 32.1-57.1 14.5 14.8 34.7 24 57.1 24 44.1 0 80-35.9 80-80s-35.9-80-80-80c-22.3 0-42.6 9.2-57.1 24-7.1-21.1-18-40.4-32.1-57.1C303.4 43.6 334.3 32 368 32c79.5 0 144 64.5 144 144 0 68.5-47.9 125.9-112 140.4z\"]\n};\nvar faVenusMars = {\n prefix: 'fas',\n iconName: 'venus-mars',\n icon: [576, 512, [], \"f228\", \"M564 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7C422.5 72.1 396.2 64 368 64c-33.7 0-64.6 11.6-89.2 30.9 14 16.7 25 36 32.1 57.1 14.5-14.8 34.7-24 57.1-24 44.1 0 80 35.9 80 80s-35.9 80-80 80c-22.3 0-42.6-9.2-57.1-24-7.1 21.1-18 40.4-32.1 57.1 24.5 19.4 55.5 30.9 89.2 30.9 79.5 0 144-64.5 144-144 0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.4 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12V12c0-6.6-5.4-12-12-12zM144 64C64.5 64 0 128.5 0 208c0 68.5 47.9 125.9 112 140.4V400H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.6 112-71.9 112-140.4 0-79.5-64.5-144-144-144zm0 224c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faVest = {\n prefix: 'fas',\n iconName: 'vest',\n icon: [448, 512, [], \"e085\", \"M437.252,239.877,384,160V32A32,32,0,0,0,352,0H320a24.021,24.021,0,0,0-13.312,4.031l-25,16.672a103.794,103.794,0,0,1-115.376,0l-25-16.672A24.021,24.021,0,0,0,128,0H96A32,32,0,0,0,64,32V160L10.748,239.877A64,64,0,0,0,0,275.377V480a32,32,0,0,0,32,32H192V288a31.987,31.987,0,0,1,1.643-10.119L207.135,237.4,150.188,66.564A151.518,151.518,0,0,0,224,86.234a151.55,151.55,0,0,0,73.812-19.672L224,288V512H416a32,32,0,0,0,32-32V275.377A64,64,0,0,0,437.252,239.877ZM131.312,371.312l-48,48a16,16,0,0,1-22.624-22.624l48-48a16,16,0,0,1,22.624,22.624Zm256,48a15.992,15.992,0,0,1-22.624,0l-48-48a16,16,0,0,1,22.624-22.624l48,48A15.993,15.993,0,0,1,387.312,419.312Z\"]\n};\nvar faVestPatches = {\n prefix: 'fas',\n iconName: 'vest-patches',\n icon: [448, 512, [], \"e086\", \"M437.252,239.877,384,160V32A32,32,0,0,0,352,0H320a23.982,23.982,0,0,0-13.312,4.031l-25,16.672a103.794,103.794,0,0,1-115.376,0l-25-16.672A23.982,23.982,0,0,0,128,0H96A32,32,0,0,0,64,32V160L10.748,239.877A64,64,0,0,0,0,275.377V480a32,32,0,0,0,32,32H192V288a31.987,31.987,0,0,1,1.643-10.119L207.135,237.4,150.188,66.561A151.579,151.579,0,0,0,224,86.234a151.565,151.565,0,0,0,73.811-19.668L224,288V512H416a32,32,0,0,0,32-32V275.377A64,64,0,0,0,437.252,239.877ZM63.5,272.484a12.01,12.01,0,0,1,17-16.968l15.5,15.5,15.5-15.5a12.01,12.01,0,0,1,17,16.968L112.984,288,128.5,303.516a12.01,12.01,0,0,1-17,16.968L96,304.984l-15.5,15.5a12.01,12.01,0,0,1-17-16.968L79.016,288ZM96,456a40,40,0,1,1,40-40A40,40,0,0,1,96,456ZM359.227,335.785,310.7,336a6.671,6.671,0,0,1-6.7-6.7l.215-48.574A24.987,24.987,0,0,1,331.43,256.1c12.789,1.162,22.129,12.619,22.056,25.419l-.037,5.057,5.051-.037c12.826-.035,24.236,9.275,25.4,22.076A24.948,24.948,0,0,1,359.227,335.785Z\"]\n};\nvar faVial = {\n prefix: 'fas',\n iconName: 'vial',\n icon: [480, 512, [], \"f492\", \"M477.7 186.1L309.5 18.3c-3.1-3.1-8.2-3.1-11.3 0l-34 33.9c-3.1 3.1-3.1 8.2 0 11.3l11.2 11.1L33 316.5c-38.8 38.7-45.1 102-9.4 143.5 20.6 24 49.5 36 78.4 35.9 26.4 0 52.8-10 72.9-30.1l246.3-245.7 11.2 11.1c3.1 3.1 8.2 3.1 11.3 0l34-33.9c3.1-3 3.1-8.1 0-11.2zM318 256H161l148-147.7 78.5 78.3L318 256z\"]\n};\nvar faVials = {\n prefix: 'fas',\n iconName: 'vials',\n icon: [640, 512, [], \"f493\", \"M72 64h24v240c0 44.1 35.9 80 80 80s80-35.9 80-80V64h24c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8H72c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm72 0h64v96h-64V64zm480 384H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM360 64h24v240c0 44.1 35.9 80 80 80s80-35.9 80-80V64h24c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm72 0h64v96h-64V64z\"]\n};\nvar faVideo = {\n prefix: 'fas',\n iconName: 'video',\n icon: [576, 512, [], \"f03d\", \"M336.2 64H47.8C21.4 64 0 85.4 0 111.8v288.4C0 426.6 21.4 448 47.8 448h288.4c26.4 0 47.8-21.4 47.8-47.8V111.8c0-26.4-21.4-47.8-47.8-47.8zm189.4 37.7L416 177.3v157.4l109.6 75.5c21.2 14.6 50.4-.3 50.4-25.8V127.5c0-25.4-29.1-40.4-50.4-25.8z\"]\n};\nvar faVideoSlash = {\n prefix: 'fas',\n iconName: 'video-slash',\n icon: [640, 512, [], \"f4e2\", \"M633.8 458.1l-55-42.5c15.4-1.4 29.2-13.7 29.2-31.1v-257c0-25.5-29.1-40.4-50.4-25.8L448 177.3v137.2l-32-24.7v-178c0-26.4-21.4-47.8-47.8-47.8H123.9L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4L42.7 82 416 370.6l178.5 138c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.5-6.9 4.2-17-2.8-22.4zM32 400.2c0 26.4 21.4 47.8 47.8 47.8h288.4c11.2 0 21.4-4 29.6-10.5L32 154.7v245.5z\"]\n};\nvar faVihara = {\n prefix: 'fas',\n iconName: 'vihara',\n icon: [640, 512, [], \"f6a7\", \"M632.88 400.71L544 352v-64l55.16-17.69c11.79-5.9 11.79-22.72 0-28.62L480 192v-64l27.31-16.3c7.72-7.72 5.61-20.74-4.16-25.62L320 0 136.85 86.07c-9.77 4.88-11.88 17.9-4.16 25.62L160 128v64L40.84 241.69c-11.79 5.9-11.79 22.72 0 28.62L96 288v64L7.12 400.71c-5.42 3.62-7.7 9.63-7 15.29.62 5.01 3.57 9.75 8.72 12.33L64 448v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h160v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h160v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48l55.15-19.67c5.16-2.58 8.1-7.32 8.72-12.33.71-5.67-1.57-11.68-6.99-15.29zM224 128h192v64H224v-64zm-64 224v-64h320v64H160z\"]\n};\nvar faVirus = {\n prefix: 'fas',\n iconName: 'virus',\n icon: [512, 512, [], \"e074\", \"M483.55,227.55H462c-50.68,0-76.07-61.27-40.23-97.11L437,115.19A28.44,28.44,0,0,0,396.8,75L381.56,90.22c-35.84,35.83-97.11,10.45-97.11-40.23V28.44a28.45,28.45,0,0,0-56.9,0V50c0,50.68-61.27,76.06-97.11,40.23L115.2,75A28.44,28.44,0,0,0,75,115.19l15.25,15.25c35.84,35.84,10.45,97.11-40.23,97.11H28.45a28.45,28.45,0,1,0,0,56.89H50c50.68,0,76.07,61.28,40.23,97.12L75,396.8A28.45,28.45,0,0,0,115.2,437l15.24-15.25c35.84-35.84,97.11-10.45,97.11,40.23v21.54a28.45,28.45,0,0,0,56.9,0V462c0-50.68,61.27-76.07,97.11-40.23L396.8,437A28.45,28.45,0,0,0,437,396.8l-15.25-15.24c-35.84-35.84-10.45-97.12,40.23-97.12h21.54a28.45,28.45,0,1,0,0-56.89ZM224,272a48,48,0,1,1,48-48A48,48,0,0,1,224,272Zm80,56a24,24,0,1,1,24-24A24,24,0,0,1,304,328Z\"]\n};\nvar faVirusSlash = {\n prefix: 'fas',\n iconName: 'virus-slash',\n icon: [640, 512, [], \"e075\", \"M114,227.6H92.4C76.7,227.6,64,240.3,64,256s12.7,28.4,28.4,28.4H114c50.7,0,76.1,61.3,40.2,97.1L139,396.8 c-11.5,10.7-12.2,28.7-1.6,40.2s28.7,12.2,40.2,1.6c0.5-0.5,1.1-1,1.6-1.6l15.2-15.2c35.8-35.8,97.1-10.5,97.1,40.2v21.5 c0,15.7,12.8,28.4,28.5,28.4c15.7,0,28.4-12.7,28.4-28.4V462c0-26.6,17-45.9,38.2-53.4l-244.5-189 C133.7,224.7,123.9,227.5,114,227.6z M617,505.8l19.6-25.3c5.4-7,4.2-17-2.8-22.5L470.6,332c4.2-25.4,24.9-47.5,55.4-47.5h21.5 c15.7,0,28.4-12.7,28.4-28.4s-12.7-28.4-28.4-28.4H526c-50.7,0-76.1-61.3-40.2-97.1l15.2-15.3c10.7-11.5,10-29.5-1.6-40.2 c-10.9-10.1-27.7-10.1-38.6,0l-15.2,15.2c-35.8,35.8-97.1,10.5-97.1-40.2V28.5C348.4,12.7,335.7,0,320,0 c-15.7,0-28.4,12.7-28.4,28.4V50c0,50.7-61.3,76.1-97.1,40.2L179.2,75c-11.1-11.1-29.4-10.6-40.5,0.5L45.5,3.4 c-7-5.4-17-4.2-22.5,2.8L3.4,31.5c-5.4,7-4.2,17,2.8,22.5l588.4,454.7C601.5,514.1,611.6,512.8,617,505.8z M335.4,227.5l-62.9-48.6 c4.9-1.8,10.2-2.8,15.4-2.9c26.5,0,48,21.5,48,48C336,225.2,335.5,226.3,335.4,227.5z\"]\n};\nvar faViruses = {\n prefix: 'fas',\n iconName: 'viruses',\n icon: [640, 512, [], \"e076\", \"M624,352H611.88c-28.51,0-42.79-34.47-22.63-54.63l8.58-8.57a16,16,0,1,0-22.63-22.63l-8.57,8.58C546.47,294.91,512,280.63,512,252.12V240a16,16,0,0,0-32,0v12.12c0,28.51-34.47,42.79-54.63,22.63l-8.57-8.58a16,16,0,0,0-22.63,22.63l8.58,8.57c20.16,20.16,5.88,54.63-22.63,54.63H368a16,16,0,0,0,0,32h12.12c28.51,0,42.79,34.47,22.63,54.63l-8.58,8.57a16,16,0,1,0,22.63,22.63l8.57-8.58c20.16-20.16,54.63-5.88,54.63,22.63V496a16,16,0,0,0,32,0V483.88c0-28.51,34.47-42.79,54.63-22.63l8.57,8.58a16,16,0,1,0,22.63-22.63l-8.58-8.57C569.09,418.47,583.37,384,611.88,384H624a16,16,0,0,0,0-32ZM480,384a32,32,0,1,1,32-32A32,32,0,0,1,480,384ZM346.51,213.33h16.16a21.33,21.33,0,0,0,0-42.66H346.51c-38,0-57.05-46-30.17-72.84l11.43-11.44A21.33,21.33,0,0,0,297.6,56.23L286.17,67.66c-26.88,26.88-72.84,7.85-72.84-30.17V21.33a21.33,21.33,0,0,0-42.66,0V37.49c0,38-46,57.05-72.84,30.17L86.4,56.23A21.33,21.33,0,0,0,56.23,86.39L67.66,97.83c26.88,26.88,7.85,72.84-30.17,72.84H21.33a21.33,21.33,0,0,0,0,42.66H37.49c38,0,57.05,46,30.17,72.84L56.23,297.6A21.33,21.33,0,1,0,86.4,327.77l11.43-11.43c26.88-26.88,72.84-7.85,72.84,30.17v16.16a21.33,21.33,0,0,0,42.66,0V346.51c0-38,46-57.05,72.84-30.17l11.43,11.43a21.33,21.33,0,0,0,30.17-30.17l-11.43-11.43C289.46,259.29,308.49,213.33,346.51,213.33ZM160,192a32,32,0,1,1,32-32A32,32,0,0,1,160,192Zm80,32a16,16,0,1,1,16-16A16,16,0,0,1,240,224Z\"]\n};\nvar faVoicemail = {\n prefix: 'fas',\n iconName: 'voicemail',\n icon: [640, 512, [], \"f897\", \"M496 128a144 144 0 0 0-119.74 224H263.74A144 144 0 1 0 144 416h352a144 144 0 0 0 0-288zM64 272a80 80 0 1 1 80 80 80 80 0 0 1-80-80zm432 80a80 80 0 1 1 80-80 80 80 0 0 1-80 80z\"]\n};\nvar faVolleyballBall = {\n prefix: 'fas',\n iconName: 'volleyball-ball',\n icon: [512, 512, [], \"f45f\", \"M231.39 243.48a285.56 285.56 0 0 0-22.7-105.7c-90.8 42.4-157.5 122.4-180.3 216.8a249 249 0 0 0 56.9 81.1 333.87 333.87 0 0 1 146.1-192.2zm-36.9-134.4a284.23 284.23 0 0 0-57.4-70.7c-91 49.8-144.8 152.9-125 262.2 33.4-83.1 98.4-152 182.4-191.5zm187.6 165.1c8.6-99.8-27.3-197.5-97.5-264.4-14.7-1.7-51.6-5.5-98.9 8.5A333.87 333.87 0 0 1 279.19 241a285 285 0 0 0 102.9 33.18zm-124.7 9.5a286.33 286.33 0 0 0-80.2 72.6c82 57.3 184.5 75.1 277.5 47.8a247.15 247.15 0 0 0 42.2-89.9 336.1 336.1 0 0 1-80.9 10.4c-54.6-.1-108.9-14.1-158.6-40.9zm-98.3 99.7c-15.2 26-25.7 54.4-32.1 84.2a247.07 247.07 0 0 0 289-22.1c-112.9 16.1-203.3-24.8-256.9-62.1zm180.3-360.6c55.3 70.4 82.5 161.2 74.6 253.6a286.59 286.59 0 0 0 89.7-14.2c0-2 .3-4 .3-6 0-107.8-68.7-199.1-164.6-233.4z\"]\n};\nvar faVolumeDown = {\n prefix: 'fas',\n iconName: 'volume-down',\n icon: [384, 512, [], \"f027\", \"M215.03 72.04L126.06 161H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V89.02c0-21.47-25.96-31.98-40.97-16.98zm123.2 108.08c-11.58-6.33-26.19-2.16-32.61 9.45-6.39 11.61-2.16 26.2 9.45 32.61C327.98 229.28 336 242.62 336 257c0 14.38-8.02 27.72-20.92 34.81-11.61 6.41-15.84 21-9.45 32.61 6.43 11.66 21.05 15.8 32.61 9.45 28.23-15.55 45.77-45 45.77-76.88s-17.54-61.32-45.78-76.87z\"]\n};\nvar faVolumeMute = {\n prefix: 'fas',\n iconName: 'volume-mute',\n icon: [512, 512, [], \"f6a9\", \"M215.03 71.05L126.06 160H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V88.02c0-21.46-25.96-31.98-40.97-16.97zM461.64 256l45.64-45.64c6.3-6.3 6.3-16.52 0-22.82l-22.82-22.82c-6.3-6.3-16.52-6.3-22.82 0L416 210.36l-45.64-45.64c-6.3-6.3-16.52-6.3-22.82 0l-22.82 22.82c-6.3 6.3-6.3 16.52 0 22.82L370.36 256l-45.63 45.63c-6.3 6.3-6.3 16.52 0 22.82l22.82 22.82c6.3 6.3 16.52 6.3 22.82 0L416 301.64l45.64 45.64c6.3 6.3 16.52 6.3 22.82 0l22.82-22.82c6.3-6.3 6.3-16.52 0-22.82L461.64 256z\"]\n};\nvar faVolumeOff = {\n prefix: 'fas',\n iconName: 'volume-off',\n icon: [256, 512, [], \"f026\", \"M215 71l-89 89H24a24 24 0 0 0-24 24v144a24 24 0 0 0 24 24h102.06L215 441c15 15 41 4.47 41-17V88c0-21.47-26-32-41-17z\"]\n};\nvar faVolumeUp = {\n prefix: 'fas',\n iconName: 'volume-up',\n icon: [576, 512, [], \"f028\", \"M215.03 71.05L126.06 160H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V88.02c0-21.46-25.96-31.98-40.97-16.97zm233.32-51.08c-11.17-7.33-26.18-4.24-33.51 6.95-7.34 11.17-4.22 26.18 6.95 33.51 66.27 43.49 105.82 116.6 105.82 195.58 0 78.98-39.55 152.09-105.82 195.58-11.17 7.32-14.29 22.34-6.95 33.5 7.04 10.71 21.93 14.56 33.51 6.95C528.27 439.58 576 351.33 576 256S528.27 72.43 448.35 19.97zM480 256c0-63.53-32.06-121.94-85.77-156.24-11.19-7.14-26.03-3.82-33.12 7.46s-3.78 26.21 7.41 33.36C408.27 165.97 432 209.11 432 256s-23.73 90.03-63.48 115.42c-11.19 7.14-14.5 22.07-7.41 33.36 6.51 10.36 21.12 15.14 33.12 7.46C447.94 377.94 480 319.54 480 256zm-141.77-76.87c-11.58-6.33-26.19-2.16-32.61 9.45-6.39 11.61-2.16 26.2 9.45 32.61C327.98 228.28 336 241.63 336 256c0 14.38-8.02 27.72-20.92 34.81-11.61 6.41-15.84 21-9.45 32.61 6.43 11.66 21.05 15.8 32.61 9.45 28.23-15.55 45.77-45 45.77-76.88s-17.54-61.32-45.78-76.86z\"]\n};\nvar faVoteYea = {\n prefix: 'fas',\n iconName: 'vote-yea',\n icon: [640, 512, [], \"f772\", \"M608 320h-64v64h22.4c5.3 0 9.6 3.6 9.6 8v16c0 4.4-4.3 8-9.6 8H73.6c-5.3 0-9.6-3.6-9.6-8v-16c0-4.4 4.3-8 9.6-8H96v-64H32c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32h576c17.7 0 32-14.3 32-32v-96c0-17.7-14.3-32-32-32zm-96 64V64.3c0-17.9-14.5-32.3-32.3-32.3H160.4C142.5 32 128 46.5 128 64.3V384h384zM211.2 202l25.5-25.3c4.2-4.2 11-4.2 15.2.1l41.3 41.6 95.2-94.4c4.2-4.2 11-4.2 15.2.1l25.3 25.5c4.2 4.2 4.2 11-.1 15.2L300.5 292c-4.2 4.2-11 4.2-15.2-.1l-74.1-74.7c-4.3-4.2-4.2-11 0-15.2z\"]\n};\nvar faVrCardboard = {\n prefix: 'fas',\n iconName: 'vr-cardboard',\n icon: [640, 512, [], \"f729\", \"M608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h160.22c25.19 0 48.03-14.77 58.36-37.74l27.74-61.64C286.21 331.08 302.35 320 320 320s33.79 11.08 41.68 28.62l27.74 61.64C399.75 433.23 422.6 448 447.78 448H608c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM160 304c-35.35 0-64-28.65-64-64s28.65-64 64-64 64 28.65 64 64-28.65 64-64 64zm320 0c-35.35 0-64-28.65-64-64s28.65-64 64-64 64 28.65 64 64-28.65 64-64 64z\"]\n};\nvar faWalking = {\n prefix: 'fas',\n iconName: 'walking',\n icon: [320, 512, [], \"f554\", \"M208 96c26.5 0 48-21.5 48-48S234.5 0 208 0s-48 21.5-48 48 21.5 48 48 48zm94.5 149.1l-23.3-11.8-9.7-29.4c-14.7-44.6-55.7-75.8-102.2-75.9-36-.1-55.9 10.1-93.3 25.2-21.6 8.7-39.3 25.2-49.7 46.2L17.6 213c-7.8 15.8-1.5 35 14.2 42.9 15.6 7.9 34.6 1.5 42.5-14.3L81 228c3.5-7 9.3-12.5 16.5-15.4l26.8-10.8-15.2 60.7c-5.2 20.8.4 42.9 14.9 58.8l59.9 65.4c7.2 7.9 12.3 17.4 14.9 27.7l18.3 73.3c4.3 17.1 21.7 27.6 38.8 23.3 17.1-4.3 27.6-21.7 23.3-38.8l-22.2-89c-2.6-10.3-7.7-19.9-14.9-27.7l-45.5-49.7 17.2-68.7 5.5 16.5c5.3 16.1 16.7 29.4 31.7 37l23.3 11.8c15.6 7.9 34.6 1.5 42.5-14.3 7.7-15.7 1.4-35.1-14.3-43zM73.6 385.8c-3.2 8.1-8 15.4-14.2 21.5l-50 50.1c-12.5 12.5-12.5 32.8 0 45.3s32.7 12.5 45.2 0l59.4-59.4c6.1-6.1 10.9-13.4 14.2-21.5l13.5-33.8c-55.3-60.3-38.7-41.8-47.4-53.7l-20.7 51.5z\"]\n};\nvar faWallet = {\n prefix: 'fas',\n iconName: 'wallet',\n icon: [512, 512, [], \"f555\", \"M461.2 128H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h384c8.84 0 16-7.16 16-16 0-26.51-21.49-48-48-48H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h397.2c28.02 0 50.8-21.53 50.8-48V176c0-26.47-22.78-48-50.8-48zM416 336c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faWarehouse = {\n prefix: 'fas',\n iconName: 'warehouse',\n icon: [640, 512, [], \"f494\", \"M504 352H136.4c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8H504c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm0 96H136.1c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm0-192H136.6c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8H504c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm106.5-139L338.4 3.7a48.15 48.15 0 0 0-36.9 0L29.5 117C11.7 124.5 0 141.9 0 161.3V504c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8V256c0-17.6 14.6-32 32.6-32h382.8c18 0 32.6 14.4 32.6 32v248c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8V161.3c0-19.4-11.7-36.8-29.5-44.3z\"]\n};\nvar faWater = {\n prefix: 'fas',\n iconName: 'water',\n icon: [576, 512, [], \"f773\", \"M562.1 383.9c-21.5-2.4-42.1-10.5-57.9-22.9-14.1-11.1-34.2-11.3-48.2 0-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3zm0-144c-21.5-2.4-42.1-10.5-57.9-22.9-14.1-11.1-34.2-11.3-48.2 0-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3zm0-144C540.6 93.4 520 85.4 504.2 73 490.1 61.9 470 61.7 456 73c-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3z\"]\n};\nvar faWaveSquare = {\n prefix: 'fas',\n iconName: 'wave-square',\n icon: [640, 512, [], \"f83e\", \"M476 480H324a36 36 0 0 1-36-36V96h-96v156a36 36 0 0 1-36 36H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h112V68a36 36 0 0 1 36-36h152a36 36 0 0 1 36 36v348h96V260a36 36 0 0 1 36-36h140a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H512v156a36 36 0 0 1-36 36z\"]\n};\nvar faWeight = {\n prefix: 'fas',\n iconName: 'weight',\n icon: [512, 512, [], \"f496\", \"M448 64h-25.98C438.44 92.28 448 125.01 448 160c0 105.87-86.13 192-192 192S64 265.87 64 160c0-34.99 9.56-67.72 25.98-96H64C28.71 64 0 92.71 0 128v320c0 35.29 28.71 64 64 64h384c35.29 0 64-28.71 64-64V128c0-35.29-28.71-64-64-64zM256 320c88.37 0 160-71.63 160-160S344.37 0 256 0 96 71.63 96 160s71.63 160 160 160zm-.3-151.94l33.58-78.36c3.5-8.17 12.94-11.92 21.03-8.41 8.12 3.48 11.88 12.89 8.41 21l-33.67 78.55C291.73 188 296 197.45 296 208c0 22.09-17.91 40-40 40s-40-17.91-40-40c0-21.98 17.76-39.77 39.7-39.94z\"]\n};\nvar faWeightHanging = {\n prefix: 'fas',\n iconName: 'weight-hanging',\n icon: [512, 512, [], \"f5cd\", \"M510.28 445.86l-73.03-292.13c-3.8-15.19-16.44-25.72-30.87-25.72h-60.25c3.57-10.05 5.88-20.72 5.88-32 0-53.02-42.98-96-96-96s-96 42.98-96 96c0 11.28 2.3 21.95 5.88 32h-60.25c-14.43 0-27.08 10.54-30.87 25.72L1.72 445.86C-6.61 479.17 16.38 512 48.03 512h415.95c31.64 0 54.63-32.83 46.3-66.14zM256 128c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32z\"]\n};\nvar faWheelchair = {\n prefix: 'fas',\n iconName: 'wheelchair',\n icon: [512, 512, [], \"f193\", \"M496.101 385.669l14.227 28.663c3.929 7.915.697 17.516-7.218 21.445l-65.465 32.886c-16.049 7.967-35.556 1.194-43.189-15.055L331.679 320H192c-15.925 0-29.426-11.71-31.679-27.475C126.433 55.308 128.38 70.044 128 64c0-36.358 30.318-65.635 67.052-63.929 33.271 1.545 60.048 28.905 60.925 62.201.868 32.933-23.152 60.423-54.608 65.039l4.67 32.69H336c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16H215.182l4.572 32H352a32 32 0 0 1 28.962 18.392L438.477 396.8l36.178-18.349c7.915-3.929 17.517-.697 21.446 7.218zM311.358 352h-24.506c-7.788 54.204-54.528 96-110.852 96-61.757 0-112-50.243-112-112 0-41.505 22.694-77.809 56.324-97.156-3.712-25.965-6.844-47.86-9.488-66.333C45.956 198.464 0 261.963 0 336c0 97.047 78.953 176 176 176 71.87 0 133.806-43.308 161.11-105.192L311.358 352z\"]\n};\nvar faWifi = {\n prefix: 'fas',\n iconName: 'wifi',\n icon: [640, 512, [], \"f1eb\", \"M634.91 154.88C457.74-8.99 182.19-8.93 5.09 154.88c-6.66 6.16-6.79 16.59-.35 22.98l34.24 33.97c6.14 6.1 16.02 6.23 22.4.38 145.92-133.68 371.3-133.71 517.25 0 6.38 5.85 16.26 5.71 22.4-.38l34.24-33.97c6.43-6.39 6.3-16.82-.36-22.98zM320 352c-35.35 0-64 28.65-64 64s28.65 64 64 64 64-28.65 64-64-28.65-64-64-64zm202.67-83.59c-115.26-101.93-290.21-101.82-405.34 0-6.9 6.1-7.12 16.69-.57 23.15l34.44 33.99c6 5.92 15.66 6.32 22.05.8 83.95-72.57 209.74-72.41 293.49 0 6.39 5.52 16.05 5.13 22.05-.8l34.44-33.99c6.56-6.46 6.33-17.06-.56-23.15z\"]\n};\nvar faWind = {\n prefix: 'fas',\n iconName: 'wind',\n icon: [512, 512, [], \"f72e\", \"M156.7 256H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h142.2c15.9 0 30.8 10.9 33.4 26.6 3.3 20-12.1 37.4-31.6 37.4-14.1 0-26.1-9.2-30.4-21.9-2.1-6.3-8.6-10.1-15.2-10.1H81.6c-9.8 0-17.7 8.8-15.9 18.4 8.6 44.1 47.6 77.6 94.2 77.6 57.1 0 102.7-50.1 95.2-108.6C249 291 205.4 256 156.7 256zM16 224h336c59.7 0 106.8-54.8 93.8-116.7-7.6-36.2-36.9-65.5-73.1-73.1-55.4-11.6-105.1 24.9-114.9 75.5-1.9 9.6 6.1 18.3 15.8 18.3h32.8c6.7 0 13.1-3.8 15.2-10.1C325.9 105.2 337.9 96 352 96c19.4 0 34.9 17.4 31.6 37.4-2.6 15.7-17.4 26.6-33.4 26.6H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16zm384 32H243.7c19.3 16.6 33.2 38.8 39.8 64H400c26.5 0 48 21.5 48 48s-21.5 48-48 48c-17.9 0-33.3-9.9-41.6-24.4-2.9-5-8.7-7.6-14.5-7.6h-33.8c-10.9 0-19 10.8-15.3 21.1 17.8 50.6 70.5 84.8 129.4 72.3 41.2-8.7 75.1-41.6 84.7-82.7C526 321.5 470.5 256 400 256z\"]\n};\nvar faWindowClose = {\n prefix: 'fas',\n iconName: 'window-close',\n icon: [512, 512, [], \"f410\", \"M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-83.6 290.5c4.8 4.8 4.8 12.6 0 17.4l-40.5 40.5c-4.8 4.8-12.6 4.8-17.4 0L256 313.3l-66.5 67.1c-4.8 4.8-12.6 4.8-17.4 0l-40.5-40.5c-4.8-4.8-4.8-12.6 0-17.4l67.1-66.5-67.1-66.5c-4.8-4.8-4.8-12.6 0-17.4l40.5-40.5c4.8-4.8 12.6-4.8 17.4 0l66.5 67.1 66.5-67.1c4.8-4.8 12.6-4.8 17.4 0l40.5 40.5c4.8 4.8 4.8 12.6 0 17.4L313.3 256l67.1 66.5z\"]\n};\nvar faWindowMaximize = {\n prefix: 'fas',\n iconName: 'window-maximize',\n icon: [512, 512, [], \"f2d0\", \"M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-16 160H64v-84c0-6.6 5.4-12 12-12h360c6.6 0 12 5.4 12 12v84z\"]\n};\nvar faWindowMinimize = {\n prefix: 'fas',\n iconName: 'window-minimize',\n icon: [512, 512, [], \"f2d1\", \"M464 352H48c-26.5 0-48 21.5-48 48v32c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48v-32c0-26.5-21.5-48-48-48z\"]\n};\nvar faWindowRestore = {\n prefix: 'fas',\n iconName: 'window-restore',\n icon: [512, 512, [], \"f2d2\", \"M512 48v288c0 26.5-21.5 48-48 48h-48V176c0-44.1-35.9-80-80-80H128V48c0-26.5 21.5-48 48-48h288c26.5 0 48 21.5 48 48zM384 176v288c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48h288c26.5 0 48 21.5 48 48zm-68 28c0-6.6-5.4-12-12-12H76c-6.6 0-12 5.4-12 12v52h252v-52z\"]\n};\nvar faWineBottle = {\n prefix: 'fas',\n iconName: 'wine-bottle',\n icon: [512, 512, [], \"f72f\", \"M507.31 72.57L439.43 4.69c-6.25-6.25-16.38-6.25-22.63 0l-22.63 22.63c-6.25 6.25-6.25 16.38 0 22.63l-76.67 76.67c-46.58-19.7-102.4-10.73-140.37 27.23L18.75 312.23c-24.99 24.99-24.99 65.52 0 90.51l90.51 90.51c24.99 24.99 65.52 24.99 90.51 0l158.39-158.39c37.96-37.96 46.93-93.79 27.23-140.37l76.67-76.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.24-6.24 6.24-16.37-.01-22.62zM179.22 423.29l-90.51-90.51 122.04-122.04 90.51 90.51-122.04 122.04z\"]\n};\nvar faWineGlass = {\n prefix: 'fas',\n iconName: 'wine-glass',\n icon: [288, 512, [], \"f4e3\", \"M216 464h-40V346.81c68.47-15.89 118.05-79.91 111.4-154.16l-15.95-178.1C270.71 6.31 263.9 0 255.74 0H32.26c-8.15 0-14.97 6.31-15.7 14.55L.6 192.66C-6.05 266.91 43.53 330.93 112 346.82V464H72c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h208c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40z\"]\n};\nvar faWineGlassAlt = {\n prefix: 'fas',\n iconName: 'wine-glass-alt',\n icon: [288, 512, [], \"f5ce\", \"M216 464h-40V346.81c68.47-15.89 118.05-79.91 111.4-154.16l-15.95-178.1C270.71 6.31 263.9 0 255.74 0H32.26c-8.15 0-14.97 6.31-15.7 14.55L.6 192.66C-6.05 266.91 43.53 330.93 112 346.82V464H72c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h208c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40zM61.75 48h164.5l7.17 80H54.58l7.17-80z\"]\n};\nvar faWonSign = {\n prefix: 'fas',\n iconName: 'won-sign',\n icon: [576, 512, [], \"f159\", \"M564 192c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-48l18.6-80.6c1.7-7.5-4-14.7-11.7-14.7h-46.1c-5.7 0-10.6 4-11.7 9.5L450.7 128H340.8l-19.7-86c-1.3-5.5-6.1-9.3-11.7-9.3h-44c-5.6 0-10.4 3.8-11.7 9.3l-20 86H125l-17.5-85.7c-1.1-5.6-6.1-9.6-11.8-9.6H53.6c-7.7 0-13.4 7.1-11.7 14.6L60 128H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h62.3l7.2 32H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h83.9l40.9 182.6c1.2 5.5 6.1 9.4 11.7 9.4h56.8c5.6 0 10.4-3.9 11.7-9.3L259.3 288h55.1l42.4 182.7c1.3 5.4 6.1 9.3 11.7 9.3h56.8c5.6 0 10.4-3.9 11.7-9.3L479.1 288H564c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-70.1l7.4-32zM183.8 342c-6.2 25.8-6.8 47.2-7.3 47.2h-1.1s-1.7-22-6.8-47.2l-11-54h38.8zm27.5-118h-66.8l-6.5-32h80.8zm62.9 0l2-8.6c1.9-8 3.5-16 4.8-23.4h11.8c1.3 7.4 2.9 15.4 4.8 23.4l2 8.6zm130.9 118c-5.1 25.2-6.8 47.2-6.8 47.2h-1.1c-.6 0-1.1-21.4-7.3-47.2l-12.4-54h39.1zm25.2-118h-67.4l-7.3-32h81.6z\"]\n};\nvar faWrench = {\n prefix: 'fas',\n iconName: 'wrench',\n icon: [512, 512, [], \"f0ad\", \"M507.73 109.1c-2.24-9.03-13.54-12.09-20.12-5.51l-74.36 74.36-67.88-11.31-11.31-67.88 74.36-74.36c6.62-6.62 3.43-17.9-5.66-20.16-47.38-11.74-99.55.91-136.58 37.93-39.64 39.64-50.55 97.1-34.05 147.2L18.74 402.76c-24.99 24.99-24.99 65.51 0 90.5 24.99 24.99 65.51 24.99 90.5 0l213.21-213.21c50.12 16.71 107.47 5.68 147.37-34.22 37.07-37.07 49.7-89.32 37.91-136.73zM64 472c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faXRay = {\n prefix: 'fas',\n iconName: 'x-ray',\n icon: [640, 512, [], \"f497\", \"M240 384c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm160 32c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zM624 0H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16zm0 448h-48V96H64v352H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM480 248c0 4.4-3.6 8-8 8H336v32h104c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H336v32h64c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48v-16h-64v16c0 26.5-21.5 48-48 48s-48-21.5-48-48 21.5-48 48-48h64v-32H200c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h104v-32H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h136v-32H200c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h104v-24c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v24h104c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H336v32h136c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faYenSign = {\n prefix: 'fas',\n iconName: 'yen-sign',\n icon: [384, 512, [], \"f157\", \"M351.2 32h-65.3c-4.6 0-8.8 2.6-10.8 6.7l-55.4 113.2c-14.5 34.7-27.1 71.9-27.1 71.9h-1.3s-12.6-37.2-27.1-71.9L108.8 38.7c-2-4.1-6.2-6.7-10.8-6.7H32.8c-9.1 0-14.8 9.7-10.6 17.6L102.3 200H44c-6.6 0-12 5.4-12 12v32c0 6.6 5.4 12 12 12h88.2l19.8 37.2V320H44c-6.6 0-12 5.4-12 12v32c0 6.6 5.4 12 12 12h108v92c0 6.6 5.4 12 12 12h56c6.6 0 12-5.4 12-12v-92h108c6.6 0 12-5.4 12-12v-32c0-6.6-5.4-12-12-12H232v-26.8l19.8-37.2H340c6.6 0 12-5.4 12-12v-32c0-6.6-5.4-12-12-12h-58.3l80.1-150.4c4.3-7.9-1.5-17.6-10.6-17.6z\"]\n};\nvar faYinYang = {\n prefix: 'fas',\n iconName: 'yin-yang',\n icon: [496, 512, [], \"f6ad\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 376c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-128c-53.02 0-96 42.98-96 96s42.98 96 96 96c-106.04 0-192-85.96-192-192S141.96 64 248 64c53.02 0 96 42.98 96 96s-42.98 96-96 96zm0-128c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z\"]\n};\nvar _iconsCache = {\n faAd: faAd,\n faAddressBook: faAddressBook,\n faAddressCard: faAddressCard,\n faAdjust: faAdjust,\n faAirFreshener: faAirFreshener,\n faAlignCenter: faAlignCenter,\n faAlignJustify: faAlignJustify,\n faAlignLeft: faAlignLeft,\n faAlignRight: faAlignRight,\n faAllergies: faAllergies,\n faAmbulance: faAmbulance,\n faAmericanSignLanguageInterpreting: faAmericanSignLanguageInterpreting,\n faAnchor: faAnchor,\n faAngleDoubleDown: faAngleDoubleDown,\n faAngleDoubleLeft: faAngleDoubleLeft,\n faAngleDoubleRight: faAngleDoubleRight,\n faAngleDoubleUp: faAngleDoubleUp,\n faAngleDown: faAngleDown,\n faAngleLeft: faAngleLeft,\n faAngleRight: faAngleRight,\n faAngleUp: faAngleUp,\n faAngry: faAngry,\n faAnkh: faAnkh,\n faAppleAlt: faAppleAlt,\n faArchive: faArchive,\n faArchway: faArchway,\n faArrowAltCircleDown: faArrowAltCircleDown,\n faArrowAltCircleLeft: faArrowAltCircleLeft,\n faArrowAltCircleRight: faArrowAltCircleRight,\n faArrowAltCircleUp: faArrowAltCircleUp,\n faArrowCircleDown: faArrowCircleDown,\n faArrowCircleLeft: faArrowCircleLeft,\n faArrowCircleRight: faArrowCircleRight,\n faArrowCircleUp: faArrowCircleUp,\n faArrowDown: faArrowDown,\n faArrowLeft: faArrowLeft,\n faArrowRight: faArrowRight,\n faArrowUp: faArrowUp,\n faArrowsAlt: faArrowsAlt,\n faArrowsAltH: faArrowsAltH,\n faArrowsAltV: faArrowsAltV,\n faAssistiveListeningSystems: faAssistiveListeningSystems,\n faAsterisk: faAsterisk,\n faAt: faAt,\n faAtlas: faAtlas,\n faAtom: faAtom,\n faAudioDescription: faAudioDescription,\n faAward: faAward,\n faBaby: faBaby,\n faBabyCarriage: faBabyCarriage,\n faBackspace: faBackspace,\n faBackward: faBackward,\n faBacon: faBacon,\n faBacteria: faBacteria,\n faBacterium: faBacterium,\n faBahai: faBahai,\n faBalanceScale: faBalanceScale,\n faBalanceScaleLeft: faBalanceScaleLeft,\n faBalanceScaleRight: faBalanceScaleRight,\n faBan: faBan,\n faBandAid: faBandAid,\n faBarcode: faBarcode,\n faBars: faBars,\n faBaseballBall: faBaseballBall,\n faBasketballBall: faBasketballBall,\n faBath: faBath,\n faBatteryEmpty: faBatteryEmpty,\n faBatteryFull: faBatteryFull,\n faBatteryHalf: faBatteryHalf,\n faBatteryQuarter: faBatteryQuarter,\n faBatteryThreeQuarters: faBatteryThreeQuarters,\n faBed: faBed,\n faBeer: faBeer,\n faBell: faBell,\n faBellSlash: faBellSlash,\n faBezierCurve: faBezierCurve,\n faBible: faBible,\n faBicycle: faBicycle,\n faBiking: faBiking,\n faBinoculars: faBinoculars,\n faBiohazard: faBiohazard,\n faBirthdayCake: faBirthdayCake,\n faBlender: faBlender,\n faBlenderPhone: faBlenderPhone,\n faBlind: faBlind,\n faBlog: faBlog,\n faBold: faBold,\n faBolt: faBolt,\n faBomb: faBomb,\n faBone: faBone,\n faBong: faBong,\n faBook: faBook,\n faBookDead: faBookDead,\n faBookMedical: faBookMedical,\n faBookOpen: faBookOpen,\n faBookReader: faBookReader,\n faBookmark: faBookmark,\n faBorderAll: faBorderAll,\n faBorderNone: faBorderNone,\n faBorderStyle: faBorderStyle,\n faBowlingBall: faBowlingBall,\n faBox: faBox,\n faBoxOpen: faBoxOpen,\n faBoxTissue: faBoxTissue,\n faBoxes: faBoxes,\n faBraille: faBraille,\n faBrain: faBrain,\n faBreadSlice: faBreadSlice,\n faBriefcase: faBriefcase,\n faBriefcaseMedical: faBriefcaseMedical,\n faBroadcastTower: faBroadcastTower,\n faBroom: faBroom,\n faBrush: faBrush,\n faBug: faBug,\n faBuilding: faBuilding,\n faBullhorn: faBullhorn,\n faBullseye: faBullseye,\n faBurn: faBurn,\n faBus: faBus,\n faBusAlt: faBusAlt,\n faBusinessTime: faBusinessTime,\n faCalculator: faCalculator,\n faCalendar: faCalendar,\n faCalendarAlt: faCalendarAlt,\n faCalendarCheck: faCalendarCheck,\n faCalendarDay: faCalendarDay,\n faCalendarMinus: faCalendarMinus,\n faCalendarPlus: faCalendarPlus,\n faCalendarTimes: faCalendarTimes,\n faCalendarWeek: faCalendarWeek,\n faCamera: faCamera,\n faCameraRetro: faCameraRetro,\n faCampground: faCampground,\n faCandyCane: faCandyCane,\n faCannabis: faCannabis,\n faCapsules: faCapsules,\n faCar: faCar,\n faCarAlt: faCarAlt,\n faCarBattery: faCarBattery,\n faCarCrash: faCarCrash,\n faCarSide: faCarSide,\n faCaravan: faCaravan,\n faCaretDown: faCaretDown,\n faCaretLeft: faCaretLeft,\n faCaretRight: faCaretRight,\n faCaretSquareDown: faCaretSquareDown,\n faCaretSquareLeft: faCaretSquareLeft,\n faCaretSquareRight: faCaretSquareRight,\n faCaretSquareUp: faCaretSquareUp,\n faCaretUp: faCaretUp,\n faCarrot: faCarrot,\n faCartArrowDown: faCartArrowDown,\n faCartPlus: faCartPlus,\n faCashRegister: faCashRegister,\n faCat: faCat,\n faCertificate: faCertificate,\n faChair: faChair,\n faChalkboard: faChalkboard,\n faChalkboardTeacher: faChalkboardTeacher,\n faChargingStation: faChargingStation,\n faChartArea: faChartArea,\n faChartBar: faChartBar,\n faChartLine: faChartLine,\n faChartPie: faChartPie,\n faCheck: faCheck,\n faCheckCircle: faCheckCircle,\n faCheckDouble: faCheckDouble,\n faCheckSquare: faCheckSquare,\n faCheese: faCheese,\n faChess: faChess,\n faChessBishop: faChessBishop,\n faChessBoard: faChessBoard,\n faChessKing: faChessKing,\n faChessKnight: faChessKnight,\n faChessPawn: faChessPawn,\n faChessQueen: faChessQueen,\n faChessRook: faChessRook,\n faChevronCircleDown: faChevronCircleDown,\n faChevronCircleLeft: faChevronCircleLeft,\n faChevronCircleRight: faChevronCircleRight,\n faChevronCircleUp: faChevronCircleUp,\n faChevronDown: faChevronDown,\n faChevronLeft: faChevronLeft,\n faChevronRight: faChevronRight,\n faChevronUp: faChevronUp,\n faChild: faChild,\n faChurch: faChurch,\n faCircle: faCircle,\n faCircleNotch: faCircleNotch,\n faCity: faCity,\n faClinicMedical: faClinicMedical,\n faClipboard: faClipboard,\n faClipboardCheck: faClipboardCheck,\n faClipboardList: faClipboardList,\n faClock: faClock,\n faClone: faClone,\n faClosedCaptioning: faClosedCaptioning,\n faCloud: faCloud,\n faCloudDownloadAlt: faCloudDownloadAlt,\n faCloudMeatball: faCloudMeatball,\n faCloudMoon: faCloudMoon,\n faCloudMoonRain: faCloudMoonRain,\n faCloudRain: faCloudRain,\n faCloudShowersHeavy: faCloudShowersHeavy,\n faCloudSun: faCloudSun,\n faCloudSunRain: faCloudSunRain,\n faCloudUploadAlt: faCloudUploadAlt,\n faCocktail: faCocktail,\n faCode: faCode,\n faCodeBranch: faCodeBranch,\n faCoffee: faCoffee,\n faCog: faCog,\n faCogs: faCogs,\n faCoins: faCoins,\n faColumns: faColumns,\n faComment: faComment,\n faCommentAlt: faCommentAlt,\n faCommentDollar: faCommentDollar,\n faCommentDots: faCommentDots,\n faCommentMedical: faCommentMedical,\n faCommentSlash: faCommentSlash,\n faComments: faComments,\n faCommentsDollar: faCommentsDollar,\n faCompactDisc: faCompactDisc,\n faCompass: faCompass,\n faCompress: faCompress,\n faCompressAlt: faCompressAlt,\n faCompressArrowsAlt: faCompressArrowsAlt,\n faConciergeBell: faConciergeBell,\n faCookie: faCookie,\n faCookieBite: faCookieBite,\n faCopy: faCopy,\n faCopyright: faCopyright,\n faCouch: faCouch,\n faCreditCard: faCreditCard,\n faCrop: faCrop,\n faCropAlt: faCropAlt,\n faCross: faCross,\n faCrosshairs: faCrosshairs,\n faCrow: faCrow,\n faCrown: faCrown,\n faCrutch: faCrutch,\n faCube: faCube,\n faCubes: faCubes,\n faCut: faCut,\n faDatabase: faDatabase,\n faDeaf: faDeaf,\n faDemocrat: faDemocrat,\n faDesktop: faDesktop,\n faDharmachakra: faDharmachakra,\n faDiagnoses: faDiagnoses,\n faDice: faDice,\n faDiceD20: faDiceD20,\n faDiceD6: faDiceD6,\n faDiceFive: faDiceFive,\n faDiceFour: faDiceFour,\n faDiceOne: faDiceOne,\n faDiceSix: faDiceSix,\n faDiceThree: faDiceThree,\n faDiceTwo: faDiceTwo,\n faDigitalTachograph: faDigitalTachograph,\n faDirections: faDirections,\n faDisease: faDisease,\n faDivide: faDivide,\n faDizzy: faDizzy,\n faDna: faDna,\n faDog: faDog,\n faDollarSign: faDollarSign,\n faDolly: faDolly,\n faDollyFlatbed: faDollyFlatbed,\n faDonate: faDonate,\n faDoorClosed: faDoorClosed,\n faDoorOpen: faDoorOpen,\n faDotCircle: faDotCircle,\n faDove: faDove,\n faDownload: faDownload,\n faDraftingCompass: faDraftingCompass,\n faDragon: faDragon,\n faDrawPolygon: faDrawPolygon,\n faDrum: faDrum,\n faDrumSteelpan: faDrumSteelpan,\n faDrumstickBite: faDrumstickBite,\n faDumbbell: faDumbbell,\n faDumpster: faDumpster,\n faDumpsterFire: faDumpsterFire,\n faDungeon: faDungeon,\n faEdit: faEdit,\n faEgg: faEgg,\n faEject: faEject,\n faEllipsisH: faEllipsisH,\n faEllipsisV: faEllipsisV,\n faEnvelope: faEnvelope,\n faEnvelopeOpen: faEnvelopeOpen,\n faEnvelopeOpenText: faEnvelopeOpenText,\n faEnvelopeSquare: faEnvelopeSquare,\n faEquals: faEquals,\n faEraser: faEraser,\n faEthernet: faEthernet,\n faEuroSign: faEuroSign,\n faExchangeAlt: faExchangeAlt,\n faExclamation: faExclamation,\n faExclamationCircle: faExclamationCircle,\n faExclamationTriangle: faExclamationTriangle,\n faExpand: faExpand,\n faExpandAlt: faExpandAlt,\n faExpandArrowsAlt: faExpandArrowsAlt,\n faExternalLinkAlt: faExternalLinkAlt,\n faExternalLinkSquareAlt: faExternalLinkSquareAlt,\n faEye: faEye,\n faEyeDropper: faEyeDropper,\n faEyeSlash: faEyeSlash,\n faFan: faFan,\n faFastBackward: faFastBackward,\n faFastForward: faFastForward,\n faFaucet: faFaucet,\n faFax: faFax,\n faFeather: faFeather,\n faFeatherAlt: faFeatherAlt,\n faFemale: faFemale,\n faFighterJet: faFighterJet,\n faFile: faFile,\n faFileAlt: faFileAlt,\n faFileArchive: faFileArchive,\n faFileAudio: faFileAudio,\n faFileCode: faFileCode,\n faFileContract: faFileContract,\n faFileCsv: faFileCsv,\n faFileDownload: faFileDownload,\n faFileExcel: faFileExcel,\n faFileExport: faFileExport,\n faFileImage: faFileImage,\n faFileImport: faFileImport,\n faFileInvoice: faFileInvoice,\n faFileInvoiceDollar: faFileInvoiceDollar,\n faFileMedical: faFileMedical,\n faFileMedicalAlt: faFileMedicalAlt,\n faFilePdf: faFilePdf,\n faFilePowerpoint: faFilePowerpoint,\n faFilePrescription: faFilePrescription,\n faFileSignature: faFileSignature,\n faFileUpload: faFileUpload,\n faFileVideo: faFileVideo,\n faFileWord: faFileWord,\n faFill: faFill,\n faFillDrip: faFillDrip,\n faFilm: faFilm,\n faFilter: faFilter,\n faFingerprint: faFingerprint,\n faFire: faFire,\n faFireAlt: faFireAlt,\n faFireExtinguisher: faFireExtinguisher,\n faFirstAid: faFirstAid,\n faFish: faFish,\n faFistRaised: faFistRaised,\n faFlag: faFlag,\n faFlagCheckered: faFlagCheckered,\n faFlagUsa: faFlagUsa,\n faFlask: faFlask,\n faFlushed: faFlushed,\n faFolder: faFolder,\n faFolderMinus: faFolderMinus,\n faFolderOpen: faFolderOpen,\n faFolderPlus: faFolderPlus,\n faFont: faFont,\n faFontAwesomeLogoFull: faFontAwesomeLogoFull,\n faFootballBall: faFootballBall,\n faForward: faForward,\n faFrog: faFrog,\n faFrown: faFrown,\n faFrownOpen: faFrownOpen,\n faFunnelDollar: faFunnelDollar,\n faFutbol: faFutbol,\n faGamepad: faGamepad,\n faGasPump: faGasPump,\n faGavel: faGavel,\n faGem: faGem,\n faGenderless: faGenderless,\n faGhost: faGhost,\n faGift: faGift,\n faGifts: faGifts,\n faGlassCheers: faGlassCheers,\n faGlassMartini: faGlassMartini,\n faGlassMartiniAlt: faGlassMartiniAlt,\n faGlassWhiskey: faGlassWhiskey,\n faGlasses: faGlasses,\n faGlobe: faGlobe,\n faGlobeAfrica: faGlobeAfrica,\n faGlobeAmericas: faGlobeAmericas,\n faGlobeAsia: faGlobeAsia,\n faGlobeEurope: faGlobeEurope,\n faGolfBall: faGolfBall,\n faGopuram: faGopuram,\n faGraduationCap: faGraduationCap,\n faGreaterThan: faGreaterThan,\n faGreaterThanEqual: faGreaterThanEqual,\n faGrimace: faGrimace,\n faGrin: faGrin,\n faGrinAlt: faGrinAlt,\n faGrinBeam: faGrinBeam,\n faGrinBeamSweat: faGrinBeamSweat,\n faGrinHearts: faGrinHearts,\n faGrinSquint: faGrinSquint,\n faGrinSquintTears: faGrinSquintTears,\n faGrinStars: faGrinStars,\n faGrinTears: faGrinTears,\n faGrinTongue: faGrinTongue,\n faGrinTongueSquint: faGrinTongueSquint,\n faGrinTongueWink: faGrinTongueWink,\n faGrinWink: faGrinWink,\n faGripHorizontal: faGripHorizontal,\n faGripLines: faGripLines,\n faGripLinesVertical: faGripLinesVertical,\n faGripVertical: faGripVertical,\n faGuitar: faGuitar,\n faHSquare: faHSquare,\n faHamburger: faHamburger,\n faHammer: faHammer,\n faHamsa: faHamsa,\n faHandHolding: faHandHolding,\n faHandHoldingHeart: faHandHoldingHeart,\n faHandHoldingMedical: faHandHoldingMedical,\n faHandHoldingUsd: faHandHoldingUsd,\n faHandHoldingWater: faHandHoldingWater,\n faHandLizard: faHandLizard,\n faHandMiddleFinger: faHandMiddleFinger,\n faHandPaper: faHandPaper,\n faHandPeace: faHandPeace,\n faHandPointDown: faHandPointDown,\n faHandPointLeft: faHandPointLeft,\n faHandPointRight: faHandPointRight,\n faHandPointUp: faHandPointUp,\n faHandPointer: faHandPointer,\n faHandRock: faHandRock,\n faHandScissors: faHandScissors,\n faHandSparkles: faHandSparkles,\n faHandSpock: faHandSpock,\n faHands: faHands,\n faHandsHelping: faHandsHelping,\n faHandsWash: faHandsWash,\n faHandshake: faHandshake,\n faHandshakeAltSlash: faHandshakeAltSlash,\n faHandshakeSlash: faHandshakeSlash,\n faHanukiah: faHanukiah,\n faHardHat: faHardHat,\n faHashtag: faHashtag,\n faHatCowboy: faHatCowboy,\n faHatCowboySide: faHatCowboySide,\n faHatWizard: faHatWizard,\n faHdd: faHdd,\n faHeadSideCough: faHeadSideCough,\n faHeadSideCoughSlash: faHeadSideCoughSlash,\n faHeadSideMask: faHeadSideMask,\n faHeadSideVirus: faHeadSideVirus,\n faHeading: faHeading,\n faHeadphones: faHeadphones,\n faHeadphonesAlt: faHeadphonesAlt,\n faHeadset: faHeadset,\n faHeart: faHeart,\n faHeartBroken: faHeartBroken,\n faHeartbeat: faHeartbeat,\n faHelicopter: faHelicopter,\n faHighlighter: faHighlighter,\n faHiking: faHiking,\n faHippo: faHippo,\n faHistory: faHistory,\n faHockeyPuck: faHockeyPuck,\n faHollyBerry: faHollyBerry,\n faHome: faHome,\n faHorse: faHorse,\n faHorseHead: faHorseHead,\n faHospital: faHospital,\n faHospitalAlt: faHospitalAlt,\n faHospitalSymbol: faHospitalSymbol,\n faHospitalUser: faHospitalUser,\n faHotTub: faHotTub,\n faHotdog: faHotdog,\n faHotel: faHotel,\n faHourglass: faHourglass,\n faHourglassEnd: faHourglassEnd,\n faHourglassHalf: faHourglassHalf,\n faHourglassStart: faHourglassStart,\n faHouseDamage: faHouseDamage,\n faHouseUser: faHouseUser,\n faHryvnia: faHryvnia,\n faICursor: faICursor,\n faIceCream: faIceCream,\n faIcicles: faIcicles,\n faIcons: faIcons,\n faIdBadge: faIdBadge,\n faIdCard: faIdCard,\n faIdCardAlt: faIdCardAlt,\n faIgloo: faIgloo,\n faImage: faImage,\n faImages: faImages,\n faInbox: faInbox,\n faIndent: faIndent,\n faIndustry: faIndustry,\n faInfinity: faInfinity,\n faInfo: faInfo,\n faInfoCircle: faInfoCircle,\n faItalic: faItalic,\n faJedi: faJedi,\n faJoint: faJoint,\n faJournalWhills: faJournalWhills,\n faKaaba: faKaaba,\n faKey: faKey,\n faKeyboard: faKeyboard,\n faKhanda: faKhanda,\n faKiss: faKiss,\n faKissBeam: faKissBeam,\n faKissWinkHeart: faKissWinkHeart,\n faKiwiBird: faKiwiBird,\n faLandmark: faLandmark,\n faLanguage: faLanguage,\n faLaptop: faLaptop,\n faLaptopCode: faLaptopCode,\n faLaptopHouse: faLaptopHouse,\n faLaptopMedical: faLaptopMedical,\n faLaugh: faLaugh,\n faLaughBeam: faLaughBeam,\n faLaughSquint: faLaughSquint,\n faLaughWink: faLaughWink,\n faLayerGroup: faLayerGroup,\n faLeaf: faLeaf,\n faLemon: faLemon,\n faLessThan: faLessThan,\n faLessThanEqual: faLessThanEqual,\n faLevelDownAlt: faLevelDownAlt,\n faLevelUpAlt: faLevelUpAlt,\n faLifeRing: faLifeRing,\n faLightbulb: faLightbulb,\n faLink: faLink,\n faLiraSign: faLiraSign,\n faList: faList,\n faListAlt: faListAlt,\n faListOl: faListOl,\n faListUl: faListUl,\n faLocationArrow: faLocationArrow,\n faLock: faLock,\n faLockOpen: faLockOpen,\n faLongArrowAltDown: faLongArrowAltDown,\n faLongArrowAltLeft: faLongArrowAltLeft,\n faLongArrowAltRight: faLongArrowAltRight,\n faLongArrowAltUp: faLongArrowAltUp,\n faLowVision: faLowVision,\n faLuggageCart: faLuggageCart,\n faLungs: faLungs,\n faLungsVirus: faLungsVirus,\n faMagic: faMagic,\n faMagnet: faMagnet,\n faMailBulk: faMailBulk,\n faMale: faMale,\n faMap: faMap,\n faMapMarked: faMapMarked,\n faMapMarkedAlt: faMapMarkedAlt,\n faMapMarker: faMapMarker,\n faMapMarkerAlt: faMapMarkerAlt,\n faMapPin: faMapPin,\n faMapSigns: faMapSigns,\n faMarker: faMarker,\n faMars: faMars,\n faMarsDouble: faMarsDouble,\n faMarsStroke: faMarsStroke,\n faMarsStrokeH: faMarsStrokeH,\n faMarsStrokeV: faMarsStrokeV,\n faMask: faMask,\n faMedal: faMedal,\n faMedkit: faMedkit,\n faMeh: faMeh,\n faMehBlank: faMehBlank,\n faMehRollingEyes: faMehRollingEyes,\n faMemory: faMemory,\n faMenorah: faMenorah,\n faMercury: faMercury,\n faMeteor: faMeteor,\n faMicrochip: faMicrochip,\n faMicrophone: faMicrophone,\n faMicrophoneAlt: faMicrophoneAlt,\n faMicrophoneAltSlash: faMicrophoneAltSlash,\n faMicrophoneSlash: faMicrophoneSlash,\n faMicroscope: faMicroscope,\n faMinus: faMinus,\n faMinusCircle: faMinusCircle,\n faMinusSquare: faMinusSquare,\n faMitten: faMitten,\n faMobile: faMobile,\n faMobileAlt: faMobileAlt,\n faMoneyBill: faMoneyBill,\n faMoneyBillAlt: faMoneyBillAlt,\n faMoneyBillWave: faMoneyBillWave,\n faMoneyBillWaveAlt: faMoneyBillWaveAlt,\n faMoneyCheck: faMoneyCheck,\n faMoneyCheckAlt: faMoneyCheckAlt,\n faMonument: faMonument,\n faMoon: faMoon,\n faMortarPestle: faMortarPestle,\n faMosque: faMosque,\n faMotorcycle: faMotorcycle,\n faMountain: faMountain,\n faMouse: faMouse,\n faMousePointer: faMousePointer,\n faMugHot: faMugHot,\n faMusic: faMusic,\n faNetworkWired: faNetworkWired,\n faNeuter: faNeuter,\n faNewspaper: faNewspaper,\n faNotEqual: faNotEqual,\n faNotesMedical: faNotesMedical,\n faObjectGroup: faObjectGroup,\n faObjectUngroup: faObjectUngroup,\n faOilCan: faOilCan,\n faOm: faOm,\n faOtter: faOtter,\n faOutdent: faOutdent,\n faPager: faPager,\n faPaintBrush: faPaintBrush,\n faPaintRoller: faPaintRoller,\n faPalette: faPalette,\n faPallet: faPallet,\n faPaperPlane: faPaperPlane,\n faPaperclip: faPaperclip,\n faParachuteBox: faParachuteBox,\n faParagraph: faParagraph,\n faParking: faParking,\n faPassport: faPassport,\n faPastafarianism: faPastafarianism,\n faPaste: faPaste,\n faPause: faPause,\n faPauseCircle: faPauseCircle,\n faPaw: faPaw,\n faPeace: faPeace,\n faPen: faPen,\n faPenAlt: faPenAlt,\n faPenFancy: faPenFancy,\n faPenNib: faPenNib,\n faPenSquare: faPenSquare,\n faPencilAlt: faPencilAlt,\n faPencilRuler: faPencilRuler,\n faPeopleArrows: faPeopleArrows,\n faPeopleCarry: faPeopleCarry,\n faPepperHot: faPepperHot,\n faPercent: faPercent,\n faPercentage: faPercentage,\n faPersonBooth: faPersonBooth,\n faPhone: faPhone,\n faPhoneAlt: faPhoneAlt,\n faPhoneSlash: faPhoneSlash,\n faPhoneSquare: faPhoneSquare,\n faPhoneSquareAlt: faPhoneSquareAlt,\n faPhoneVolume: faPhoneVolume,\n faPhotoVideo: faPhotoVideo,\n faPiggyBank: faPiggyBank,\n faPills: faPills,\n faPizzaSlice: faPizzaSlice,\n faPlaceOfWorship: faPlaceOfWorship,\n faPlane: faPlane,\n faPlaneArrival: faPlaneArrival,\n faPlaneDeparture: faPlaneDeparture,\n faPlaneSlash: faPlaneSlash,\n faPlay: faPlay,\n faPlayCircle: faPlayCircle,\n faPlug: faPlug,\n faPlus: faPlus,\n faPlusCircle: faPlusCircle,\n faPlusSquare: faPlusSquare,\n faPodcast: faPodcast,\n faPoll: faPoll,\n faPollH: faPollH,\n faPoo: faPoo,\n faPooStorm: faPooStorm,\n faPoop: faPoop,\n faPortrait: faPortrait,\n faPoundSign: faPoundSign,\n faPowerOff: faPowerOff,\n faPray: faPray,\n faPrayingHands: faPrayingHands,\n faPrescription: faPrescription,\n faPrescriptionBottle: faPrescriptionBottle,\n faPrescriptionBottleAlt: faPrescriptionBottleAlt,\n faPrint: faPrint,\n faProcedures: faProcedures,\n faProjectDiagram: faProjectDiagram,\n faPumpMedical: faPumpMedical,\n faPumpSoap: faPumpSoap,\n faPuzzlePiece: faPuzzlePiece,\n faQrcode: faQrcode,\n faQuestion: faQuestion,\n faQuestionCircle: faQuestionCircle,\n faQuidditch: faQuidditch,\n faQuoteLeft: faQuoteLeft,\n faQuoteRight: faQuoteRight,\n faQuran: faQuran,\n faRadiation: faRadiation,\n faRadiationAlt: faRadiationAlt,\n faRainbow: faRainbow,\n faRandom: faRandom,\n faReceipt: faReceipt,\n faRecordVinyl: faRecordVinyl,\n faRecycle: faRecycle,\n faRedo: faRedo,\n faRedoAlt: faRedoAlt,\n faRegistered: faRegistered,\n faRemoveFormat: faRemoveFormat,\n faReply: faReply,\n faReplyAll: faReplyAll,\n faRepublican: faRepublican,\n faRestroom: faRestroom,\n faRetweet: faRetweet,\n faRibbon: faRibbon,\n faRing: faRing,\n faRoad: faRoad,\n faRobot: faRobot,\n faRocket: faRocket,\n faRoute: faRoute,\n faRss: faRss,\n faRssSquare: faRssSquare,\n faRubleSign: faRubleSign,\n faRuler: faRuler,\n faRulerCombined: faRulerCombined,\n faRulerHorizontal: faRulerHorizontal,\n faRulerVertical: faRulerVertical,\n faRunning: faRunning,\n faRupeeSign: faRupeeSign,\n faSadCry: faSadCry,\n faSadTear: faSadTear,\n faSatellite: faSatellite,\n faSatelliteDish: faSatelliteDish,\n faSave: faSave,\n faSchool: faSchool,\n faScrewdriver: faScrewdriver,\n faScroll: faScroll,\n faSdCard: faSdCard,\n faSearch: faSearch,\n faSearchDollar: faSearchDollar,\n faSearchLocation: faSearchLocation,\n faSearchMinus: faSearchMinus,\n faSearchPlus: faSearchPlus,\n faSeedling: faSeedling,\n faServer: faServer,\n faShapes: faShapes,\n faShare: faShare,\n faShareAlt: faShareAlt,\n faShareAltSquare: faShareAltSquare,\n faShareSquare: faShareSquare,\n faShekelSign: faShekelSign,\n faShieldAlt: faShieldAlt,\n faShieldVirus: faShieldVirus,\n faShip: faShip,\n faShippingFast: faShippingFast,\n faShoePrints: faShoePrints,\n faShoppingBag: faShoppingBag,\n faShoppingBasket: faShoppingBasket,\n faShoppingCart: faShoppingCart,\n faShower: faShower,\n faShuttleVan: faShuttleVan,\n faSign: faSign,\n faSignInAlt: faSignInAlt,\n faSignLanguage: faSignLanguage,\n faSignOutAlt: faSignOutAlt,\n faSignal: faSignal,\n faSignature: faSignature,\n faSimCard: faSimCard,\n faSink: faSink,\n faSitemap: faSitemap,\n faSkating: faSkating,\n faSkiing: faSkiing,\n faSkiingNordic: faSkiingNordic,\n faSkull: faSkull,\n faSkullCrossbones: faSkullCrossbones,\n faSlash: faSlash,\n faSleigh: faSleigh,\n faSlidersH: faSlidersH,\n faSmile: faSmile,\n faSmileBeam: faSmileBeam,\n faSmileWink: faSmileWink,\n faSmog: faSmog,\n faSmoking: faSmoking,\n faSmokingBan: faSmokingBan,\n faSms: faSms,\n faSnowboarding: faSnowboarding,\n faSnowflake: faSnowflake,\n faSnowman: faSnowman,\n faSnowplow: faSnowplow,\n faSoap: faSoap,\n faSocks: faSocks,\n faSolarPanel: faSolarPanel,\n faSort: faSort,\n faSortAlphaDown: faSortAlphaDown,\n faSortAlphaDownAlt: faSortAlphaDownAlt,\n faSortAlphaUp: faSortAlphaUp,\n faSortAlphaUpAlt: faSortAlphaUpAlt,\n faSortAmountDown: faSortAmountDown,\n faSortAmountDownAlt: faSortAmountDownAlt,\n faSortAmountUp: faSortAmountUp,\n faSortAmountUpAlt: faSortAmountUpAlt,\n faSortDown: faSortDown,\n faSortNumericDown: faSortNumericDown,\n faSortNumericDownAlt: faSortNumericDownAlt,\n faSortNumericUp: faSortNumericUp,\n faSortNumericUpAlt: faSortNumericUpAlt,\n faSortUp: faSortUp,\n faSpa: faSpa,\n faSpaceShuttle: faSpaceShuttle,\n faSpellCheck: faSpellCheck,\n faSpider: faSpider,\n faSpinner: faSpinner,\n faSplotch: faSplotch,\n faSprayCan: faSprayCan,\n faSquare: faSquare,\n faSquareFull: faSquareFull,\n faSquareRootAlt: faSquareRootAlt,\n faStamp: faStamp,\n faStar: faStar,\n faStarAndCrescent: faStarAndCrescent,\n faStarHalf: faStarHalf,\n faStarHalfAlt: faStarHalfAlt,\n faStarOfDavid: faStarOfDavid,\n faStarOfLife: faStarOfLife,\n faStepBackward: faStepBackward,\n faStepForward: faStepForward,\n faStethoscope: faStethoscope,\n faStickyNote: faStickyNote,\n faStop: faStop,\n faStopCircle: faStopCircle,\n faStopwatch: faStopwatch,\n faStopwatch20: faStopwatch20,\n faStore: faStore,\n faStoreAlt: faStoreAlt,\n faStoreAltSlash: faStoreAltSlash,\n faStoreSlash: faStoreSlash,\n faStream: faStream,\n faStreetView: faStreetView,\n faStrikethrough: faStrikethrough,\n faStroopwafel: faStroopwafel,\n faSubscript: faSubscript,\n faSubway: faSubway,\n faSuitcase: faSuitcase,\n faSuitcaseRolling: faSuitcaseRolling,\n faSun: faSun,\n faSuperscript: faSuperscript,\n faSurprise: faSurprise,\n faSwatchbook: faSwatchbook,\n faSwimmer: faSwimmer,\n faSwimmingPool: faSwimmingPool,\n faSynagogue: faSynagogue,\n faSync: faSync,\n faSyncAlt: faSyncAlt,\n faSyringe: faSyringe,\n faTable: faTable,\n faTableTennis: faTableTennis,\n faTablet: faTablet,\n faTabletAlt: faTabletAlt,\n faTablets: faTablets,\n faTachometerAlt: faTachometerAlt,\n faTag: faTag,\n faTags: faTags,\n faTape: faTape,\n faTasks: faTasks,\n faTaxi: faTaxi,\n faTeeth: faTeeth,\n faTeethOpen: faTeethOpen,\n faTemperatureHigh: faTemperatureHigh,\n faTemperatureLow: faTemperatureLow,\n faTenge: faTenge,\n faTerminal: faTerminal,\n faTextHeight: faTextHeight,\n faTextWidth: faTextWidth,\n faTh: faTh,\n faThLarge: faThLarge,\n faThList: faThList,\n faTheaterMasks: faTheaterMasks,\n faThermometer: faThermometer,\n faThermometerEmpty: faThermometerEmpty,\n faThermometerFull: faThermometerFull,\n faThermometerHalf: faThermometerHalf,\n faThermometerQuarter: faThermometerQuarter,\n faThermometerThreeQuarters: faThermometerThreeQuarters,\n faThumbsDown: faThumbsDown,\n faThumbsUp: faThumbsUp,\n faThumbtack: faThumbtack,\n faTicketAlt: faTicketAlt,\n faTimes: faTimes,\n faTimesCircle: faTimesCircle,\n faTint: faTint,\n faTintSlash: faTintSlash,\n faTired: faTired,\n faToggleOff: faToggleOff,\n faToggleOn: faToggleOn,\n faToilet: faToilet,\n faToiletPaper: faToiletPaper,\n faToiletPaperSlash: faToiletPaperSlash,\n faToolbox: faToolbox,\n faTools: faTools,\n faTooth: faTooth,\n faTorah: faTorah,\n faToriiGate: faToriiGate,\n faTractor: faTractor,\n faTrademark: faTrademark,\n faTrafficLight: faTrafficLight,\n faTrailer: faTrailer,\n faTrain: faTrain,\n faTram: faTram,\n faTransgender: faTransgender,\n faTransgenderAlt: faTransgenderAlt,\n faTrash: faTrash,\n faTrashAlt: faTrashAlt,\n faTrashRestore: faTrashRestore,\n faTrashRestoreAlt: faTrashRestoreAlt,\n faTree: faTree,\n faTrophy: faTrophy,\n faTruck: faTruck,\n faTruckLoading: faTruckLoading,\n faTruckMonster: faTruckMonster,\n faTruckMoving: faTruckMoving,\n faTruckPickup: faTruckPickup,\n faTshirt: faTshirt,\n faTty: faTty,\n faTv: faTv,\n faUmbrella: faUmbrella,\n faUmbrellaBeach: faUmbrellaBeach,\n faUnderline: faUnderline,\n faUndo: faUndo,\n faUndoAlt: faUndoAlt,\n faUniversalAccess: faUniversalAccess,\n faUniversity: faUniversity,\n faUnlink: faUnlink,\n faUnlock: faUnlock,\n faUnlockAlt: faUnlockAlt,\n faUpload: faUpload,\n faUser: faUser,\n faUserAlt: faUserAlt,\n faUserAltSlash: faUserAltSlash,\n faUserAstronaut: faUserAstronaut,\n faUserCheck: faUserCheck,\n faUserCircle: faUserCircle,\n faUserClock: faUserClock,\n faUserCog: faUserCog,\n faUserEdit: faUserEdit,\n faUserFriends: faUserFriends,\n faUserGraduate: faUserGraduate,\n faUserInjured: faUserInjured,\n faUserLock: faUserLock,\n faUserMd: faUserMd,\n faUserMinus: faUserMinus,\n faUserNinja: faUserNinja,\n faUserNurse: faUserNurse,\n faUserPlus: faUserPlus,\n faUserSecret: faUserSecret,\n faUserShield: faUserShield,\n faUserSlash: faUserSlash,\n faUserTag: faUserTag,\n faUserTie: faUserTie,\n faUserTimes: faUserTimes,\n faUsers: faUsers,\n faUsersCog: faUsersCog,\n faUsersSlash: faUsersSlash,\n faUtensilSpoon: faUtensilSpoon,\n faUtensils: faUtensils,\n faVectorSquare: faVectorSquare,\n faVenus: faVenus,\n faVenusDouble: faVenusDouble,\n faVenusMars: faVenusMars,\n faVest: faVest,\n faVestPatches: faVestPatches,\n faVial: faVial,\n faVials: faVials,\n faVideo: faVideo,\n faVideoSlash: faVideoSlash,\n faVihara: faVihara,\n faVirus: faVirus,\n faVirusSlash: faVirusSlash,\n faViruses: faViruses,\n faVoicemail: faVoicemail,\n faVolleyballBall: faVolleyballBall,\n faVolumeDown: faVolumeDown,\n faVolumeMute: faVolumeMute,\n faVolumeOff: faVolumeOff,\n faVolumeUp: faVolumeUp,\n faVoteYea: faVoteYea,\n faVrCardboard: faVrCardboard,\n faWalking: faWalking,\n faWallet: faWallet,\n faWarehouse: faWarehouse,\n faWater: faWater,\n faWaveSquare: faWaveSquare,\n faWeight: faWeight,\n faWeightHanging: faWeightHanging,\n faWheelchair: faWheelchair,\n faWifi: faWifi,\n faWind: faWind,\n faWindowClose: faWindowClose,\n faWindowMaximize: faWindowMaximize,\n faWindowMinimize: faWindowMinimize,\n faWindowRestore: faWindowRestore,\n faWineBottle: faWineBottle,\n faWineGlass: faWineGlass,\n faWineGlassAlt: faWineGlassAlt,\n faWonSign: faWonSign,\n faWrench: faWrench,\n faXRay: faXRay,\n faYenSign: faYenSign,\n faYinYang: faYinYang\n};\n\nexport { _iconsCache as fas, prefix, faAd, faAddressBook, faAddressCard, faAdjust, faAirFreshener, faAlignCenter, faAlignJustify, faAlignLeft, faAlignRight, faAllergies, faAmbulance, faAmericanSignLanguageInterpreting, faAnchor, faAngleDoubleDown, faAngleDoubleLeft, faAngleDoubleRight, faAngleDoubleUp, faAngleDown, faAngleLeft, faAngleRight, faAngleUp, faAngry, faAnkh, faAppleAlt, faArchive, faArchway, faArrowAltCircleDown, faArrowAltCircleLeft, faArrowAltCircleRight, faArrowAltCircleUp, faArrowCircleDown, faArrowCircleLeft, faArrowCircleRight, faArrowCircleUp, faArrowDown, faArrowLeft, faArrowRight, faArrowUp, faArrowsAlt, faArrowsAltH, faArrowsAltV, faAssistiveListeningSystems, faAsterisk, faAt, faAtlas, faAtom, faAudioDescription, faAward, faBaby, faBabyCarriage, faBackspace, faBackward, faBacon, faBacteria, faBacterium, faBahai, faBalanceScale, faBalanceScaleLeft, faBalanceScaleRight, faBan, faBandAid, faBarcode, faBars, faBaseballBall, faBasketballBall, faBath, faBatteryEmpty, faBatteryFull, faBatteryHalf, faBatteryQuarter, faBatteryThreeQuarters, faBed, faBeer, faBell, faBellSlash, faBezierCurve, faBible, faBicycle, faBiking, faBinoculars, faBiohazard, faBirthdayCake, faBlender, faBlenderPhone, faBlind, faBlog, faBold, faBolt, faBomb, faBone, faBong, faBook, faBookDead, faBookMedical, faBookOpen, faBookReader, faBookmark, faBorderAll, faBorderNone, faBorderStyle, faBowlingBall, faBox, faBoxOpen, faBoxTissue, faBoxes, faBraille, faBrain, faBreadSlice, faBriefcase, faBriefcaseMedical, faBroadcastTower, faBroom, faBrush, faBug, faBuilding, faBullhorn, faBullseye, faBurn, faBus, faBusAlt, faBusinessTime, faCalculator, faCalendar, faCalendarAlt, faCalendarCheck, faCalendarDay, faCalendarMinus, faCalendarPlus, faCalendarTimes, faCalendarWeek, faCamera, faCameraRetro, faCampground, faCandyCane, faCannabis, faCapsules, faCar, faCarAlt, faCarBattery, faCarCrash, faCarSide, faCaravan, faCaretDown, faCaretLeft, faCaretRight, faCaretSquareDown, faCaretSquareLeft, faCaretSquareRight, faCaretSquareUp, faCaretUp, faCarrot, faCartArrowDown, faCartPlus, faCashRegister, faCat, faCertificate, faChair, faChalkboard, faChalkboardTeacher, faChargingStation, faChartArea, faChartBar, faChartLine, faChartPie, faCheck, faCheckCircle, faCheckDouble, faCheckSquare, faCheese, faChess, faChessBishop, faChessBoard, faChessKing, faChessKnight, faChessPawn, faChessQueen, faChessRook, faChevronCircleDown, faChevronCircleLeft, faChevronCircleRight, faChevronCircleUp, faChevronDown, faChevronLeft, faChevronRight, faChevronUp, faChild, faChurch, faCircle, faCircleNotch, faCity, faClinicMedical, faClipboard, faClipboardCheck, faClipboardList, faClock, faClone, faClosedCaptioning, faCloud, faCloudDownloadAlt, faCloudMeatball, faCloudMoon, faCloudMoonRain, faCloudRain, faCloudShowersHeavy, faCloudSun, faCloudSunRain, faCloudUploadAlt, faCocktail, faCode, faCodeBranch, faCoffee, faCog, faCogs, faCoins, faColumns, faComment, faCommentAlt, faCommentDollar, faCommentDots, faCommentMedical, faCommentSlash, faComments, faCommentsDollar, faCompactDisc, faCompass, faCompress, faCompressAlt, faCompressArrowsAlt, faConciergeBell, faCookie, faCookieBite, faCopy, faCopyright, faCouch, faCreditCard, faCrop, faCropAlt, faCross, faCrosshairs, faCrow, faCrown, faCrutch, faCube, faCubes, faCut, faDatabase, faDeaf, faDemocrat, faDesktop, faDharmachakra, faDiagnoses, faDice, faDiceD20, faDiceD6, faDiceFive, faDiceFour, faDiceOne, faDiceSix, faDiceThree, faDiceTwo, faDigitalTachograph, faDirections, faDisease, faDivide, faDizzy, faDna, faDog, faDollarSign, faDolly, faDollyFlatbed, faDonate, faDoorClosed, faDoorOpen, faDotCircle, faDove, faDownload, faDraftingCompass, faDragon, faDrawPolygon, faDrum, faDrumSteelpan, faDrumstickBite, faDumbbell, faDumpster, faDumpsterFire, faDungeon, faEdit, faEgg, faEject, faEllipsisH, faEllipsisV, faEnvelope, faEnvelopeOpen, faEnvelopeOpenText, faEnvelopeSquare, faEquals, faEraser, faEthernet, faEuroSign, faExchangeAlt, faExclamation, faExclamationCircle, faExclamationTriangle, faExpand, faExpandAlt, faExpandArrowsAlt, faExternalLinkAlt, faExternalLinkSquareAlt, faEye, faEyeDropper, faEyeSlash, faFan, faFastBackward, faFastForward, faFaucet, faFax, faFeather, faFeatherAlt, faFemale, faFighterJet, faFile, faFileAlt, faFileArchive, faFileAudio, faFileCode, faFileContract, faFileCsv, faFileDownload, faFileExcel, faFileExport, faFileImage, faFileImport, faFileInvoice, faFileInvoiceDollar, faFileMedical, faFileMedicalAlt, faFilePdf, faFilePowerpoint, faFilePrescription, faFileSignature, faFileUpload, faFileVideo, faFileWord, faFill, faFillDrip, faFilm, faFilter, faFingerprint, faFire, faFireAlt, faFireExtinguisher, faFirstAid, faFish, faFistRaised, faFlag, faFlagCheckered, faFlagUsa, faFlask, faFlushed, faFolder, faFolderMinus, faFolderOpen, faFolderPlus, faFont, faFontAwesomeLogoFull, faFootballBall, faForward, faFrog, faFrown, faFrownOpen, faFunnelDollar, faFutbol, faGamepad, faGasPump, faGavel, faGem, faGenderless, faGhost, faGift, faGifts, faGlassCheers, faGlassMartini, faGlassMartiniAlt, faGlassWhiskey, faGlasses, faGlobe, faGlobeAfrica, faGlobeAmericas, faGlobeAsia, faGlobeEurope, faGolfBall, faGopuram, faGraduationCap, faGreaterThan, faGreaterThanEqual, faGrimace, faGrin, faGrinAlt, faGrinBeam, faGrinBeamSweat, faGrinHearts, faGrinSquint, faGrinSquintTears, faGrinStars, faGrinTears, faGrinTongue, faGrinTongueSquint, faGrinTongueWink, faGrinWink, faGripHorizontal, faGripLines, faGripLinesVertical, faGripVertical, faGuitar, faHSquare, faHamburger, faHammer, faHamsa, faHandHolding, faHandHoldingHeart, faHandHoldingMedical, faHandHoldingUsd, faHandHoldingWater, faHandLizard, faHandMiddleFinger, faHandPaper, faHandPeace, faHandPointDown, faHandPointLeft, faHandPointRight, faHandPointUp, faHandPointer, faHandRock, faHandScissors, faHandSparkles, faHandSpock, faHands, faHandsHelping, faHandsWash, faHandshake, faHandshakeAltSlash, faHandshakeSlash, faHanukiah, faHardHat, faHashtag, faHatCowboy, faHatCowboySide, faHatWizard, faHdd, faHeadSideCough, faHeadSideCoughSlash, faHeadSideMask, faHeadSideVirus, faHeading, faHeadphones, faHeadphonesAlt, faHeadset, faHeart, faHeartBroken, faHeartbeat, faHelicopter, faHighlighter, faHiking, faHippo, faHistory, faHockeyPuck, faHollyBerry, faHome, faHorse, faHorseHead, faHospital, faHospitalAlt, faHospitalSymbol, faHospitalUser, faHotTub, faHotdog, faHotel, faHourglass, faHourglassEnd, faHourglassHalf, faHourglassStart, faHouseDamage, faHouseUser, faHryvnia, faICursor, faIceCream, faIcicles, faIcons, faIdBadge, faIdCard, faIdCardAlt, faIgloo, faImage, faImages, faInbox, faIndent, faIndustry, faInfinity, faInfo, faInfoCircle, faItalic, faJedi, faJoint, faJournalWhills, faKaaba, faKey, faKeyboard, faKhanda, faKiss, faKissBeam, faKissWinkHeart, faKiwiBird, faLandmark, faLanguage, faLaptop, faLaptopCode, faLaptopHouse, faLaptopMedical, faLaugh, faLaughBeam, faLaughSquint, faLaughWink, faLayerGroup, faLeaf, faLemon, faLessThan, faLessThanEqual, faLevelDownAlt, faLevelUpAlt, faLifeRing, faLightbulb, faLink, faLiraSign, faList, faListAlt, faListOl, faListUl, faLocationArrow, faLock, faLockOpen, faLongArrowAltDown, faLongArrowAltLeft, faLongArrowAltRight, faLongArrowAltUp, faLowVision, faLuggageCart, faLungs, faLungsVirus, faMagic, faMagnet, faMailBulk, faMale, faMap, faMapMarked, faMapMarkedAlt, faMapMarker, faMapMarkerAlt, faMapPin, faMapSigns, faMarker, faMars, faMarsDouble, faMarsStroke, faMarsStrokeH, faMarsStrokeV, faMask, faMedal, faMedkit, faMeh, faMehBlank, faMehRollingEyes, faMemory, faMenorah, faMercury, faMeteor, faMicrochip, faMicrophone, faMicrophoneAlt, faMicrophoneAltSlash, faMicrophoneSlash, faMicroscope, faMinus, faMinusCircle, faMinusSquare, faMitten, faMobile, faMobileAlt, faMoneyBill, faMoneyBillAlt, faMoneyBillWave, faMoneyBillWaveAlt, faMoneyCheck, faMoneyCheckAlt, faMonument, faMoon, faMortarPestle, faMosque, faMotorcycle, faMountain, faMouse, faMousePointer, faMugHot, faMusic, faNetworkWired, faNeuter, faNewspaper, faNotEqual, faNotesMedical, faObjectGroup, faObjectUngroup, faOilCan, faOm, faOtter, faOutdent, faPager, faPaintBrush, faPaintRoller, faPalette, faPallet, faPaperPlane, faPaperclip, faParachuteBox, faParagraph, faParking, faPassport, faPastafarianism, faPaste, faPause, faPauseCircle, faPaw, faPeace, faPen, faPenAlt, faPenFancy, faPenNib, faPenSquare, faPencilAlt, faPencilRuler, faPeopleArrows, faPeopleCarry, faPepperHot, faPercent, faPercentage, faPersonBooth, faPhone, faPhoneAlt, faPhoneSlash, faPhoneSquare, faPhoneSquareAlt, faPhoneVolume, faPhotoVideo, faPiggyBank, faPills, faPizzaSlice, faPlaceOfWorship, faPlane, faPlaneArrival, faPlaneDeparture, faPlaneSlash, faPlay, faPlayCircle, faPlug, faPlus, faPlusCircle, faPlusSquare, faPodcast, faPoll, faPollH, faPoo, faPooStorm, faPoop, faPortrait, faPoundSign, faPowerOff, faPray, faPrayingHands, faPrescription, faPrescriptionBottle, faPrescriptionBottleAlt, faPrint, faProcedures, faProjectDiagram, faPumpMedical, faPumpSoap, faPuzzlePiece, faQrcode, faQuestion, faQuestionCircle, faQuidditch, faQuoteLeft, faQuoteRight, faQuran, faRadiation, faRadiationAlt, faRainbow, faRandom, faReceipt, faRecordVinyl, faRecycle, faRedo, faRedoAlt, faRegistered, faRemoveFormat, faReply, faReplyAll, faRepublican, faRestroom, faRetweet, faRibbon, faRing, faRoad, faRobot, faRocket, faRoute, faRss, faRssSquare, faRubleSign, faRuler, faRulerCombined, faRulerHorizontal, faRulerVertical, faRunning, faRupeeSign, faSadCry, faSadTear, faSatellite, faSatelliteDish, faSave, faSchool, faScrewdriver, faScroll, faSdCard, faSearch, faSearchDollar, faSearchLocation, faSearchMinus, faSearchPlus, faSeedling, faServer, faShapes, faShare, faShareAlt, faShareAltSquare, faShareSquare, faShekelSign, faShieldAlt, faShieldVirus, faShip, faShippingFast, faShoePrints, faShoppingBag, faShoppingBasket, faShoppingCart, faShower, faShuttleVan, faSign, faSignInAlt, faSignLanguage, faSignOutAlt, faSignal, faSignature, faSimCard, faSink, faSitemap, faSkating, faSkiing, faSkiingNordic, faSkull, faSkullCrossbones, faSlash, faSleigh, faSlidersH, faSmile, faSmileBeam, faSmileWink, faSmog, faSmoking, faSmokingBan, faSms, faSnowboarding, faSnowflake, faSnowman, faSnowplow, faSoap, faSocks, faSolarPanel, faSort, faSortAlphaDown, faSortAlphaDownAlt, faSortAlphaUp, faSortAlphaUpAlt, faSortAmountDown, faSortAmountDownAlt, faSortAmountUp, faSortAmountUpAlt, faSortDown, faSortNumericDown, faSortNumericDownAlt, faSortNumericUp, faSortNumericUpAlt, faSortUp, faSpa, faSpaceShuttle, faSpellCheck, faSpider, faSpinner, faSplotch, faSprayCan, faSquare, faSquareFull, faSquareRootAlt, faStamp, faStar, faStarAndCrescent, faStarHalf, faStarHalfAlt, faStarOfDavid, faStarOfLife, faStepBackward, faStepForward, faStethoscope, faStickyNote, faStop, faStopCircle, faStopwatch, faStopwatch20, faStore, faStoreAlt, faStoreAltSlash, faStoreSlash, faStream, faStreetView, faStrikethrough, faStroopwafel, faSubscript, faSubway, faSuitcase, faSuitcaseRolling, faSun, faSuperscript, faSurprise, faSwatchbook, faSwimmer, faSwimmingPool, faSynagogue, faSync, faSyncAlt, faSyringe, faTable, faTableTennis, faTablet, faTabletAlt, faTablets, faTachometerAlt, faTag, faTags, faTape, faTasks, faTaxi, faTeeth, faTeethOpen, faTemperatureHigh, faTemperatureLow, faTenge, faTerminal, faTextHeight, faTextWidth, faTh, faThLarge, faThList, faTheaterMasks, faThermometer, faThermometerEmpty, faThermometerFull, faThermometerHalf, faThermometerQuarter, faThermometerThreeQuarters, faThumbsDown, faThumbsUp, faThumbtack, faTicketAlt, faTimes, faTimesCircle, faTint, faTintSlash, faTired, faToggleOff, faToggleOn, faToilet, faToiletPaper, faToiletPaperSlash, faToolbox, faTools, faTooth, faTorah, faToriiGate, faTractor, faTrademark, faTrafficLight, faTrailer, faTrain, faTram, faTransgender, faTransgenderAlt, faTrash, faTrashAlt, faTrashRestore, faTrashRestoreAlt, faTree, faTrophy, faTruck, faTruckLoading, faTruckMonster, faTruckMoving, faTruckPickup, faTshirt, faTty, faTv, faUmbrella, faUmbrellaBeach, faUnderline, faUndo, faUndoAlt, faUniversalAccess, faUniversity, faUnlink, faUnlock, faUnlockAlt, faUpload, faUser, faUserAlt, faUserAltSlash, faUserAstronaut, faUserCheck, faUserCircle, faUserClock, faUserCog, faUserEdit, faUserFriends, faUserGraduate, faUserInjured, faUserLock, faUserMd, faUserMinus, faUserNinja, faUserNurse, faUserPlus, faUserSecret, faUserShield, faUserSlash, faUserTag, faUserTie, faUserTimes, faUsers, faUsersCog, faUsersSlash, faUtensilSpoon, faUtensils, faVectorSquare, faVenus, faVenusDouble, faVenusMars, faVest, faVestPatches, faVial, faVials, faVideo, faVideoSlash, faVihara, faVirus, faVirusSlash, faViruses, faVoicemail, faVolleyballBall, faVolumeDown, faVolumeMute, faVolumeOff, faVolumeUp, faVoteYea, faVrCardboard, faWalking, faWallet, faWarehouse, faWater, faWaveSquare, faWeight, faWeightHanging, faWheelchair, faWifi, faWind, faWindowClose, faWindowMaximize, faWindowMinimize, faWindowRestore, faWineBottle, faWineGlass, faWineGlassAlt, faWonSign, faWrench, faXRay, faYenSign, faYinYang };\n","export var HOOKS = [\n \"onChange\",\n \"onClose\",\n \"onDayCreate\",\n \"onDestroy\",\n \"onKeyDown\",\n \"onMonthChange\",\n \"onOpen\",\n \"onParseConfig\",\n \"onReady\",\n \"onValueUpdate\",\n \"onYearChange\",\n \"onPreCalendarPosition\",\n];\nexport var defaults = {\n _disable: [],\n allowInput: false,\n allowInvalidPreload: false,\n altFormat: \"F j, Y\",\n altInput: false,\n altInputClass: \"form-control input\",\n animate: typeof window === \"object\" &&\n window.navigator.userAgent.indexOf(\"MSIE\") === -1,\n ariaDateFormat: \"F j, Y\",\n autoFillDefaultTime: true,\n clickOpens: true,\n closeOnSelect: true,\n conjunction: \", \",\n dateFormat: \"Y-m-d\",\n defaultHour: 12,\n defaultMinute: 0,\n defaultSeconds: 0,\n disable: [],\n disableMobile: false,\n enableSeconds: false,\n enableTime: false,\n errorHandler: function (err) {\n return typeof console !== \"undefined\" && console.warn(err);\n },\n getWeek: function (givenDate) {\n var date = new Date(givenDate.getTime());\n date.setHours(0, 0, 0, 0);\n date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n var week1 = new Date(date.getFullYear(), 0, 4);\n return (1 +\n Math.round(((date.getTime() - week1.getTime()) / 86400000 -\n 3 +\n ((week1.getDay() + 6) % 7)) /\n 7));\n },\n hourIncrement: 1,\n ignoredFocusElements: [],\n inline: false,\n locale: \"default\",\n minuteIncrement: 5,\n mode: \"single\",\n monthSelectorType: \"dropdown\",\n nextArrow: \"\",\n noCalendar: false,\n now: new Date(),\n onChange: [],\n onClose: [],\n onDayCreate: [],\n onDestroy: [],\n onKeyDown: [],\n onMonthChange: [],\n onOpen: [],\n onParseConfig: [],\n onReady: [],\n onValueUpdate: [],\n onYearChange: [],\n onPreCalendarPosition: [],\n plugins: [],\n position: \"auto\",\n positionElement: undefined,\n prevArrow: \"\",\n shorthandCurrentMonth: false,\n showMonths: 1,\n static: false,\n time_24hr: false,\n weekNumbers: false,\n wrap: false,\n};\n","export var english = {\n weekdays: {\n shorthand: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n longhand: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n longhand: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n },\n daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n firstDayOfWeek: 0,\n ordinal: function (nth) {\n var s = nth % 100;\n if (s > 3 && s < 21)\n return \"th\";\n switch (s % 10) {\n case 1:\n return \"st\";\n case 2:\n return \"nd\";\n case 3:\n return \"rd\";\n default:\n return \"th\";\n }\n },\n rangeSeparator: \" to \",\n weekAbbreviation: \"Wk\",\n scrollTitle: \"Scroll to increment\",\n toggleTitle: \"Click to toggle\",\n amPM: [\"AM\", \"PM\"],\n yearAriaLabel: \"Year\",\n monthAriaLabel: \"Month\",\n hourAriaLabel: \"Hour\",\n minuteAriaLabel: \"Minute\",\n time_24hr: false,\n};\nexport default english;\n","export var pad = function (number, length) {\n if (length === void 0) { length = 2; }\n return (\"000\" + number).slice(length * -1);\n};\nexport var int = function (bool) { return (bool === true ? 1 : 0); };\nexport function debounce(fn, wait) {\n var t;\n return function () {\n var _this = this;\n var args = arguments;\n clearTimeout(t);\n t = setTimeout(function () { return fn.apply(_this, args); }, wait);\n };\n}\nexport var arrayify = function (obj) {\n return obj instanceof Array ? obj : [obj];\n};\n","export function toggleClass(elem, className, bool) {\n if (bool === true)\n return elem.classList.add(className);\n elem.classList.remove(className);\n}\nexport function createElement(tag, className, content) {\n var e = window.document.createElement(tag);\n className = className || \"\";\n content = content || \"\";\n e.className = className;\n if (content !== undefined)\n e.textContent = content;\n return e;\n}\nexport function clearNode(node) {\n while (node.firstChild)\n node.removeChild(node.firstChild);\n}\nexport function findParent(node, condition) {\n if (condition(node))\n return node;\n else if (node.parentNode)\n return findParent(node.parentNode, condition);\n return undefined;\n}\nexport function createNumberInput(inputClassName, opts) {\n var wrapper = createElement(\"div\", \"numInputWrapper\"), numInput = createElement(\"input\", \"numInput \" + inputClassName), arrowUp = createElement(\"span\", \"arrowUp\"), arrowDown = createElement(\"span\", \"arrowDown\");\n if (navigator.userAgent.indexOf(\"MSIE 9.0\") === -1) {\n numInput.type = \"number\";\n }\n else {\n numInput.type = \"text\";\n numInput.pattern = \"\\\\d*\";\n }\n if (opts !== undefined)\n for (var key in opts)\n numInput.setAttribute(key, opts[key]);\n wrapper.appendChild(numInput);\n wrapper.appendChild(arrowUp);\n wrapper.appendChild(arrowDown);\n return wrapper;\n}\nexport function getEventTarget(event) {\n try {\n if (typeof event.composedPath === \"function\") {\n var path = event.composedPath();\n return path[0];\n }\n return event.target;\n }\n catch (error) {\n return event.target;\n }\n}\n","import { int, pad } from \"../utils\";\nvar doNothing = function () { return undefined; };\nexport var monthToStr = function (monthNumber, shorthand, locale) { return locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber]; };\nexport var revFormat = {\n D: doNothing,\n F: function (dateObj, monthName, locale) {\n dateObj.setMonth(locale.months.longhand.indexOf(monthName));\n },\n G: function (dateObj, hour) {\n dateObj.setHours((dateObj.getHours() >= 12 ? 12 : 0) + parseFloat(hour));\n },\n H: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n J: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n K: function (dateObj, amPM, locale) {\n dateObj.setHours((dateObj.getHours() % 12) +\n 12 * int(new RegExp(locale.amPM[1], \"i\").test(amPM)));\n },\n M: function (dateObj, shortMonth, locale) {\n dateObj.setMonth(locale.months.shorthand.indexOf(shortMonth));\n },\n S: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n U: function (_, unixSeconds) { return new Date(parseFloat(unixSeconds) * 1000); },\n W: function (dateObj, weekNum, locale) {\n var weekNumber = parseInt(weekNum);\n var date = new Date(dateObj.getFullYear(), 0, 2 + (weekNumber - 1) * 7, 0, 0, 0, 0);\n date.setDate(date.getDate() - date.getDay() + locale.firstDayOfWeek);\n return date;\n },\n Y: function (dateObj, year) {\n dateObj.setFullYear(parseFloat(year));\n },\n Z: function (_, ISODate) { return new Date(ISODate); },\n d: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n h: function (dateObj, hour) {\n dateObj.setHours((dateObj.getHours() >= 12 ? 12 : 0) + parseFloat(hour));\n },\n i: function (dateObj, minutes) {\n dateObj.setMinutes(parseFloat(minutes));\n },\n j: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n l: doNothing,\n m: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n n: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n s: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n u: function (_, unixMillSeconds) {\n return new Date(parseFloat(unixMillSeconds));\n },\n w: doNothing,\n y: function (dateObj, year) {\n dateObj.setFullYear(2000 + parseFloat(year));\n },\n};\nexport var tokenRegex = {\n D: \"\",\n F: \"\",\n G: \"(\\\\d\\\\d|\\\\d)\",\n H: \"(\\\\d\\\\d|\\\\d)\",\n J: \"(\\\\d\\\\d|\\\\d)\\\\w+\",\n K: \"\",\n M: \"\",\n S: \"(\\\\d\\\\d|\\\\d)\",\n U: \"(.+)\",\n W: \"(\\\\d\\\\d|\\\\d)\",\n Y: \"(\\\\d{4})\",\n Z: \"(.+)\",\n d: \"(\\\\d\\\\d|\\\\d)\",\n h: \"(\\\\d\\\\d|\\\\d)\",\n i: \"(\\\\d\\\\d|\\\\d)\",\n j: \"(\\\\d\\\\d|\\\\d)\",\n l: \"\",\n m: \"(\\\\d\\\\d|\\\\d)\",\n n: \"(\\\\d\\\\d|\\\\d)\",\n s: \"(\\\\d\\\\d|\\\\d)\",\n u: \"(.+)\",\n w: \"(\\\\d\\\\d|\\\\d)\",\n y: \"(\\\\d{2})\",\n};\nexport var formats = {\n Z: function (date) { return date.toISOString(); },\n D: function (date, locale, options) {\n return locale.weekdays.shorthand[formats.w(date, locale, options)];\n },\n F: function (date, locale, options) {\n return monthToStr(formats.n(date, locale, options) - 1, false, locale);\n },\n G: function (date, locale, options) {\n return pad(formats.h(date, locale, options));\n },\n H: function (date) { return pad(date.getHours()); },\n J: function (date, locale) {\n return locale.ordinal !== undefined\n ? date.getDate() + locale.ordinal(date.getDate())\n : date.getDate();\n },\n K: function (date, locale) { return locale.amPM[int(date.getHours() > 11)]; },\n M: function (date, locale) {\n return monthToStr(date.getMonth(), true, locale);\n },\n S: function (date) { return pad(date.getSeconds()); },\n U: function (date) { return date.getTime() / 1000; },\n W: function (date, _, options) {\n return options.getWeek(date);\n },\n Y: function (date) { return pad(date.getFullYear(), 4); },\n d: function (date) { return pad(date.getDate()); },\n h: function (date) { return (date.getHours() % 12 ? date.getHours() % 12 : 12); },\n i: function (date) { return pad(date.getMinutes()); },\n j: function (date) { return date.getDate(); },\n l: function (date, locale) {\n return locale.weekdays.longhand[date.getDay()];\n },\n m: function (date) { return pad(date.getMonth() + 1); },\n n: function (date) { return date.getMonth() + 1; },\n s: function (date) { return date.getSeconds(); },\n u: function (date) { return date.getTime(); },\n w: function (date) { return date.getDay(); },\n y: function (date) { return String(date.getFullYear()).substring(2); },\n};\n","import { tokenRegex, revFormat, formats, } from \"./formatting\";\nimport { defaults } from \"../types/options\";\nimport { english } from \"../l10n/default\";\nexport var createDateFormatter = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c, _d = _a.isMobile, isMobile = _d === void 0 ? false : _d;\n return function (dateObj, frmt, overrideLocale) {\n var locale = overrideLocale || l10n;\n if (config.formatDate !== undefined && !isMobile) {\n return config.formatDate(dateObj, frmt, locale);\n }\n return frmt\n .split(\"\")\n .map(function (c, i, arr) {\n return formats[c] && arr[i - 1] !== \"\\\\\"\n ? formats[c](dateObj, locale, config)\n : c !== \"\\\\\"\n ? c\n : \"\";\n })\n .join(\"\");\n };\n};\nexport var createDateParser = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c;\n return function (date, givenFormat, timeless, customLocale) {\n if (date !== 0 && !date)\n return undefined;\n var locale = customLocale || l10n;\n var parsedDate;\n var dateOrig = date;\n if (date instanceof Date)\n parsedDate = new Date(date.getTime());\n else if (typeof date !== \"string\" &&\n date.toFixed !== undefined)\n parsedDate = new Date(date);\n else if (typeof date === \"string\") {\n var format = givenFormat || (config || defaults).dateFormat;\n var datestr = String(date).trim();\n if (datestr === \"today\") {\n parsedDate = new Date();\n timeless = true;\n }\n else if (config && config.parseDate) {\n parsedDate = config.parseDate(date, format);\n }\n else if (/Z$/.test(datestr) ||\n /GMT$/.test(datestr)) {\n parsedDate = new Date(date);\n }\n else {\n var matched = void 0, ops = [];\n for (var i = 0, matchIndex = 0, regexStr = \"\"; i < format.length; i++) {\n var token = format[i];\n var isBackSlash = token === \"\\\\\";\n var escaped = format[i - 1] === \"\\\\\" || isBackSlash;\n if (tokenRegex[token] && !escaped) {\n regexStr += tokenRegex[token];\n var match = new RegExp(regexStr).exec(date);\n if (match && (matched = true)) {\n ops[token !== \"Y\" ? \"push\" : \"unshift\"]({\n fn: revFormat[token],\n val: match[++matchIndex],\n });\n }\n }\n else if (!isBackSlash)\n regexStr += \".\";\n }\n parsedDate =\n !config || !config.noCalendar\n ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0)\n : new Date(new Date().setHours(0, 0, 0, 0));\n ops.forEach(function (_a) {\n var fn = _a.fn, val = _a.val;\n return (parsedDate = fn(parsedDate, val, locale) || parsedDate);\n });\n parsedDate = matched ? parsedDate : undefined;\n }\n }\n if (!(parsedDate instanceof Date && !isNaN(parsedDate.getTime()))) {\n config.errorHandler(new Error(\"Invalid date provided: \" + dateOrig));\n return undefined;\n }\n if (timeless === true)\n parsedDate.setHours(0, 0, 0, 0);\n return parsedDate;\n };\n};\nexport function compareDates(date1, date2, timeless) {\n if (timeless === void 0) { timeless = true; }\n if (timeless !== false) {\n return (new Date(date1.getTime()).setHours(0, 0, 0, 0) -\n new Date(date2.getTime()).setHours(0, 0, 0, 0));\n }\n return date1.getTime() - date2.getTime();\n}\nexport function compareTimes(date1, date2) {\n return (3600 * (date1.getHours() - date2.getHours()) +\n 60 * (date1.getMinutes() - date2.getMinutes()) +\n date1.getSeconds() -\n date2.getSeconds());\n}\nexport var isBetween = function (ts, ts1, ts2) {\n return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);\n};\nexport var calculateSecondsSinceMidnight = function (hours, minutes, seconds) {\n return hours * 3600 + minutes * 60 + seconds;\n};\nexport var parseSeconds = function (secondsSinceMidnight) {\n var hours = Math.floor(secondsSinceMidnight / 3600), minutes = (secondsSinceMidnight - hours * 3600) / 60;\n return [hours, minutes, secondsSinceMidnight - hours * 3600 - minutes * 60];\n};\nexport var duration = {\n DAY: 86400000,\n};\nexport function getDefaultHours(config) {\n var hours = config.defaultHour;\n var minutes = config.defaultMinute;\n var seconds = config.defaultSeconds;\n if (config.minDate !== undefined) {\n var minHour = config.minDate.getHours();\n var minMinutes = config.minDate.getMinutes();\n var minSeconds = config.minDate.getSeconds();\n if (hours < minHour) {\n hours = minHour;\n }\n if (hours === minHour && minutes < minMinutes) {\n minutes = minMinutes;\n }\n if (hours === minHour && minutes === minMinutes && seconds < minSeconds)\n seconds = config.minDate.getSeconds();\n }\n if (config.maxDate !== undefined) {\n var maxHr = config.maxDate.getHours();\n var maxMinutes = config.maxDate.getMinutes();\n hours = Math.min(hours, maxHr);\n if (hours === maxHr)\n minutes = Math.min(maxMinutes, minutes);\n if (hours === maxHr && minutes === maxMinutes)\n seconds = config.maxDate.getSeconds();\n }\n return { hours: hours, minutes: minutes, seconds: seconds };\n}\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nimport { defaults as defaultOptions, HOOKS, } from \"./types/options\";\nimport English from \"./l10n/default\";\nimport { arrayify, debounce, int, pad } from \"./utils\";\nimport { clearNode, createElement, createNumberInput, findParent, toggleClass, getEventTarget, } from \"./utils/dom\";\nimport { compareDates, createDateParser, createDateFormatter, duration, isBetween, getDefaultHours, calculateSecondsSinceMidnight, parseSeconds, } from \"./utils/dates\";\nimport { tokenRegex, monthToStr } from \"./utils/formatting\";\nimport \"./utils/polyfills\";\nvar DEBOUNCED_CHANGE_MS = 300;\nfunction FlatpickrInstance(element, instanceConfig) {\n var self = {\n config: __assign(__assign({}, defaultOptions), flatpickr.defaultConfig),\n l10n: English,\n };\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n self._handlers = [];\n self.pluginElements = [];\n self.loadedPlugins = [];\n self._bind = bind;\n self._setHoursFromDate = setHoursFromDate;\n self._positionCalendar = positionCalendar;\n self.changeMonth = changeMonth;\n self.changeYear = changeYear;\n self.clear = clear;\n self.close = close;\n self.onMouseOver = onMouseOver;\n self._createElement = createElement;\n self.createDay = createDay;\n self.destroy = destroy;\n self.isEnabled = isEnabled;\n self.jumpToDate = jumpToDate;\n self.updateValue = updateValue;\n self.open = open;\n self.redraw = redraw;\n self.set = set;\n self.setDate = setDate;\n self.toggle = toggle;\n function setupHelperFunctions() {\n self.utils = {\n getDaysInMonth: function (month, yr) {\n if (month === void 0) { month = self.currentMonth; }\n if (yr === void 0) { yr = self.currentYear; }\n if (month === 1 && ((yr % 4 === 0 && yr % 100 !== 0) || yr % 400 === 0))\n return 29;\n return self.l10n.daysInMonth[month];\n },\n };\n }\n function init() {\n self.element = self.input = element;\n self.isOpen = false;\n parseConfig();\n setupLocale();\n setupInputs();\n setupDates();\n setupHelperFunctions();\n if (!self.isMobile)\n build();\n bindEvents();\n if (self.selectedDates.length || self.config.noCalendar) {\n if (self.config.enableTime) {\n setHoursFromDate(self.config.noCalendar ? self.latestSelectedDateObj : undefined);\n }\n updateValue(false);\n }\n setCalendarWidth();\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n if (!self.isMobile && isSafari) {\n positionCalendar();\n }\n triggerEvent(\"onReady\");\n }\n function getClosestActiveElement() {\n var _a;\n return (((_a = self.calendarContainer) === null || _a === void 0 ? void 0 : _a.getRootNode())\n .activeElement || document.activeElement);\n }\n function bindToInstance(fn) {\n return fn.bind(self);\n }\n function setCalendarWidth() {\n var config = self.config;\n if (config.weekNumbers === false && config.showMonths === 1) {\n return;\n }\n else if (config.noCalendar !== true) {\n window.requestAnimationFrame(function () {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.style.visibility = \"hidden\";\n self.calendarContainer.style.display = \"block\";\n }\n if (self.daysContainer !== undefined) {\n var daysWidth = (self.days.offsetWidth + 1) * config.showMonths;\n self.daysContainer.style.width = daysWidth + \"px\";\n self.calendarContainer.style.width =\n daysWidth +\n (self.weekWrapper !== undefined\n ? self.weekWrapper.offsetWidth\n : 0) +\n \"px\";\n self.calendarContainer.style.removeProperty(\"visibility\");\n self.calendarContainer.style.removeProperty(\"display\");\n }\n });\n }\n }\n function updateTime(e) {\n if (self.selectedDates.length === 0) {\n var defaultDate = self.config.minDate === undefined ||\n compareDates(new Date(), self.config.minDate) >= 0\n ? new Date()\n : new Date(self.config.minDate.getTime());\n var defaults = getDefaultHours(self.config);\n defaultDate.setHours(defaults.hours, defaults.minutes, defaults.seconds, defaultDate.getMilliseconds());\n self.selectedDates = [defaultDate];\n self.latestSelectedDateObj = defaultDate;\n }\n if (e !== undefined && e.type !== \"blur\") {\n timeWrapper(e);\n }\n var prevValue = self._input.value;\n setHoursFromInputs();\n updateValue();\n if (self._input.value !== prevValue) {\n self._debouncedChange();\n }\n }\n function ampm2military(hour, amPM) {\n return (hour % 12) + 12 * int(amPM === self.l10n.amPM[1]);\n }\n function military2ampm(hour) {\n switch (hour % 24) {\n case 0:\n case 12:\n return 12;\n default:\n return hour % 12;\n }\n }\n function setHoursFromInputs() {\n if (self.hourElement === undefined || self.minuteElement === undefined)\n return;\n var hours = (parseInt(self.hourElement.value.slice(-2), 10) || 0) % 24, minutes = (parseInt(self.minuteElement.value, 10) || 0) % 60, seconds = self.secondElement !== undefined\n ? (parseInt(self.secondElement.value, 10) || 0) % 60\n : 0;\n if (self.amPM !== undefined) {\n hours = ampm2military(hours, self.amPM.textContent);\n }\n var limitMinHours = self.config.minTime !== undefined ||\n (self.config.minDate &&\n self.minDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.minDate, true) ===\n 0);\n var limitMaxHours = self.config.maxTime !== undefined ||\n (self.config.maxDate &&\n self.maxDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.maxDate, true) ===\n 0);\n if (self.config.maxTime !== undefined &&\n self.config.minTime !== undefined &&\n self.config.minTime > self.config.maxTime) {\n var minBound = calculateSecondsSinceMidnight(self.config.minTime.getHours(), self.config.minTime.getMinutes(), self.config.minTime.getSeconds());\n var maxBound = calculateSecondsSinceMidnight(self.config.maxTime.getHours(), self.config.maxTime.getMinutes(), self.config.maxTime.getSeconds());\n var currentTime = calculateSecondsSinceMidnight(hours, minutes, seconds);\n if (currentTime > maxBound && currentTime < minBound) {\n var result = parseSeconds(minBound);\n hours = result[0];\n minutes = result[1];\n seconds = result[2];\n }\n }\n else {\n if (limitMaxHours) {\n var maxTime = self.config.maxTime !== undefined\n ? self.config.maxTime\n : self.config.maxDate;\n hours = Math.min(hours, maxTime.getHours());\n if (hours === maxTime.getHours())\n minutes = Math.min(minutes, maxTime.getMinutes());\n if (minutes === maxTime.getMinutes())\n seconds = Math.min(seconds, maxTime.getSeconds());\n }\n if (limitMinHours) {\n var minTime = self.config.minTime !== undefined\n ? self.config.minTime\n : self.config.minDate;\n hours = Math.max(hours, minTime.getHours());\n if (hours === minTime.getHours() && minutes < minTime.getMinutes())\n minutes = minTime.getMinutes();\n if (minutes === minTime.getMinutes())\n seconds = Math.max(seconds, minTime.getSeconds());\n }\n }\n setHours(hours, minutes, seconds);\n }\n function setHoursFromDate(dateObj) {\n var date = dateObj || self.latestSelectedDateObj;\n if (date && date instanceof Date) {\n setHours(date.getHours(), date.getMinutes(), date.getSeconds());\n }\n }\n function setHours(hours, minutes, seconds) {\n if (self.latestSelectedDateObj !== undefined) {\n self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);\n }\n if (!self.hourElement || !self.minuteElement || self.isMobile)\n return;\n self.hourElement.value = pad(!self.config.time_24hr\n ? ((12 + hours) % 12) + 12 * int(hours % 12 === 0)\n : hours);\n self.minuteElement.value = pad(minutes);\n if (self.amPM !== undefined)\n self.amPM.textContent = self.l10n.amPM[int(hours >= 12)];\n if (self.secondElement !== undefined)\n self.secondElement.value = pad(seconds);\n }\n function onYearInput(event) {\n var eventTarget = getEventTarget(event);\n var year = parseInt(eventTarget.value) + (event.delta || 0);\n if (year / 1000 > 1 ||\n (event.key === \"Enter\" && !/[^\\d]/.test(year.toString()))) {\n changeYear(year);\n }\n }\n function bind(element, event, handler, options) {\n if (event instanceof Array)\n return event.forEach(function (ev) { return bind(element, ev, handler, options); });\n if (element instanceof Array)\n return element.forEach(function (el) { return bind(el, event, handler, options); });\n element.addEventListener(event, handler, options);\n self._handlers.push({\n remove: function () { return element.removeEventListener(event, handler, options); },\n });\n }\n function triggerChange() {\n triggerEvent(\"onChange\");\n }\n function bindEvents() {\n if (self.config.wrap) {\n [\"open\", \"close\", \"toggle\", \"clear\"].forEach(function (evt) {\n Array.prototype.forEach.call(self.element.querySelectorAll(\"[data-\" + evt + \"]\"), function (el) {\n return bind(el, \"click\", self[evt]);\n });\n });\n }\n if (self.isMobile) {\n setupMobile();\n return;\n }\n var debouncedResize = debounce(onResize, 50);\n self._debouncedChange = debounce(triggerChange, DEBOUNCED_CHANGE_MS);\n if (self.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent))\n bind(self.daysContainer, \"mouseover\", function (e) {\n if (self.config.mode === \"range\")\n onMouseOver(getEventTarget(e));\n });\n bind(self._input, \"keydown\", onKeyDown);\n if (self.calendarContainer !== undefined) {\n bind(self.calendarContainer, \"keydown\", onKeyDown);\n }\n if (!self.config.inline && !self.config.static)\n bind(window, \"resize\", debouncedResize);\n if (window.ontouchstart !== undefined)\n bind(window.document, \"touchstart\", documentClick);\n else\n bind(window.document, \"mousedown\", documentClick);\n bind(window.document, \"focus\", documentClick, { capture: true });\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"click\", self.open);\n }\n if (self.daysContainer !== undefined) {\n bind(self.monthNav, \"click\", onMonthNavClick);\n bind(self.monthNav, [\"keyup\", \"increment\"], onYearInput);\n bind(self.daysContainer, \"click\", selectDate);\n }\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined) {\n var selText = function (e) {\n return getEventTarget(e).select();\n };\n bind(self.timeContainer, [\"increment\"], updateTime);\n bind(self.timeContainer, \"blur\", updateTime, { capture: true });\n bind(self.timeContainer, \"click\", timeIncrement);\n bind([self.hourElement, self.minuteElement], [\"focus\", \"click\"], selText);\n if (self.secondElement !== undefined)\n bind(self.secondElement, \"focus\", function () { return self.secondElement && self.secondElement.select(); });\n if (self.amPM !== undefined) {\n bind(self.amPM, \"click\", function (e) {\n updateTime(e);\n });\n }\n }\n if (self.config.allowInput) {\n bind(self._input, \"blur\", onBlur);\n }\n }\n function jumpToDate(jumpDate, triggerChange) {\n var jumpTo = jumpDate !== undefined\n ? self.parseDate(jumpDate)\n : self.latestSelectedDateObj ||\n (self.config.minDate && self.config.minDate > self.now\n ? self.config.minDate\n : self.config.maxDate && self.config.maxDate < self.now\n ? self.config.maxDate\n : self.now);\n var oldYear = self.currentYear;\n var oldMonth = self.currentMonth;\n try {\n if (jumpTo !== undefined) {\n self.currentYear = jumpTo.getFullYear();\n self.currentMonth = jumpTo.getMonth();\n }\n }\n catch (e) {\n e.message = \"Invalid date supplied: \" + jumpTo;\n self.config.errorHandler(e);\n }\n if (triggerChange && self.currentYear !== oldYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n if (triggerChange &&\n (self.currentYear !== oldYear || self.currentMonth !== oldMonth)) {\n triggerEvent(\"onMonthChange\");\n }\n self.redraw();\n }\n function timeIncrement(e) {\n var eventTarget = getEventTarget(e);\n if (~eventTarget.className.indexOf(\"arrow\"))\n incrementNumInput(e, eventTarget.classList.contains(\"arrowUp\") ? 1 : -1);\n }\n function incrementNumInput(e, delta, inputElem) {\n var target = e && getEventTarget(e);\n var input = inputElem ||\n (target && target.parentNode && target.parentNode.firstChild);\n var event = createEvent(\"increment\");\n event.delta = delta;\n input && input.dispatchEvent(event);\n }\n function build() {\n var fragment = window.document.createDocumentFragment();\n self.calendarContainer = createElement(\"div\", \"flatpickr-calendar\");\n self.calendarContainer.tabIndex = -1;\n if (!self.config.noCalendar) {\n fragment.appendChild(buildMonthNav());\n self.innerContainer = createElement(\"div\", \"flatpickr-innerContainer\");\n if (self.config.weekNumbers) {\n var _a = buildWeeks(), weekWrapper = _a.weekWrapper, weekNumbers = _a.weekNumbers;\n self.innerContainer.appendChild(weekWrapper);\n self.weekNumbers = weekNumbers;\n self.weekWrapper = weekWrapper;\n }\n self.rContainer = createElement(\"div\", \"flatpickr-rContainer\");\n self.rContainer.appendChild(buildWeekdays());\n if (!self.daysContainer) {\n self.daysContainer = createElement(\"div\", \"flatpickr-days\");\n self.daysContainer.tabIndex = -1;\n }\n buildDays();\n self.rContainer.appendChild(self.daysContainer);\n self.innerContainer.appendChild(self.rContainer);\n fragment.appendChild(self.innerContainer);\n }\n if (self.config.enableTime) {\n fragment.appendChild(buildTime());\n }\n toggleClass(self.calendarContainer, \"rangeMode\", self.config.mode === \"range\");\n toggleClass(self.calendarContainer, \"animate\", self.config.animate === true);\n toggleClass(self.calendarContainer, \"multiMonth\", self.config.showMonths > 1);\n self.calendarContainer.appendChild(fragment);\n var customAppend = self.config.appendTo !== undefined &&\n self.config.appendTo.nodeType !== undefined;\n if (self.config.inline || self.config.static) {\n self.calendarContainer.classList.add(self.config.inline ? \"inline\" : \"static\");\n if (self.config.inline) {\n if (!customAppend && self.element.parentNode)\n self.element.parentNode.insertBefore(self.calendarContainer, self._input.nextSibling);\n else if (self.config.appendTo !== undefined)\n self.config.appendTo.appendChild(self.calendarContainer);\n }\n if (self.config.static) {\n var wrapper = createElement(\"div\", \"flatpickr-wrapper\");\n if (self.element.parentNode)\n self.element.parentNode.insertBefore(wrapper, self.element);\n wrapper.appendChild(self.element);\n if (self.altInput)\n wrapper.appendChild(self.altInput);\n wrapper.appendChild(self.calendarContainer);\n }\n }\n if (!self.config.static && !self.config.inline)\n (self.config.appendTo !== undefined\n ? self.config.appendTo\n : window.document.body).appendChild(self.calendarContainer);\n }\n function createDay(className, date, _dayNumber, i) {\n var dateIsEnabled = isEnabled(date, true), dayElement = createElement(\"span\", className, date.getDate().toString());\n dayElement.dateObj = date;\n dayElement.$i = i;\n dayElement.setAttribute(\"aria-label\", self.formatDate(date, self.config.ariaDateFormat));\n if (className.indexOf(\"hidden\") === -1 &&\n compareDates(date, self.now) === 0) {\n self.todayDateElem = dayElement;\n dayElement.classList.add(\"today\");\n dayElement.setAttribute(\"aria-current\", \"date\");\n }\n if (dateIsEnabled) {\n dayElement.tabIndex = -1;\n if (isDateSelected(date)) {\n dayElement.classList.add(\"selected\");\n self.selectedDateElem = dayElement;\n if (self.config.mode === \"range\") {\n toggleClass(dayElement, \"startRange\", self.selectedDates[0] &&\n compareDates(date, self.selectedDates[0], true) === 0);\n toggleClass(dayElement, \"endRange\", self.selectedDates[1] &&\n compareDates(date, self.selectedDates[1], true) === 0);\n if (className === \"nextMonthDay\")\n dayElement.classList.add(\"inRange\");\n }\n }\n }\n else {\n dayElement.classList.add(\"flatpickr-disabled\");\n }\n if (self.config.mode === \"range\") {\n if (isDateInRange(date) && !isDateSelected(date))\n dayElement.classList.add(\"inRange\");\n }\n if (self.weekNumbers &&\n self.config.showMonths === 1 &&\n className !== \"prevMonthDay\" &&\n i % 7 === 6) {\n self.weekNumbers.insertAdjacentHTML(\"beforeend\", \"\" + self.config.getWeek(date) + \"\");\n }\n triggerEvent(\"onDayCreate\", dayElement);\n return dayElement;\n }\n function focusOnDayElem(targetNode) {\n targetNode.focus();\n if (self.config.mode === \"range\")\n onMouseOver(targetNode);\n }\n function getFirstAvailableDay(delta) {\n var startMonth = delta > 0 ? 0 : self.config.showMonths - 1;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n for (var m = startMonth; m != endMonth; m += delta) {\n var month = self.daysContainer.children[m];\n var startIndex = delta > 0 ? 0 : month.children.length - 1;\n var endIndex = delta > 0 ? month.children.length : -1;\n for (var i = startIndex; i != endIndex; i += delta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 && isEnabled(c.dateObj))\n return c;\n }\n }\n return undefined;\n }\n function getNextAvailableDay(current, delta) {\n var givenMonth = current.className.indexOf(\"Month\") === -1\n ? current.dateObj.getMonth()\n : self.currentMonth;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n var loopDelta = delta > 0 ? 1 : -1;\n for (var m = givenMonth - self.currentMonth; m != endMonth; m += loopDelta) {\n var month = self.daysContainer.children[m];\n var startIndex = givenMonth - self.currentMonth === m\n ? current.$i + delta\n : delta < 0\n ? month.children.length - 1\n : 0;\n var numMonthDays = month.children.length;\n for (var i = startIndex; i >= 0 && i < numMonthDays && i != (delta > 0 ? numMonthDays : -1); i += loopDelta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 &&\n isEnabled(c.dateObj) &&\n Math.abs(current.$i - i) >= Math.abs(delta))\n return focusOnDayElem(c);\n }\n }\n self.changeMonth(loopDelta);\n focusOnDay(getFirstAvailableDay(loopDelta), 0);\n return undefined;\n }\n function focusOnDay(current, offset) {\n var activeElement = getClosestActiveElement();\n var dayFocused = isInView(activeElement || document.body);\n var startElem = current !== undefined\n ? current\n : dayFocused\n ? activeElement\n : self.selectedDateElem !== undefined && isInView(self.selectedDateElem)\n ? self.selectedDateElem\n : self.todayDateElem !== undefined && isInView(self.todayDateElem)\n ? self.todayDateElem\n : getFirstAvailableDay(offset > 0 ? 1 : -1);\n if (startElem === undefined) {\n self._input.focus();\n }\n else if (!dayFocused) {\n focusOnDayElem(startElem);\n }\n else {\n getNextAvailableDay(startElem, offset);\n }\n }\n function buildMonthDays(year, month) {\n var firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;\n var prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12, year);\n var daysInMonth = self.utils.getDaysInMonth(month, year), days = window.document.createDocumentFragment(), isMultiMonth = self.config.showMonths > 1, prevMonthDayClass = isMultiMonth ? \"prevMonthDay hidden\" : \"prevMonthDay\", nextMonthDayClass = isMultiMonth ? \"nextMonthDay hidden\" : \"nextMonthDay\";\n var dayNumber = prevMonthDays + 1 - firstOfMonth, dayIndex = 0;\n for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"flatpickr-day \" + prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));\n }\n for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"flatpickr-day\", new Date(year, month, dayNumber), dayNumber, dayIndex));\n }\n for (var dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth &&\n (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {\n days.appendChild(createDay(\"flatpickr-day \" + nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));\n }\n var dayContainer = createElement(\"div\", \"dayContainer\");\n dayContainer.appendChild(days);\n return dayContainer;\n }\n function buildDays() {\n if (self.daysContainer === undefined) {\n return;\n }\n clearNode(self.daysContainer);\n if (self.weekNumbers)\n clearNode(self.weekNumbers);\n var frag = document.createDocumentFragment();\n for (var i = 0; i < self.config.showMonths; i++) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n frag.appendChild(buildMonthDays(d.getFullYear(), d.getMonth()));\n }\n self.daysContainer.appendChild(frag);\n self.days = self.daysContainer.firstChild;\n if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n onMouseOver();\n }\n }\n function buildMonthSwitch() {\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType !== \"dropdown\")\n return;\n var shouldBuildMonth = function (month) {\n if (self.config.minDate !== undefined &&\n self.currentYear === self.config.minDate.getFullYear() &&\n month < self.config.minDate.getMonth()) {\n return false;\n }\n return !(self.config.maxDate !== undefined &&\n self.currentYear === self.config.maxDate.getFullYear() &&\n month > self.config.maxDate.getMonth());\n };\n self.monthsDropdownContainer.tabIndex = -1;\n self.monthsDropdownContainer.innerHTML = \"\";\n for (var i = 0; i < 12; i++) {\n if (!shouldBuildMonth(i))\n continue;\n var month = createElement(\"option\", \"flatpickr-monthDropdown-month\");\n month.value = new Date(self.currentYear, i).getMonth().toString();\n month.textContent = monthToStr(i, self.config.shorthandCurrentMonth, self.l10n);\n month.tabIndex = -1;\n if (self.currentMonth === i) {\n month.selected = true;\n }\n self.monthsDropdownContainer.appendChild(month);\n }\n }\n function buildMonth() {\n var container = createElement(\"div\", \"flatpickr-month\");\n var monthNavFragment = window.document.createDocumentFragment();\n var monthElement;\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n monthElement = createElement(\"span\", \"cur-month\");\n }\n else {\n self.monthsDropdownContainer = createElement(\"select\", \"flatpickr-monthDropdown-months\");\n self.monthsDropdownContainer.setAttribute(\"aria-label\", self.l10n.monthAriaLabel);\n bind(self.monthsDropdownContainer, \"change\", function (e) {\n var target = getEventTarget(e);\n var selectedMonth = parseInt(target.value, 10);\n self.changeMonth(selectedMonth - self.currentMonth);\n triggerEvent(\"onMonthChange\");\n });\n buildMonthSwitch();\n monthElement = self.monthsDropdownContainer;\n }\n var yearInput = createNumberInput(\"cur-year\", { tabindex: \"-1\" });\n var yearElement = yearInput.getElementsByTagName(\"input\")[0];\n yearElement.setAttribute(\"aria-label\", self.l10n.yearAriaLabel);\n if (self.config.minDate) {\n yearElement.setAttribute(\"min\", self.config.minDate.getFullYear().toString());\n }\n if (self.config.maxDate) {\n yearElement.setAttribute(\"max\", self.config.maxDate.getFullYear().toString());\n yearElement.disabled =\n !!self.config.minDate &&\n self.config.minDate.getFullYear() === self.config.maxDate.getFullYear();\n }\n var currentMonth = createElement(\"div\", \"flatpickr-current-month\");\n currentMonth.appendChild(monthElement);\n currentMonth.appendChild(yearInput);\n monthNavFragment.appendChild(currentMonth);\n container.appendChild(monthNavFragment);\n return {\n container: container,\n yearElement: yearElement,\n monthElement: monthElement,\n };\n }\n function buildMonths() {\n clearNode(self.monthNav);\n self.monthNav.appendChild(self.prevMonthNav);\n if (self.config.showMonths) {\n self.yearElements = [];\n self.monthElements = [];\n }\n for (var m = self.config.showMonths; m--;) {\n var month = buildMonth();\n self.yearElements.push(month.yearElement);\n self.monthElements.push(month.monthElement);\n self.monthNav.appendChild(month.container);\n }\n self.monthNav.appendChild(self.nextMonthNav);\n }\n function buildMonthNav() {\n self.monthNav = createElement(\"div\", \"flatpickr-months\");\n self.yearElements = [];\n self.monthElements = [];\n self.prevMonthNav = createElement(\"span\", \"flatpickr-prev-month\");\n self.prevMonthNav.innerHTML = self.config.prevArrow;\n self.nextMonthNav = createElement(\"span\", \"flatpickr-next-month\");\n self.nextMonthNav.innerHTML = self.config.nextArrow;\n buildMonths();\n Object.defineProperty(self, \"_hidePrevMonthArrow\", {\n get: function () { return self.__hidePrevMonthArrow; },\n set: function (bool) {\n if (self.__hidePrevMonthArrow !== bool) {\n toggleClass(self.prevMonthNav, \"flatpickr-disabled\", bool);\n self.__hidePrevMonthArrow = bool;\n }\n },\n });\n Object.defineProperty(self, \"_hideNextMonthArrow\", {\n get: function () { return self.__hideNextMonthArrow; },\n set: function (bool) {\n if (self.__hideNextMonthArrow !== bool) {\n toggleClass(self.nextMonthNav, \"flatpickr-disabled\", bool);\n self.__hideNextMonthArrow = bool;\n }\n },\n });\n self.currentYearElement = self.yearElements[0];\n updateNavigationCurrentMonth();\n return self.monthNav;\n }\n function buildTime() {\n self.calendarContainer.classList.add(\"hasTime\");\n if (self.config.noCalendar)\n self.calendarContainer.classList.add(\"noCalendar\");\n var defaults = getDefaultHours(self.config);\n self.timeContainer = createElement(\"div\", \"flatpickr-time\");\n self.timeContainer.tabIndex = -1;\n var separator = createElement(\"span\", \"flatpickr-time-separator\", \":\");\n var hourInput = createNumberInput(\"flatpickr-hour\", {\n \"aria-label\": self.l10n.hourAriaLabel,\n });\n self.hourElement = hourInput.getElementsByTagName(\"input\")[0];\n var minuteInput = createNumberInput(\"flatpickr-minute\", {\n \"aria-label\": self.l10n.minuteAriaLabel,\n });\n self.minuteElement = minuteInput.getElementsByTagName(\"input\")[0];\n self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;\n self.hourElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getHours()\n : self.config.time_24hr\n ? defaults.hours\n : military2ampm(defaults.hours));\n self.minuteElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getMinutes()\n : defaults.minutes);\n self.hourElement.setAttribute(\"step\", self.config.hourIncrement.toString());\n self.minuteElement.setAttribute(\"step\", self.config.minuteIncrement.toString());\n self.hourElement.setAttribute(\"min\", self.config.time_24hr ? \"0\" : \"1\");\n self.hourElement.setAttribute(\"max\", self.config.time_24hr ? \"23\" : \"12\");\n self.hourElement.setAttribute(\"maxlength\", \"2\");\n self.minuteElement.setAttribute(\"min\", \"0\");\n self.minuteElement.setAttribute(\"max\", \"59\");\n self.minuteElement.setAttribute(\"maxlength\", \"2\");\n self.timeContainer.appendChild(hourInput);\n self.timeContainer.appendChild(separator);\n self.timeContainer.appendChild(minuteInput);\n if (self.config.time_24hr)\n self.timeContainer.classList.add(\"time24hr\");\n if (self.config.enableSeconds) {\n self.timeContainer.classList.add(\"hasSeconds\");\n var secondInput = createNumberInput(\"flatpickr-second\");\n self.secondElement = secondInput.getElementsByTagName(\"input\")[0];\n self.secondElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getSeconds()\n : defaults.seconds);\n self.secondElement.setAttribute(\"step\", self.minuteElement.getAttribute(\"step\"));\n self.secondElement.setAttribute(\"min\", \"0\");\n self.secondElement.setAttribute(\"max\", \"59\");\n self.secondElement.setAttribute(\"maxlength\", \"2\");\n self.timeContainer.appendChild(createElement(\"span\", \"flatpickr-time-separator\", \":\"));\n self.timeContainer.appendChild(secondInput);\n }\n if (!self.config.time_24hr) {\n self.amPM = createElement(\"span\", \"flatpickr-am-pm\", self.l10n.amPM[int((self.latestSelectedDateObj\n ? self.hourElement.value\n : self.config.defaultHour) > 11)]);\n self.amPM.title = self.l10n.toggleTitle;\n self.amPM.tabIndex = -1;\n self.timeContainer.appendChild(self.amPM);\n }\n return self.timeContainer;\n }\n function buildWeekdays() {\n if (!self.weekdayContainer)\n self.weekdayContainer = createElement(\"div\", \"flatpickr-weekdays\");\n else\n clearNode(self.weekdayContainer);\n for (var i = self.config.showMonths; i--;) {\n var container = createElement(\"div\", \"flatpickr-weekdaycontainer\");\n self.weekdayContainer.appendChild(container);\n }\n updateWeekdays();\n return self.weekdayContainer;\n }\n function updateWeekdays() {\n if (!self.weekdayContainer) {\n return;\n }\n var firstDayOfWeek = self.l10n.firstDayOfWeek;\n var weekdays = __spreadArrays(self.l10n.weekdays.shorthand);\n if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\n weekdays = __spreadArrays(weekdays.splice(firstDayOfWeek, weekdays.length), weekdays.splice(0, firstDayOfWeek));\n }\n for (var i = self.config.showMonths; i--;) {\n self.weekdayContainer.children[i].innerHTML = \"\\n \\n \" + weekdays.join(\"\") + \"\\n \\n \";\n }\n }\n function buildWeeks() {\n self.calendarContainer.classList.add(\"hasWeeks\");\n var weekWrapper = createElement(\"div\", \"flatpickr-weekwrapper\");\n weekWrapper.appendChild(createElement(\"span\", \"flatpickr-weekday\", self.l10n.weekAbbreviation));\n var weekNumbers = createElement(\"div\", \"flatpickr-weeks\");\n weekWrapper.appendChild(weekNumbers);\n return {\n weekWrapper: weekWrapper,\n weekNumbers: weekNumbers,\n };\n }\n function changeMonth(value, isOffset) {\n if (isOffset === void 0) { isOffset = true; }\n var delta = isOffset ? value : value - self.currentMonth;\n if ((delta < 0 && self._hidePrevMonthArrow === true) ||\n (delta > 0 && self._hideNextMonthArrow === true))\n return;\n self.currentMonth += delta;\n if (self.currentMonth < 0 || self.currentMonth > 11) {\n self.currentYear += self.currentMonth > 11 ? 1 : -1;\n self.currentMonth = (self.currentMonth + 12) % 12;\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n buildDays();\n triggerEvent(\"onMonthChange\");\n updateNavigationCurrentMonth();\n }\n function clear(triggerChangeEvent, toInitial) {\n if (triggerChangeEvent === void 0) { triggerChangeEvent = true; }\n if (toInitial === void 0) { toInitial = true; }\n self.input.value = \"\";\n if (self.altInput !== undefined)\n self.altInput.value = \"\";\n if (self.mobileInput !== undefined)\n self.mobileInput.value = \"\";\n self.selectedDates = [];\n self.latestSelectedDateObj = undefined;\n if (toInitial === true) {\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n }\n if (self.config.enableTime === true) {\n var _a = getDefaultHours(self.config), hours = _a.hours, minutes = _a.minutes, seconds = _a.seconds;\n setHours(hours, minutes, seconds);\n }\n self.redraw();\n if (triggerChangeEvent)\n triggerEvent(\"onChange\");\n }\n function close() {\n self.isOpen = false;\n if (!self.isMobile) {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.classList.remove(\"open\");\n }\n if (self._input !== undefined) {\n self._input.classList.remove(\"active\");\n }\n }\n triggerEvent(\"onClose\");\n }\n function destroy() {\n if (self.config !== undefined)\n triggerEvent(\"onDestroy\");\n for (var i = self._handlers.length; i--;) {\n self._handlers[i].remove();\n }\n self._handlers = [];\n if (self.mobileInput) {\n if (self.mobileInput.parentNode)\n self.mobileInput.parentNode.removeChild(self.mobileInput);\n self.mobileInput = undefined;\n }\n else if (self.calendarContainer && self.calendarContainer.parentNode) {\n if (self.config.static && self.calendarContainer.parentNode) {\n var wrapper = self.calendarContainer.parentNode;\n wrapper.lastChild && wrapper.removeChild(wrapper.lastChild);\n if (wrapper.parentNode) {\n while (wrapper.firstChild)\n wrapper.parentNode.insertBefore(wrapper.firstChild, wrapper);\n wrapper.parentNode.removeChild(wrapper);\n }\n }\n else\n self.calendarContainer.parentNode.removeChild(self.calendarContainer);\n }\n if (self.altInput) {\n self.input.type = \"text\";\n if (self.altInput.parentNode)\n self.altInput.parentNode.removeChild(self.altInput);\n delete self.altInput;\n }\n if (self.input) {\n self.input.type = self.input._type;\n self.input.classList.remove(\"flatpickr-input\");\n self.input.removeAttribute(\"readonly\");\n }\n [\n \"_showTimeInput\",\n \"latestSelectedDateObj\",\n \"_hideNextMonthArrow\",\n \"_hidePrevMonthArrow\",\n \"__hideNextMonthArrow\",\n \"__hidePrevMonthArrow\",\n \"isMobile\",\n \"isOpen\",\n \"selectedDateElem\",\n \"minDateHasTime\",\n \"maxDateHasTime\",\n \"days\",\n \"daysContainer\",\n \"_input\",\n \"_positionElement\",\n \"innerContainer\",\n \"rContainer\",\n \"monthNav\",\n \"todayDateElem\",\n \"calendarContainer\",\n \"weekdayContainer\",\n \"prevMonthNav\",\n \"nextMonthNav\",\n \"monthsDropdownContainer\",\n \"currentMonthElement\",\n \"currentYearElement\",\n \"navigationCurrentMonth\",\n \"selectedDateElem\",\n \"config\",\n ].forEach(function (k) {\n try {\n delete self[k];\n }\n catch (_) { }\n });\n }\n function isCalendarElem(elem) {\n return self.calendarContainer.contains(elem);\n }\n function documentClick(e) {\n if (self.isOpen && !self.config.inline) {\n var eventTarget_1 = getEventTarget(e);\n var isCalendarElement = isCalendarElem(eventTarget_1);\n var isInput = eventTarget_1 === self.input ||\n eventTarget_1 === self.altInput ||\n self.element.contains(eventTarget_1) ||\n (e.path &&\n e.path.indexOf &&\n (~e.path.indexOf(self.input) ||\n ~e.path.indexOf(self.altInput)));\n var lostFocus = !isInput &&\n !isCalendarElement &&\n !isCalendarElem(e.relatedTarget);\n var isIgnored = !self.config.ignoredFocusElements.some(function (elem) {\n return elem.contains(eventTarget_1);\n });\n if (lostFocus && isIgnored) {\n if (self.config.allowInput) {\n self.setDate(self._input.value, false, self.config.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n }\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined &&\n self.input.value !== \"\" &&\n self.input.value !== undefined) {\n updateTime();\n }\n self.close();\n if (self.config &&\n self.config.mode === \"range\" &&\n self.selectedDates.length === 1)\n self.clear(false);\n }\n }\n }\n function changeYear(newYear) {\n if (!newYear ||\n (self.config.minDate && newYear < self.config.minDate.getFullYear()) ||\n (self.config.maxDate && newYear > self.config.maxDate.getFullYear()))\n return;\n var newYearNum = newYear, isNewYear = self.currentYear !== newYearNum;\n self.currentYear = newYearNum || self.currentYear;\n if (self.config.maxDate &&\n self.currentYear === self.config.maxDate.getFullYear()) {\n self.currentMonth = Math.min(self.config.maxDate.getMonth(), self.currentMonth);\n }\n else if (self.config.minDate &&\n self.currentYear === self.config.minDate.getFullYear()) {\n self.currentMonth = Math.max(self.config.minDate.getMonth(), self.currentMonth);\n }\n if (isNewYear) {\n self.redraw();\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n }\n function isEnabled(date, timeless) {\n var _a;\n if (timeless === void 0) { timeless = true; }\n var dateToCheck = self.parseDate(date, undefined, timeless);\n if ((self.config.minDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.minDate, timeless !== undefined ? timeless : !self.minDateHasTime) < 0) ||\n (self.config.maxDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.maxDate, timeless !== undefined ? timeless : !self.maxDateHasTime) > 0))\n return false;\n if (!self.config.enable && self.config.disable.length === 0)\n return true;\n if (dateToCheck === undefined)\n return false;\n var bool = !!self.config.enable, array = (_a = self.config.enable) !== null && _a !== void 0 ? _a : self.config.disable;\n for (var i = 0, d = void 0; i < array.length; i++) {\n d = array[i];\n if (typeof d === \"function\" &&\n d(dateToCheck))\n return bool;\n else if (d instanceof Date &&\n dateToCheck !== undefined &&\n d.getTime() === dateToCheck.getTime())\n return bool;\n else if (typeof d === \"string\") {\n var parsed = self.parseDate(d, undefined, true);\n return parsed && parsed.getTime() === dateToCheck.getTime()\n ? bool\n : !bool;\n }\n else if (typeof d === \"object\" &&\n dateToCheck !== undefined &&\n d.from &&\n d.to &&\n dateToCheck.getTime() >= d.from.getTime() &&\n dateToCheck.getTime() <= d.to.getTime())\n return bool;\n }\n return !bool;\n }\n function isInView(elem) {\n if (self.daysContainer !== undefined)\n return (elem.className.indexOf(\"hidden\") === -1 &&\n elem.className.indexOf(\"flatpickr-disabled\") === -1 &&\n self.daysContainer.contains(elem));\n return false;\n }\n function onBlur(e) {\n var isInput = e.target === self._input;\n var valueChanged = self._input.value.trimEnd() !== getDateStr();\n if (isInput &&\n valueChanged &&\n !(e.relatedTarget && isCalendarElem(e.relatedTarget))) {\n self.setDate(self._input.value, true, e.target === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n }\n }\n function onKeyDown(e) {\n var eventTarget = getEventTarget(e);\n var isInput = self.config.wrap\n ? element.contains(eventTarget)\n : eventTarget === self._input;\n var allowInput = self.config.allowInput;\n var allowKeydown = self.isOpen && (!allowInput || !isInput);\n var allowInlineKeydown = self.config.inline && isInput && !allowInput;\n if (e.keyCode === 13 && isInput) {\n if (allowInput) {\n self.setDate(self._input.value, true, eventTarget === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n self.close();\n return eventTarget.blur();\n }\n else {\n self.open();\n }\n }\n else if (isCalendarElem(eventTarget) ||\n allowKeydown ||\n allowInlineKeydown) {\n var isTimeObj = !!self.timeContainer &&\n self.timeContainer.contains(eventTarget);\n switch (e.keyCode) {\n case 13:\n if (isTimeObj) {\n e.preventDefault();\n updateTime();\n focusAndClose();\n }\n else\n selectDate(e);\n break;\n case 27:\n e.preventDefault();\n focusAndClose();\n break;\n case 8:\n case 46:\n if (isInput && !self.config.allowInput) {\n e.preventDefault();\n self.clear();\n }\n break;\n case 37:\n case 39:\n if (!isTimeObj && !isInput) {\n e.preventDefault();\n var activeElement = getClosestActiveElement();\n if (self.daysContainer !== undefined &&\n (allowInput === false ||\n (activeElement && isInView(activeElement)))) {\n var delta_1 = e.keyCode === 39 ? 1 : -1;\n if (!e.ctrlKey)\n focusOnDay(undefined, delta_1);\n else {\n e.stopPropagation();\n changeMonth(delta_1);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n }\n }\n else if (self.hourElement)\n self.hourElement.focus();\n break;\n case 38:\n case 40:\n e.preventDefault();\n var delta = e.keyCode === 40 ? 1 : -1;\n if ((self.daysContainer &&\n eventTarget.$i !== undefined) ||\n eventTarget === self.input ||\n eventTarget === self.altInput) {\n if (e.ctrlKey) {\n e.stopPropagation();\n changeYear(self.currentYear - delta);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n else if (!isTimeObj)\n focusOnDay(undefined, delta * 7);\n }\n else if (eventTarget === self.currentYearElement) {\n changeYear(self.currentYear - delta);\n }\n else if (self.config.enableTime) {\n if (!isTimeObj && self.hourElement)\n self.hourElement.focus();\n updateTime(e);\n self._debouncedChange();\n }\n break;\n case 9:\n if (isTimeObj) {\n var elems = [\n self.hourElement,\n self.minuteElement,\n self.secondElement,\n self.amPM,\n ]\n .concat(self.pluginElements)\n .filter(function (x) { return x; });\n var i = elems.indexOf(eventTarget);\n if (i !== -1) {\n var target = elems[i + (e.shiftKey ? -1 : 1)];\n e.preventDefault();\n (target || self._input).focus();\n }\n }\n else if (!self.config.noCalendar &&\n self.daysContainer &&\n self.daysContainer.contains(eventTarget) &&\n e.shiftKey) {\n e.preventDefault();\n self._input.focus();\n }\n break;\n default:\n break;\n }\n }\n if (self.amPM !== undefined && eventTarget === self.amPM) {\n switch (e.key) {\n case self.l10n.amPM[0].charAt(0):\n case self.l10n.amPM[0].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[0];\n setHoursFromInputs();\n updateValue();\n break;\n case self.l10n.amPM[1].charAt(0):\n case self.l10n.amPM[1].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[1];\n setHoursFromInputs();\n updateValue();\n break;\n }\n }\n if (isInput || isCalendarElem(eventTarget)) {\n triggerEvent(\"onKeyDown\", e);\n }\n }\n function onMouseOver(elem, cellClass) {\n if (cellClass === void 0) { cellClass = \"flatpickr-day\"; }\n if (self.selectedDates.length !== 1 ||\n (elem &&\n (!elem.classList.contains(cellClass) ||\n elem.classList.contains(\"flatpickr-disabled\"))))\n return;\n var hoverDate = elem\n ? elem.dateObj.getTime()\n : self.days.firstElementChild.dateObj.getTime(), initialDate = self.parseDate(self.selectedDates[0], undefined, true).getTime(), rangeStartDate = Math.min(hoverDate, self.selectedDates[0].getTime()), rangeEndDate = Math.max(hoverDate, self.selectedDates[0].getTime());\n var containsDisabled = false;\n var minRange = 0, maxRange = 0;\n for (var t = rangeStartDate; t < rangeEndDate; t += duration.DAY) {\n if (!isEnabled(new Date(t), true)) {\n containsDisabled =\n containsDisabled || (t > rangeStartDate && t < rangeEndDate);\n if (t < initialDate && (!minRange || t > minRange))\n minRange = t;\n else if (t > initialDate && (!maxRange || t < maxRange))\n maxRange = t;\n }\n }\n var hoverableCells = Array.from(self.rContainer.querySelectorAll(\"*:nth-child(-n+\" + self.config.showMonths + \") > .\" + cellClass));\n hoverableCells.forEach(function (dayElem) {\n var date = dayElem.dateObj;\n var timestamp = date.getTime();\n var outOfRange = (minRange > 0 && timestamp < minRange) ||\n (maxRange > 0 && timestamp > maxRange);\n if (outOfRange) {\n dayElem.classList.add(\"notAllowed\");\n [\"inRange\", \"startRange\", \"endRange\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n return;\n }\n else if (containsDisabled && !outOfRange)\n return;\n [\"startRange\", \"inRange\", \"endRange\", \"notAllowed\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n if (elem !== undefined) {\n elem.classList.add(hoverDate <= self.selectedDates[0].getTime()\n ? \"startRange\"\n : \"endRange\");\n if (initialDate < hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"startRange\");\n else if (initialDate > hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"endRange\");\n if (timestamp >= minRange &&\n (maxRange === 0 || timestamp <= maxRange) &&\n isBetween(timestamp, initialDate, hoverDate))\n dayElem.classList.add(\"inRange\");\n }\n });\n }\n function onResize() {\n if (self.isOpen && !self.config.static && !self.config.inline)\n positionCalendar();\n }\n function open(e, positionElement) {\n if (positionElement === void 0) { positionElement = self._positionElement; }\n if (self.isMobile === true) {\n if (e) {\n e.preventDefault();\n var eventTarget = getEventTarget(e);\n if (eventTarget) {\n eventTarget.blur();\n }\n }\n if (self.mobileInput !== undefined) {\n self.mobileInput.focus();\n self.mobileInput.click();\n }\n triggerEvent(\"onOpen\");\n return;\n }\n else if (self._input.disabled || self.config.inline) {\n return;\n }\n var wasOpen = self.isOpen;\n self.isOpen = true;\n if (!wasOpen) {\n self.calendarContainer.classList.add(\"open\");\n self._input.classList.add(\"active\");\n triggerEvent(\"onOpen\");\n positionCalendar(positionElement);\n }\n if (self.config.enableTime === true && self.config.noCalendar === true) {\n if (self.config.allowInput === false &&\n (e === undefined ||\n !self.timeContainer.contains(e.relatedTarget))) {\n setTimeout(function () { return self.hourElement.select(); }, 50);\n }\n }\n }\n function minMaxDateSetter(type) {\n return function (date) {\n var dateObj = (self.config[\"_\" + type + \"Date\"] = self.parseDate(date, self.config.dateFormat));\n var inverseDateObj = self.config[\"_\" + (type === \"min\" ? \"max\" : \"min\") + \"Date\"];\n if (dateObj !== undefined) {\n self[type === \"min\" ? \"minDateHasTime\" : \"maxDateHasTime\"] =\n dateObj.getHours() > 0 ||\n dateObj.getMinutes() > 0 ||\n dateObj.getSeconds() > 0;\n }\n if (self.selectedDates) {\n self.selectedDates = self.selectedDates.filter(function (d) { return isEnabled(d); });\n if (!self.selectedDates.length && type === \"min\")\n setHoursFromDate(dateObj);\n updateValue();\n }\n if (self.daysContainer) {\n redraw();\n if (dateObj !== undefined)\n self.currentYearElement[type] = dateObj.getFullYear().toString();\n else\n self.currentYearElement.removeAttribute(type);\n self.currentYearElement.disabled =\n !!inverseDateObj &&\n dateObj !== undefined &&\n inverseDateObj.getFullYear() === dateObj.getFullYear();\n }\n };\n }\n function parseConfig() {\n var boolOpts = [\n \"wrap\",\n \"weekNumbers\",\n \"allowInput\",\n \"allowInvalidPreload\",\n \"clickOpens\",\n \"time_24hr\",\n \"enableTime\",\n \"noCalendar\",\n \"altInput\",\n \"shorthandCurrentMonth\",\n \"inline\",\n \"static\",\n \"enableSeconds\",\n \"disableMobile\",\n ];\n var userConfig = __assign(__assign({}, JSON.parse(JSON.stringify(element.dataset || {}))), instanceConfig);\n var formats = {};\n self.config.parseDate = userConfig.parseDate;\n self.config.formatDate = userConfig.formatDate;\n Object.defineProperty(self.config, \"enable\", {\n get: function () { return self.config._enable; },\n set: function (dates) {\n self.config._enable = parseDateRules(dates);\n },\n });\n Object.defineProperty(self.config, \"disable\", {\n get: function () { return self.config._disable; },\n set: function (dates) {\n self.config._disable = parseDateRules(dates);\n },\n });\n var timeMode = userConfig.mode === \"time\";\n if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {\n var defaultDateFormat = flatpickr.defaultConfig.dateFormat || defaultOptions.dateFormat;\n formats.dateFormat =\n userConfig.noCalendar || timeMode\n ? \"H:i\" + (userConfig.enableSeconds ? \":S\" : \"\")\n : defaultDateFormat + \" H:i\" + (userConfig.enableSeconds ? \":S\" : \"\");\n }\n if (userConfig.altInput &&\n (userConfig.enableTime || timeMode) &&\n !userConfig.altFormat) {\n var defaultAltFormat = flatpickr.defaultConfig.altFormat || defaultOptions.altFormat;\n formats.altFormat =\n userConfig.noCalendar || timeMode\n ? \"h:i\" + (userConfig.enableSeconds ? \":S K\" : \" K\")\n : defaultAltFormat + (\" h:i\" + (userConfig.enableSeconds ? \":S\" : \"\") + \" K\");\n }\n Object.defineProperty(self.config, \"minDate\", {\n get: function () { return self.config._minDate; },\n set: minMaxDateSetter(\"min\"),\n });\n Object.defineProperty(self.config, \"maxDate\", {\n get: function () { return self.config._maxDate; },\n set: minMaxDateSetter(\"max\"),\n });\n var minMaxTimeSetter = function (type) { return function (val) {\n self.config[type === \"min\" ? \"_minTime\" : \"_maxTime\"] = self.parseDate(val, \"H:i:S\");\n }; };\n Object.defineProperty(self.config, \"minTime\", {\n get: function () { return self.config._minTime; },\n set: minMaxTimeSetter(\"min\"),\n });\n Object.defineProperty(self.config, \"maxTime\", {\n get: function () { return self.config._maxTime; },\n set: minMaxTimeSetter(\"max\"),\n });\n if (userConfig.mode === \"time\") {\n self.config.noCalendar = true;\n self.config.enableTime = true;\n }\n Object.assign(self.config, formats, userConfig);\n for (var i = 0; i < boolOpts.length; i++)\n self.config[boolOpts[i]] =\n self.config[boolOpts[i]] === true ||\n self.config[boolOpts[i]] === \"true\";\n HOOKS.filter(function (hook) { return self.config[hook] !== undefined; }).forEach(function (hook) {\n self.config[hook] = arrayify(self.config[hook] || []).map(bindToInstance);\n });\n self.isMobile =\n !self.config.disableMobile &&\n !self.config.inline &&\n self.config.mode === \"single\" &&\n !self.config.disable.length &&\n !self.config.enable &&\n !self.config.weekNumbers &&\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n for (var i = 0; i < self.config.plugins.length; i++) {\n var pluginConf = self.config.plugins[i](self) || {};\n for (var key in pluginConf) {\n if (HOOKS.indexOf(key) > -1) {\n self.config[key] = arrayify(pluginConf[key])\n .map(bindToInstance)\n .concat(self.config[key]);\n }\n else if (typeof userConfig[key] === \"undefined\")\n self.config[key] = pluginConf[key];\n }\n }\n if (!userConfig.altInputClass) {\n self.config.altInputClass =\n getInputElem().className + \" \" + self.config.altInputClass;\n }\n triggerEvent(\"onParseConfig\");\n }\n function getInputElem() {\n return self.config.wrap\n ? element.querySelector(\"[data-input]\")\n : element;\n }\n function setupLocale() {\n if (typeof self.config.locale !== \"object\" &&\n typeof flatpickr.l10ns[self.config.locale] === \"undefined\")\n self.config.errorHandler(new Error(\"flatpickr: invalid locale \" + self.config.locale));\n self.l10n = __assign(__assign({}, flatpickr.l10ns.default), (typeof self.config.locale === \"object\"\n ? self.config.locale\n : self.config.locale !== \"default\"\n ? flatpickr.l10ns[self.config.locale]\n : undefined));\n tokenRegex.D = \"(\" + self.l10n.weekdays.shorthand.join(\"|\") + \")\";\n tokenRegex.l = \"(\" + self.l10n.weekdays.longhand.join(\"|\") + \")\";\n tokenRegex.M = \"(\" + self.l10n.months.shorthand.join(\"|\") + \")\";\n tokenRegex.F = \"(\" + self.l10n.months.longhand.join(\"|\") + \")\";\n tokenRegex.K = \"(\" + self.l10n.amPM[0] + \"|\" + self.l10n.amPM[1] + \"|\" + self.l10n.amPM[0].toLowerCase() + \"|\" + self.l10n.amPM[1].toLowerCase() + \")\";\n var userConfig = __assign(__assign({}, instanceConfig), JSON.parse(JSON.stringify(element.dataset || {})));\n if (userConfig.time_24hr === undefined &&\n flatpickr.defaultConfig.time_24hr === undefined) {\n self.config.time_24hr = self.l10n.time_24hr;\n }\n self.formatDate = createDateFormatter(self);\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n }\n function positionCalendar(customPositionElement) {\n if (typeof self.config.position === \"function\") {\n return void self.config.position(self, customPositionElement);\n }\n if (self.calendarContainer === undefined)\n return;\n triggerEvent(\"onPreCalendarPosition\");\n var positionElement = customPositionElement || self._positionElement;\n var calendarHeight = Array.prototype.reduce.call(self.calendarContainer.children, (function (acc, child) { return acc + child.offsetHeight; }), 0), calendarWidth = self.calendarContainer.offsetWidth, configPos = self.config.position.split(\" \"), configPosVertical = configPos[0], configPosHorizontal = configPos.length > 1 ? configPos[1] : null, inputBounds = positionElement.getBoundingClientRect(), distanceFromBottom = window.innerHeight - inputBounds.bottom, showOnTop = configPosVertical === \"above\" ||\n (configPosVertical !== \"below\" &&\n distanceFromBottom < calendarHeight &&\n inputBounds.top > calendarHeight);\n var top = window.pageYOffset +\n inputBounds.top +\n (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);\n toggleClass(self.calendarContainer, \"arrowTop\", !showOnTop);\n toggleClass(self.calendarContainer, \"arrowBottom\", showOnTop);\n if (self.config.inline)\n return;\n var left = window.pageXOffset + inputBounds.left;\n var isCenter = false;\n var isRight = false;\n if (configPosHorizontal === \"center\") {\n left -= (calendarWidth - inputBounds.width) / 2;\n isCenter = true;\n }\n else if (configPosHorizontal === \"right\") {\n left -= calendarWidth - inputBounds.width;\n isRight = true;\n }\n toggleClass(self.calendarContainer, \"arrowLeft\", !isCenter && !isRight);\n toggleClass(self.calendarContainer, \"arrowCenter\", isCenter);\n toggleClass(self.calendarContainer, \"arrowRight\", isRight);\n var right = window.document.body.offsetWidth -\n (window.pageXOffset + inputBounds.right);\n var rightMost = left + calendarWidth > window.document.body.offsetWidth;\n var centerMost = right + calendarWidth > window.document.body.offsetWidth;\n toggleClass(self.calendarContainer, \"rightMost\", rightMost);\n if (self.config.static)\n return;\n self.calendarContainer.style.top = top + \"px\";\n if (!rightMost) {\n self.calendarContainer.style.left = left + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n else if (!centerMost) {\n self.calendarContainer.style.left = \"auto\";\n self.calendarContainer.style.right = right + \"px\";\n }\n else {\n var doc = getDocumentStyleSheet();\n if (doc === undefined)\n return;\n var bodyWidth = window.document.body.offsetWidth;\n var centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);\n var centerBefore = \".flatpickr-calendar.centerMost:before\";\n var centerAfter = \".flatpickr-calendar.centerMost:after\";\n var centerIndex = doc.cssRules.length;\n var centerStyle = \"{left:\" + inputBounds.left + \"px;right:auto;}\";\n toggleClass(self.calendarContainer, \"rightMost\", false);\n toggleClass(self.calendarContainer, \"centerMost\", true);\n doc.insertRule(centerBefore + \",\" + centerAfter + centerStyle, centerIndex);\n self.calendarContainer.style.left = centerLeft + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n }\n function getDocumentStyleSheet() {\n var editableSheet = null;\n for (var i = 0; i < document.styleSheets.length; i++) {\n var sheet = document.styleSheets[i];\n if (!sheet.cssRules)\n continue;\n try {\n sheet.cssRules;\n }\n catch (err) {\n continue;\n }\n editableSheet = sheet;\n break;\n }\n return editableSheet != null ? editableSheet : createStyleSheet();\n }\n function createStyleSheet() {\n var style = document.createElement(\"style\");\n document.head.appendChild(style);\n return style.sheet;\n }\n function redraw() {\n if (self.config.noCalendar || self.isMobile)\n return;\n buildMonthSwitch();\n updateNavigationCurrentMonth();\n buildDays();\n }\n function focusAndClose() {\n self._input.focus();\n if (window.navigator.userAgent.indexOf(\"MSIE\") !== -1 ||\n navigator.msMaxTouchPoints !== undefined) {\n setTimeout(self.close, 0);\n }\n else {\n self.close();\n }\n }\n function selectDate(e) {\n e.preventDefault();\n e.stopPropagation();\n var isSelectable = function (day) {\n return day.classList &&\n day.classList.contains(\"flatpickr-day\") &&\n !day.classList.contains(\"flatpickr-disabled\") &&\n !day.classList.contains(\"notAllowed\");\n };\n var t = findParent(getEventTarget(e), isSelectable);\n if (t === undefined)\n return;\n var target = t;\n var selectedDate = (self.latestSelectedDateObj = new Date(target.dateObj.getTime()));\n var shouldChangeMonth = (selectedDate.getMonth() < self.currentMonth ||\n selectedDate.getMonth() >\n self.currentMonth + self.config.showMonths - 1) &&\n self.config.mode !== \"range\";\n self.selectedDateElem = target;\n if (self.config.mode === \"single\")\n self.selectedDates = [selectedDate];\n else if (self.config.mode === \"multiple\") {\n var selectedIndex = isDateSelected(selectedDate);\n if (selectedIndex)\n self.selectedDates.splice(parseInt(selectedIndex), 1);\n else\n self.selectedDates.push(selectedDate);\n }\n else if (self.config.mode === \"range\") {\n if (self.selectedDates.length === 2) {\n self.clear(false, false);\n }\n self.latestSelectedDateObj = selectedDate;\n self.selectedDates.push(selectedDate);\n if (compareDates(selectedDate, self.selectedDates[0], true) !== 0)\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n setHoursFromInputs();\n if (shouldChangeMonth) {\n var isNewYear = self.currentYear !== selectedDate.getFullYear();\n self.currentYear = selectedDate.getFullYear();\n self.currentMonth = selectedDate.getMonth();\n if (isNewYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n triggerEvent(\"onMonthChange\");\n }\n updateNavigationCurrentMonth();\n buildDays();\n updateValue();\n if (!shouldChangeMonth &&\n self.config.mode !== \"range\" &&\n self.config.showMonths === 1)\n focusOnDayElem(target);\n else if (self.selectedDateElem !== undefined &&\n self.hourElement === undefined) {\n self.selectedDateElem && self.selectedDateElem.focus();\n }\n if (self.hourElement !== undefined)\n self.hourElement !== undefined && self.hourElement.focus();\n if (self.config.closeOnSelect) {\n var single = self.config.mode === \"single\" && !self.config.enableTime;\n var range = self.config.mode === \"range\" &&\n self.selectedDates.length === 2 &&\n !self.config.enableTime;\n if (single || range) {\n focusAndClose();\n }\n }\n triggerChange();\n }\n var CALLBACKS = {\n locale: [setupLocale, updateWeekdays],\n showMonths: [buildMonths, setCalendarWidth, buildWeekdays],\n minDate: [jumpToDate],\n maxDate: [jumpToDate],\n positionElement: [updatePositionElement],\n clickOpens: [\n function () {\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"click\", self.open);\n }\n else {\n self._input.removeEventListener(\"focus\", self.open);\n self._input.removeEventListener(\"click\", self.open);\n }\n },\n ],\n };\n function set(option, value) {\n if (option !== null && typeof option === \"object\") {\n Object.assign(self.config, option);\n for (var key in option) {\n if (CALLBACKS[key] !== undefined)\n CALLBACKS[key].forEach(function (x) { return x(); });\n }\n }\n else {\n self.config[option] = value;\n if (CALLBACKS[option] !== undefined)\n CALLBACKS[option].forEach(function (x) { return x(); });\n else if (HOOKS.indexOf(option) > -1)\n self.config[option] = arrayify(value);\n }\n self.redraw();\n updateValue(true);\n }\n function setSelectedDate(inputDate, format) {\n var dates = [];\n if (inputDate instanceof Array)\n dates = inputDate.map(function (d) { return self.parseDate(d, format); });\n else if (inputDate instanceof Date || typeof inputDate === \"number\")\n dates = [self.parseDate(inputDate, format)];\n else if (typeof inputDate === \"string\") {\n switch (self.config.mode) {\n case \"single\":\n case \"time\":\n dates = [self.parseDate(inputDate, format)];\n break;\n case \"multiple\":\n dates = inputDate\n .split(self.config.conjunction)\n .map(function (date) { return self.parseDate(date, format); });\n break;\n case \"range\":\n dates = inputDate\n .split(self.l10n.rangeSeparator)\n .map(function (date) { return self.parseDate(date, format); });\n break;\n default:\n break;\n }\n }\n else\n self.config.errorHandler(new Error(\"Invalid date supplied: \" + JSON.stringify(inputDate)));\n self.selectedDates = (self.config.allowInvalidPreload\n ? dates\n : dates.filter(function (d) { return d instanceof Date && isEnabled(d, false); }));\n if (self.config.mode === \"range\")\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n function setDate(date, triggerChange, format) {\n if (triggerChange === void 0) { triggerChange = false; }\n if (format === void 0) { format = self.config.dateFormat; }\n if ((date !== 0 && !date) || (date instanceof Array && date.length === 0))\n return self.clear(triggerChange);\n setSelectedDate(date, format);\n self.latestSelectedDateObj =\n self.selectedDates[self.selectedDates.length - 1];\n self.redraw();\n jumpToDate(undefined, triggerChange);\n setHoursFromDate();\n if (self.selectedDates.length === 0) {\n self.clear(false);\n }\n updateValue(triggerChange);\n if (triggerChange)\n triggerEvent(\"onChange\");\n }\n function parseDateRules(arr) {\n return arr\n .slice()\n .map(function (rule) {\n if (typeof rule === \"string\" ||\n typeof rule === \"number\" ||\n rule instanceof Date) {\n return self.parseDate(rule, undefined, true);\n }\n else if (rule &&\n typeof rule === \"object\" &&\n rule.from &&\n rule.to)\n return {\n from: self.parseDate(rule.from, undefined),\n to: self.parseDate(rule.to, undefined),\n };\n return rule;\n })\n .filter(function (x) { return x; });\n }\n function setupDates() {\n self.selectedDates = [];\n self.now = self.parseDate(self.config.now) || new Date();\n var preloadedDate = self.config.defaultDate ||\n ((self.input.nodeName === \"INPUT\" ||\n self.input.nodeName === \"TEXTAREA\") &&\n self.input.placeholder &&\n self.input.value === self.input.placeholder\n ? null\n : self.input.value);\n if (preloadedDate)\n setSelectedDate(preloadedDate, self.config.dateFormat);\n self._initialDate =\n self.selectedDates.length > 0\n ? self.selectedDates[0]\n : self.config.minDate &&\n self.config.minDate.getTime() > self.now.getTime()\n ? self.config.minDate\n : self.config.maxDate &&\n self.config.maxDate.getTime() < self.now.getTime()\n ? self.config.maxDate\n : self.now;\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n if (self.selectedDates.length > 0)\n self.latestSelectedDateObj = self.selectedDates[0];\n if (self.config.minTime !== undefined)\n self.config.minTime = self.parseDate(self.config.minTime, \"H:i\");\n if (self.config.maxTime !== undefined)\n self.config.maxTime = self.parseDate(self.config.maxTime, \"H:i\");\n self.minDateHasTime =\n !!self.config.minDate &&\n (self.config.minDate.getHours() > 0 ||\n self.config.minDate.getMinutes() > 0 ||\n self.config.minDate.getSeconds() > 0);\n self.maxDateHasTime =\n !!self.config.maxDate &&\n (self.config.maxDate.getHours() > 0 ||\n self.config.maxDate.getMinutes() > 0 ||\n self.config.maxDate.getSeconds() > 0);\n }\n function setupInputs() {\n self.input = getInputElem();\n if (!self.input) {\n self.config.errorHandler(new Error(\"Invalid input element specified\"));\n return;\n }\n self.input._type = self.input.type;\n self.input.type = \"text\";\n self.input.classList.add(\"flatpickr-input\");\n self._input = self.input;\n if (self.config.altInput) {\n self.altInput = createElement(self.input.nodeName, self.config.altInputClass);\n self._input = self.altInput;\n self.altInput.placeholder = self.input.placeholder;\n self.altInput.disabled = self.input.disabled;\n self.altInput.required = self.input.required;\n self.altInput.tabIndex = self.input.tabIndex;\n self.altInput.type = \"text\";\n self.input.setAttribute(\"type\", \"hidden\");\n if (!self.config.static && self.input.parentNode)\n self.input.parentNode.insertBefore(self.altInput, self.input.nextSibling);\n }\n if (!self.config.allowInput)\n self._input.setAttribute(\"readonly\", \"readonly\");\n updatePositionElement();\n }\n function updatePositionElement() {\n self._positionElement = self.config.positionElement || self._input;\n }\n function setupMobile() {\n var inputType = self.config.enableTime\n ? self.config.noCalendar\n ? \"time\"\n : \"datetime-local\"\n : \"date\";\n self.mobileInput = createElement(\"input\", self.input.className + \" flatpickr-mobile\");\n self.mobileInput.tabIndex = 1;\n self.mobileInput.type = inputType;\n self.mobileInput.disabled = self.input.disabled;\n self.mobileInput.required = self.input.required;\n self.mobileInput.placeholder = self.input.placeholder;\n self.mobileFormatStr =\n inputType === \"datetime-local\"\n ? \"Y-m-d\\\\TH:i:S\"\n : inputType === \"date\"\n ? \"Y-m-d\"\n : \"H:i:S\";\n if (self.selectedDates.length > 0) {\n self.mobileInput.defaultValue = self.mobileInput.value = self.formatDate(self.selectedDates[0], self.mobileFormatStr);\n }\n if (self.config.minDate)\n self.mobileInput.min = self.formatDate(self.config.minDate, \"Y-m-d\");\n if (self.config.maxDate)\n self.mobileInput.max = self.formatDate(self.config.maxDate, \"Y-m-d\");\n if (self.input.getAttribute(\"step\"))\n self.mobileInput.step = String(self.input.getAttribute(\"step\"));\n self.input.type = \"hidden\";\n if (self.altInput !== undefined)\n self.altInput.type = \"hidden\";\n try {\n if (self.input.parentNode)\n self.input.parentNode.insertBefore(self.mobileInput, self.input.nextSibling);\n }\n catch (_a) { }\n bind(self.mobileInput, \"change\", function (e) {\n self.setDate(getEventTarget(e).value, false, self.mobileFormatStr);\n triggerEvent(\"onChange\");\n triggerEvent(\"onClose\");\n });\n }\n function toggle(e) {\n if (self.isOpen === true)\n return self.close();\n self.open(e);\n }\n function triggerEvent(event, data) {\n if (self.config === undefined)\n return;\n var hooks = self.config[event];\n if (hooks !== undefined && hooks.length > 0) {\n for (var i = 0; hooks[i] && i < hooks.length; i++)\n hooks[i](self.selectedDates, self.input.value, self, data);\n }\n if (event === \"onChange\") {\n self.input.dispatchEvent(createEvent(\"change\"));\n self.input.dispatchEvent(createEvent(\"input\"));\n }\n }\n function createEvent(name) {\n var e = document.createEvent(\"Event\");\n e.initEvent(name, true, true);\n return e;\n }\n function isDateSelected(date) {\n for (var i = 0; i < self.selectedDates.length; i++) {\n var selectedDate = self.selectedDates[i];\n if (selectedDate instanceof Date &&\n compareDates(selectedDate, date) === 0)\n return \"\" + i;\n }\n return false;\n }\n function isDateInRange(date) {\n if (self.config.mode !== \"range\" || self.selectedDates.length < 2)\n return false;\n return (compareDates(date, self.selectedDates[0]) >= 0 &&\n compareDates(date, self.selectedDates[1]) <= 0);\n }\n function updateNavigationCurrentMonth() {\n if (self.config.noCalendar || self.isMobile || !self.monthNav)\n return;\n self.yearElements.forEach(function (yearElement, i) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n self.monthElements[i].textContent =\n monthToStr(d.getMonth(), self.config.shorthandCurrentMonth, self.l10n) + \" \";\n }\n else {\n self.monthsDropdownContainer.value = d.getMonth().toString();\n }\n yearElement.value = d.getFullYear().toString();\n });\n self._hidePrevMonthArrow =\n self.config.minDate !== undefined &&\n (self.currentYear === self.config.minDate.getFullYear()\n ? self.currentMonth <= self.config.minDate.getMonth()\n : self.currentYear < self.config.minDate.getFullYear());\n self._hideNextMonthArrow =\n self.config.maxDate !== undefined &&\n (self.currentYear === self.config.maxDate.getFullYear()\n ? self.currentMonth + 1 > self.config.maxDate.getMonth()\n : self.currentYear > self.config.maxDate.getFullYear());\n }\n function getDateStr(specificFormat) {\n var format = specificFormat ||\n (self.config.altInput ? self.config.altFormat : self.config.dateFormat);\n return self.selectedDates\n .map(function (dObj) { return self.formatDate(dObj, format); })\n .filter(function (d, i, arr) {\n return self.config.mode !== \"range\" ||\n self.config.enableTime ||\n arr.indexOf(d) === i;\n })\n .join(self.config.mode !== \"range\"\n ? self.config.conjunction\n : self.l10n.rangeSeparator);\n }\n function updateValue(triggerChange) {\n if (triggerChange === void 0) { triggerChange = true; }\n if (self.mobileInput !== undefined && self.mobileFormatStr) {\n self.mobileInput.value =\n self.latestSelectedDateObj !== undefined\n ? self.formatDate(self.latestSelectedDateObj, self.mobileFormatStr)\n : \"\";\n }\n self.input.value = getDateStr(self.config.dateFormat);\n if (self.altInput !== undefined) {\n self.altInput.value = getDateStr(self.config.altFormat);\n }\n if (triggerChange !== false)\n triggerEvent(\"onValueUpdate\");\n }\n function onMonthNavClick(e) {\n var eventTarget = getEventTarget(e);\n var isPrevMonth = self.prevMonthNav.contains(eventTarget);\n var isNextMonth = self.nextMonthNav.contains(eventTarget);\n if (isPrevMonth || isNextMonth) {\n changeMonth(isPrevMonth ? -1 : 1);\n }\n else if (self.yearElements.indexOf(eventTarget) >= 0) {\n eventTarget.select();\n }\n else if (eventTarget.classList.contains(\"arrowUp\")) {\n self.changeYear(self.currentYear + 1);\n }\n else if (eventTarget.classList.contains(\"arrowDown\")) {\n self.changeYear(self.currentYear - 1);\n }\n }\n function timeWrapper(e) {\n e.preventDefault();\n var isKeyDown = e.type === \"keydown\", eventTarget = getEventTarget(e), input = eventTarget;\n if (self.amPM !== undefined && eventTarget === self.amPM) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n var min = parseFloat(input.getAttribute(\"min\")), max = parseFloat(input.getAttribute(\"max\")), step = parseFloat(input.getAttribute(\"step\")), curValue = parseInt(input.value, 10), delta = e.delta ||\n (isKeyDown ? (e.which === 38 ? 1 : -1) : 0);\n var newValue = curValue + step * delta;\n if (typeof input.value !== \"undefined\" && input.value.length === 2) {\n var isHourElem = input === self.hourElement, isMinuteElem = input === self.minuteElement;\n if (newValue < min) {\n newValue =\n max +\n newValue +\n int(!isHourElem) +\n (int(isHourElem) && int(!self.amPM));\n if (isMinuteElem)\n incrementNumInput(undefined, -1, self.hourElement);\n }\n else if (newValue > max) {\n newValue =\n input === self.hourElement ? newValue - max - int(!self.amPM) : min;\n if (isMinuteElem)\n incrementNumInput(undefined, 1, self.hourElement);\n }\n if (self.amPM &&\n isHourElem &&\n (step === 1\n ? newValue + curValue === 23\n : Math.abs(newValue - curValue) > step)) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n input.value = pad(newValue);\n }\n }\n init();\n return self;\n}\nfunction _flatpickr(nodeList, config) {\n var nodes = Array.prototype.slice\n .call(nodeList)\n .filter(function (x) { return x instanceof HTMLElement; });\n var instances = [];\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n try {\n if (node.getAttribute(\"data-fp-omit\") !== null)\n continue;\n if (node._flatpickr !== undefined) {\n node._flatpickr.destroy();\n node._flatpickr = undefined;\n }\n node._flatpickr = FlatpickrInstance(node, config || {});\n instances.push(node._flatpickr);\n }\n catch (e) {\n console.error(e);\n }\n }\n return instances.length === 1 ? instances[0] : instances;\n}\nif (typeof HTMLElement !== \"undefined\" &&\n typeof HTMLCollection !== \"undefined\" &&\n typeof NodeList !== \"undefined\") {\n HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n HTMLElement.prototype.flatpickr = function (config) {\n return _flatpickr([this], config);\n };\n}\nvar flatpickr = function (selector, config) {\n if (typeof selector === \"string\") {\n return _flatpickr(window.document.querySelectorAll(selector), config);\n }\n else if (selector instanceof Node) {\n return _flatpickr([selector], config);\n }\n else {\n return _flatpickr(selector, config);\n }\n};\nflatpickr.defaultConfig = {};\nflatpickr.l10ns = {\n en: __assign({}, English),\n default: __assign({}, English),\n};\nflatpickr.localize = function (l10n) {\n flatpickr.l10ns.default = __assign(__assign({}, flatpickr.l10ns.default), l10n);\n};\nflatpickr.setDefaults = function (config) {\n flatpickr.defaultConfig = __assign(__assign({}, flatpickr.defaultConfig), config);\n};\nflatpickr.parseDate = createDateParser({});\nflatpickr.formatDate = createDateFormatter({});\nflatpickr.compareDates = compareDates;\nif (typeof jQuery !== \"undefined\" && typeof jQuery.fn !== \"undefined\") {\n jQuery.fn.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n}\nDate.prototype.fp_incr = function (days) {\n return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === \"string\" ? parseInt(days, 10) : days));\n};\nif (typeof window !== \"undefined\") {\n window.flatpickr = flatpickr;\n}\nexport default flatpickr;\n","import { Injectable, Directive, ElementRef, Input, Output, EventEmitter, forwardRef, HostListener, Renderer2, NgModule, InjectionToken } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport flatpickr from 'flatpickr';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nimport * as ɵngcc0 from '@angular/core';\nclass FlatpickrDefaults {\n constructor() {\n /**\n * Exactly the same as date format, but for the altInput field.\n */\n this.altFormat = 'F j, Y';\n /**\n * \tShow the user a readable date (as per altFormat), but return something totally different to the server.\n */\n this.altInput = false;\n /**\n * This class will be added to the input element created by the altInput option.\n * Note that `altInput` already inherits classes from the original input.\n */\n this.altInputClass = '';\n /**\n * Allows the user to enter a date directly input the input field. By default, direct entry is disabled.\n */\n this.allowInput = false;\n /**\n * Instead of `body`, appends the calendar to the specified node instead.\n */\n this.appendTo = undefined;\n /**\n * Defines how the date will be formatted in the aria-label for calendar days, using the same tokens as dateFormat. If you change this, you should choose a value that will make sense if a screen reader reads it out loud.\n */\n this.ariaDateFormat = 'F j, Y';\n /**\n * Whether clicking on the input should open the picker.\n * You could disable this if you wish to open the calendar manually `with.open()`.\n */\n this.clickOpens = true;\n /**\n * A string of characters which are used to define how the date will be displayed in the input box.\n * The supported characters are defined in the table below.\n */\n this.dateFormat = 'Y-m-d';\n /**\n * Initial value of the hour element.\n */\n this.defaultHour = 12;\n /**\n * Initial value of the minute element.\n */\n this.defaultMinute = 0;\n /**\n * Initial value of the seconds element.\n */\n this.defaultSeconds = 0;\n /**\n * See disabling dates.\n */\n this.disable = [];\n /**\n * Set disableMobile to true to always use the non-native picker.\n * By default, Flatpickr utilizes native datetime widgets unless certain options (e.g. disable) are used.\n */\n this.disableMobile = false;\n /**\n * Enables time picker.\n */\n this.enableTime = false;\n /**\n * Enables seconds in the time picker.\n */\n this.enableSeconds = false;\n /**\n * Allows using a custom date formatting function instead of the built-in handling for date formats using dateFormat, altFormat, etc.\n */\n this.formatDate = undefined;\n /**\n * Adjusts the step for the hour input (incl. scrolling).\n */\n this.hourIncrement = 1;\n /**\n * Displays the calendar inline.\n */\n this.inline = false;\n /**\n * The maximum date that a user can pick to (inclusive).\n */\n this.maxDate = undefined;\n /**\n * The minimum date that a user can start picking from (inclusive).\n */\n this.minDate = undefined;\n /**\n * Adjusts the step for the minute input (incl. scrolling).\n */\n this.minuteIncrement = 5;\n /**\n * Select a single date, multiple dates or a date range.\n */\n this.mode = 'single';\n /**\n * HTML for the arrow icon, used to switch months.\n */\n this.nextArrow = '>';\n /**\n * Hides the day selection in calendar. Use it along with `enableTime` to create a time picker.\n */\n this.noCalendar = false;\n /**\n * Default now to the current date\n */\n this.now = new Date();\n /**\n * HTML for the left arrow icon.\n */\n this.prevArrow = '<';\n /**\n * Show the month using the shorthand version (ie, Sep instead of September).\n */\n this.shorthandCurrentMonth = false;\n /**\n * Position the calendar inside the wrapper and next to the input element. (Leave `false` unless you know what you're doing).\n */\n this.static = false;\n /**\n * Displays time picker in 24 hour mode without AM/PM selection when enabled.\n */\n this.time24hr = false;\n /**\n * When true, dates will parsed, formatted, and displayed in UTC.\n * It's recommended that date strings contain the timezone, but not necessary.\n */\n this.utc = false;\n /**\n * Enables display of week numbers in calendar.\n */\n this.weekNumbers = false;\n /**\n * Custom elements and input groups.\n */\n this.wrap = false;\n /**\n * Array of plugin instances to use.\n */\n this.plugins = [];\n /**\n * The locale object or string to use for the locale.\n */\n this.locale = 'default';\n /**\n * Auto convert the ngModel value from a string to a date / array of dates / from - to date object depending on the `mode`\n */\n this.convertModelValue = false;\n /**\n * The number of months shown.\n */\n this.showMonths = 1;\n /**\n * How the month should be displayed in the header of the calendar.\n */\n this.monthSelectorType = 'static';\n }\n}\nFlatpickrDefaults.ɵfac = function FlatpickrDefaults_Factory(t) { return new (t || FlatpickrDefaults)(); };\nFlatpickrDefaults.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: FlatpickrDefaults, factory: FlatpickrDefaults.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FlatpickrDefaults, [{\n type: Injectable\n }], function () { return []; }, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nconst /** @type {?} */ FLATPICKR_CONTROL_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => FlatpickrDirective),\n //tslint:disable-line\n multi: true\n};\nclass FlatpickrDirective {\n /**\n * @param {?} elm\n * @param {?} defaults\n * @param {?} renderer\n */\n constructor(elm, defaults, renderer) {\n this.elm = elm;\n this.defaults = defaults;\n this.renderer = renderer;\n /**\n * Object-options that can be user for multiple instances of Flatpickr.\n * Option from this object is applied only if specific option is not specified.\n * Example:\n * ```typescript\n * options: FlatpickrDefaultsInterface = {\n * altFormat: 'd/m/Y', // will be ignored since altFormat is provided via specific attribute\n * altInput: true // will be used since specific attribute is not provided\n * };\n * ```\n * ```html\n * \n * ```\n */\n this.options = {};\n /**\n * Gets triggered once the calendar is in a ready state\n */\n this.flatpickrReady = new EventEmitter();\n /**\n * Gets triggered when the user selects a date, or changes the time on a selected date.\n */\n this.flatpickrChange = new EventEmitter();\n /**\n * Gets triggered when the input value is updated with a new date string.\n */\n this.flatpickrValueUpdate = new EventEmitter();\n /**\n * Gets triggered when the calendar is opened.\n */\n this.flatpickrOpen = new EventEmitter();\n /**\n * Gets triggered when the calendar is closed.\n */\n this.flatpickrClose = new EventEmitter();\n /**\n * Gets triggered when the month is changed, either by the user or programmatically.\n */\n this.flatpickrMonthChange = new EventEmitter();\n /**\n * Gets triggered when the year is changed, either by the user or programmatically.\n */\n this.flatpickrYearChange = new EventEmitter();\n /**\n * Take full control of every date cell with this output\n */\n this.flatpickrDayCreate = new EventEmitter();\n this.isDisabled = false;\n this.onChangeFn = () => { };\n this.onTouchedFn = () => { };\n }\n /**\n * @return {?}\n */\n ngAfterViewInit() {\n const /** @type {?} */ options = {\n altFormat: this.altFormat,\n altInput: this.altInput,\n altInputClass: this.altInputClass,\n allowInput: this.allowInput,\n appendTo: this.appendTo,\n ariaDateFormat: this.ariaDateFormat,\n clickOpens: this.clickOpens,\n dateFormat: this.dateFormat,\n defaultHour: this.defaultHour,\n defaultMinute: this.defaultMinute,\n defaultSeconds: this.defaultSeconds,\n disable: this.disable,\n disableMobile: this.disableMobile,\n enable: this.enable,\n enableTime: this.enableTime,\n enableSeconds: this.enableSeconds,\n formatDate: this.formatDate,\n hourIncrement: this.hourIncrement,\n defaultDate: this.initialValue,\n inline: this.inline,\n maxDate: this.maxDate,\n minDate: this.minDate,\n minuteIncrement: this.minuteIncrement,\n mode: this.mode,\n nextArrow: this.nextArrow,\n noCalendar: this.noCalendar,\n now: this.now,\n parseDate: this.parseDate,\n prevArrow: this.prevArrow,\n shorthandCurrentMonth: this.shorthandCurrentMonth,\n showMonths: this.showMonths,\n monthSelectorType: this.monthSelectorType,\n static: this.static,\n time24hr: this.time24hr,\n weekNumbers: this.weekNumbers,\n getWeek: this.getWeek,\n wrap: this.wrap,\n plugins: this.plugins,\n locale: this.locale,\n onChange: (selectedDates, dateString, instance) => {\n this.flatpickrChange.emit({ selectedDates, dateString, instance });\n },\n onOpen: (selectedDates, dateString, instance) => {\n this.flatpickrOpen.emit({ selectedDates, dateString, instance });\n },\n onClose: (selectedDates, dateString, instance) => {\n this.flatpickrClose.emit({ selectedDates, dateString, instance });\n },\n onMonthChange: (selectedDates, dateString, instance) => {\n this.flatpickrMonthChange.emit({ selectedDates, dateString, instance });\n },\n onYearChange: (selectedDates, dateString, instance) => {\n this.flatpickrYearChange.emit({ selectedDates, dateString, instance });\n },\n onReady: (selectedDates, dateString, instance) => {\n this.flatpickrReady.emit({ selectedDates, dateString, instance });\n },\n onValueUpdate: (selectedDates, dateString, instance) => {\n this.flatpickrValueUpdate.emit({ selectedDates, dateString, instance });\n },\n onDayCreate: (selectedDates, dateString, instance, dayElement) => {\n this.flatpickrDayCreate.emit({\n selectedDates,\n dateString,\n instance,\n dayElement\n });\n }\n };\n Object.keys(options).forEach(key => {\n if (typeof options[key] === 'undefined') {\n if (typeof this.options[key] !== 'undefined') {\n options[key] = (/** @type {?} */ (this.options))[key];\n }\n else {\n options[key] = (/** @type {?} */ (this.defaults))[key];\n }\n }\n });\n options.time_24hr = options.time24hr;\n // workaround bug in flatpickr 4.6 where it doesn't copy the classes across\n // TODO - remove once fix in https://github.com/flatpickr/flatpickr/issues/1860 is released\n options.altInputClass =\n (options.altInputClass || '') + ' ' + this.elm.nativeElement.className;\n if (!options.enable) {\n delete options.enable;\n }\n this.instance = /** @type {?} */ (flatpickr(this.elm.nativeElement, options));\n this.setDisabledState(this.isDisabled);\n }\n /**\n * @param {?} changes\n * @return {?}\n */\n ngOnChanges(changes) {\n if (this.instance) {\n Object.keys(changes).forEach(inputKey => {\n this.instance.set(/** @type {?} */ (inputKey), (/** @type {?} */ (this))[inputKey]);\n });\n }\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n if (this.instance) {\n this.instance.destroy();\n }\n }\n /**\n * @param {?} value\n * @return {?}\n */\n writeValue(value) {\n let /** @type {?} */ convertedValue = value;\n if (this.convertModelValue && this.mode === 'range' && value) {\n convertedValue = [value.from, value.to];\n }\n if (this.instance) {\n this.instance.setDate(convertedValue);\n }\n else {\n // flatpickr hasn't been initialised yet, store the value for later use\n this.initialValue = convertedValue;\n }\n }\n /**\n * @param {?} fn\n * @return {?}\n */\n registerOnChange(fn) {\n this.onChangeFn = fn;\n }\n /**\n * @param {?} fn\n * @return {?}\n */\n registerOnTouched(fn) {\n this.onTouchedFn = fn;\n }\n /**\n * @param {?} isDisabled\n * @return {?}\n */\n setDisabledState(isDisabled) {\n this.isDisabled = isDisabled;\n if (this.instance) {\n if (this.isDisabled) {\n this.renderer.setProperty(this.instance._input, 'disabled', 'disabled');\n }\n else {\n this.renderer.removeAttribute(this.instance._input, 'disabled');\n }\n }\n }\n /**\n * @return {?}\n */\n inputChanged() {\n const /** @type {?} */ value = this.elm.nativeElement.value;\n if (this.convertModelValue && typeof value === 'string') {\n switch (this.mode) {\n case 'multiple':\n const /** @type {?} */ dates = value\n .split('; ')\n .map(str => this.instance.parseDate(str, this.instance.config.dateFormat, !this.instance.config.enableTime));\n this.onChangeFn(dates);\n break;\n case 'range':\n const [from, to] = value\n .split(this.instance.l10n.rangeSeparator)\n .map(str => this.instance.parseDate(str, this.instance.config.dateFormat, !this.instance.config.enableTime));\n this.onChangeFn({ from, to });\n break;\n case 'single':\n default:\n this.onChangeFn(this.instance.parseDate(value, this.instance.config.dateFormat, !this.instance.config.enableTime));\n }\n }\n else {\n this.onChangeFn(value);\n }\n }\n}\nFlatpickrDirective.ɵfac = function FlatpickrDirective_Factory(t) { return new (t || FlatpickrDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(FlatpickrDefaults), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nFlatpickrDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: FlatpickrDirective, selectors: [[\"\", \"mwlFlatpickr\", \"\"]], hostBindings: function FlatpickrDirective_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"blur\", function FlatpickrDirective_blur_HostBindingHandler() { return ctx.onTouchedFn(); })(\"input\", function FlatpickrDirective_input_HostBindingHandler() { return ctx.inputChanged(); });\n } }, inputs: { options: \"options\", altFormat: \"altFormat\", altInput: \"altInput\", altInputClass: \"altInputClass\", allowInput: \"allowInput\", appendTo: \"appendTo\", ariaDateFormat: \"ariaDateFormat\", clickOpens: \"clickOpens\", dateFormat: \"dateFormat\", defaultHour: \"defaultHour\", defaultMinute: \"defaultMinute\", defaultSeconds: \"defaultSeconds\", disable: \"disable\", disableMobile: \"disableMobile\", enable: \"enable\", enableTime: \"enableTime\", enableSeconds: \"enableSeconds\", formatDate: \"formatDate\", hourIncrement: \"hourIncrement\", inline: \"inline\", maxDate: \"maxDate\", minDate: \"minDate\", minuteIncrement: \"minuteIncrement\", mode: \"mode\", nextArrow: \"nextArrow\", noCalendar: \"noCalendar\", now: \"now\", parseDate: \"parseDate\", prevArrow: \"prevArrow\", shorthandCurrentMonth: \"shorthandCurrentMonth\", showMonths: \"showMonths\", static: \"static\", time24hr: \"time24hr\", weekNumbers: \"weekNumbers\", getWeek: \"getWeek\", wrap: \"wrap\", plugins: \"plugins\", locale: \"locale\", convertModelValue: \"convertModelValue\", monthSelectorType: \"monthSelectorType\" }, outputs: { flatpickrReady: \"flatpickrReady\", flatpickrChange: \"flatpickrChange\", flatpickrValueUpdate: \"flatpickrValueUpdate\", flatpickrOpen: \"flatpickrOpen\", flatpickrClose: \"flatpickrClose\", flatpickrMonthChange: \"flatpickrMonthChange\", flatpickrYearChange: \"flatpickrYearChange\", flatpickrDayCreate: \"flatpickrDayCreate\" }, exportAs: [\"mwlFlatpickr\"], features: [ɵngcc0.ɵɵProvidersFeature([FLATPICKR_CONTROL_VALUE_ACCESSOR]), ɵngcc0.ɵɵNgOnChangesFeature] });\n/** @nocollapse */\nFlatpickrDirective.ctorParameters = () => [\n { type: ElementRef },\n { type: FlatpickrDefaults },\n { type: Renderer2 }\n];\nFlatpickrDirective.propDecorators = {\n options: [{ type: Input }],\n altFormat: [{ type: Input }],\n altInput: [{ type: Input }],\n altInputClass: [{ type: Input }],\n allowInput: [{ type: Input }],\n appendTo: [{ type: Input }],\n ariaDateFormat: [{ type: Input }],\n clickOpens: [{ type: Input }],\n dateFormat: [{ type: Input }],\n defaultHour: [{ type: Input }],\n defaultMinute: [{ type: Input }],\n defaultSeconds: [{ type: Input }],\n disable: [{ type: Input }],\n disableMobile: [{ type: Input }],\n enable: [{ type: Input }],\n enableTime: [{ type: Input }],\n enableSeconds: [{ type: Input }],\n formatDate: [{ type: Input }],\n hourIncrement: [{ type: Input }],\n inline: [{ type: Input }],\n maxDate: [{ type: Input }],\n minDate: [{ type: Input }],\n minuteIncrement: [{ type: Input }],\n mode: [{ type: Input }],\n nextArrow: [{ type: Input }],\n noCalendar: [{ type: Input }],\n now: [{ type: Input }],\n parseDate: [{ type: Input }],\n prevArrow: [{ type: Input }],\n shorthandCurrentMonth: [{ type: Input }],\n showMonths: [{ type: Input }],\n static: [{ type: Input }],\n time24hr: [{ type: Input }],\n weekNumbers: [{ type: Input }],\n getWeek: [{ type: Input }],\n wrap: [{ type: Input }],\n plugins: [{ type: Input }],\n locale: [{ type: Input }],\n convertModelValue: [{ type: Input }],\n monthSelectorType: [{ type: Input }],\n flatpickrReady: [{ type: Output }],\n flatpickrChange: [{ type: Output }],\n flatpickrValueUpdate: [{ type: Output }],\n flatpickrOpen: [{ type: Output }],\n flatpickrClose: [{ type: Output }],\n flatpickrMonthChange: [{ type: Output }],\n flatpickrYearChange: [{ type: Output }],\n flatpickrDayCreate: [{ type: Output }],\n inputChanged: [{ type: HostListener, args: ['input',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FlatpickrDirective, [{\n type: Directive,\n args: [{\n selector: '[mwlFlatpickr]',\n providers: [FLATPICKR_CONTROL_VALUE_ACCESSOR],\n host: {\n // tslint:disable-line use-host-property-decorator\n '(blur)': 'onTouchedFn()'\n },\n exportAs: 'mwlFlatpickr'\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: FlatpickrDefaults }, { type: ɵngcc0.Renderer2 }]; }, { options: [{\n type: Input\n }], flatpickrReady: [{\n type: Output\n }], flatpickrChange: [{\n type: Output\n }], flatpickrValueUpdate: [{\n type: Output\n }], flatpickrOpen: [{\n type: Output\n }], flatpickrClose: [{\n type: Output\n }], flatpickrMonthChange: [{\n type: Output\n }], flatpickrYearChange: [{\n type: Output\n }], flatpickrDayCreate: [{\n type: Output\n }], \n /**\n * @return {?}\n */\n inputChanged: [{\n type: HostListener,\n args: ['input']\n }], altFormat: [{\n type: Input\n }], altInput: [{\n type: Input\n }], altInputClass: [{\n type: Input\n }], allowInput: [{\n type: Input\n }], appendTo: [{\n type: Input\n }], ariaDateFormat: [{\n type: Input\n }], clickOpens: [{\n type: Input\n }], dateFormat: [{\n type: Input\n }], defaultHour: [{\n type: Input\n }], defaultMinute: [{\n type: Input\n }], defaultSeconds: [{\n type: Input\n }], disable: [{\n type: Input\n }], disableMobile: [{\n type: Input\n }], enable: [{\n type: Input\n }], enableTime: [{\n type: Input\n }], enableSeconds: [{\n type: Input\n }], formatDate: [{\n type: Input\n }], hourIncrement: [{\n type: Input\n }], inline: [{\n type: Input\n }], maxDate: [{\n type: Input\n }], minDate: [{\n type: Input\n }], minuteIncrement: [{\n type: Input\n }], mode: [{\n type: Input\n }], nextArrow: [{\n type: Input\n }], noCalendar: [{\n type: Input\n }], now: [{\n type: Input\n }], parseDate: [{\n type: Input\n }], prevArrow: [{\n type: Input\n }], shorthandCurrentMonth: [{\n type: Input\n }], showMonths: [{\n type: Input\n }], static: [{\n type: Input\n }], time24hr: [{\n type: Input\n }], weekNumbers: [{\n type: Input\n }], getWeek: [{\n type: Input\n }], wrap: [{\n type: Input\n }], plugins: [{\n type: Input\n }], locale: [{\n type: Input\n }], convertModelValue: [{\n type: Input\n }], monthSelectorType: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\nconst /** @type {?} */ USER_DEFAULTS = new InjectionToken('flatpickr defaults');\n/**\n * @param {?} userDefaults\n * @return {?}\n */\nfunction defaultsFactory(userDefaults) {\n const /** @type {?} */ defaults = new FlatpickrDefaults();\n Object.assign(defaults, userDefaults);\n return defaults;\n}\nclass FlatpickrModule {\n /**\n * @param {?=} userDefaults\n * @return {?}\n */\n static forRoot(userDefaults = {}) {\n return {\n ngModule: FlatpickrModule,\n providers: [\n {\n provide: USER_DEFAULTS,\n useValue: userDefaults\n },\n {\n provide: FlatpickrDefaults,\n useFactory: defaultsFactory,\n deps: [USER_DEFAULTS]\n }\n ]\n };\n }\n}\nFlatpickrModule.ɵfac = function FlatpickrModule_Factory(t) { return new (t || FlatpickrModule)(); };\nFlatpickrModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: FlatpickrModule });\nFlatpickrModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FlatpickrModule, [{\n type: NgModule,\n args: [{\n declarations: [FlatpickrDirective],\n exports: [FlatpickrDirective]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(FlatpickrModule, { declarations: [FlatpickrDirective], exports: [FlatpickrDirective] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes} checked by tsc\n */\n\nexport { FlatpickrDefaults, FlatpickrDirective, USER_DEFAULTS, defaultsFactory, FlatpickrModule, FLATPICKR_CONTROL_VALUE_ACCESSOR as ɵa };\n\n","(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global = global || self, global.deepmerge = factory());\n}(this, function () { 'use strict';\n\n\tvar isMergeableObject = function isMergeableObject(value) {\n\t\treturn isNonNullObject(value)\n\t\t\t&& !isSpecial(value)\n\t};\n\n\tfunction isNonNullObject(value) {\n\t\treturn !!value && typeof value === 'object'\n\t}\n\n\tfunction isSpecial(value) {\n\t\tvar stringValue = Object.prototype.toString.call(value);\n\n\t\treturn stringValue === '[object RegExp]'\n\t\t\t|| stringValue === '[object Date]'\n\t\t\t|| isReactElement(value)\n\t}\n\n\t// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\n\tvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\n\tvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\n\tfunction isReactElement(value) {\n\t\treturn value.$$typeof === REACT_ELEMENT_TYPE\n\t}\n\n\tfunction emptyTarget(val) {\n\t\treturn Array.isArray(val) ? [] : {}\n\t}\n\n\tfunction cloneUnlessOtherwiseSpecified(value, options) {\n\t\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t\t: value\n\t}\n\n\tfunction defaultArrayMerge(target, source, options) {\n\t\treturn target.concat(source).map(function(element) {\n\t\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t\t})\n\t}\n\n\tfunction getMergeFunction(key, options) {\n\t\tif (!options.customMerge) {\n\t\t\treturn deepmerge\n\t\t}\n\t\tvar customMerge = options.customMerge(key);\n\t\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n\t}\n\n\tfunction getEnumerableOwnPropertySymbols(target) {\n\t\treturn Object.getOwnPropertySymbols\n\t\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\t\treturn target.propertyIsEnumerable(symbol)\n\t\t\t})\n\t\t\t: []\n\t}\n\n\tfunction getKeys(target) {\n\t\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n\t}\n\n\tfunction mergeObject(target, source, options) {\n\t\tvar destination = {};\n\t\tif (options.isMergeableObject(target)) {\n\t\t\tgetKeys(target).forEach(function(key) {\n\t\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t\t});\n\t\t}\n\t\tgetKeys(source).forEach(function(key) {\n\t\t\tif (!options.isMergeableObject(source[key]) || !target[key]) {\n\t\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t\t} else {\n\t\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t\t}\n\t\t});\n\t\treturn destination\n\t}\n\n\tfunction deepmerge(target, source, options) {\n\t\toptions = options || {};\n\t\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\t\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\n\t\tvar sourceIsArray = Array.isArray(source);\n\t\tvar targetIsArray = Array.isArray(target);\n\t\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\t\tif (!sourceAndTargetTypesMatch) {\n\t\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t\t} else if (sourceIsArray) {\n\t\t\treturn options.arrayMerge(target, source, options)\n\t\t} else {\n\t\t\treturn mergeObject(target, source, options)\n\t\t}\n\t}\n\n\tdeepmerge.all = function deepmergeAll(array, options) {\n\t\tif (!Array.isArray(array)) {\n\t\t\tthrow new Error('first argument should be an array')\n\t\t}\n\n\t\treturn array.reduce(function(prev, next) {\n\t\t\treturn deepmerge(prev, next, options)\n\t\t}, {})\n\t};\n\n\tvar deepmerge_1 = deepmerge;\n\n\treturn deepmerge_1;\n\n}));\n","\"use strict\";\nif (typeof Object.assign !== \"function\") {\n Object.assign = function (target) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (!target) {\n throw TypeError(\"Cannot convert undefined or null to object\");\n }\n var _loop_1 = function (source) {\n if (source) {\n Object.keys(source).forEach(function (key) { return (target[key] = source[key]); });\n }\n };\n for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {\n var source = args_1[_a];\n _loop_1(source);\n }\n return target;\n };\n}\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.fr = {}));\n}(this, (function (exports) { 'use strict';\n\n var fp = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {},\n };\n var French = {\n firstDayOfWeek: 1,\n weekdays: {\n shorthand: [\"dim\", \"lun\", \"mar\", \"mer\", \"jeu\", \"ven\", \"sam\"],\n longhand: [\n \"dimanche\",\n \"lundi\",\n \"mardi\",\n \"mercredi\",\n \"jeudi\",\n \"vendredi\",\n \"samedi\",\n ],\n },\n months: {\n shorthand: [\n \"janv\",\n \"févr\",\n \"mars\",\n \"avr\",\n \"mai\",\n \"juin\",\n \"juil\",\n \"août\",\n \"sept\",\n \"oct\",\n \"nov\",\n \"déc\",\n ],\n longhand: [\n \"janvier\",\n \"février\",\n \"mars\",\n \"avril\",\n \"mai\",\n \"juin\",\n \"juillet\",\n \"août\",\n \"septembre\",\n \"octobre\",\n \"novembre\",\n \"décembre\",\n ],\n },\n ordinal: function (nth) {\n if (nth > 1)\n return \"\";\n return \"er\";\n },\n rangeSeparator: \" au \",\n weekAbbreviation: \"Sem\",\n scrollTitle: \"Défiler pour augmenter la valeur\",\n toggleTitle: \"Cliquer pour basculer\",\n time_24hr: true,\n };\n fp.l10ns.fr = French;\n var fr = fp.l10ns;\n\n exports.French = French;\n exports.default = fr;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n","var InlineSVGConfig = (function () {\n function InlineSVGConfig() {\n }\n return InlineSVGConfig;\n}());\nexport { InlineSVGConfig };\n","import * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/common';\nimport * as ɵngcc2 from './inline-svg.config';\nimport * as ɵngcc3 from '@angular/common/http';\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { APP_BASE_HREF, PlatformLocation } from '@angular/common';\nimport { HttpBackend, HttpClient } from '@angular/common/http';\nimport { Inject, Injectable, Optional, RendererFactory2 } from '@angular/core';\nimport { of } from 'rxjs';\nimport { finalize, map, share } from 'rxjs/operators';\nimport { InlineSVGConfig } from './inline-svg.config';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/common\";\nimport * as i2 from \"./inline-svg.config\";\nimport * as i3 from \"@angular/common/http\";\nvar SVGCacheService = (function () {\n function SVGCacheService(_appBase, _location, _config, httpBackend, rendererFactory) {\n this._appBase = _appBase;\n this._location = _location;\n this._config = _config;\n this._http = new HttpClient(httpBackend);\n this._renderer = rendererFactory.createRenderer(null, null);\n this.setBaseUrl();\n if (!SVGCacheService_1._cache) {\n SVGCacheService_1._cache = new Map();\n }\n if (!SVGCacheService_1._inProgressReqs) {\n SVGCacheService_1._inProgressReqs = new Map();\n }\n }\n SVGCacheService_1 = SVGCacheService;\n SVGCacheService.prototype.getSVG = function (url, resolveSVGUrl, cache) {\n var _this = this;\n if (cache === void 0) { cache = true; }\n var svgUrl = resolveSVGUrl\n ? this.getAbsoluteUrl(url)\n : url;\n if (cache && SVGCacheService_1._cache.has(svgUrl)) {\n return of(this._cloneSVG(SVGCacheService_1._cache.get(svgUrl)));\n }\n if (SVGCacheService_1._inProgressReqs.has(svgUrl)) {\n return SVGCacheService_1._inProgressReqs.get(svgUrl);\n }\n var req = this._http.get(svgUrl, { responseType: 'text' })\n .pipe(finalize(function () {\n SVGCacheService_1._inProgressReqs.delete(svgUrl);\n }), share(), map(function (svgText) {\n var svgEl = _this._svgElementFromString(svgText);\n SVGCacheService_1._cache.set(svgUrl, svgEl);\n return _this._cloneSVG(svgEl);\n }));\n SVGCacheService_1._inProgressReqs.set(svgUrl, req);\n return req;\n };\n SVGCacheService.prototype.setBaseUrl = function () {\n if (this._config) {\n this._baseUrl = this._config.baseUrl;\n }\n else if (this._appBase !== null) {\n this._baseUrl = this._appBase;\n }\n else if (this._location !== null) {\n this._baseUrl = this._location.getBaseHrefFromDOM();\n }\n };\n SVGCacheService.prototype.getAbsoluteUrl = function (url) {\n if (this._baseUrl && !/^https?:\\/\\//i.test(url)) {\n url = this._baseUrl + url;\n if (url.indexOf('//') === 0) {\n url = url.substring(1);\n }\n }\n var base = this._renderer.createElement('BASE');\n base.href = url;\n return base.href;\n };\n SVGCacheService.prototype._svgElementFromString = function (str) {\n var div = this._renderer.createElement('DIV');\n div.innerHTML = str;\n var svg = div.querySelector('svg');\n if (!svg) {\n throw new Error('No SVG found in loaded contents');\n }\n return svg;\n };\n SVGCacheService.prototype._cloneSVG = function (svg) {\n return svg.cloneNode(true);\n };\n var SVGCacheService_1;\n SVGCacheService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function SVGCacheService_Factory() { return new SVGCacheService(i0.ɵɵinject(i1.APP_BASE_HREF, 8), i0.ɵɵinject(i1.PlatformLocation, 8), i0.ɵɵinject(i2.InlineSVGConfig, 8), i0.ɵɵinject(i3.HttpBackend), i0.ɵɵinject(i0.RendererFactory2)); }, token: SVGCacheService, providedIn: \"root\" });\n SVGCacheService = SVGCacheService_1 = __decorate([ __param(0, Optional()), __param(0, Inject(APP_BASE_HREF)),\n __param(1, Optional()),\n __param(2, Optional()),\n __metadata(\"design:paramtypes\", [String, PlatformLocation,\n InlineSVGConfig,\n HttpBackend,\n RendererFactory2])\n ], SVGCacheService);\nSVGCacheService.ɵfac = function SVGCacheService_Factory(t) { return new (t || SVGCacheService)(ɵngcc0.ɵɵinject(APP_BASE_HREF, 8), ɵngcc0.ɵɵinject(ɵngcc1.PlatformLocation, 8), ɵngcc0.ɵɵinject(ɵngcc2.InlineSVGConfig, 8), ɵngcc0.ɵɵinject(ɵngcc3.HttpBackend), ɵngcc0.ɵɵinject(ɵngcc0.RendererFactory2)); };\nSVGCacheService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: SVGCacheService, factory: function (t) { return SVGCacheService.ɵfac(t); }, providedIn: 'root' });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(SVGCacheService, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], function () { return [{ type: String, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [APP_BASE_HREF]\n }] }, { type: ɵngcc1.PlatformLocation, decorators: [{\n type: Optional\n }] }, { type: ɵngcc2.InlineSVGConfig, decorators: [{\n type: Optional\n }] }, { type: ɵngcc3.HttpBackend }, { type: ɵngcc0.RendererFactory2 }]; }, null); })();\n return SVGCacheService;\n}());\nexport { SVGCacheService };\n\n","import * as ɵngcc0 from '@angular/core';\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nimport { Injectable, RendererFactory2 } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nvar InlineSVGService = (function () {\n function InlineSVGService(rendererFactory) {\n this._ranScripts = {};\n this._renderer = rendererFactory.createRenderer(null, null);\n }\n InlineSVGService.prototype.insertEl = function (dir, parentEl, content, replaceContents, prepend) {\n if (replaceContents && !prepend) {\n var parentNode = dir._prevSVG && dir._prevSVG.parentNode;\n if (parentNode) {\n this._renderer.removeChild(parentNode, dir._prevSVG);\n }\n parentEl.innerHTML = '';\n }\n if (prepend) {\n this._renderer.insertBefore(parentEl, content, parentEl.firstChild);\n }\n else {\n this._renderer.appendChild(parentEl, content);\n }\n if (content.nodeName === 'svg') {\n dir._prevSVG = content;\n }\n };\n InlineSVGService.prototype.evalScripts = function (svg, url, evalMode) {\n var scripts = svg.querySelectorAll('script');\n var scriptsToEval = [];\n for (var i = 0; i < scripts.length; i++) {\n var scriptType = scripts[i].getAttribute('type');\n if (!scriptType || scriptType === 'application/ecmascript' || scriptType === 'application/javascript') {\n var script = scripts[i].innerText || scripts[i].textContent;\n scriptsToEval.push(script);\n this._renderer.removeChild(scripts[i].parentNode, scripts[i]);\n }\n }\n if (scriptsToEval.length > 0 && (evalMode === \"always\" ||\n (evalMode === \"once\" && !this._ranScripts[url]))) {\n for (var i = 0; i < scriptsToEval.length; i++) {\n new Function(scriptsToEval[i])(window);\n }\n this._ranScripts[url] = true;\n }\n };\n InlineSVGService.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function InlineSVGService_Factory() { return new InlineSVGService(i0.ɵɵinject(i0.RendererFactory2)); }, token: InlineSVGService, providedIn: \"root\" });\n InlineSVGService = __decorate([ __metadata(\"design:paramtypes\", [RendererFactory2])\n ], InlineSVGService);\nInlineSVGService.ɵfac = function InlineSVGService_Factory(t) { return new (t || InlineSVGService)(ɵngcc0.ɵɵinject(ɵngcc0.RendererFactory2)); };\nInlineSVGService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: InlineSVGService, factory: function (t) { return InlineSVGService.ɵfac(t); }, providedIn: 'root' });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(InlineSVGService, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], function () { return [{ type: ɵngcc0.RendererFactory2 }]; }, null); })();\n return InlineSVGService;\n}());\nexport { InlineSVGService };\n\n","import * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from './inline-svg.service';\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nimport { ChangeDetectionStrategy, Component, ElementRef, Input } from '@angular/core';\nimport { InlineSVGDirective } from './inline-svg.directive';\nimport { InlineSVGService } from './inline-svg.service';\nvar InlineSVGComponent = (function () {\n function InlineSVGComponent(_inlineSVGService, el) {\n this._inlineSVGService = _inlineSVGService;\n this._el = el;\n }\n InlineSVGComponent.prototype.ngAfterViewInit = function () {\n this._updateContent();\n };\n InlineSVGComponent.prototype.ngOnChanges = function (changes) {\n if (changes['content']) {\n this._updateContent();\n }\n };\n InlineSVGComponent.prototype._updateContent = function () {\n this._inlineSVGService.insertEl(this.context, this._el.nativeElement, this.content, this.replaceContents, this.prepend);\n };\n __decorate([\n Input(),\n __metadata(\"design:type\", InlineSVGDirective)\n ], InlineSVGComponent.prototype, \"context\", void 0);\n __decorate([\n Input(),\n __metadata(\"design:type\", Object)\n ], InlineSVGComponent.prototype, \"content\", void 0);\n __decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n ], InlineSVGComponent.prototype, \"replaceContents\", void 0);\n __decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n ], InlineSVGComponent.prototype, \"prepend\", void 0);\n InlineSVGComponent = __decorate([ __metadata(\"design:paramtypes\", [InlineSVGService, ElementRef])\n ], InlineSVGComponent);\nInlineSVGComponent.ɵfac = function InlineSVGComponent_Factory(t) { return new (t || InlineSVGComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.InlineSVGService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nInlineSVGComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: InlineSVGComponent, selectors: [[\"inline-svg\"]], inputs: { context: \"context\", content: \"content\", replaceContents: \"replaceContents\", prepend: \"prepend\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 0, vars: 0, template: function InlineSVGComponent_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(InlineSVGComponent, [{\n type: Component,\n args: [{\n selector: 'inline-svg',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return [{ type: ɵngcc1.InlineSVGService }, { type: ɵngcc0.ElementRef }]; }, { context: [{\n type: Input\n }], content: [{\n type: Input\n }], replaceContents: [{\n type: Input\n }], prepend: [{\n type: Input\n }] }); })();\n return InlineSVGComponent;\n}());\nexport { InlineSVGComponent };\n\n","export function isUrlSymbol(url) {\n return url.charAt(0) === '#' || url.indexOf('.svg#') > -1;\n}\nexport function isSvgSupported() {\n return typeof SVGRect !== 'undefined';\n}\nexport function createSymbolSvg(renderer, svg, symbolId) {\n var symbol = svg.querySelector(\"[id=\\\"\" + symbolId + \"\\\"]\");\n if (!symbol) {\n throw new Error(\"Symbol \\\"\" + symbolId + \"\\\" not found\");\n }\n var elSvg = renderer.createElement('svg', 'svg');\n renderer.appendChild(elSvg, symbol);\n var elSvgUse = renderer.createElement('use', 'svg');\n renderer.setAttribute(elSvgUse, 'href', \"#\" + symbolId, 'xlink');\n renderer.appendChild(elSvg, elSvgUse);\n return elSvg;\n}\nexport function removeAttributes(element, attrs) {\n for (var i = 0; i < attrs.length; i++) {\n var elAttr = element.getAttribute(attrs[i]);\n if (elAttr) {\n element.removeAttribute(attrs[i]);\n }\n }\n var innerEls = element.getElementsByTagName('*');\n for (var i = 0; i < innerEls.length; i++) {\n removeAttributes(innerEls[i], attrs);\n }\n}\nexport function setAttributes(element, attrs) {\n for (var attr in attrs) {\n element.setAttribute(attr, attrs[attr]);\n }\n}\n","import * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from './svg-cache.service';\nimport * as ɵngcc2 from './inline-svg.service';\nimport * as ɵngcc3 from './inline-svg.config';\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nimport { ComponentFactoryResolver, Directive, ElementRef, EventEmitter, Inject, Input, Optional, Output, PLATFORM_ID, Renderer2, ViewContainerRef, } from '@angular/core';\nimport { isPlatformBrowser, isPlatformServer } from '@angular/common';\nimport { InlineSVGComponent } from './inline-svg.component';\nimport { SVGCacheService } from './svg-cache.service';\nimport { InlineSVGService } from './inline-svg.service';\nimport { InlineSVGConfig } from './inline-svg.config';\nimport * as SvgUtil from './svg-util';\nvar InlineSVGDirective = (function () {\n function InlineSVGDirective(_el, _viewContainerRef, _resolver, _svgCache, _renderer, _inlineSVGService, _config, platformId) {\n this._el = _el;\n this._viewContainerRef = _viewContainerRef;\n this._resolver = _resolver;\n this._svgCache = _svgCache;\n this._renderer = _renderer;\n this._inlineSVGService = _inlineSVGService;\n this._config = _config;\n this.platformId = platformId;\n this.resolveSVGUrl = true;\n this.replaceContents = true;\n this.prepend = false;\n this.injectComponent = false;\n this.cacheSVG = true;\n this.forceEvalStyles = false;\n this.evalScripts = \"always\";\n this.onSVGInserted = new EventEmitter();\n this.onSVGFailed = new EventEmitter();\n this._supportsSVG = SvgUtil.isSvgSupported();\n if (!isPlatformServer(this.platformId) && !this._supportsSVG) {\n this._fail('Embed SVG are not supported by this browser');\n }\n }\n InlineSVGDirective.prototype.ngOnInit = function () {\n if (!this._isValidPlatform() || this._isSSRDisabled()) {\n return;\n }\n this._insertSVG();\n };\n InlineSVGDirective.prototype.ngOnChanges = function (changes) {\n if (!this._isValidPlatform() || this._isSSRDisabled()) {\n return;\n }\n if (changes['inlineSVG']) {\n this._insertSVG();\n }\n };\n InlineSVGDirective.prototype.ngOnDestroy = function () {\n if (this._subscription) {\n this._subscription.unsubscribe();\n }\n };\n InlineSVGDirective.prototype._insertSVG = function () {\n var _this = this;\n if (!isPlatformServer(this.platformId) && !this._supportsSVG) {\n return;\n }\n if (!this.inlineSVG) {\n this._fail('No URL passed to [inlineSVG]');\n return;\n }\n if (this.inlineSVG === this._prevUrl) {\n return;\n }\n this._prevUrl = this.inlineSVG;\n this._subscription = this._svgCache.getSVG(this.inlineSVG, this.resolveSVGUrl, this.cacheSVG)\n .subscribe(function (svg) {\n if (SvgUtil.isUrlSymbol(_this.inlineSVG)) {\n var symbolId = _this.inlineSVG.split('#')[1];\n svg = SvgUtil.createSymbolSvg(_this._renderer, svg, symbolId);\n }\n _this._processSvg(svg);\n }, function (err) {\n _this._fail(err);\n });\n };\n InlineSVGDirective.prototype._processSvg = function (svg) {\n if (!svg) {\n return;\n }\n if (this.removeSVGAttributes && isPlatformBrowser(this.platformId)) {\n SvgUtil.removeAttributes(svg, this.removeSVGAttributes);\n }\n if (this.setSVGAttributes) {\n SvgUtil.setAttributes(svg, this.setSVGAttributes);\n }\n if (this.onSVGLoaded) {\n svg = this.onSVGLoaded(svg, this._el.nativeElement);\n }\n this._insertEl(svg);\n if (isPlatformBrowser(this.platformId)) {\n this._inlineSVGService.evalScripts(svg, this.inlineSVG, this.evalScripts);\n }\n if (this.forceEvalStyles) {\n var styleTags = svg.querySelectorAll('style');\n Array.from(styleTags).forEach(function (tag) { return tag.textContent += ''; });\n }\n this.onSVGInserted.emit(svg);\n };\n InlineSVGDirective.prototype._insertEl = function (el) {\n if (this.injectComponent) {\n if (!this._svgComp) {\n var factory = this._resolver.resolveComponentFactory(InlineSVGComponent);\n this._svgComp = this._viewContainerRef.createComponent(factory);\n }\n this._svgComp.instance.context = this;\n this._svgComp.instance.replaceContents = this.replaceContents;\n this._svgComp.instance.prepend = this.prepend;\n this._svgComp.instance.content = el;\n this._renderer.appendChild(this._el.nativeElement, this._svgComp.injector.get(InlineSVGComponent)._el.nativeElement);\n }\n else {\n this._inlineSVGService.insertEl(this, this._el.nativeElement, el, this.replaceContents, this.prepend);\n }\n };\n InlineSVGDirective.prototype._fail = function (msg) {\n this.onSVGFailed.emit(msg);\n if (this.fallbackImgUrl) {\n var elImg = this._renderer.createElement('IMG');\n this._renderer.setAttribute(elImg, 'src', this.fallbackImgUrl);\n this._insertEl(elImg);\n }\n };\n InlineSVGDirective.prototype._isValidPlatform = function () {\n return isPlatformServer(this.platformId) || isPlatformBrowser(this.platformId);\n };\n InlineSVGDirective.prototype._isSSRDisabled = function () {\n return isPlatformServer(this.platformId) && this._config && this._config.clientOnly;\n };\n __decorate([\n Input(),\n __metadata(\"design:type\", String)\n ], InlineSVGDirective.prototype, \"inlineSVG\", void 0);\n __decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n ], InlineSVGDirective.prototype, \"resolveSVGUrl\", void 0);\n __decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n ], InlineSVGDirective.prototype, \"replaceContents\", void 0);\n __decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n ], InlineSVGDirective.prototype, \"prepend\", void 0);\n __decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n ], InlineSVGDirective.prototype, \"injectComponent\", void 0);\n __decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n ], InlineSVGDirective.prototype, \"cacheSVG\", void 0);\n __decorate([\n Input(),\n __metadata(\"design:type\", Object)\n ], InlineSVGDirective.prototype, \"setSVGAttributes\", void 0);\n __decorate([\n Input(),\n __metadata(\"design:type\", Array)\n ], InlineSVGDirective.prototype, \"removeSVGAttributes\", void 0);\n __decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n ], InlineSVGDirective.prototype, \"forceEvalStyles\", void 0);\n __decorate([\n Input(),\n __metadata(\"design:type\", String)\n ], InlineSVGDirective.prototype, \"evalScripts\", void 0);\n __decorate([\n Input(),\n __metadata(\"design:type\", String)\n ], InlineSVGDirective.prototype, \"fallbackImgUrl\", void 0);\n __decorate([\n Input(),\n __metadata(\"design:type\", Function)\n ], InlineSVGDirective.prototype, \"onSVGLoaded\", void 0);\n __decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n ], InlineSVGDirective.prototype, \"onSVGInserted\", void 0);\n __decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n ], InlineSVGDirective.prototype, \"onSVGFailed\", void 0);\n InlineSVGDirective = __decorate([ __param(6, Optional()),\n __param(7, Inject(PLATFORM_ID)),\n __metadata(\"design:paramtypes\", [ElementRef,\n ViewContainerRef,\n ComponentFactoryResolver,\n SVGCacheService,\n Renderer2,\n InlineSVGService,\n InlineSVGConfig,\n Object])\n ], InlineSVGDirective);\nInlineSVGDirective.ɵfac = function InlineSVGDirective_Factory(t) { return new (t || InlineSVGDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.SVGCacheService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.InlineSVGService), ɵngcc0.ɵɵdirectiveInject(ɵngcc3.InlineSVGConfig, 8), ɵngcc0.ɵɵdirectiveInject(PLATFORM_ID)); };\nInlineSVGDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: InlineSVGDirective, selectors: [[\"\", \"inlineSVG\", \"\"]], inputs: { resolveSVGUrl: \"resolveSVGUrl\", replaceContents: \"replaceContents\", prepend: \"prepend\", injectComponent: \"injectComponent\", cacheSVG: \"cacheSVG\", forceEvalStyles: \"forceEvalStyles\", evalScripts: \"evalScripts\", inlineSVG: \"inlineSVG\", setSVGAttributes: \"setSVGAttributes\", removeSVGAttributes: \"removeSVGAttributes\", fallbackImgUrl: \"fallbackImgUrl\", onSVGLoaded: \"onSVGLoaded\" }, outputs: { onSVGInserted: \"onSVGInserted\", onSVGFailed: \"onSVGFailed\" }, features: [ɵngcc0.ɵɵProvidersFeature([SVGCacheService]), ɵngcc0.ɵɵNgOnChangesFeature] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(InlineSVGDirective, [{\n type: Directive,\n args: [{\n selector: '[inlineSVG]',\n providers: [SVGCacheService]\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.ViewContainerRef }, { type: ɵngcc0.ComponentFactoryResolver }, { type: ɵngcc1.SVGCacheService }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc2.InlineSVGService }, { type: ɵngcc3.InlineSVGConfig, decorators: [{\n type: Optional\n }] }, { type: Object, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; }, { resolveSVGUrl: [{\n type: Input\n }], replaceContents: [{\n type: Input\n }], prepend: [{\n type: Input\n }], injectComponent: [{\n type: Input\n }], cacheSVG: [{\n type: Input\n }], forceEvalStyles: [{\n type: Input\n }], evalScripts: [{\n type: Input\n }], onSVGInserted: [{\n type: Output\n }], onSVGFailed: [{\n type: Output\n }], inlineSVG: [{\n type: Input\n }], setSVGAttributes: [{\n type: Input\n }], removeSVGAttributes: [{\n type: Input\n }], fallbackImgUrl: [{\n type: Input\n }], onSVGLoaded: [{\n type: Input\n }] }); })();\n return InlineSVGDirective;\n}());\nexport { InlineSVGDirective };\n\n","import * as ɵngcc0 from '@angular/core';\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { NgModule } from '@angular/core';\nimport { InlineSVGComponent } from './inline-svg.component';\nimport { InlineSVGConfig } from './inline-svg.config';\nimport { InlineSVGDirective } from './inline-svg.directive';\nvar InlineSVGModule = (function () {\n function InlineSVGModule() {\n }\n InlineSVGModule_1 = InlineSVGModule;\n InlineSVGModule.forRoot = function (config) {\n return {\n ngModule: InlineSVGModule_1,\n providers: [\n { provide: InlineSVGConfig, useValue: config }\n ]\n };\n };\n var InlineSVGModule_1;\nInlineSVGModule.ɵfac = function InlineSVGModule_Factory(t) { return new (t || InlineSVGModule)(); };\nInlineSVGModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: InlineSVGModule });\nInlineSVGModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(InlineSVGModule, [{\n type: NgModule,\n args: [{\n declarations: [InlineSVGDirective, InlineSVGComponent],\n exports: [InlineSVGDirective],\n entryComponents: [InlineSVGComponent]\n }]\n }], function () { return []; }, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(InlineSVGModule, { declarations: function () { return [InlineSVGDirective, InlineSVGComponent]; }, exports: function () { return [InlineSVGDirective]; } }); })();\n return InlineSVGModule;\n}());\nexport { InlineSVGModule };\n\n","import { __decorate } from 'tslib';\nimport { Component, EventEmitter, ViewChild, Output, Input, ViewEncapsulation, NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { Subject } from 'rxjs';\n\nimport * as ɵngcc0 from '@angular/core';\n\nconst _c0 = [\"starMain\"];\nlet RatingComponent = class RatingComponent {\r\n constructor() { }\r\n ngOnInit() {\r\n }\r\n};\nRatingComponent.ɵfac = function RatingComponent_Factory(t) { return new (t || RatingComponent)(); };\nRatingComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: RatingComponent, selectors: [[\"lib-rating\"]], decls: 2, vars: 0, template: function RatingComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"p\");\n ɵngcc0.ɵɵtext(1, \" rating works! \");\n ɵngcc0.ɵɵelementEnd();\n } }, encapsulation: 2 });\n\nvar StarRatingComponent_1;\r\nlet StarRatingComponent = StarRatingComponent_1 = class StarRatingComponent {\r\n constructor() {\r\n this.stars = [];\r\n this._readOnly = false;\r\n this._totalStars = 5;\r\n this.rate = new EventEmitter();\r\n this.onStarsCountChange = new Subject();\r\n this.onStarsCountChange.subscribe(() => {\r\n this.setStars();\r\n this.generateRating(true);\r\n this.applySizeAllStars();\r\n this.applyColorStyleAllStars(false);\r\n this.addEvents();\r\n });\r\n this.onValueChange = new Subject();\r\n this.onValueChange.subscribe(() => {\r\n this.generateRating();\r\n this.applySizeAllStars();\r\n });\r\n this.onCheckedColorChange = new Subject();\r\n this.onCheckedColorChange.subscribe(() => {\r\n this.applyColorStyleAllStars(true);\r\n });\r\n this.onUnCheckedColorChange = new Subject();\r\n this.onUnCheckedColorChange.subscribe(() => {\r\n this.applyColorStyleAllStars(false);\r\n });\r\n this.onSizeChange = new Subject();\r\n this.onSizeChange.subscribe(() => {\r\n this.applySizeAllStars();\r\n });\r\n this.onReadOnlyChange = new Subject();\r\n this.onReadOnlyChange.subscribe(() => {\r\n this.readonly ? this.makeReadOnly() : this.makeEditable();\r\n });\r\n }\r\n get checkedcolor() {\r\n return this._checkedColor;\r\n }\r\n get uncheckedcolor() {\r\n return this._unCheckedColor;\r\n }\r\n get value() {\r\n return this._value;\r\n }\r\n get size() {\r\n return this._size.concat((!this._size.includes(\"px\") ? \"px\" : \"\"));\r\n }\r\n get readonly() {\r\n return String(this._readOnly) === \"true\";\r\n }\r\n get totalstars() {\r\n return this._totalStars;\r\n }\r\n set checkedcolor(value) {\r\n this._checkedColor = value;\r\n this._checkedColor && this.onCheckedColorChange.next(this._checkedColor);\r\n }\r\n set uncheckedcolor(value) {\r\n this._unCheckedColor = value;\r\n this._unCheckedColor && this.onUnCheckedColorChange.next(this._unCheckedColor);\r\n }\r\n set value(value) {\r\n value = (!value || value == null) ? 0 : value;\r\n this._value = value;\r\n this._value >= 0 && this.onValueChange.next(this._value);\r\n }\r\n set size(value) {\r\n value = (!value || value == null || value == \"0px\") ? \"24px\" : value;\r\n this._size = value;\r\n this.onSizeChange.next(this._size);\r\n }\r\n set readonly(value) {\r\n this._readOnly = value;\r\n this.onReadOnlyChange.next(value);\r\n }\r\n set totalstars(value) {\r\n this._totalStars = value <= 0 ? 5 : Math.round(value);\r\n this.onStarsCountChange.next(this._totalStars);\r\n }\r\n makeEditable() {\r\n if (!this.mainElement)\r\n return;\r\n this.mainElement.nativeElement.style.cursor = \"pointer\";\r\n this.mainElement.nativeElement.title = this.value;\r\n this.stars.forEach((star) => {\r\n star.style.cursor = \"pointer\";\r\n star.title = star.dataset.index;\r\n });\r\n }\r\n makeReadOnly() {\r\n if (!this.mainElement)\r\n return;\r\n this.mainElement.nativeElement.style.cursor = \"default\";\r\n this.mainElement.nativeElement.title = this.value;\r\n this.stars.forEach((star) => {\r\n star.style.cursor = \"default\";\r\n star.title = \"\";\r\n });\r\n }\r\n addEvents() {\r\n if (!this.mainElement)\r\n return;\r\n this.mainElement.nativeElement.addEventListener('mouseleave', this.offStar.bind(this));\r\n this.mainElement.nativeElement.style.cursor = \"pointer\";\r\n this.mainElement.nativeElement.title = this.value;\r\n this.stars.forEach((star) => {\r\n star.addEventListener('click', this.onRate.bind(this));\r\n star.addEventListener('mouseenter', this.onStar.bind(this));\r\n star.style.cursor = \"pointer\";\r\n star.title = star.dataset.index;\r\n });\r\n }\r\n ngAfterViewInit() {\r\n }\r\n onRate(event) {\r\n if (this.readonly)\r\n return;\r\n let star = event.srcElement;\r\n let oldValue = this.value;\r\n this.value = parseInt(star.dataset.index);\r\n // if (this.value == 0) {\r\n // this.value = 1;\r\n // }\r\n let rateValues = { oldValue: oldValue, newValue: this.value, starRating: this };\r\n this.rate.emit(rateValues);\r\n }\r\n onStar(event) {\r\n if (this.readonly)\r\n return;\r\n let star = event.srcElement;\r\n let currentIndex = parseInt(star.dataset.index);\r\n for (let index = 0; index < currentIndex; index++) {\r\n this.stars[index].className = \"\";\r\n this.addDefaultClass(this.stars[index]);\r\n this.addCheckedStarClass(this.stars[index]);\r\n }\r\n for (let index = currentIndex; index < this.stars.length; index++) {\r\n this.stars[index].className = \"\";\r\n this.addDefaultClass(this.stars[index]);\r\n }\r\n }\r\n offStar(event) {\r\n this.generateRating();\r\n }\r\n addDefaultClass(star) {\r\n star.classList.add(StarRatingComponent_1.CLS_DEFAULT_STAR);\r\n }\r\n addCheckedStarClass(star) {\r\n star.classList.add(StarRatingComponent_1.CLS_CHECKED_STAR);\r\n }\r\n addHalfStarClass(star) {\r\n star.classList.add(StarRatingComponent_1.CLS_HALF_STAR);\r\n }\r\n setStars() {\r\n if (!this.mainElement)\r\n return;\r\n let starContainer = this.mainElement.nativeElement;\r\n let maxStars = [...Array(Number(this.totalstars)).keys()];\r\n this.stars.length = 0;\r\n starContainer.innerHTML = \"\";\r\n maxStars.forEach(starNumber => {\r\n let starElement = document.createElement(\"span\");\r\n starElement.dataset.index = (starNumber + 1).toString();\r\n starElement.title = starElement.dataset.index;\r\n starContainer.appendChild(starElement);\r\n this.stars.push(starElement);\r\n });\r\n }\r\n applySizeAllStars() {\r\n if (this._size) {\r\n this.stars.length == 0 && this.setStars();\r\n this.stars.forEach((star) => {\r\n let newSize = this.size.match(/\\d+/)[0];\r\n let halfSize = (parseInt(newSize) * 10) / 24;\r\n let halfMargin = 0 - ((parseInt(newSize) * 20) / 24);\r\n star.style.setProperty(StarRatingComponent_1.VAR_SIZE, this.size);\r\n if (star.classList.contains(StarRatingComponent_1.CLS_HALF_STAR)) {\r\n star.style.setProperty(StarRatingComponent_1.VAR_HALF_WIDTH, `${halfSize}px`);\r\n star.style.setProperty(StarRatingComponent_1.VAR_HALF_MARGIN, `${halfMargin}px`);\r\n }\r\n });\r\n }\r\n }\r\n applyColorStyleAllStars(setChecked) {\r\n this.stars.length == 0 && this.setStars();\r\n this.stars.forEach((star) => {\r\n if (setChecked) {\r\n this.applyCheckedColorStyle(star);\r\n }\r\n else {\r\n this.applyUnCheckedColorStyle(star);\r\n }\r\n });\r\n }\r\n applyColorStyle(starElement) {\r\n this.applyCheckedColorStyle(starElement);\r\n this.applyUnCheckedColorStyle(starElement);\r\n }\r\n applyCheckedColorStyle(starElement) {\r\n starElement.style.setProperty(StarRatingComponent_1.VAR_CHECKED_COLOR, this.checkedcolor);\r\n }\r\n applyUnCheckedColorStyle(starElement) {\r\n starElement.style.setProperty(StarRatingComponent_1.VAR_UNCHECKED_COLOR, this.uncheckedcolor);\r\n }\r\n generateRating(forceGenerate = false) {\r\n if (!this.mainElement)\r\n return;\r\n if (this.readonly && !forceGenerate)\r\n return;\r\n //if (this.value >= 0) {\r\n this.stars.length == 0 && this.setStars();\r\n this.mainElement.nativeElement.title = this.value;\r\n let hasDecimals = ((Number.parseFloat(this.value.toString()) % 1)\r\n .toString()\r\n .substring(3, 2)) ? true : false;\r\n let i = 1;\r\n this.stars.forEach((star) => {\r\n star.className = \"\";\r\n this.applyColorStyle(star);\r\n this.addDefaultClass(star);\r\n if (this.value >= i) {\r\n // star on\r\n this.addCheckedStarClass(star);\r\n }\r\n else {\r\n // half star\r\n if (hasDecimals) {\r\n this.addHalfStarClass(star);\r\n hasDecimals = false;\r\n }\r\n }\r\n i++;\r\n });\r\n //}\r\n }\r\n};\nStarRatingComponent.ɵfac = function StarRatingComponent_Factory(t) { return new (t || StarRatingComponent)(); };\nStarRatingComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: StarRatingComponent, selectors: [[\"star-rating\"]], viewQuery: function StarRatingComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c0, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.mainElement = _t.first);\n } }, inputs: { checkedcolor: \"checkedcolor\", uncheckedcolor: \"uncheckedcolor\", value: \"value\", size: \"size\", readonly: \"readonly\", totalstars: \"totalstars\" }, outputs: { rate: \"rate\" }, decls: 2, vars: 0, consts: [[\"starMain\", \"\"]], template: function StarRatingComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", null, 0);\n } }, styles: [\":root{--checkedColor:gold;--unCheckedColor:gray;--size:24px;--halfWidth:10px;--halfMargin:-20px}.star{cursor:pointer;color:var(--unCheckedColor);font-size:var(--size);width:var(--size);display:inline-block}.star:last-child{margin-right:0}.star:before{content:'\\\\2605'}.star.on{color:var(--checkedColor)}.star.half:after{content:'\\\\2605';color:var(--checkedColor);position:absolute;margin-left:var(--halfMargin);width:var(--halfWidth);overflow:hidden}\"], encapsulation: 3 });\r\nStarRatingComponent.VAR_CHECKED_COLOR = '--checkedColor';\r\nStarRatingComponent.VAR_UNCHECKED_COLOR = '--unCheckedColor';\r\nStarRatingComponent.VAR_SIZE = '--size';\r\nStarRatingComponent.VAR_HALF_WIDTH = '--halfWidth';\r\nStarRatingComponent.VAR_HALF_MARGIN = '--halfMargin';\r\nStarRatingComponent.CLS_CHECKED_STAR = 'on';\r\nStarRatingComponent.CLS_DEFAULT_STAR = 'star';\r\nStarRatingComponent.CLS_HALF_STAR = 'half';\r\nStarRatingComponent.INP_CHECKED_COLOR = 'checkedcolor';\r\nStarRatingComponent.INP_UNCHECKED_COLOR = 'uncheckedcolor';\r\nStarRatingComponent.INP_VALUE = 'value';\r\nStarRatingComponent.INP_SIZE = 'size';\r\nStarRatingComponent.INP_READONLY = 'readonly';\r\nStarRatingComponent.INP_TOTALSTARS = 'totalstars';\r\n__decorate([\r\n ViewChild('starMain', { static: true })\r\n], StarRatingComponent.prototype, \"mainElement\", void 0);\r\n__decorate([\r\n Output()\r\n], StarRatingComponent.prototype, \"rate\", void 0);\r\n__decorate([\r\n Input(StarRatingComponent_1.INP_CHECKED_COLOR)\r\n], StarRatingComponent.prototype, \"checkedcolor\", null);\r\n__decorate([\r\n Input(StarRatingComponent_1.INP_UNCHECKED_COLOR)\r\n], StarRatingComponent.prototype, \"uncheckedcolor\", null);\r\n__decorate([\r\n Input(StarRatingComponent_1.INP_VALUE)\r\n], StarRatingComponent.prototype, \"value\", null);\r\n__decorate([\r\n Input(StarRatingComponent_1.INP_SIZE)\r\n], StarRatingComponent.prototype, \"size\", null);\r\n__decorate([\r\n Input(StarRatingComponent_1.INP_READONLY)\r\n], StarRatingComponent.prototype, \"readonly\", null);\r\n__decorate([\r\n Input(StarRatingComponent_1.INP_TOTALSTARS)\r\n], StarRatingComponent.prototype, \"totalstars\", null);\n\nlet RatingModule = class RatingModule {\r\n ngDoBootstrap() { }\r\n};\nRatingModule.ɵfac = function RatingModule_Factory(t) { return new (t || RatingModule)(); };\nRatingModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: RatingModule });\nRatingModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[\n FormsModule,\n CommonModule\n ]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(RatingComponent, [{\n type: Component,\n args: [{\n selector: 'lib-rating',\n template: `\n

    \n rating works!\n

    \n `\n }]\n }], function () { return []; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(StarRatingComponent, [{\n type: Component,\n args: [{\n selector: 'star-rating',\n template: \"
    \\n
    \",\n encapsulation: ViewEncapsulation.ShadowDom,\n styles: [\":root{--checkedColor:gold;--unCheckedColor:gray;--size:24px;--halfWidth:10px;--halfMargin:-20px}.star{cursor:pointer;color:var(--unCheckedColor);font-size:var(--size);width:var(--size);display:inline-block}.star:last-child{margin-right:0}.star:before{content:'\\\\2605'}.star.on{color:var(--checkedColor)}.star.half:after{content:'\\\\2605';color:var(--checkedColor);position:absolute;margin-left:var(--halfMargin);width:var(--halfWidth);overflow:hidden}\"]\n }]\n }], function () { return []; }, { rate: [{\n type: Output\n }], checkedcolor: [{\n type: Input,\n args: [StarRatingComponent_1.INP_CHECKED_COLOR]\n }], uncheckedcolor: [{\n type: Input,\n args: [StarRatingComponent_1.INP_UNCHECKED_COLOR]\n }], value: [{\n type: Input,\n args: [StarRatingComponent_1.INP_VALUE]\n }], size: [{\n type: Input,\n args: [StarRatingComponent_1.INP_SIZE]\n }], readonly: [{\n type: Input,\n args: [StarRatingComponent_1.INP_READONLY]\n }], totalstars: [{\n type: Input,\n args: [StarRatingComponent_1.INP_TOTALSTARS]\n }], mainElement: [{\n type: ViewChild,\n args: ['starMain', { static: true }]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(RatingModule, [{\n type: NgModule,\n args: [{\n imports: [\n FormsModule,\n CommonModule\n ],\n declarations: [\n RatingComponent,\n StarRatingComponent\n ],\n exports: [StarRatingComponent],\n entryComponents: [StarRatingComponent]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(RatingModule, { declarations: function () { return [RatingComponent, StarRatingComponent]; }, imports: function () { return [FormsModule,\n CommonModule]; }, exports: function () { return [StarRatingComponent]; } }); })();\n\n/*\r\n * Public API Surface of rating\r\n */\n\n/**\r\n * Generated bundle index. Do not edit.\r\n */\n\nexport { RatingModule, StarRatingComponent, RatingComponent as ɵa };\n\n","import { EventEmitter, Directive, ElementRef, Input, Output, HostListener, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @param {?} node\n * @return {?}\n */\nimport * as ɵngcc0 from '@angular/core';\nfunction isElement(node) {\n return !!(node && (node.nodeName || node.prop && node.attr && node.find));\n}\nclass FileLikeObject {\n /**\n * @param {?} fileOrInput\n */\n constructor(fileOrInput) {\n this.rawFile = fileOrInput;\n /** @type {?} */\n let isInput = isElement(fileOrInput);\n /** @type {?} */\n let fakePathOrObject = isInput ? fileOrInput.value : fileOrInput;\n /** @type {?} */\n let postfix = typeof fakePathOrObject === 'string' ? 'FakePath' : 'Object';\n /** @type {?} */\n let method = '_createFrom' + postfix;\n ((/** @type {?} */ (this)))[method](fakePathOrObject);\n }\n /**\n * @param {?} path\n * @return {?}\n */\n _createFromFakePath(path) {\n this.lastModifiedDate = void 0;\n this.size = void 0;\n this.type = 'like/' + path.slice(path.lastIndexOf('.') + 1).toLowerCase();\n this.name = path.slice(path.lastIndexOf('/') + path.lastIndexOf('\\\\') + 2);\n }\n /**\n * @param {?} object\n * @return {?}\n */\n _createFromObject(object) {\n this.size = object.size;\n this.type = object.type;\n this.name = object.name;\n }\n}\nif (false) {\n /** @type {?} */\n FileLikeObject.prototype.lastModifiedDate;\n /** @type {?} */\n FileLikeObject.prototype.size;\n /** @type {?} */\n FileLikeObject.prototype.type;\n /** @type {?} */\n FileLikeObject.prototype.name;\n /** @type {?} */\n FileLikeObject.prototype.rawFile;\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass FileItem {\n /**\n * @param {?} uploader\n * @param {?} some\n * @param {?} options\n */\n constructor(uploader, some, options) {\n this.url = '/';\n this.headers = [];\n this.withCredentials = true;\n this.formData = [];\n this.isReady = false;\n this.isUploading = false;\n this.isUploaded = false;\n this.isSuccess = false;\n this.isCancel = false;\n this.isError = false;\n this.progress = 0;\n this.index = void 0;\n this.uploader = uploader;\n this.some = some;\n this.options = options;\n this.file = new FileLikeObject(some);\n this._file = some;\n if (uploader.options) {\n this.method = uploader.options.method || 'POST';\n this.alias = uploader.options.itemAlias || 'file';\n }\n this.url = uploader.options.url;\n }\n /**\n * @return {?}\n */\n upload() {\n try {\n this.uploader.uploadItem(this);\n }\n catch (e) {\n this.uploader._onCompleteItem(this, '', 0, {});\n this.uploader._onErrorItem(this, '', 0, {});\n }\n }\n /**\n * @return {?}\n */\n cancel() {\n this.uploader.cancelItem(this);\n }\n /**\n * @return {?}\n */\n remove() {\n this.uploader.removeFromQueue(this);\n }\n /**\n * @return {?}\n */\n onBeforeUpload() {\n return void 0;\n }\n /**\n * @param {?} form\n * @return {?}\n */\n onBuildForm(form) {\n return { form };\n }\n /**\n * @param {?} progress\n * @return {?}\n */\n onProgress(progress) {\n return { progress };\n }\n /**\n * @param {?} response\n * @param {?} status\n * @param {?} headers\n * @return {?}\n */\n onSuccess(response, status, headers) {\n return { response, status, headers };\n }\n /**\n * @param {?} response\n * @param {?} status\n * @param {?} headers\n * @return {?}\n */\n onError(response, status, headers) {\n return { response, status, headers };\n }\n /**\n * @param {?} response\n * @param {?} status\n * @param {?} headers\n * @return {?}\n */\n onCancel(response, status, headers) {\n return { response, status, headers };\n }\n /**\n * @param {?} response\n * @param {?} status\n * @param {?} headers\n * @return {?}\n */\n onComplete(response, status, headers) {\n return { response, status, headers };\n }\n /**\n * @return {?}\n */\n _onBeforeUpload() {\n this.isReady = true;\n this.isUploading = true;\n this.isUploaded = false;\n this.isSuccess = false;\n this.isCancel = false;\n this.isError = false;\n this.progress = 0;\n this.onBeforeUpload();\n }\n /**\n * @param {?} form\n * @return {?}\n */\n _onBuildForm(form) {\n this.onBuildForm(form);\n }\n /**\n * @param {?} progress\n * @return {?}\n */\n _onProgress(progress) {\n this.progress = progress;\n this.onProgress(progress);\n }\n /**\n * @param {?} response\n * @param {?} status\n * @param {?} headers\n * @return {?}\n */\n _onSuccess(response, status, headers) {\n this.isReady = false;\n this.isUploading = false;\n this.isUploaded = true;\n this.isSuccess = true;\n this.isCancel = false;\n this.isError = false;\n this.progress = 100;\n this.index = void 0;\n this.onSuccess(response, status, headers);\n }\n /**\n * @param {?} response\n * @param {?} status\n * @param {?} headers\n * @return {?}\n */\n _onError(response, status, headers) {\n this.isReady = false;\n this.isUploading = false;\n this.isUploaded = true;\n this.isSuccess = false;\n this.isCancel = false;\n this.isError = true;\n this.progress = 0;\n this.index = void 0;\n this.onError(response, status, headers);\n }\n /**\n * @param {?} response\n * @param {?} status\n * @param {?} headers\n * @return {?}\n */\n _onCancel(response, status, headers) {\n this.isReady = false;\n this.isUploading = false;\n this.isUploaded = false;\n this.isSuccess = false;\n this.isCancel = true;\n this.isError = false;\n this.progress = 0;\n this.index = void 0;\n this.onCancel(response, status, headers);\n }\n /**\n * @param {?} response\n * @param {?} status\n * @param {?} headers\n * @return {?}\n */\n _onComplete(response, status, headers) {\n this.onComplete(response, status, headers);\n if (this.uploader.options.removeAfterUpload) {\n this.remove();\n }\n }\n /**\n * @return {?}\n */\n _prepareToUploading() {\n this.index = this.index || ++this.uploader._nextIndex;\n this.isReady = true;\n }\n}\nif (false) {\n /** @type {?} */\n FileItem.prototype.file;\n /** @type {?} */\n FileItem.prototype._file;\n /** @type {?} */\n FileItem.prototype.alias;\n /** @type {?} */\n FileItem.prototype.url;\n /** @type {?} */\n FileItem.prototype.method;\n /** @type {?} */\n FileItem.prototype.headers;\n /** @type {?} */\n FileItem.prototype.withCredentials;\n /** @type {?} */\n FileItem.prototype.formData;\n /** @type {?} */\n FileItem.prototype.isReady;\n /** @type {?} */\n FileItem.prototype.isUploading;\n /** @type {?} */\n FileItem.prototype.isUploaded;\n /** @type {?} */\n FileItem.prototype.isSuccess;\n /** @type {?} */\n FileItem.prototype.isCancel;\n /** @type {?} */\n FileItem.prototype.isError;\n /** @type {?} */\n FileItem.prototype.progress;\n /** @type {?} */\n FileItem.prototype.index;\n /** @type {?} */\n FileItem.prototype._xhr;\n /** @type {?} */\n FileItem.prototype._form;\n /**\n * @type {?}\n * @protected\n */\n FileItem.prototype.uploader;\n /**\n * @type {?}\n * @protected\n */\n FileItem.prototype.some;\n /**\n * @type {?}\n * @protected\n */\n FileItem.prototype.options;\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass FileType {\n /**\n * @param {?} file\n * @return {?}\n */\n static getMimeClass(file) {\n /** @type {?} */\n let mimeClass = 'application';\n if (this.mime_psd.indexOf(file.type) !== -1) {\n mimeClass = 'image';\n }\n else if (file.type.match('image.*')) {\n mimeClass = 'image';\n }\n else if (file.type.match('video.*')) {\n mimeClass = 'video';\n }\n else if (file.type.match('audio.*')) {\n mimeClass = 'audio';\n }\n else if (file.type === 'application/pdf') {\n mimeClass = 'pdf';\n }\n else if (this.mime_compress.indexOf(file.type) !== -1) {\n mimeClass = 'compress';\n }\n else if (this.mime_doc.indexOf(file.type) !== -1) {\n mimeClass = 'doc';\n }\n else if (this.mime_xsl.indexOf(file.type) !== -1) {\n mimeClass = 'xls';\n }\n else if (this.mime_ppt.indexOf(file.type) !== -1) {\n mimeClass = 'ppt';\n }\n if (mimeClass === 'application') {\n mimeClass = this.fileTypeDetection(file.name);\n }\n return mimeClass;\n }\n /**\n * @param {?} inputFilename\n * @return {?}\n */\n static fileTypeDetection(inputFilename) {\n /** @type {?} */\n let types = {\n 'jpg': 'image',\n 'jpeg': 'image',\n 'tif': 'image',\n 'psd': 'image',\n 'bmp': 'image',\n 'png': 'image',\n 'nef': 'image',\n 'tiff': 'image',\n 'cr2': 'image',\n 'dwg': 'image',\n 'cdr': 'image',\n 'ai': 'image',\n 'indd': 'image',\n 'pin': 'image',\n 'cdp': 'image',\n 'skp': 'image',\n 'stp': 'image',\n '3dm': 'image',\n 'mp3': 'audio',\n 'wav': 'audio',\n 'wma': 'audio',\n 'mod': 'audio',\n 'm4a': 'audio',\n 'compress': 'compress',\n 'zip': 'compress',\n 'rar': 'compress',\n '7z': 'compress',\n 'lz': 'compress',\n 'z01': 'compress',\n 'bz2': 'compress',\n 'gz': 'compress',\n 'pdf': 'pdf',\n 'xls': 'xls',\n 'xlsx': 'xls',\n 'ods': 'xls',\n 'mp4': 'video',\n 'avi': 'video',\n 'wmv': 'video',\n 'mpg': 'video',\n 'mts': 'video',\n 'flv': 'video',\n '3gp': 'video',\n 'vob': 'video',\n 'm4v': 'video',\n 'mpeg': 'video',\n 'm2ts': 'video',\n 'mov': 'video',\n 'doc': 'doc',\n 'docx': 'doc',\n 'eps': 'doc',\n 'txt': 'doc',\n 'odt': 'doc',\n 'rtf': 'doc',\n 'ppt': 'ppt',\n 'pptx': 'ppt',\n 'pps': 'ppt',\n 'ppsx': 'ppt',\n 'odp': 'ppt'\n };\n /** @type {?} */\n let chunks = inputFilename.split('.');\n if (chunks.length < 2) {\n return 'application';\n }\n /** @type {?} */\n let extension = chunks[chunks.length - 1].toLowerCase();\n if (types[extension] === undefined) {\n return 'application';\n }\n else {\n return types[extension];\n }\n }\n}\n/* MS office */\nFileType.mime_doc = [\n 'application/msword',\n 'application/msword',\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.template',\n 'application/vnd.ms-word.document.macroEnabled.12',\n 'application/vnd.ms-word.template.macroEnabled.12'\n];\nFileType.mime_xsl = [\n 'application/vnd.ms-excel',\n 'application/vnd.ms-excel',\n 'application/vnd.ms-excel',\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.template',\n 'application/vnd.ms-excel.sheet.macroEnabled.12',\n 'application/vnd.ms-excel.template.macroEnabled.12',\n 'application/vnd.ms-excel.addin.macroEnabled.12',\n 'application/vnd.ms-excel.sheet.binary.macroEnabled.12'\n];\nFileType.mime_ppt = [\n 'application/vnd.ms-powerpoint',\n 'application/vnd.ms-powerpoint',\n 'application/vnd.ms-powerpoint',\n 'application/vnd.ms-powerpoint',\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n 'application/vnd.openxmlformats-officedocument.presentationml.template',\n 'application/vnd.openxmlformats-officedocument.presentationml.slideshow',\n 'application/vnd.ms-powerpoint.addin.macroEnabled.12',\n 'application/vnd.ms-powerpoint.presentation.macroEnabled.12',\n 'application/vnd.ms-powerpoint.presentation.macroEnabled.12',\n 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12'\n];\n/* PSD */\nFileType.mime_psd = [\n 'image/photoshop',\n 'image/x-photoshop',\n 'image/psd',\n 'application/photoshop',\n 'application/psd',\n 'zz-application/zz-winassoc-psd'\n];\n/* Compressed files */\nFileType.mime_compress = [\n 'application/x-gtar',\n 'application/x-gcompress',\n 'application/compress',\n 'application/x-tar',\n 'application/x-rar-compressed',\n 'application/octet-stream',\n 'application/x-zip-compressed',\n 'application/zip-compressed',\n 'application/x-7z-compressed',\n 'application/gzip',\n 'application/x-bzip2'\n];\nif (false) {\n /** @type {?} */\n FileType.mime_doc;\n /** @type {?} */\n FileType.mime_xsl;\n /** @type {?} */\n FileType.mime_ppt;\n /** @type {?} */\n FileType.mime_psd;\n /** @type {?} */\n FileType.mime_compress;\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @param {?} value\n * @return {?}\n */\nfunction isFile(value) {\n return (File && value instanceof File);\n}\n/**\n * @record\n */\nfunction Headers() { }\nif (false) {\n /** @type {?} */\n Headers.prototype.name;\n /** @type {?} */\n Headers.prototype.value;\n}\n/**\n * @record\n */\nfunction FileUploaderOptions() { }\nif (false) {\n /** @type {?|undefined} */\n FileUploaderOptions.prototype.allowedMimeType;\n /** @type {?|undefined} */\n FileUploaderOptions.prototype.allowedFileType;\n /** @type {?|undefined} */\n FileUploaderOptions.prototype.autoUpload;\n /** @type {?|undefined} */\n FileUploaderOptions.prototype.isHTML5;\n /** @type {?|undefined} */\n FileUploaderOptions.prototype.filters;\n /** @type {?|undefined} */\n FileUploaderOptions.prototype.headers;\n /** @type {?|undefined} */\n FileUploaderOptions.prototype.method;\n /** @type {?|undefined} */\n FileUploaderOptions.prototype.authToken;\n /** @type {?|undefined} */\n FileUploaderOptions.prototype.maxFileSize;\n /** @type {?|undefined} */\n FileUploaderOptions.prototype.queueLimit;\n /** @type {?|undefined} */\n FileUploaderOptions.prototype.removeAfterUpload;\n /** @type {?|undefined} */\n FileUploaderOptions.prototype.url;\n /** @type {?|undefined} */\n FileUploaderOptions.prototype.disableMultipart;\n /** @type {?|undefined} */\n FileUploaderOptions.prototype.itemAlias;\n /** @type {?|undefined} */\n FileUploaderOptions.prototype.authTokenHeader;\n /** @type {?|undefined} */\n FileUploaderOptions.prototype.additionalParameter;\n /** @type {?|undefined} */\n FileUploaderOptions.prototype.parametersBeforeFiles;\n /** @type {?|undefined} */\n FileUploaderOptions.prototype.formatDataFunction;\n /** @type {?|undefined} */\n FileUploaderOptions.prototype.formatDataFunctionIsAsync;\n}\nclass FileUploader {\n /**\n * @param {?} options\n */\n constructor(options) {\n this.isUploading = false;\n this.queue = [];\n this.progress = 0;\n this._nextIndex = 0;\n this.options = {\n autoUpload: false,\n isHTML5: true,\n filters: [],\n removeAfterUpload: false,\n disableMultipart: false,\n formatDataFunction: (/**\n * @param {?} item\n * @return {?}\n */\n (item) => item._file),\n formatDataFunctionIsAsync: false\n };\n this.setOptions(options);\n this.response = new EventEmitter();\n }\n /**\n * @param {?} options\n * @return {?}\n */\n setOptions(options) {\n this.options = Object.assign(this.options, options);\n this.authToken = this.options.authToken;\n this.authTokenHeader = this.options.authTokenHeader || 'Authorization';\n this.autoUpload = this.options.autoUpload;\n this.options.filters.unshift({ name: 'queueLimit', fn: this._queueLimitFilter });\n if (this.options.maxFileSize) {\n this.options.filters.unshift({ name: 'fileSize', fn: this._fileSizeFilter });\n }\n if (this.options.allowedFileType) {\n this.options.filters.unshift({ name: 'fileType', fn: this._fileTypeFilter });\n }\n if (this.options.allowedMimeType) {\n this.options.filters.unshift({ name: 'mimeType', fn: this._mimeTypeFilter });\n }\n for (let i = 0; i < this.queue.length; i++) {\n this.queue[i].url = this.options.url;\n }\n }\n /**\n * @param {?} files\n * @param {?=} options\n * @param {?=} filters\n * @return {?}\n */\n addToQueue(files, options, filters) {\n /** @type {?} */\n let list = [];\n for (let file of files) {\n list.push(file);\n }\n /** @type {?} */\n let arrayOfFilters = this._getFilters(filters);\n /** @type {?} */\n let count = this.queue.length;\n /** @type {?} */\n let addedFileItems = [];\n list.map((/**\n * @param {?} some\n * @return {?}\n */\n (some) => {\n if (!options) {\n options = this.options;\n }\n /** @type {?} */\n let temp = new FileLikeObject(some);\n if (this._isValidFile(temp, arrayOfFilters, options)) {\n /** @type {?} */\n let fileItem = new FileItem(this, some, options);\n addedFileItems.push(fileItem);\n this.queue.push(fileItem);\n this._onAfterAddingFile(fileItem);\n }\n else {\n /** @type {?} */\n let filter = arrayOfFilters[this._failFilterIndex];\n this._onWhenAddingFileFailed(temp, filter, options);\n }\n }));\n if (this.queue.length !== count) {\n this._onAfterAddingAll(addedFileItems);\n this.progress = this._getTotalProgress();\n }\n this._render();\n if (this.options.autoUpload) {\n this.uploadAll();\n }\n }\n /**\n * @param {?} value\n * @return {?}\n */\n removeFromQueue(value) {\n /** @type {?} */\n let index = this.getIndexOfItem(value);\n /** @type {?} */\n let item = this.queue[index];\n if (item.isUploading) {\n item.cancel();\n }\n this.queue.splice(index, 1);\n this.progress = this._getTotalProgress();\n }\n /**\n * @return {?}\n */\n clearQueue() {\n while (this.queue.length) {\n this.queue[0].remove();\n }\n this.progress = 0;\n }\n /**\n * @param {?} value\n * @return {?}\n */\n uploadItem(value) {\n /** @type {?} */\n let index = this.getIndexOfItem(value);\n /** @type {?} */\n let item = this.queue[index];\n /** @type {?} */\n let transport = this.options.isHTML5 ? '_xhrTransport' : '_iframeTransport';\n item._prepareToUploading();\n if (this.isUploading) {\n return;\n }\n this.isUploading = true;\n ((/** @type {?} */ (this)))[transport](item);\n }\n /**\n * @param {?} value\n * @return {?}\n */\n cancelItem(value) {\n /** @type {?} */\n let index = this.getIndexOfItem(value);\n /** @type {?} */\n let item = this.queue[index];\n /** @type {?} */\n let prop = this.options.isHTML5 ? item._xhr : item._form;\n if (item && item.isUploading) {\n prop.abort();\n }\n }\n /**\n * @return {?}\n */\n uploadAll() {\n /** @type {?} */\n let items = this.getNotUploadedItems().filter((/**\n * @param {?} item\n * @return {?}\n */\n (item) => !item.isUploading));\n if (!items.length) {\n return;\n }\n items.map((/**\n * @param {?} item\n * @return {?}\n */\n (item) => item._prepareToUploading()));\n items[0].upload();\n }\n /**\n * @return {?}\n */\n cancelAll() {\n /** @type {?} */\n let items = this.getNotUploadedItems();\n items.map((/**\n * @param {?} item\n * @return {?}\n */\n (item) => item.cancel()));\n }\n /**\n * @param {?} value\n * @return {?}\n */\n isFile(value) {\n return isFile(value);\n }\n /**\n * @param {?} value\n * @return {?}\n */\n isFileLikeObject(value) {\n return value instanceof FileLikeObject;\n }\n /**\n * @param {?} value\n * @return {?}\n */\n getIndexOfItem(value) {\n return typeof value === 'number' ? value : this.queue.indexOf(value);\n }\n /**\n * @return {?}\n */\n getNotUploadedItems() {\n return this.queue.filter((/**\n * @param {?} item\n * @return {?}\n */\n (item) => !item.isUploaded));\n }\n /**\n * @return {?}\n */\n getReadyItems() {\n return this.queue\n .filter((/**\n * @param {?} item\n * @return {?}\n */\n (item) => (item.isReady && !item.isUploading)))\n .sort((/**\n * @param {?} item1\n * @param {?} item2\n * @return {?}\n */\n (item1, item2) => item1.index - item2.index));\n }\n /**\n * @return {?}\n */\n destroy() {\n return void 0;\n }\n /**\n * @param {?} fileItems\n * @return {?}\n */\n onAfterAddingAll(fileItems) {\n return { fileItems };\n }\n /**\n * @param {?} fileItem\n * @param {?} form\n * @return {?}\n */\n onBuildItemForm(fileItem, form) {\n return { fileItem, form };\n }\n /**\n * @param {?} fileItem\n * @return {?}\n */\n onAfterAddingFile(fileItem) {\n return { fileItem };\n }\n /**\n * @param {?} item\n * @param {?} filter\n * @param {?} options\n * @return {?}\n */\n onWhenAddingFileFailed(item, filter, options) {\n return { item, filter, options };\n }\n /**\n * @param {?} fileItem\n * @return {?}\n */\n onBeforeUploadItem(fileItem) {\n return { fileItem };\n }\n /**\n * @param {?} fileItem\n * @param {?} progress\n * @return {?}\n */\n onProgressItem(fileItem, progress) {\n return { fileItem, progress };\n }\n /**\n * @param {?} progress\n * @return {?}\n */\n onProgressAll(progress) {\n return { progress };\n }\n /**\n * @param {?} item\n * @param {?} response\n * @param {?} status\n * @param {?} headers\n * @return {?}\n */\n onSuccessItem(item, response, status, headers) {\n return { item, response, status, headers };\n }\n /**\n * @param {?} item\n * @param {?} response\n * @param {?} status\n * @param {?} headers\n * @return {?}\n */\n onErrorItem(item, response, status, headers) {\n return { item, response, status, headers };\n }\n /**\n * @param {?} item\n * @param {?} response\n * @param {?} status\n * @param {?} headers\n * @return {?}\n */\n onCancelItem(item, response, status, headers) {\n return { item, response, status, headers };\n }\n /**\n * @param {?} item\n * @param {?} response\n * @param {?} status\n * @param {?} headers\n * @return {?}\n */\n onCompleteItem(item, response, status, headers) {\n return { item, response, status, headers };\n }\n /**\n * @return {?}\n */\n onCompleteAll() {\n return void 0;\n }\n /**\n * @param {?} item\n * @return {?}\n */\n _mimeTypeFilter(item) {\n return !(this.options.allowedMimeType && this.options.allowedMimeType.indexOf(item.type) === -1);\n }\n /**\n * @param {?} item\n * @return {?}\n */\n _fileSizeFilter(item) {\n return !(this.options.maxFileSize && item.size > this.options.maxFileSize);\n }\n /**\n * @param {?} item\n * @return {?}\n */\n _fileTypeFilter(item) {\n return !(this.options.allowedFileType &&\n this.options.allowedFileType.indexOf(FileType.getMimeClass(item)) === -1);\n }\n /**\n * @param {?} item\n * @param {?} response\n * @param {?} status\n * @param {?} headers\n * @return {?}\n */\n _onErrorItem(item, response, status, headers) {\n item._onError(response, status, headers);\n this.onErrorItem(item, response, status, headers);\n }\n /**\n * @param {?} item\n * @param {?} response\n * @param {?} status\n * @param {?} headers\n * @return {?}\n */\n _onCompleteItem(item, response, status, headers) {\n item._onComplete(response, status, headers);\n this.onCompleteItem(item, response, status, headers);\n /** @type {?} */\n let nextItem = this.getReadyItems()[0];\n this.isUploading = false;\n if (nextItem) {\n nextItem.upload();\n return;\n }\n this.onCompleteAll();\n this.progress = this._getTotalProgress();\n this._render();\n }\n /**\n * @protected\n * @param {?} parsedHeaders\n * @return {?}\n */\n _headersGetter(parsedHeaders) {\n return (/**\n * @param {?} name\n * @return {?}\n */\n (name) => {\n if (name) {\n return parsedHeaders[name.toLowerCase()] || void 0;\n }\n return parsedHeaders;\n });\n }\n /**\n * @protected\n * @param {?} item\n * @return {?}\n */\n _xhrTransport(item) {\n /** @type {?} */\n let that = this;\n /** @type {?} */\n let xhr = item._xhr = new XMLHttpRequest();\n /** @type {?} */\n let sendable;\n this._onBeforeUploadItem(item);\n if (typeof item._file.size !== 'number') {\n throw new TypeError('The file specified is no longer valid');\n }\n if (!this.options.disableMultipart) {\n sendable = new FormData();\n this._onBuildItemForm(item, sendable);\n /** @type {?} */\n const appendFile = (/**\n * @return {?}\n */\n () => sendable.append(item.alias, item._file, item.file.name));\n if (!this.options.parametersBeforeFiles) {\n appendFile();\n }\n // For AWS, Additional Parameters must come BEFORE Files\n if (this.options.additionalParameter !== undefined) {\n Object.keys(this.options.additionalParameter).forEach((/**\n * @param {?} key\n * @return {?}\n */\n (key) => {\n /** @type {?} */\n let paramVal = this.options.additionalParameter[key];\n // Allow an additional parameter to include the filename\n if (typeof paramVal === 'string' && paramVal.indexOf('{{file_name}}') >= 0) {\n paramVal = paramVal.replace('{{file_name}}', item.file.name);\n }\n sendable.append(key, paramVal);\n }));\n }\n if (this.options.parametersBeforeFiles) {\n appendFile();\n }\n }\n else {\n sendable = this.options.formatDataFunction(item);\n }\n xhr.upload.onprogress = (/**\n * @param {?} event\n * @return {?}\n */\n (event) => {\n /** @type {?} */\n let progress = Math.round(event.lengthComputable ? event.loaded * 100 / event.total : 0);\n this._onProgressItem(item, progress);\n });\n xhr.onload = (/**\n * @return {?}\n */\n () => {\n /** @type {?} */\n let headers = this._parseHeaders(xhr.getAllResponseHeaders());\n /** @type {?} */\n let response = this._transformResponse(xhr.response, headers);\n /** @type {?} */\n let gist = this._isSuccessCode(xhr.status) ? 'Success' : 'Error';\n /** @type {?} */\n let method = '_on' + gist + 'Item';\n ((/** @type {?} */ (this)))[method](item, response, xhr.status, headers);\n this._onCompleteItem(item, response, xhr.status, headers);\n });\n xhr.onerror = (/**\n * @return {?}\n */\n () => {\n /** @type {?} */\n let headers = this._parseHeaders(xhr.getAllResponseHeaders());\n /** @type {?} */\n let response = this._transformResponse(xhr.response, headers);\n this._onErrorItem(item, response, xhr.status, headers);\n this._onCompleteItem(item, response, xhr.status, headers);\n });\n xhr.onabort = (/**\n * @return {?}\n */\n () => {\n /** @type {?} */\n let headers = this._parseHeaders(xhr.getAllResponseHeaders());\n /** @type {?} */\n let response = this._transformResponse(xhr.response, headers);\n this._onCancelItem(item, response, xhr.status, headers);\n this._onCompleteItem(item, response, xhr.status, headers);\n });\n xhr.open(item.method, item.url, true);\n xhr.withCredentials = item.withCredentials;\n if (this.options.headers) {\n for (let header of this.options.headers) {\n xhr.setRequestHeader(header.name, header.value);\n }\n }\n if (item.headers.length) {\n for (let header of item.headers) {\n xhr.setRequestHeader(header.name, header.value);\n }\n }\n if (this.authToken) {\n xhr.setRequestHeader(this.authTokenHeader, this.authToken);\n }\n xhr.onreadystatechange = (/**\n * @return {?}\n */\n function () {\n if (xhr.readyState == XMLHttpRequest.DONE) {\n that.response.emit(xhr.responseText);\n }\n });\n if (this.options.formatDataFunctionIsAsync) {\n sendable.then((/**\n * @param {?} result\n * @return {?}\n */\n (result) => xhr.send(JSON.stringify(result))));\n }\n else {\n xhr.send(sendable);\n }\n this._render();\n }\n /**\n * @protected\n * @param {?=} value\n * @return {?}\n */\n _getTotalProgress(value = 0) {\n if (this.options.removeAfterUpload) {\n return value;\n }\n /** @type {?} */\n let notUploaded = this.getNotUploadedItems().length;\n /** @type {?} */\n let uploaded = notUploaded ? this.queue.length - notUploaded : this.queue.length;\n /** @type {?} */\n let ratio = 100 / this.queue.length;\n /** @type {?} */\n let current = value * ratio / 100;\n return Math.round(uploaded * ratio + current);\n }\n /**\n * @protected\n * @param {?} filters\n * @return {?}\n */\n _getFilters(filters) {\n if (!filters) {\n return this.options.filters;\n }\n if (Array.isArray(filters)) {\n return filters;\n }\n if (typeof filters === 'string') {\n /** @type {?} */\n let names = filters.match(/[^\\s,]+/g);\n return this.options.filters\n .filter((/**\n * @param {?} filter\n * @return {?}\n */\n (filter) => names.indexOf(filter.name) !== -1));\n }\n return this.options.filters;\n }\n /**\n * @protected\n * @return {?}\n */\n _render() {\n return void 0;\n }\n /**\n * @protected\n * @return {?}\n */\n _queueLimitFilter() {\n return this.options.queueLimit === undefined || this.queue.length < this.options.queueLimit;\n }\n /**\n * @protected\n * @param {?} file\n * @param {?} filters\n * @param {?} options\n * @return {?}\n */\n _isValidFile(file, filters, options) {\n this._failFilterIndex = -1;\n return !filters.length ? true : filters.every((/**\n * @param {?} filter\n * @return {?}\n */\n (filter) => {\n this._failFilterIndex++;\n return filter.fn.call(this, file, options);\n }));\n }\n /**\n * @protected\n * @param {?} status\n * @return {?}\n */\n _isSuccessCode(status) {\n return (status >= 200 && status < 300) || status === 304;\n }\n /**\n * @protected\n * @param {?} response\n * @param {?} headers\n * @return {?}\n */\n _transformResponse(response, headers) {\n return response;\n }\n /**\n * @protected\n * @param {?} headers\n * @return {?}\n */\n _parseHeaders(headers) {\n /** @type {?} */\n let parsed = {};\n /** @type {?} */\n let key;\n /** @type {?} */\n let val;\n /** @type {?} */\n let i;\n if (!headers) {\n return parsed;\n }\n headers.split('\\n').map((/**\n * @param {?} line\n * @return {?}\n */\n (line) => {\n i = line.indexOf(':');\n key = line.slice(0, i).trim().toLowerCase();\n val = line.slice(i + 1).trim();\n if (key) {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }));\n return parsed;\n }\n /**\n * @protected\n * @param {?} item\n * @param {?} filter\n * @param {?} options\n * @return {?}\n */\n _onWhenAddingFileFailed(item, filter, options) {\n this.onWhenAddingFileFailed(item, filter, options);\n }\n /**\n * @protected\n * @param {?} item\n * @return {?}\n */\n _onAfterAddingFile(item) {\n this.onAfterAddingFile(item);\n }\n /**\n * @protected\n * @param {?} items\n * @return {?}\n */\n _onAfterAddingAll(items) {\n this.onAfterAddingAll(items);\n }\n /**\n * @protected\n * @param {?} item\n * @return {?}\n */\n _onBeforeUploadItem(item) {\n item._onBeforeUpload();\n this.onBeforeUploadItem(item);\n }\n /**\n * @protected\n * @param {?} item\n * @param {?} form\n * @return {?}\n */\n _onBuildItemForm(item, form) {\n item._onBuildForm(form);\n this.onBuildItemForm(item, form);\n }\n /**\n * @protected\n * @param {?} item\n * @param {?} progress\n * @return {?}\n */\n _onProgressItem(item, progress) {\n /** @type {?} */\n let total = this._getTotalProgress(progress);\n this.progress = total;\n item._onProgress(progress);\n this.onProgressItem(item, progress);\n this.onProgressAll(total);\n this._render();\n }\n /**\n * @protected\n * @param {?} item\n * @param {?} response\n * @param {?} status\n * @param {?} headers\n * @return {?}\n */\n _onSuccessItem(item, response, status, headers) {\n item._onSuccess(response, status, headers);\n this.onSuccessItem(item, response, status, headers);\n }\n /**\n * @protected\n * @param {?} item\n * @param {?} response\n * @param {?} status\n * @param {?} headers\n * @return {?}\n */\n _onCancelItem(item, response, status, headers) {\n item._onCancel(response, status, headers);\n this.onCancelItem(item, response, status, headers);\n }\n}\nif (false) {\n /** @type {?} */\n FileUploader.prototype.authToken;\n /** @type {?} */\n FileUploader.prototype.isUploading;\n /** @type {?} */\n FileUploader.prototype.queue;\n /** @type {?} */\n FileUploader.prototype.progress;\n /** @type {?} */\n FileUploader.prototype._nextIndex;\n /** @type {?} */\n FileUploader.prototype.autoUpload;\n /** @type {?} */\n FileUploader.prototype.authTokenHeader;\n /** @type {?} */\n FileUploader.prototype.response;\n /** @type {?} */\n FileUploader.prototype.options;\n /**\n * @type {?}\n * @protected\n */\n FileUploader.prototype._failFilterIndex;\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass FileSelectDirective {\n /**\n * @param {?} element\n */\n constructor(element) {\n this.onFileSelected = new EventEmitter();\n this.element = element;\n }\n /**\n * @return {?}\n */\n getOptions() {\n return this.uploader.options;\n }\n /**\n * @return {?}\n */\n getFilters() {\n return {};\n }\n /**\n * @return {?}\n */\n isEmptyAfterSelection() {\n return !!this.element.nativeElement.attributes.multiple;\n }\n /**\n * @return {?}\n */\n onChange() {\n /** @type {?} */\n let files = this.element.nativeElement.files;\n /** @type {?} */\n let options = this.getOptions();\n /** @type {?} */\n let filters = this.getFilters();\n this.uploader.addToQueue(files, options, filters);\n this.onFileSelected.emit(files);\n if (this.isEmptyAfterSelection()) {\n this.element.nativeElement.value = '';\n }\n }\n}\nFileSelectDirective.ɵfac = function FileSelectDirective_Factory(t) { return new (t || FileSelectDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nFileSelectDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: FileSelectDirective, selectors: [[\"\", \"ng2FileSelect\", \"\"]], hostBindings: function FileSelectDirective_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"change\", function FileSelectDirective_change_HostBindingHandler() { return ctx.onChange(); });\n } }, inputs: { uploader: \"uploader\" }, outputs: { onFileSelected: \"onFileSelected\" } });\n/** @nocollapse */\nFileSelectDirective.ctorParameters = () => [\n { type: ElementRef }\n];\nFileSelectDirective.propDecorators = {\n uploader: [{ type: Input }],\n onFileSelected: [{ type: Output }],\n onChange: [{ type: HostListener, args: ['change',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FileSelectDirective, [{\n type: Directive,\n args: [{ selector: '[ng2FileSelect]' }]\n }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { onFileSelected: [{\n type: Output\n }], \n /**\n * @return {?}\n */\n onChange: [{\n type: HostListener,\n args: ['change']\n }], uploader: [{\n type: Input\n }] }); })();\nif (false) {\n /** @type {?} */\n FileSelectDirective.prototype.uploader;\n /** @type {?} */\n FileSelectDirective.prototype.onFileSelected;\n /**\n * @type {?}\n * @protected\n */\n FileSelectDirective.prototype.element;\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass FileDropDirective {\n /**\n * @param {?} element\n */\n constructor(element) {\n this.fileOver = new EventEmitter();\n this.onFileDrop = new EventEmitter();\n this.element = element;\n }\n /**\n * @return {?}\n */\n getOptions() {\n return this.uploader.options;\n }\n /**\n * @return {?}\n */\n getFilters() {\n return {};\n }\n /**\n * @param {?} event\n * @return {?}\n */\n onDrop(event) {\n /** @type {?} */\n let transfer = this._getTransfer(event);\n if (!transfer) {\n return;\n }\n /** @type {?} */\n let options = this.getOptions();\n /** @type {?} */\n let filters = this.getFilters();\n this._preventAndStop(event);\n this.uploader.addToQueue(transfer.files, options, filters);\n this.fileOver.emit(false);\n this.onFileDrop.emit(transfer.files);\n }\n /**\n * @param {?} event\n * @return {?}\n */\n onDragOver(event) {\n /** @type {?} */\n let transfer = this._getTransfer(event);\n if (!this._haveFiles(transfer.types)) {\n return;\n }\n transfer.dropEffect = 'copy';\n this._preventAndStop(event);\n this.fileOver.emit(true);\n }\n /**\n * @param {?} event\n * @return {?}\n */\n onDragLeave(event) {\n if (((/** @type {?} */ (this))).element) {\n if (event.currentTarget === ((/** @type {?} */ (this))).element[0]) {\n return;\n }\n }\n this._preventAndStop(event);\n this.fileOver.emit(false);\n }\n /**\n * @protected\n * @param {?} event\n * @return {?}\n */\n _getTransfer(event) {\n return event.dataTransfer ? event.dataTransfer : event.originalEvent.dataTransfer; // jQuery fix;\n }\n /**\n * @protected\n * @param {?} event\n * @return {?}\n */\n _preventAndStop(event) {\n event.preventDefault();\n event.stopPropagation();\n }\n /**\n * @protected\n * @param {?} types\n * @return {?}\n */\n _haveFiles(types) {\n if (!types) {\n return false;\n }\n if (types.indexOf) {\n return types.indexOf('Files') !== -1;\n }\n else if (types.contains) {\n return types.contains('Files');\n }\n else {\n return false;\n }\n }\n}\nFileDropDirective.ɵfac = function FileDropDirective_Factory(t) { return new (t || FileDropDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nFileDropDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: FileDropDirective, selectors: [[\"\", \"ng2FileDrop\", \"\"]], hostBindings: function FileDropDirective_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"drop\", function FileDropDirective_drop_HostBindingHandler($event) { return ctx.onDrop($event); })(\"dragover\", function FileDropDirective_dragover_HostBindingHandler($event) { return ctx.onDragOver($event); })(\"dragleave\", function FileDropDirective_dragleave_HostBindingHandler($event) { return ctx.onDragLeave($event); });\n } }, inputs: { uploader: \"uploader\" }, outputs: { fileOver: \"fileOver\", onFileDrop: \"onFileDrop\" } });\n/** @nocollapse */\nFileDropDirective.ctorParameters = () => [\n { type: ElementRef }\n];\nFileDropDirective.propDecorators = {\n uploader: [{ type: Input }],\n fileOver: [{ type: Output }],\n onFileDrop: [{ type: Output }],\n onDrop: [{ type: HostListener, args: ['drop', ['$event'],] }],\n onDragOver: [{ type: HostListener, args: ['dragover', ['$event'],] }],\n onDragLeave: [{ type: HostListener, args: ['dragleave', ['$event'],] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FileDropDirective, [{\n type: Directive,\n args: [{ selector: '[ng2FileDrop]' }]\n }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { fileOver: [{\n type: Output\n }], onFileDrop: [{\n type: Output\n }], \n /**\n * @param {?} event\n * @return {?}\n */\n onDrop: [{\n type: HostListener,\n args: ['drop', ['$event']]\n }], \n /**\n * @param {?} event\n * @return {?}\n */\n onDragOver: [{\n type: HostListener,\n args: ['dragover', ['$event']]\n }], \n /**\n * @param {?} event\n * @return {?}\n */\n onDragLeave: [{\n type: HostListener,\n args: ['dragleave', ['$event']]\n }], uploader: [{\n type: Input\n }] }); })();\nif (false) {\n /** @type {?} */\n FileDropDirective.prototype.uploader;\n /** @type {?} */\n FileDropDirective.prototype.fileOver;\n /** @type {?} */\n FileDropDirective.prototype.onFileDrop;\n /**\n * @type {?}\n * @protected\n */\n FileDropDirective.prototype.element;\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass FileUploadModule {\n}\nFileUploadModule.ɵfac = function FileUploadModule_Factory(t) { return new (t || FileUploadModule)(); };\nFileUploadModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: FileUploadModule });\nFileUploadModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FileUploadModule, [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n declarations: [FileDropDirective, FileSelectDirective],\n exports: [FileDropDirective, FileSelectDirective]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(FileUploadModule, { declarations: function () { return [FileDropDirective, FileSelectDirective]; }, imports: function () { return [CommonModule]; }, exports: function () { return [FileDropDirective, FileSelectDirective]; } }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\nexport { FileDropDirective, FileItem, FileLikeObject, FileSelectDirective, FileUploadModule, FileUploader };\n\n","import { EventEmitter, Directive, ElementRef, Inject, PLATFORM_ID, Input, Output, HostListener, NgModule } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\n\n/**\n * @fileoverview added by tsickle\n * Generated from: src/ng2-tel-input.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nimport * as ɵngcc0 from '@angular/core';\nconst defaultUtilScript = 'https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/16.0.1/js/utils.js';\nclass Ng2TelInput {\n /**\n * @param {?} el\n * @param {?} platformId\n */\n constructor(el, platformId) {\n this.el = el;\n this.platformId = platformId;\n this.ng2TelInputOptions = {};\n this.hasError = new EventEmitter();\n this.ng2TelOutput = new EventEmitter();\n this.countryChange = new EventEmitter();\n this.intlTelInputObject = new EventEmitter();\n }\n /**\n * @return {?}\n */\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n this.ng2TelInputOptions = Object.assign({}, this.ng2TelInputOptions, { utilsScript: this.getUtilsScript(this.ng2TelInputOptions) });\n this.ngTelInput = window.intlTelInput(this.el.nativeElement, Object.assign({}, this.ng2TelInputOptions));\n this.el.nativeElement.addEventListener(\"countrychange\", (/**\n * @return {?}\n */\n () => {\n this.countryChange.emit(this.ngTelInput.getSelectedCountryData());\n }));\n this.intlTelInputObject.emit(this.ngTelInput);\n }\n }\n /**\n * @return {?}\n */\n onBlur() {\n /** @type {?} */\n let isInputValid = this.isInputValid();\n if (isInputValid) {\n /** @type {?} */\n let telOutput = this.ngTelInput.getNumber();\n this.hasError.emit(isInputValid);\n this.ng2TelOutput.emit(telOutput);\n }\n else {\n this.hasError.emit(isInputValid);\n }\n }\n /**\n * @return {?}\n */\n isInputValid() {\n return this.ngTelInput.isValidNumber();\n }\n /**\n * @param {?} country\n * @return {?}\n */\n setCountry(country) {\n this.ngTelInput.setCountry(country);\n }\n /**\n * @param {?} options\n * @return {?}\n */\n getUtilsScript(options) {\n return options.utilsScript || defaultUtilScript;\n }\n}\nNg2TelInput.ɵfac = function Ng2TelInput_Factory(t) { return new (t || Ng2TelInput)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(PLATFORM_ID)); };\nNg2TelInput.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: Ng2TelInput, selectors: [[\"\", \"ng2TelInput\", \"\"]], hostBindings: function Ng2TelInput_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"blur\", function Ng2TelInput_blur_HostBindingHandler() { return ctx.onBlur(); });\n } }, inputs: { ng2TelInputOptions: \"ng2TelInputOptions\" }, outputs: { hasError: \"hasError\", ng2TelOutput: \"ng2TelOutput\", countryChange: \"countryChange\", intlTelInputObject: \"intlTelInputObject\" } });\n/** @nocollapse */\nNg2TelInput.ctorParameters = () => [\n { type: ElementRef },\n { type: String, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }\n];\nNg2TelInput.propDecorators = {\n ng2TelInputOptions: [{ type: Input, args: ['ng2TelInputOptions',] }],\n hasError: [{ type: Output, args: ['hasError',] }],\n ng2TelOutput: [{ type: Output, args: ['ng2TelOutput',] }],\n countryChange: [{ type: Output, args: ['countryChange',] }],\n intlTelInputObject: [{ type: Output, args: ['intlTelInputObject',] }],\n onBlur: [{ type: HostListener, args: ['blur',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(Ng2TelInput, [{\n type: Directive,\n args: [{\n selector: '[ng2TelInput]'\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: String, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }]; }, { ng2TelInputOptions: [{\n type: Input,\n args: ['ng2TelInputOptions']\n }], hasError: [{\n type: Output,\n args: ['hasError']\n }], ng2TelOutput: [{\n type: Output,\n args: ['ng2TelOutput']\n }], countryChange: [{\n type: Output,\n args: ['countryChange']\n }], intlTelInputObject: [{\n type: Output,\n args: ['intlTelInputObject']\n }], \n /**\n * @return {?}\n */\n onBlur: [{\n type: HostListener,\n args: ['blur']\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * Generated from: src/ng2-tel-input.module.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass Ng2TelInputModule {\n /**\n * @return {?}\n */\n static forRoot() {\n return {\n ngModule: Ng2TelInputModule,\n providers: []\n };\n }\n}\nNg2TelInputModule.ɵfac = function Ng2TelInputModule_Factory(t) { return new (t || Ng2TelInputModule)(); };\nNg2TelInputModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: Ng2TelInputModule });\nNg2TelInputModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(Ng2TelInputModule, [{\n type: NgModule,\n args: [{\n declarations: [Ng2TelInput],\n exports: [Ng2TelInput]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(Ng2TelInputModule, { declarations: [Ng2TelInput], exports: [Ng2TelInput] }); })();\n\nexport { Ng2TelInput, Ng2TelInputModule };\n\n","\"use strict\";\r\nvar __assign = (this && this.__assign) || Object.assign || function(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))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n};\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar deepmerge = require(\"deepmerge\");\r\nvar INIT_ACTION = '@ngrx/store/init';\r\nvar UPDATE_ACTION = '@ngrx/store/update-reducers';\r\nvar detectDate = /(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})/;\r\n// correctly parse dates from local storage\r\nexports.dateReviver = function (key, value) {\r\n if (typeof value === 'string' && detectDate.test(value)) {\r\n return new Date(value);\r\n }\r\n return value;\r\n};\r\nvar dummyReviver = function (key, value) { return value; };\r\nvar checkIsBrowserEnv = function () {\r\n return typeof window !== 'undefined';\r\n};\r\nvar validateStateKeys = function (keys) {\r\n return keys.map(function (key) {\r\n var attr = key;\r\n if (typeof key === 'object') {\r\n attr = Object.keys(key)[0];\r\n }\r\n if (typeof attr !== 'string') {\r\n throw new TypeError(\"localStorageSync Unknown Parameter Type: \" +\r\n (\"Expected type of string, got \" + typeof attr));\r\n }\r\n return key;\r\n });\r\n};\r\nexports.rehydrateApplicationState = function (keys, storage, storageKeySerializer, restoreDates) {\r\n return keys.reduce(function (acc, curr) {\r\n var key = curr;\r\n var reviver = restoreDates ? exports.dateReviver : dummyReviver;\r\n var deserialize;\r\n var decrypt;\r\n if (typeof key === 'object') {\r\n key = Object.keys(key)[0];\r\n // use the custom reviver function\r\n if (typeof curr[key] === 'function') {\r\n reviver = curr[key];\r\n }\r\n else {\r\n // use custom reviver function if available\r\n if (curr[key].reviver) {\r\n reviver = curr[key].reviver;\r\n }\r\n // use custom serialize function if available\r\n if (curr[key].deserialize) {\r\n deserialize = curr[key].deserialize;\r\n }\r\n }\r\n // Ensure that encrypt and decrypt functions are both present\r\n if (curr[key].encrypt && curr[key].decrypt) {\r\n if (typeof curr[key].encrypt === 'function' &&\r\n typeof curr[key].decrypt === 'function') {\r\n decrypt = curr[key].decrypt;\r\n }\r\n else {\r\n console.error(\"Either encrypt or decrypt is not a function on '\" + curr[key] + \"' key object.\");\r\n }\r\n }\r\n else if (curr[key].encrypt || curr[key].decrypt) {\r\n // Let know that one of the encryption functions is not provided\r\n console.error(\"Either encrypt or decrypt function is not present on '\" + curr[key] + \"' key object.\");\r\n }\r\n }\r\n if (storage !== undefined) {\r\n var stateSlice = storage.getItem(storageKeySerializer(key));\r\n if (stateSlice) {\r\n // Use provided decrypt function\r\n if (decrypt) {\r\n stateSlice = decrypt(stateSlice);\r\n }\r\n var isObjectRegex = new RegExp('{|\\\\[');\r\n var raw = stateSlice;\r\n if (stateSlice === 'null' || isObjectRegex.test(stateSlice.charAt(0))) {\r\n raw = JSON.parse(stateSlice, reviver);\r\n }\r\n return Object.assign({}, acc, (_a = {},\r\n _a[key] = deserialize ? deserialize(raw) : raw,\r\n _a));\r\n }\r\n }\r\n return acc;\r\n var _a;\r\n }, {});\r\n};\r\nexports.syncStateUpdate = function (state, keys, storage, storageKeySerializer, removeOnUndefined, syncCondition) {\r\n if (syncCondition) {\r\n try {\r\n if (syncCondition(state) !== true) {\r\n return;\r\n }\r\n }\r\n catch (e) {\r\n // Treat TypeError as do not sync\r\n if (e instanceof TypeError) {\r\n return;\r\n }\r\n throw e;\r\n }\r\n }\r\n keys.forEach(function (key) {\r\n var stateSlice = state[key];\r\n var replacer;\r\n var space;\r\n var encrypt;\r\n if (typeof key === 'object') {\r\n var name_1 = Object.keys(key)[0];\r\n stateSlice = state[name_1];\r\n if (typeof stateSlice !== 'undefined' && key[name_1]) {\r\n // use serialize function if specified.\r\n if (key[name_1].serialize) {\r\n stateSlice = key[name_1].serialize(stateSlice);\r\n }\r\n else {\r\n // if serialize function is not specified filter on fields if an array has been provided.\r\n var filter = void 0;\r\n if (key[name_1].reduce) {\r\n filter = key[name_1];\r\n }\r\n else if (key[name_1].filter) {\r\n filter = key[name_1].filter;\r\n }\r\n if (filter) {\r\n stateSlice = filter.reduce(function (memo, attr) {\r\n memo[attr] = stateSlice[attr];\r\n return memo;\r\n }, {});\r\n }\r\n // Check if encrypt and decrypt are present, also checked at this#rehydrateApplicationState()\r\n if (key[name_1].encrypt && key[name_1].decrypt) {\r\n if (typeof key[name_1].encrypt === 'function') {\r\n encrypt = key[name_1].encrypt;\r\n }\r\n }\r\n else if (key[name_1].encrypt || key[name_1].decrypt) {\r\n // If one of those is not present, then let know that one is missing\r\n console.error(\"Either encrypt or decrypt function is not present on '\" + key[name_1] + \"' key object.\");\r\n }\r\n }\r\n /*\r\n Replacer and space arguments to pass to JSON.stringify.\r\n If these fields don't exist, undefined will be passed.\r\n */\r\n replacer = key[name_1].replacer;\r\n space = key[name_1].space;\r\n }\r\n key = name_1;\r\n }\r\n if (typeof stateSlice !== 'undefined' && storage !== undefined) {\r\n try {\r\n if (encrypt) {\r\n // ensure that a string message is passed\r\n stateSlice = encrypt(typeof stateSlice === 'string'\r\n ? stateSlice\r\n : JSON.stringify(stateSlice, replacer, space));\r\n }\r\n storage.setItem(storageKeySerializer(key), typeof stateSlice === 'string'\r\n ? stateSlice\r\n : JSON.stringify(stateSlice, replacer, space));\r\n }\r\n catch (e) {\r\n console.warn('Unable to save state to localStorage:', e);\r\n }\r\n }\r\n else if (typeof stateSlice === 'undefined' && removeOnUndefined) {\r\n try {\r\n storage.removeItem(storageKeySerializer(key));\r\n }\r\n catch (e) {\r\n console.warn(\"Exception on removing/cleaning undefined '\" + key + \"' state\", e);\r\n }\r\n }\r\n });\r\n};\r\n// Default merge strategy is a full deep merge.\r\nexports.defaultMergeReducer = function (state, rehydratedState, action) {\r\n if ((action.type === INIT_ACTION || action.type === UPDATE_ACTION) && rehydratedState) {\r\n var overwriteMerge = function (destinationArray, sourceArray, options) { return sourceArray; };\r\n var options = {\r\n arrayMerge: overwriteMerge\r\n };\r\n state = deepmerge(state, rehydratedState, options);\r\n }\r\n return state;\r\n};\r\nexports.localStorageSync = function (config) { return function (reducer) {\r\n if (config.storage === undefined &&\r\n !config.checkStorageAvailability || (config.checkStorageAvailability && checkIsBrowserEnv())) {\r\n config.storage = localStorage || window.localStorage;\r\n }\r\n if (config.storageKeySerializer === undefined) {\r\n config.storageKeySerializer = function (key) { return key; };\r\n }\r\n if (config.restoreDates === undefined) {\r\n config.restoreDates = true;\r\n }\r\n // Use default merge reducer.\r\n var mergeReducer = config.mergeReducer;\r\n if (mergeReducer === undefined || typeof (mergeReducer) !== 'function') {\r\n mergeReducer = exports.defaultMergeReducer;\r\n }\r\n var stateKeys = validateStateKeys(config.keys);\r\n var rehydratedState = config.rehydrate\r\n ? exports.rehydrateApplicationState(stateKeys, config.storage, config.storageKeySerializer, config.restoreDates)\r\n : undefined;\r\n return function (state, action) {\r\n var nextState;\r\n // If state arrives undefined, we need to let it through the supplied reducer\r\n // in order to get a complete state as defined by user\r\n if ((action.type === INIT_ACTION) && !state) {\r\n nextState = reducer(state, action);\r\n }\r\n else {\r\n nextState = __assign({}, state);\r\n }\r\n // Merge the store state with the rehydrated state using\r\n // either a user-defined reducer or the default.\r\n nextState = mergeReducer(nextState, rehydratedState, action);\r\n nextState = reducer(nextState, action);\r\n if (action.type !== INIT_ACTION) {\r\n exports.syncStateUpdate(nextState, stateKeys, config.storage, config.storageKeySerializer, config.removeOnUndefined, config.syncCondition);\r\n }\r\n return nextState;\r\n };\r\n}; };\r\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __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}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { __decorate, __param, __metadata, __awaiter } from 'tslib';\nimport { InjectionToken, Inject, Injectable, ElementRef, Renderer2, Input, HostListener, Directive, forwardRef, Pipe, NgModule } from '@angular/core';\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS } from '@angular/forms';\nimport { DOCUMENT } from '@angular/common';\n\nimport * as ɵngcc0 from '@angular/core';\nconst config = new InjectionToken('config');\nconst NEW_CONFIG = new InjectionToken('NEW_CONFIG');\nconst INITIAL_CONFIG = new InjectionToken('INITIAL_CONFIG');\nconst initialConfig = {\n suffix: '',\n prefix: '',\n thousandSeparator: ' ',\n decimalMarker: '.',\n clearIfNotMatch: false,\n showTemplate: false,\n showMaskTyped: false,\n placeHolderCharacter: '_',\n dropSpecialCharacters: true,\n hiddenInput: undefined,\n shownMaskExpression: '',\n separatorLimit: '',\n allowNegativeNumbers: false,\n validation: true,\n // tslint:disable-next-line: quotemark\n specialCharacters: ['-', '/', '(', ')', '.', ':', ' ', '+', ',', '@', '[', ']', '\"', \"'\"],\n patterns: {\n '0': {\n pattern: new RegExp('\\\\d'),\n },\n '9': {\n pattern: new RegExp('\\\\d'),\n optional: true,\n },\n X: {\n pattern: new RegExp('\\\\d'),\n symbol: '*',\n },\n A: {\n pattern: new RegExp('[a-zA-Z0-9]'),\n },\n S: {\n pattern: new RegExp('[a-zA-Z]'),\n },\n d: {\n pattern: new RegExp('\\\\d'),\n },\n m: {\n pattern: new RegExp('\\\\d'),\n },\n M: {\n pattern: new RegExp('\\\\d'),\n },\n H: {\n pattern: new RegExp('\\\\d'),\n },\n h: {\n pattern: new RegExp('\\\\d'),\n },\n s: {\n pattern: new RegExp('\\\\d'),\n },\n },\n};\nconst timeMasks = ['Hh:m0:s0', 'Hh:m0', 'm0:s0'];\nconst withoutValidation = [\n 'percent',\n 'Hh',\n 's0',\n 'm0',\n 'separator',\n 'd0/M0/0000',\n 'd0/M0',\n 'd0',\n 'M0',\n];\n\nlet MaskApplierService = class MaskApplierService {\n constructor(_config) {\n this._config = _config;\n this.maskExpression = '';\n this.actualValue = '';\n this.shownMaskExpression = '';\n this._formatWithSeparators = (str, thousandSeparatorChar, decimalChar, precision) => {\n const x = str.split(decimalChar);\n const decimals = x.length > 1 ? `${decimalChar}${x[1]}` : '';\n let res = x[0];\n const separatorLimit = this.separatorLimit.replace(/\\s/g, '');\n if (separatorLimit && +separatorLimit) {\n if (res[0] === '-') {\n res = `-${res.slice(1, res.length).slice(0, separatorLimit.length)}`;\n }\n else {\n res = res.slice(0, separatorLimit.length);\n }\n }\n const rgx = /(\\d+)(\\d{3})/;\n while (thousandSeparatorChar && rgx.test(res)) {\n res = res.replace(rgx, '$1' + thousandSeparatorChar + '$2');\n }\n if (precision === undefined) {\n return res + decimals;\n }\n else if (precision === 0) {\n return res;\n }\n return res + decimals.substr(0, precision + 1);\n };\n this.percentage = (str) => {\n return Number(str) >= 0 && Number(str) <= 100;\n };\n this.getPrecision = (maskExpression) => {\n const x = maskExpression.split('.');\n if (x.length > 1) {\n return Number(x[x.length - 1]);\n }\n return Infinity;\n };\n this.checkInputPrecision = (inputValue, precision, decimalMarker) => {\n if (precision < Infinity) {\n const precisionRegEx = new RegExp(this._charToRegExpExpression(decimalMarker) + `\\\\d{${precision}}.*$`);\n const precisionMatch = inputValue.match(precisionRegEx);\n if (precisionMatch && precisionMatch[0].length - 1 > precision) {\n const diff = precisionMatch[0].length - 1 - precision;\n inputValue = inputValue.substring(0, inputValue.length - diff);\n }\n if (precision === 0 && inputValue.endsWith(decimalMarker)) {\n inputValue = inputValue.substring(0, inputValue.length - 1);\n }\n }\n return inputValue;\n };\n this._shift = new Set();\n this.clearIfNotMatch = this._config.clearIfNotMatch;\n this.dropSpecialCharacters = this._config.dropSpecialCharacters;\n this.maskSpecialCharacters = this._config.specialCharacters;\n this.maskAvailablePatterns = this._config.patterns;\n this.prefix = this._config.prefix;\n this.suffix = this._config.suffix;\n this.thousandSeparator = this._config.thousandSeparator;\n this.decimalMarker = this._config.decimalMarker;\n this.hiddenInput = this._config.hiddenInput;\n this.showMaskTyped = this._config.showMaskTyped;\n this.placeHolderCharacter = this._config.placeHolderCharacter;\n this.validation = this._config.validation;\n this.separatorLimit = this._config.separatorLimit;\n this.allowNegativeNumbers = this._config.allowNegativeNumbers;\n }\n applyMaskWithPattern(inputValue, maskAndPattern) {\n const [mask, customPattern] = maskAndPattern;\n this.customPattern = customPattern;\n return this.applyMask(inputValue, mask);\n }\n applyMask(inputValue, maskExpression, position = 0, cb = () => { }) {\n if (inputValue === undefined || inputValue === null || maskExpression === undefined) {\n return '';\n }\n let cursor = 0;\n let result = '';\n let multi = false;\n let backspaceShift = false;\n let shift = 1;\n let stepBack = false;\n if (inputValue.slice(0, this.prefix.length) === this.prefix) {\n inputValue = inputValue.slice(this.prefix.length, inputValue.length);\n }\n if (!!this.suffix && inputValue.endsWith(this.suffix)) {\n inputValue = inputValue.slice(0, inputValue.length - this.suffix.length);\n }\n const inputArray = inputValue.toString().split('');\n if (maskExpression === 'IP') {\n this.ipError = !!(inputArray.filter((i) => i === '.').length < 3 && inputArray.length < 7);\n maskExpression = '099.099.099.099';\n }\n const arr = [];\n for (let i = 0; i < inputValue.length; i++) {\n if (inputValue[i].match('\\\\d')) {\n arr.push(inputValue[i]);\n }\n }\n if (maskExpression === 'CPF_CNPJ') {\n this.cpfCnpjError = !!(arr.length !== 11 && arr.length !== 14);\n if (arr.length > 11) {\n maskExpression = '00.000.000/0000-00';\n }\n else {\n maskExpression = '000.000.000-00';\n }\n }\n if (maskExpression.startsWith('percent')) {\n if (inputValue.match('[a-z]|[A-Z]') || inputValue.match(/[-!$%^&*()_+|~=`{}\\[\\]:\";'<>?,\\/.]/)) {\n inputValue = this._stripToDecimal(inputValue);\n const precision = this.getPrecision(maskExpression);\n inputValue = this.checkInputPrecision(inputValue, precision, this.decimalMarker);\n }\n if (inputValue.indexOf('.') > 0 && !this.percentage(inputValue.substring(0, inputValue.indexOf('.')))) {\n const base = inputValue.substring(0, inputValue.indexOf('.') - 1);\n inputValue = `${base}${inputValue.substring(inputValue.indexOf('.'), inputValue.length)}`;\n }\n if (this.percentage(inputValue)) {\n result = inputValue;\n }\n else {\n result = inputValue.substring(0, inputValue.length - 1);\n }\n }\n else if (maskExpression.startsWith('separator')) {\n if (inputValue.match('[wа-яА-Я]') ||\n inputValue.match('[ЁёА-я]') ||\n inputValue.match('[a-z]|[A-Z]') ||\n inputValue.match(/[-@#!$%\\\\^&*()_£¬'+|~=`{}\\[\\]:\";<>.?\\/]/) ||\n inputValue.match('[^A-Za-z0-9,]')) {\n inputValue = this._stripToDecimal(inputValue);\n }\n inputValue =\n inputValue.length > 1 && inputValue[0] === '0' && inputValue[1] !== this.decimalMarker\n ? inputValue.slice(1, inputValue.length)\n : inputValue;\n // TODO: we had different rexexps here for the different cases... but tests dont seam to bother - check this\n // separator: no COMMA, dot-sep: no SPACE, COMMA OK, comma-sep: no SPACE, COMMA OK\n const thousandSeperatorCharEscaped = this._charToRegExpExpression(this.thousandSeparator);\n const decimalMarkerEscaped = this._charToRegExpExpression(this.decimalMarker);\n const invalidChars = '@#!$%^&*()_+|~=`{}\\\\[\\\\]:\\\\s,\\\\.\";<>?\\\\/'\n .replace(thousandSeperatorCharEscaped, '')\n .replace(decimalMarkerEscaped, '');\n const invalidCharRegexp = new RegExp('[' + invalidChars + ']');\n if (inputValue.match(invalidCharRegexp)) {\n inputValue = inputValue.substring(0, inputValue.length - 1);\n }\n const precision = this.getPrecision(maskExpression);\n inputValue = this.checkInputPrecision(inputValue, precision, this.decimalMarker);\n const strForSep = inputValue.replace(new RegExp(thousandSeperatorCharEscaped, 'g'), '');\n result = this._formatWithSeparators(strForSep, this.thousandSeparator, this.decimalMarker, precision);\n const commaShift = result.indexOf(',') - inputValue.indexOf(',');\n const shiftStep = result.length - inputValue.length;\n if (shiftStep > 0 && result[position] !== ',') {\n backspaceShift = true;\n let _shift = 0;\n do {\n this._shift.add(position + _shift);\n _shift++;\n } while (_shift < shiftStep);\n }\n else if ((commaShift !== 0 && position > 0 && !(result.indexOf(',') >= position && position > 3)) ||\n (!(result.indexOf('.') >= position && position > 3) && shiftStep <= 0)) {\n this._shift.clear();\n backspaceShift = true;\n shift = shiftStep;\n position += shiftStep;\n this._shift.add(position);\n }\n else {\n this._shift.clear();\n }\n }\n else {\n for (\n // tslint:disable-next-line\n let i = 0, inputSymbol = inputArray[0]; i < inputArray.length; i++, inputSymbol = inputArray[i]) {\n if (cursor === maskExpression.length) {\n break;\n }\n if (this._checkSymbolMask(inputSymbol, maskExpression[cursor]) && maskExpression[cursor + 1] === '?') {\n result += inputSymbol;\n cursor += 2;\n }\n else if (maskExpression[cursor + 1] === '*' &&\n multi &&\n this._checkSymbolMask(inputSymbol, maskExpression[cursor + 2])) {\n result += inputSymbol;\n cursor += 3;\n multi = false;\n }\n else if (this._checkSymbolMask(inputSymbol, maskExpression[cursor]) && maskExpression[cursor + 1] === '*') {\n result += inputSymbol;\n multi = true;\n }\n else if (maskExpression[cursor + 1] === '?' &&\n this._checkSymbolMask(inputSymbol, maskExpression[cursor + 2])) {\n result += inputSymbol;\n cursor += 3;\n }\n else if (this._checkSymbolMask(inputSymbol, maskExpression[cursor]) ||\n (this.hiddenInput &&\n this.maskAvailablePatterns[maskExpression[cursor]] &&\n this.maskAvailablePatterns[maskExpression[cursor]].symbol === inputSymbol)) {\n if (maskExpression[cursor] === 'H') {\n if (Number(inputSymbol) > 2) {\n cursor += 1;\n const shiftStep = /[*?]/g.test(maskExpression.slice(0, cursor)) ? inputArray.length : cursor;\n this._shift.add(shiftStep + this.prefix.length || 0);\n i--;\n continue;\n }\n }\n if (maskExpression[cursor] === 'h') {\n if (result === '2' && Number(inputSymbol) > 3) {\n cursor += 1;\n i--;\n continue;\n }\n }\n if (maskExpression[cursor] === 'm') {\n if (Number(inputSymbol) > 5) {\n cursor += 1;\n const shiftStep = /[*?]/g.test(maskExpression.slice(0, cursor)) ? inputArray.length : cursor;\n this._shift.add(shiftStep + this.prefix.length || 0);\n i--;\n continue;\n }\n }\n if (maskExpression[cursor] === 's') {\n if (Number(inputSymbol) > 5) {\n cursor += 1;\n const shiftStep = /[*?]/g.test(maskExpression.slice(0, cursor)) ? inputArray.length : cursor;\n this._shift.add(shiftStep + this.prefix.length || 0);\n i--;\n continue;\n }\n }\n const daysCount = 31;\n if (maskExpression[cursor] === 'd') {\n if (Number(inputValue.slice(cursor, cursor + 2)) > daysCount || inputValue[cursor + 1] === '/') {\n cursor += 1;\n const shiftStep = /[*?]/g.test(maskExpression.slice(0, cursor)) ? inputArray.length : cursor;\n this._shift.add(shiftStep + this.prefix.length || 0);\n i--;\n continue;\n }\n }\n if (maskExpression[cursor] === 'M') {\n const monthsCount = 12;\n // mask without day\n const withoutDays = cursor === 0 &&\n (Number(inputSymbol) > 2 ||\n Number(inputValue.slice(cursor, cursor + 2)) > monthsCount ||\n inputValue[cursor + 1] === '/');\n // day<10 && month<12 for input\n const day1monthInput = inputValue.slice(cursor - 3, cursor - 1).includes('/') &&\n ((inputValue[cursor - 2] === '/' &&\n Number(inputValue.slice(cursor - 1, cursor + 1)) > monthsCount &&\n inputValue[cursor] !== '/') ||\n inputValue[cursor] === '/' ||\n (inputValue[cursor - 3] === '/' &&\n Number(inputValue.slice(cursor - 2, cursor)) > monthsCount &&\n inputValue[cursor - 1] !== '/') ||\n inputValue[cursor - 1] === '/');\n // 10 monthsCount || inputValue[cursor + 1] === '/');\n // day<10 && month<12 for paste whole data\n const day1monthPaste = Number(inputValue.slice(cursor - 3, cursor - 1)) > daysCount &&\n !inputValue.slice(cursor - 3, cursor - 1).includes('/') &&\n !inputValue.slice(cursor - 2, cursor).includes('/') &&\n Number(inputValue.slice(cursor - 2, cursor)) > monthsCount;\n // 10 monthsCount;\n if (withoutDays || day1monthInput || day2monthInput || day1monthPaste || day2monthPaste) {\n cursor += 1;\n const shiftStep = /[*?]/g.test(maskExpression.slice(0, cursor)) ? inputArray.length : cursor;\n this._shift.add(shiftStep + this.prefix.length || 0);\n i--;\n continue;\n }\n }\n result += inputSymbol;\n cursor++;\n }\n else if (this.maskSpecialCharacters.indexOf(maskExpression[cursor]) !== -1) {\n result += maskExpression[cursor];\n cursor++;\n const shiftStep = /[*?]/g.test(maskExpression.slice(0, cursor)) ? inputArray.length : cursor;\n this._shift.add(shiftStep + this.prefix.length || 0);\n i--;\n }\n else if (this.maskSpecialCharacters.indexOf(inputSymbol) > -1 &&\n this.maskAvailablePatterns[maskExpression[cursor]] &&\n this.maskAvailablePatterns[maskExpression[cursor]].optional) {\n if (!!inputArray[cursor] &&\n maskExpression !== '099.099.099.099' &&\n maskExpression !== '000.000.000-00' &&\n maskExpression !== '00.000.000/0000-00') {\n result += inputArray[cursor];\n }\n cursor++;\n i--;\n }\n else if (this.maskExpression[cursor + 1] === '*' &&\n this._findSpecialChar(this.maskExpression[cursor + 2]) &&\n this._findSpecialChar(inputSymbol) === this.maskExpression[cursor + 2] &&\n multi) {\n cursor += 3;\n result += inputSymbol;\n }\n else if (this.maskExpression[cursor + 1] === '?' &&\n this._findSpecialChar(this.maskExpression[cursor + 2]) &&\n this._findSpecialChar(inputSymbol) === this.maskExpression[cursor + 2] &&\n multi) {\n cursor += 3;\n result += inputSymbol;\n }\n else if (this.showMaskTyped &&\n this.maskSpecialCharacters.indexOf(inputSymbol) < 0 &&\n inputSymbol !== this.placeHolderCharacter) {\n stepBack = true;\n }\n }\n }\n if (result.length + 1 === maskExpression.length &&\n this.maskSpecialCharacters.indexOf(maskExpression[maskExpression.length - 1]) !== -1) {\n result += maskExpression[maskExpression.length - 1];\n }\n let newPosition = position + 1;\n while (this._shift.has(newPosition)) {\n shift++;\n newPosition++;\n }\n let actualShift = this._shift.has(position) ? shift : 0;\n if (stepBack) {\n actualShift--;\n }\n cb(actualShift, backspaceShift);\n if (shift < 0) {\n this._shift.clear();\n }\n let res = `${this.prefix}${result}${this.suffix}`;\n if (result.length === 0) {\n res = `${this.prefix}${result}`;\n }\n return res;\n }\n _findSpecialChar(inputSymbol) {\n return this.maskSpecialCharacters.find((val) => val === inputSymbol);\n }\n _checkSymbolMask(inputSymbol, maskSymbol) {\n this.maskAvailablePatterns = this.customPattern ? this.customPattern : this.maskAvailablePatterns;\n return (this.maskAvailablePatterns[maskSymbol] &&\n this.maskAvailablePatterns[maskSymbol].pattern &&\n this.maskAvailablePatterns[maskSymbol].pattern.test(inputSymbol));\n }\n _stripToDecimal(str) {\n return str\n .split('')\n .filter((i, idx) => {\n return i.match('^-?\\\\d') || i === '.' || i === ',' || (i === '-' && idx === 0 && this.allowNegativeNumbers);\n })\n .join('');\n }\n _charToRegExpExpression(char) {\n if (char) {\n const charsToEscape = '[\\\\^$.|?*+()';\n return char === ' ' ? '\\\\s' : charsToEscape.indexOf(char) >= 0 ? '\\\\' + char : char;\n }\n return char;\n }\n};\nMaskApplierService.ɵfac = function MaskApplierService_Factory(t) { return new (t || MaskApplierService)(ɵngcc0.ɵɵinject(config)); };\nMaskApplierService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: MaskApplierService, factory: function (t) { return MaskApplierService.ɵfac(t); } });\nMaskApplierService.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [config,] }] }\n];\nMaskApplierService = __decorate([ __param(0, Inject(config)),\n __metadata(\"design:paramtypes\", [Object])\n], MaskApplierService);\n\nlet MaskService = class MaskService extends MaskApplierService {\n constructor(document, _config, _elementRef, _renderer) {\n super(_config);\n this.document = document;\n this._config = _config;\n this._elementRef = _elementRef;\n this._renderer = _renderer;\n this.maskExpression = '';\n this.isNumberValue = false;\n this.placeHolderCharacter = '_';\n this.maskIsShown = '';\n this.selStart = null;\n this.selEnd = null;\n /**\n * Whether we are currently in writeValue function, in this case when applying the mask we don't want to trigger onChange function,\n * since writeValue should be a one way only process of writing the DOM value based on the Angular model value.\n */\n this.writingValue = false;\n this.onChange = (_) => { };\n this._formElement = this._elementRef.nativeElement;\n }\n // tslint:disable-next-line:cyclomatic-complexity\n applyMask(inputValue, maskExpression, position = 0, cb = () => { }) {\n if (!maskExpression) {\n return inputValue;\n }\n this.maskIsShown = this.showMaskTyped ? this.showMaskInInput() : '';\n if (this.maskExpression === 'IP' && this.showMaskTyped) {\n this.maskIsShown = this.showMaskInInput(inputValue || '#');\n }\n if (this.maskExpression === 'CPF_CNPJ' && this.showMaskTyped) {\n this.maskIsShown = this.showMaskInInput(inputValue || '#');\n }\n if (!inputValue && this.showMaskTyped) {\n this.formControlResult(this.prefix);\n return this.prefix + this.maskIsShown;\n }\n const getSymbol = !!inputValue && typeof this.selStart === 'number' ? inputValue[this.selStart] : '';\n let newInputValue = '';\n if (this.hiddenInput !== undefined) {\n let actualResult = this.actualValue.split('');\n // tslint:disable no-unused-expression\n inputValue !== '' && actualResult.length\n ? typeof this.selStart === 'number' && typeof this.selEnd === 'number'\n ? inputValue.length > actualResult.length\n ? actualResult.splice(this.selStart, 0, getSymbol)\n : inputValue.length < actualResult.length\n ? actualResult.length - inputValue.length === 1\n ? actualResult.splice(this.selStart - 1, 1)\n : actualResult.splice(this.selStart, this.selEnd - this.selStart)\n : null\n : null\n : (actualResult = []);\n // tslint:enable no-unused-expression\n newInputValue = this.actualValue.length ? this.shiftTypedSymbols(actualResult.join('')) : inputValue;\n }\n newInputValue = Boolean(newInputValue) && newInputValue.length ? newInputValue : inputValue;\n const result = super.applyMask(newInputValue, maskExpression, position, cb);\n this.actualValue = this.getActualValue(result);\n // handle some separator implications:\n // a.) adjust decimalMarker default (. -> ,) if thousandSeparator is a dot\n if (this.thousandSeparator === '.' && this.decimalMarker === '.') {\n this.decimalMarker = ',';\n }\n // b) remove decimal marker from list of special characters to mask\n if (this.maskExpression.startsWith('separator') && this.dropSpecialCharacters === true) {\n this.maskSpecialCharacters = this.maskSpecialCharacters.filter((item) => item !== this.decimalMarker);\n }\n this.formControlResult(result);\n if (!this.showMaskTyped) {\n if (this.hiddenInput) {\n return result && result.length ? this.hideInput(result, this.maskExpression) : result;\n }\n return result;\n }\n const resLen = result.length;\n const prefNmask = this.prefix + this.maskIsShown;\n return (result +\n (this.maskExpression === 'IP' || this.maskExpression === 'CPF_CNPJ' ? prefNmask : prefNmask.slice(resLen)));\n }\n applyValueChanges(position = 0, cb = () => { }) {\n this._formElement.value = this.applyMask(this._formElement.value, this.maskExpression, position, cb);\n if (this._formElement === this.document.activeElement) {\n return;\n }\n this.clearIfNotMatchFn();\n }\n hideInput(inputValue, maskExpression) {\n return inputValue\n .split('')\n .map((curr, index) => {\n if (this.maskAvailablePatterns &&\n this.maskAvailablePatterns[maskExpression[index]] &&\n this.maskAvailablePatterns[maskExpression[index]].symbol) {\n return this.maskAvailablePatterns[maskExpression[index]].symbol;\n }\n return curr;\n })\n .join('');\n }\n // this function is not necessary, it checks result against maskExpression\n getActualValue(res) {\n const compare = res\n .split('')\n .filter((symbol, i) => this._checkSymbolMask(symbol, this.maskExpression[i]) ||\n (this.maskSpecialCharacters.includes(this.maskExpression[i]) && symbol === this.maskExpression[i]));\n if (compare.join('') === res) {\n return compare.join('');\n }\n return res;\n }\n shiftTypedSymbols(inputValue) {\n let symbolToReplace = '';\n const newInputValue = (inputValue &&\n inputValue.split('').map((currSymbol, index) => {\n if (this.maskSpecialCharacters.includes(inputValue[index + 1]) &&\n inputValue[index + 1] !== this.maskExpression[index + 1]) {\n symbolToReplace = currSymbol;\n return inputValue[index + 1];\n }\n if (symbolToReplace.length) {\n const replaceSymbol = symbolToReplace;\n symbolToReplace = '';\n return replaceSymbol;\n }\n return currSymbol;\n })) ||\n [];\n return newInputValue.join('');\n }\n showMaskInInput(inputVal) {\n if (this.showMaskTyped && !!this.shownMaskExpression) {\n if (this.maskExpression.length !== this.shownMaskExpression.length) {\n throw new Error('Mask expression must match mask placeholder length');\n }\n else {\n return this.shownMaskExpression;\n }\n }\n else if (this.showMaskTyped) {\n if (inputVal) {\n if (this.maskExpression === 'IP') {\n return this._checkForIp(inputVal);\n }\n if (this.maskExpression === 'CPF_CNPJ') {\n return this._checkForCpfCnpj(inputVal);\n }\n }\n return this.maskExpression.replace(/\\w/g, this.placeHolderCharacter);\n }\n return '';\n }\n clearIfNotMatchFn() {\n if (this.clearIfNotMatch &&\n this.prefix.length + this.maskExpression.length + this.suffix.length !==\n this._formElement.value.replace(/_/g, '').length) {\n this.formElementProperty = ['value', ''];\n this.applyMask(this._formElement.value, this.maskExpression);\n }\n }\n set formElementProperty([name, value]) {\n this._renderer.setProperty(this._formElement, name, value);\n }\n checkSpecialCharAmount(mask) {\n const chars = mask.split('').filter((item) => this._findSpecialChar(item));\n return chars.length;\n }\n removeMask(inputValue) {\n return this._removeMask(this._removeSuffix(this._removePrefix(inputValue)), this.maskSpecialCharacters.concat('_').concat(this.placeHolderCharacter));\n }\n _checkForIp(inputVal) {\n if (inputVal === '#') {\n return `${this.placeHolderCharacter}.${this.placeHolderCharacter}.${this.placeHolderCharacter}.${this.placeHolderCharacter}`;\n }\n const arr = [];\n for (let i = 0; i < inputVal.length; i++) {\n if (inputVal[i].match('\\\\d')) {\n arr.push(inputVal[i]);\n }\n }\n if (arr.length <= 3) {\n return `${this.placeHolderCharacter}.${this.placeHolderCharacter}.${this.placeHolderCharacter}`;\n }\n if (arr.length > 3 && arr.length <= 6) {\n return `${this.placeHolderCharacter}.${this.placeHolderCharacter}`;\n }\n if (arr.length > 6 && arr.length <= 9) {\n return this.placeHolderCharacter;\n }\n if (arr.length > 9 && arr.length <= 12) {\n return '';\n }\n return '';\n }\n _checkForCpfCnpj(inputVal) {\n const cpf = `${this.placeHolderCharacter}${this.placeHolderCharacter}${this.placeHolderCharacter}` +\n `.${this.placeHolderCharacter}${this.placeHolderCharacter}${this.placeHolderCharacter}` +\n `.${this.placeHolderCharacter}${this.placeHolderCharacter}${this.placeHolderCharacter}` +\n `-${this.placeHolderCharacter}${this.placeHolderCharacter}`;\n const cnpj = `${this.placeHolderCharacter}${this.placeHolderCharacter}` +\n `.${this.placeHolderCharacter}${this.placeHolderCharacter}${this.placeHolderCharacter}` +\n `.${this.placeHolderCharacter}${this.placeHolderCharacter}${this.placeHolderCharacter}` +\n `/${this.placeHolderCharacter}${this.placeHolderCharacter}${this.placeHolderCharacter}${this.placeHolderCharacter}` +\n `-${this.placeHolderCharacter}${this.placeHolderCharacter}`;\n if (inputVal === '#') {\n return cpf;\n }\n const arr = [];\n for (let i = 0; i < inputVal.length; i++) {\n if (inputVal[i].match('\\\\d')) {\n arr.push(inputVal[i]);\n }\n }\n if (arr.length <= 3) {\n return cpf.slice(arr.length, cpf.length);\n }\n if (arr.length > 3 && arr.length <= 6) {\n return cpf.slice(arr.length + 1, cpf.length);\n }\n if (arr.length > 6 && arr.length <= 9) {\n return cpf.slice(arr.length + 2, cpf.length);\n }\n if (arr.length > 9 && arr.length < 11) {\n return cpf.slice(arr.length + 3, cpf.length);\n }\n if (arr.length === 11) {\n return '';\n }\n if (arr.length === 12) {\n if (inputVal.length === 17) {\n return cnpj.slice(16, cnpj.length);\n }\n return cnpj.slice(15, cnpj.length);\n }\n if (arr.length > 12 && arr.length <= 14) {\n return cnpj.slice(arr.length + 4, cnpj.length);\n }\n return '';\n }\n /**\n * Propogates the input value back to the Angular model by triggering the onChange function. It won't do this if writingValue\n * is true. If that is true it means we are currently in the writeValue function, which is supposed to only update the actual\n * DOM element based on the Angular model value. It should be a one way process, i.e. writeValue should not be modifying the Angular\n * model value too. Therefore, we don't trigger onChange in this scenario.\n * @param inputValue the current form input value\n */\n formControlResult(inputValue) {\n if (!this.writingValue) {\n if (Array.isArray(this.dropSpecialCharacters)) {\n this.onChange(this._removeMask(this._removeSuffix(this._removePrefix(inputValue)), this.dropSpecialCharacters));\n }\n else if (this.dropSpecialCharacters) {\n this.onChange(this._checkSymbols(inputValue));\n }\n else {\n this.onChange(this._removeSuffix(this._removePrefix(inputValue)));\n }\n }\n }\n _removeMask(value, specialCharactersForRemove) {\n return value ? value.replace(this._regExpForRemove(specialCharactersForRemove), '') : value;\n }\n _removePrefix(value) {\n if (!this.prefix) {\n return value;\n }\n return value ? value.replace(this.prefix, '') : value;\n }\n _removeSuffix(value) {\n if (!this.suffix) {\n return value;\n }\n return value ? value.replace(this.suffix, '') : value;\n }\n _retrieveSeparatorValue(result) {\n return this._removeMask(this._removeSuffix(this._removePrefix(result)), this.maskSpecialCharacters);\n }\n _regExpForRemove(specialCharactersForRemove) {\n return new RegExp(specialCharactersForRemove.map((item) => `\\\\${item}`).join('|'), 'gi');\n }\n _checkSymbols(result) {\n if (result === '') {\n return result;\n }\n const separatorPrecision = this._retrieveSeparatorPrecision(this.maskExpression);\n let separatorValue = this._retrieveSeparatorValue(result);\n if (this.decimalMarker !== '.') {\n separatorValue = separatorValue.replace(this.decimalMarker, '.');\n }\n if (this.isNumberValue) {\n if (separatorPrecision) {\n if (result === this.decimalMarker) {\n return null;\n }\n return this._checkPrecision(this.maskExpression, separatorValue);\n }\n else {\n return Number(separatorValue);\n }\n }\n else {\n return separatorValue;\n }\n }\n // TODO should think about helpers or separting decimal precision to own property\n _retrieveSeparatorPrecision(maskExpretion) {\n const matcher = maskExpretion.match(new RegExp(`^separator\\\\.([^d]*)`));\n return matcher ? Number(matcher[1]) : null;\n }\n _checkPrecision(separatorExpression, separatorValue) {\n if (separatorExpression.indexOf('2') > 0) {\n return Number(separatorValue).toFixed(2);\n }\n return Number(separatorValue);\n }\n};\nMaskService.ɵfac = function MaskService_Factory(t) { return new (t || MaskService)(ɵngcc0.ɵɵinject(DOCUMENT), ɵngcc0.ɵɵinject(config), ɵngcc0.ɵɵinject(ɵngcc0.ElementRef), ɵngcc0.ɵɵinject(ɵngcc0.Renderer2)); };\nMaskService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: MaskService, factory: function (t) { return MaskService.ɵfac(t); } });\nMaskService.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: undefined, decorators: [{ type: Inject, args: [config,] }] },\n { type: ElementRef },\n { type: Renderer2 }\n];\nMaskService = __decorate([ __param(0, Inject(DOCUMENT)),\n __param(1, Inject(config)),\n __metadata(\"design:paramtypes\", [Object, Object, ElementRef,\n Renderer2])\n], MaskService);\n\nvar MaskDirective_1;\n// tslint:disable deprecation\n// tslint:disable no-input-rename\nlet MaskDirective = MaskDirective_1 = class MaskDirective {\n constructor(document, _maskService, _config) {\n this.document = document;\n this._maskService = _maskService;\n this._config = _config;\n this.maskExpression = '';\n this.specialCharacters = [];\n this.patterns = {};\n this.prefix = '';\n this.suffix = '';\n this.thousandSeparator = ' ';\n this.decimalMarker = '.';\n this.dropSpecialCharacters = null;\n this.hiddenInput = null;\n this.showMaskTyped = null;\n this.placeHolderCharacter = null;\n this.shownMaskExpression = null;\n this.showTemplate = null;\n this.clearIfNotMatch = null;\n this.validation = null;\n this.separatorLimit = null;\n this.allowNegativeNumbers = null;\n this._maskValue = '';\n this._position = null;\n this._maskExpressionArray = [];\n this.onChange = (_) => { };\n this.onTouch = () => { };\n }\n ngOnChanges(changes) {\n const { maskExpression, specialCharacters, patterns, prefix, suffix, thousandSeparator, decimalMarker, dropSpecialCharacters, hiddenInput, showMaskTyped, placeHolderCharacter, shownMaskExpression, showTemplate, clearIfNotMatch, validation, separatorLimit, allowNegativeNumbers, } = changes;\n if (maskExpression) {\n this._maskValue = maskExpression.currentValue || '';\n if (maskExpression.currentValue && maskExpression.currentValue.split('||').length > 1) {\n this._maskExpressionArray = maskExpression.currentValue.split('||').sort((a, b) => {\n return a.length - b.length;\n });\n this._maskValue = this._maskExpressionArray[0];\n this.maskExpression = this._maskExpressionArray[0];\n this._maskService.maskExpression = this._maskExpressionArray[0];\n }\n }\n if (specialCharacters) {\n if (!specialCharacters.currentValue || !Array.isArray(specialCharacters.currentValue)) {\n return;\n }\n else {\n this._maskService.maskSpecialCharacters = specialCharacters.currentValue || [];\n }\n }\n // Only overwrite the mask available patterns if a pattern has actually been passed in\n if (patterns && patterns.currentValue) {\n this._maskService.maskAvailablePatterns = patterns.currentValue;\n }\n if (prefix) {\n this._maskService.prefix = prefix.currentValue;\n }\n if (suffix) {\n this._maskService.suffix = suffix.currentValue;\n }\n if (thousandSeparator) {\n this._maskService.thousandSeparator = thousandSeparator.currentValue;\n }\n if (decimalMarker) {\n this._maskService.decimalMarker = decimalMarker.currentValue;\n }\n if (dropSpecialCharacters) {\n this._maskService.dropSpecialCharacters = dropSpecialCharacters.currentValue;\n }\n if (hiddenInput) {\n this._maskService.hiddenInput = hiddenInput.currentValue;\n }\n if (showMaskTyped) {\n this._maskService.showMaskTyped = showMaskTyped.currentValue;\n }\n if (placeHolderCharacter) {\n this._maskService.placeHolderCharacter = placeHolderCharacter.currentValue;\n }\n if (shownMaskExpression) {\n this._maskService.shownMaskExpression = shownMaskExpression.currentValue;\n }\n if (showTemplate) {\n this._maskService.showTemplate = showTemplate.currentValue;\n }\n if (clearIfNotMatch) {\n this._maskService.clearIfNotMatch = clearIfNotMatch.currentValue;\n }\n if (validation) {\n this._maskService.validation = validation.currentValue;\n }\n if (separatorLimit) {\n this._maskService.separatorLimit = separatorLimit.currentValue;\n }\n if (allowNegativeNumbers) {\n this._maskService.allowNegativeNumbers = allowNegativeNumbers.currentValue;\n if (this._maskService.allowNegativeNumbers) {\n this._maskService.maskSpecialCharacters = this._maskService.maskSpecialCharacters.filter((c) => c !== '-');\n }\n }\n this._applyMask();\n }\n // tslint:disable-next-line: cyclomatic-complexity\n validate({ value }) {\n if (!this._maskService.validation || !this._maskValue) {\n return null;\n }\n if (this._maskService.ipError) {\n return this._createValidationError(value);\n }\n if (this._maskService.cpfCnpjError) {\n return this._createValidationError(value);\n }\n if (this._maskValue.startsWith('separator')) {\n return null;\n }\n if (withoutValidation.includes(this._maskValue)) {\n return null;\n }\n if (this._maskService.clearIfNotMatch) {\n return null;\n }\n if (timeMasks.includes(this._maskValue)) {\n return this._validateTime(value);\n }\n if (value && value.toString().length >= 1) {\n let counterOfOpt = 0;\n for (const key in this._maskService.maskAvailablePatterns) {\n if (this._maskService.maskAvailablePatterns[key].optional &&\n this._maskService.maskAvailablePatterns[key].optional === true) {\n if (this._maskValue.indexOf(key) !== this._maskValue.lastIndexOf(key)) {\n const opt = this._maskValue\n .split('')\n .filter((i) => i === key)\n .join('');\n counterOfOpt += opt.length;\n }\n else if (this._maskValue.indexOf(key) !== -1) {\n counterOfOpt++;\n }\n if (this._maskValue.indexOf(key) !== -1 && value.toString().length >= this._maskValue.indexOf(key)) {\n return null;\n }\n if (counterOfOpt === this._maskValue.length) {\n return null;\n }\n }\n }\n if (this._maskValue.indexOf('{') === 1 &&\n value.toString().length === this._maskValue.length + Number(this._maskValue.split('{')[1].split('}')[0]) - 4) {\n return null;\n }\n if (this._maskValue.indexOf('*') === 1 || this._maskValue.indexOf('?') === 1) {\n return null;\n }\n else if ((this._maskValue.indexOf('*') > 1 && value.toString().length < this._maskValue.indexOf('*')) ||\n (this._maskValue.indexOf('?') > 1 && value.toString().length < this._maskValue.indexOf('?')) ||\n this._maskValue.indexOf('{') === 1) {\n return this._createValidationError(value);\n }\n if (this._maskValue.indexOf('*') === -1 || this._maskValue.indexOf('?') === -1) {\n const length = this._maskService.dropSpecialCharacters\n ? this._maskValue.length - this._maskService.checkSpecialCharAmount(this._maskValue) - counterOfOpt\n : this._maskValue.length - counterOfOpt;\n if (value.toString().length < length) {\n return this._createValidationError(value);\n }\n }\n }\n return null;\n }\n onInput(e) {\n const el = e.target;\n this._inputValue = el.value;\n this._setMask();\n if (!this._maskValue) {\n this.onChange(el.value);\n return;\n }\n const position = el.selectionStart === 1\n ? el.selectionStart + this._maskService.prefix.length\n : el.selectionStart;\n let caretShift = 0;\n let backspaceShift = false;\n this._maskService.applyValueChanges(position, (shift, _backspaceShift) => {\n caretShift = shift;\n backspaceShift = _backspaceShift;\n });\n // only set the selection if the element is active\n if (this.document.activeElement !== el) {\n return;\n }\n this._position = this._position === 1 && this._inputValue.length === 1 ? null : this._position;\n let positionToApply = this._position\n ? this._inputValue.length + position + caretShift\n : position + (this._code === 'Backspace' && !backspaceShift ? 0 : caretShift);\n if (positionToApply > this._getActualInputLength()) {\n positionToApply = this._getActualInputLength();\n }\n el.setSelectionRange(positionToApply, positionToApply);\n if ((this.maskExpression.includes('H') || this.maskExpression.includes('M')) && caretShift === 0) {\n el.setSelectionRange(el.selectionStart + 1, el.selectionStart + 1);\n }\n this._position = null;\n }\n onBlur() {\n if (this._maskValue) {\n this._maskService.clearIfNotMatchFn();\n }\n this.onTouch();\n }\n onFocus(e) {\n if (!this._maskValue) {\n return;\n }\n const el = e.target;\n const posStart = 0;\n const posEnd = 0;\n if (el !== null &&\n el.selectionStart !== null &&\n el.selectionStart === el.selectionEnd &&\n el.selectionStart > this._maskService.prefix.length &&\n // tslint:disable-next-line\n e.keyCode !== 38)\n if (this._maskService.showMaskTyped) {\n // We are showing the mask in the input\n this._maskService.maskIsShown = this._maskService.showMaskInInput();\n if (el.setSelectionRange && this._maskService.prefix + this._maskService.maskIsShown === el.value) {\n // the input ONLY contains the mask, so position the cursor at the start\n el.focus();\n el.setSelectionRange(posStart, posEnd);\n }\n else {\n // the input contains some characters already\n if (el.selectionStart > this._maskService.actualValue.length) {\n // if the user clicked beyond our value's length, position the cursor at the end of our value\n el.setSelectionRange(this._maskService.actualValue.length, this._maskService.actualValue.length);\n }\n }\n }\n const nextValue = !el.value || el.value === this._maskService.prefix\n ? this._maskService.prefix + this._maskService.maskIsShown\n : el.value;\n /** Fix of cursor position jumping to end in most browsers no matter where cursor is inserted onFocus */\n if (el.value !== nextValue) {\n el.value = nextValue;\n }\n /** fix of cursor position with prefix when mouse click occur */\n if ((el.selectionStart || el.selectionEnd) <= this._maskService.prefix.length) {\n el.selectionStart = this._maskService.prefix.length;\n return;\n }\n /** select only inserted text */\n if (el.selectionEnd > this._getActualInputLength()) {\n el.selectionEnd = this._getActualInputLength();\n }\n }\n // tslint:disable-next-line: cyclomatic-complexity\n onKeyDown(e) {\n if (!this._maskValue) {\n return;\n }\n this._code = e.code ? e.code : e.key;\n const el = e.target;\n this._inputValue = el.value;\n this._setMask();\n if (e.keyCode === 38) {\n e.preventDefault();\n }\n if (e.keyCode === 37 || e.keyCode === 8 || e.keyCode === 46) {\n if (e.keyCode === 8 && el.value.length === 0) {\n el.selectionStart = el.selectionEnd;\n }\n if (e.keyCode === 8 && el.selectionStart !== 0) {\n // If specialChars is false, (shouldn't ever happen) then set to the defaults\n this.specialCharacters = this.specialCharacters || this._config.specialCharacters;\n if (this.prefix.length > 1 && el.selectionStart <= this.prefix.length) {\n el.setSelectionRange(this.prefix.length, this.prefix.length);\n }\n else {\n if (this._inputValue.length !== el.selectionStart && el.selectionStart !== 1) {\n while (this.specialCharacters.includes(this._inputValue[el.selectionStart - 1].toString()) &&\n ((this.prefix.length >= 1 && el.selectionStart > this.prefix.length) ||\n this.prefix.length === 0)) {\n el.setSelectionRange(el.selectionStart - 1, el.selectionStart - 1);\n }\n }\n this.suffixCheckOnPressDelete(e.keyCode, el);\n }\n }\n this.suffixCheckOnPressDelete(e.keyCode, el);\n if (this._maskService.prefix.length &&\n el.selectionStart <= this._maskService.prefix.length &&\n el.selectionEnd <= this._maskService.prefix.length) {\n e.preventDefault();\n }\n const cursorStart = el.selectionStart;\n // this.onFocus(e);\n if (e.keyCode === 8 &&\n !el.readOnly &&\n cursorStart === 0 &&\n el.selectionEnd === el.value.length &&\n el.value.length !== 0) {\n this._position = this._maskService.prefix ? this._maskService.prefix.length : 0;\n this._maskService.applyMask(this._maskService.prefix, this._maskService.maskExpression, this._position);\n }\n }\n if (!!this.suffix &&\n this.suffix.length > 1 &&\n this._inputValue.length - this.suffix.length < el.selectionStart) {\n el.setSelectionRange(this._inputValue.length - this.suffix.length, this._inputValue.length);\n }\n else if ((e.keyCode === 65 && e.ctrlKey === true) || // Ctrl+ A\n (e.keyCode === 65 && e.metaKey === true) // Cmd + A (Mac)\n ) {\n el.setSelectionRange(0, this._getActualInputLength());\n e.preventDefault();\n }\n this._maskService.selStart = el.selectionStart;\n this._maskService.selEnd = el.selectionEnd;\n }\n /** It writes the value in the input */\n writeValue(inputValue) {\n return __awaiter(this, void 0, void 0, function* () {\n if (inputValue === undefined) {\n inputValue = '';\n }\n if (typeof inputValue === 'number') {\n inputValue = String(inputValue);\n inputValue = this.decimalMarker !== '.' ? inputValue.replace('.', this.decimalMarker) : inputValue;\n this._maskService.isNumberValue = true;\n }\n if ((inputValue && this._maskService.maskExpression) ||\n (this._maskService.maskExpression && (this._maskService.prefix || this._maskService.showMaskTyped))) {\n // Let the service we know we are writing value so that triggering onChange function wont happen during applyMask\n this._maskService.writingValue = true;\n this._maskService.formElementProperty = [\n 'value',\n this._maskService.applyMask(inputValue, this._maskService.maskExpression),\n ];\n // Let the service know we've finished writing value\n this._maskService.writingValue = false;\n }\n else {\n this._maskService.formElementProperty = ['value', inputValue];\n }\n this._inputValue = inputValue;\n });\n }\n registerOnChange(fn) {\n this.onChange = fn;\n this._maskService.onChange = this.onChange;\n }\n registerOnTouched(fn) {\n this.onTouch = fn;\n }\n suffixCheckOnPressDelete(keyCode, el) {\n if (keyCode === 46 && this.suffix.length > 0) {\n if (this._inputValue.length - this.suffix.length <= el.selectionStart) {\n el.setSelectionRange(this._inputValue.length - this.suffix.length, this._inputValue.length);\n }\n }\n if (keyCode === 8) {\n if (this.suffix.length > 1 && this._inputValue.length - this.suffix.length < el.selectionStart) {\n el.setSelectionRange(this._inputValue.length - this.suffix.length, this._inputValue.length);\n }\n if (this.suffix.length === 1 && this._inputValue.length === el.selectionStart) {\n el.setSelectionRange(el.selectionStart - 1, el.selectionStart - 1);\n }\n }\n }\n /** It disables the input element */\n setDisabledState(isDisabled) {\n this._maskService.formElementProperty = ['disabled', isDisabled];\n }\n onModelChange(e) {\n if (!e) {\n this._maskService.actualValue = '';\n }\n }\n _repeatPatternSymbols(maskExp) {\n return ((maskExp.match(/{[0-9]+}/) &&\n maskExp.split('').reduce((accum, currval, index) => {\n this._start = currval === '{' ? index : this._start;\n if (currval !== '}') {\n return this._maskService._findSpecialChar(currval) ? accum + currval : accum;\n }\n this._end = index;\n const repeatNumber = Number(maskExp.slice(this._start + 1, this._end));\n const repaceWith = new Array(repeatNumber + 1).join(maskExp[this._start - 1]);\n return accum + repaceWith;\n }, '')) ||\n maskExp);\n }\n // tslint:disable-next-line:no-any\n _applyMask() {\n this._maskService.maskExpression = this._repeatPatternSymbols(this._maskValue || '');\n this._maskService.formElementProperty = [\n 'value',\n this._maskService.applyMask(this._inputValue, this._maskService.maskExpression),\n ];\n }\n _validateTime(value) {\n const rowMaskLen = this._maskValue.split('').filter((s) => s !== ':').length;\n if (value === null || value.length === 0) {\n return null; // Don't validate empty values to allow for optional form control\n }\n if ((+value[value.length - 1] === 0 && value.length < rowMaskLen) || value.length <= rowMaskLen - 2) {\n return this._createValidationError(value);\n }\n return null;\n }\n _getActualInputLength() {\n return (this._maskService.actualValue.length || this._maskService.actualValue.length + this._maskService.prefix.length);\n }\n _createValidationError(actualValue) {\n return {\n mask: {\n requiredMask: this._maskValue,\n actualValue,\n },\n };\n }\n _setMask() {\n if (this._maskExpressionArray.length > 0) {\n this._maskExpressionArray.some((mask) => {\n const test = this._maskService.removeMask(this._inputValue).length <= this._maskService.removeMask(mask).length;\n if (this._inputValue && test) {\n this._maskValue = mask;\n this.maskExpression = mask;\n this._maskService.maskExpression = mask;\n return test;\n }\n else {\n this._maskValue = this._maskExpressionArray[this._maskExpressionArray.length - 1];\n this.maskExpression = this._maskExpressionArray[this._maskExpressionArray.length - 1];\n this._maskService.maskExpression = this._maskExpressionArray[this._maskExpressionArray.length - 1];\n }\n });\n }\n }\n};\nMaskDirective.ɵfac = function MaskDirective_Factory(t) { return new (t || MaskDirective)(ɵngcc0.ɵɵdirectiveInject(DOCUMENT), ɵngcc0.ɵɵdirectiveInject(MaskService), ɵngcc0.ɵɵdirectiveInject(config)); };\nMaskDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: MaskDirective, selectors: [[\"input\", \"mask\", \"\"], [\"textarea\", \"mask\", \"\"]], hostBindings: function MaskDirective_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"input\", function MaskDirective_input_HostBindingHandler($event) { return ctx.onInput($event); })(\"blur\", function MaskDirective_blur_HostBindingHandler() { return ctx.onBlur(); })(\"click\", function MaskDirective_click_HostBindingHandler($event) { return ctx.onFocus($event); })(\"keydown\", function MaskDirective_keydown_HostBindingHandler($event) { return ctx.onKeyDown($event); })(\"ngModelChange\", function MaskDirective_ngModelChange_HostBindingHandler($event) { return ctx.onModelChange($event); });\n } }, inputs: { maskExpression: [\"mask\", \"maskExpression\"], specialCharacters: \"specialCharacters\", patterns: \"patterns\", prefix: \"prefix\", suffix: \"suffix\", thousandSeparator: \"thousandSeparator\", decimalMarker: \"decimalMarker\", dropSpecialCharacters: \"dropSpecialCharacters\", hiddenInput: \"hiddenInput\", showMaskTyped: \"showMaskTyped\", placeHolderCharacter: \"placeHolderCharacter\", shownMaskExpression: \"shownMaskExpression\", showTemplate: \"showTemplate\", clearIfNotMatch: \"clearIfNotMatch\", validation: \"validation\", separatorLimit: \"separatorLimit\", allowNegativeNumbers: \"allowNegativeNumbers\" }, features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MaskDirective_1),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MaskDirective_1),\n multi: true\n },\n MaskService,\n ]), ɵngcc0.ɵɵNgOnChangesFeature] });\nMaskDirective.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: MaskService },\n { type: undefined, decorators: [{ type: Inject, args: [config,] }] }\n];\n__decorate([\n Input('mask'),\n __metadata(\"design:type\", String)\n], MaskDirective.prototype, \"maskExpression\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], MaskDirective.prototype, \"specialCharacters\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], MaskDirective.prototype, \"patterns\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], MaskDirective.prototype, \"prefix\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], MaskDirective.prototype, \"suffix\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], MaskDirective.prototype, \"thousandSeparator\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], MaskDirective.prototype, \"decimalMarker\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], MaskDirective.prototype, \"dropSpecialCharacters\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], MaskDirective.prototype, \"hiddenInput\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], MaskDirective.prototype, \"showMaskTyped\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], MaskDirective.prototype, \"placeHolderCharacter\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], MaskDirective.prototype, \"shownMaskExpression\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], MaskDirective.prototype, \"showTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], MaskDirective.prototype, \"clearIfNotMatch\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], MaskDirective.prototype, \"validation\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], MaskDirective.prototype, \"separatorLimit\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], MaskDirective.prototype, \"allowNegativeNumbers\", void 0);\n__decorate([\n HostListener('input', ['$event']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], MaskDirective.prototype, \"onInput\", null);\n__decorate([\n HostListener('blur'),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], MaskDirective.prototype, \"onBlur\", null);\n__decorate([\n HostListener('click', ['$event']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], MaskDirective.prototype, \"onFocus\", null);\n__decorate([\n HostListener('keydown', ['$event']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], MaskDirective.prototype, \"onKeyDown\", null);\n__decorate([\n HostListener('ngModelChange', ['$event']),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], MaskDirective.prototype, \"onModelChange\", null);\nMaskDirective = MaskDirective_1 = __decorate([ __param(0, Inject(DOCUMENT)),\n __param(2, Inject(config)),\n __metadata(\"design:paramtypes\", [Object, MaskService, Object])\n], MaskDirective);\n\nlet MaskPipe = class MaskPipe {\n constructor(_maskService) {\n this._maskService = _maskService;\n }\n transform(value, mask, thousandSeparator = null) {\n if (!value && typeof value !== 'number') {\n return '';\n }\n if (thousandSeparator) {\n this._maskService.thousandSeparator = thousandSeparator;\n }\n if (typeof mask === 'string') {\n return this._maskService.applyMask(`${value}`, mask);\n }\n return this._maskService.applyMaskWithPattern(`${value}`, mask);\n }\n};\nMaskPipe.ɵfac = function MaskPipe_Factory(t) { return new (t || MaskPipe)(ɵngcc0.ɵɵdirectiveInject(MaskApplierService, 16)); };\nMaskPipe.ɵpipe = /*@__PURE__*/ ɵngcc0.ɵɵdefinePipe({ name: \"mask\", type: MaskPipe, pure: true });\nMaskPipe.ctorParameters = () => [\n { type: MaskApplierService }\n];\nMaskPipe = __decorate([ __metadata(\"design:paramtypes\", [MaskApplierService])\n], MaskPipe);\n\nvar NgxMaskModule_1;\nlet NgxMaskModule = NgxMaskModule_1 = class NgxMaskModule {\n static forRoot(configValue) {\n return {\n ngModule: NgxMaskModule_1,\n providers: [\n {\n provide: NEW_CONFIG,\n useValue: configValue,\n },\n {\n provide: INITIAL_CONFIG,\n useValue: initialConfig,\n },\n {\n provide: config,\n useFactory: _configFactory,\n deps: [INITIAL_CONFIG, NEW_CONFIG],\n },\n MaskApplierService,\n ],\n };\n }\n static forChild() {\n return {\n ngModule: NgxMaskModule_1,\n };\n }\n};\nNgxMaskModule.ɵfac = function NgxMaskModule_Factory(t) { return new (t || NgxMaskModule)(); };\nNgxMaskModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgxMaskModule });\nNgxMaskModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MaskApplierService, [{\n type: Injectable\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [config]\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MaskService, [{\n type: Injectable\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [config]\n }] }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MaskDirective, [{\n type: Directive,\n args: [{\n selector: 'input[mask], textarea[mask]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MaskDirective_1),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MaskDirective_1),\n multi: true\n },\n MaskService,\n ]\n }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: MaskService }, { type: undefined, decorators: [{\n type: Inject,\n args: [config]\n }] }]; }, { maskExpression: [{\n type: Input,\n args: ['mask']\n }], specialCharacters: [{\n type: Input\n }], patterns: [{\n type: Input\n }], prefix: [{\n type: Input\n }], suffix: [{\n type: Input\n }], thousandSeparator: [{\n type: Input\n }], decimalMarker: [{\n type: Input\n }], dropSpecialCharacters: [{\n type: Input\n }], hiddenInput: [{\n type: Input\n }], showMaskTyped: [{\n type: Input\n }], placeHolderCharacter: [{\n type: Input\n }], shownMaskExpression: [{\n type: Input\n }], showTemplate: [{\n type: Input\n }], clearIfNotMatch: [{\n type: Input\n }], validation: [{\n type: Input\n }], separatorLimit: [{\n type: Input\n }], allowNegativeNumbers: [{\n type: Input\n }], onInput: [{\n type: HostListener,\n args: ['input', ['$event']]\n }], onBlur: [{\n type: HostListener,\n args: ['blur']\n }], onFocus: [{\n type: HostListener,\n args: ['click', ['$event']]\n }], \n // tslint:disable-next-line: cyclomatic-complexity\n onKeyDown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }], onModelChange: [{\n type: HostListener,\n args: ['ngModelChange', ['$event']]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MaskPipe, [{\n type: Pipe,\n args: [{\n name: 'mask',\n pure: true\n }]\n }], function () { return [{ type: MaskApplierService }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgxMaskModule, [{\n type: NgModule,\n args: [{\n exports: [MaskDirective, MaskPipe],\n declarations: [MaskDirective, MaskPipe]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgxMaskModule, { declarations: [MaskDirective, MaskPipe], exports: [MaskDirective, MaskPipe] }); })();\n/**\n * @internal\n */\nfunction _configFactory(initConfig, configValue) {\n return configValue instanceof Function ? Object.assign(Object.assign({}, initConfig), configValue()) : Object.assign(Object.assign({}, initConfig), configValue);\n}\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { INITIAL_CONFIG, MaskApplierService, MaskDirective, MaskPipe, MaskService, NEW_CONFIG, NgxMaskModule, _configFactory, config, initialConfig, timeMasks, withoutValidation };\n\n","import { Subject } from './Subject';\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 !subscription.closed && subscriber.next(this._value);\n return subscription;\n }\n getValue() {\n const { hasError, thrownError, _value } = this;\n if (hasError) {\n throw thrownError;\n }\n this._throwIfClosed();\n return _value;\n }\n next(value) {\n super.next((this._value = value));\n }\n}\n","import { SafeSubscriber, Subscriber } from './Subscriber';\nimport { isSubscription } from './Subscription';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nimport { isFunction } from './util/isFunction';\nimport { errorContext } from './util/errorContext';\nexport class Observable {\n constructor(subscribe) {\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 subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n errorContext(() => {\n const { operator, source } = this;\n subscriber.add(operator\n ?\n operator.call(subscriber, source)\n : source\n ?\n this._subscribe(subscriber)\n :\n this._trySubscribe(subscriber));\n });\n return subscriber;\n }\n _trySubscribe(sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n sink.error(err);\n }\n }\n forEach(next, promiseCtor) {\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor((resolve, reject) => {\n const subscriber = new SafeSubscriber({\n next: (value) => {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n subscriber.unsubscribe();\n }\n },\n error: reject,\n complete: resolve,\n });\n this.subscribe(subscriber);\n });\n }\n _subscribe(subscriber) {\n var _a;\n return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber);\n }\n [Symbol_observable]() {\n return this;\n }\n pipe(...operations) {\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 var _a;\n return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a !== void 0 ? _a : Promise;\n}\nfunction isObserver(value) {\n return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\nfunction isSubscriber(value) {\n return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));\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 { Subject } from './Subject';\nimport { dateTimestampProvider } from './scheduler/dateTimestampProvider';\nexport class ReplaySubject extends Subject {\n constructor(_bufferSize = Infinity, _windowTime = Infinity, _timestampProvider = dateTimestampProvider) {\n super();\n this._bufferSize = _bufferSize;\n this._windowTime = _windowTime;\n this._timestampProvider = _timestampProvider;\n this._buffer = [];\n this._infiniteTimeWindow = true;\n this._infiniteTimeWindow = _windowTime === Infinity;\n this._bufferSize = Math.max(1, _bufferSize);\n this._windowTime = Math.max(1, _windowTime);\n }\n next(value) {\n const { isStopped, _buffer, _infiniteTimeWindow, _timestampProvider, _windowTime } = this;\n if (!isStopped) {\n _buffer.push(value);\n !_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime);\n }\n this._trimBuffer();\n super.next(value);\n }\n _subscribe(subscriber) {\n this._throwIfClosed();\n this._trimBuffer();\n const subscription = this._innerSubscribe(subscriber);\n const { _infiniteTimeWindow, _buffer } = this;\n const copy = _buffer.slice();\n for (let i = 0; i < copy.length && !subscriber.closed; i += _infiniteTimeWindow ? 1 : 2) {\n subscriber.next(copy[i]);\n }\n this._checkFinalizedStatuses(subscriber);\n return subscription;\n }\n _trimBuffer() {\n const { _bufferSize, _timestampProvider, _buffer, _infiniteTimeWindow } = this;\n const adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize;\n _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize);\n if (!_infiniteTimeWindow) {\n const now = _timestampProvider.now();\n let last = 0;\n for (let i = 1; i < _buffer.length && _buffer[i] <= now; i += 2) {\n last = i;\n }\n last && _buffer.splice(0, last + 1);\n }\n }\n}\n","import { createErrorClass } from './createErrorClass';\nexport const ObjectUnsubscribedError = createErrorClass((_super) => function ObjectUnsubscribedErrorImpl() {\n _super(this);\n this.name = 'ObjectUnsubscribedError';\n this.message = 'object unsubscribed';\n});\n","import { Observable } from './Observable';\nimport { Subscription, EMPTY_SUBSCRIPTION } from './Subscription';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { arrRemove } from './util/arrRemove';\nimport { errorContext } from './util/errorContext';\nexport class Subject extends Observable {\n constructor() {\n super();\n this.closed = false;\n this.currentObservers = null;\n this.observers = [];\n this.isStopped = false;\n this.hasError = false;\n this.thrownError = null;\n }\n lift(operator) {\n const subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n }\n _throwIfClosed() {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n }\n next(value) {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n if (!this.currentObservers) {\n this.currentObservers = Array.from(this.observers);\n }\n for (const observer of this.currentObservers) {\n observer.next(value);\n }\n }\n });\n }\n error(err) {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n this.hasError = this.isStopped = true;\n this.thrownError = err;\n const { observers } = this;\n while (observers.length) {\n observers.shift().error(err);\n }\n }\n });\n }\n complete() {\n errorContext(() => {\n this._throwIfClosed();\n if (!this.isStopped) {\n this.isStopped = true;\n const { observers } = this;\n while (observers.length) {\n observers.shift().complete();\n }\n }\n });\n }\n unsubscribe() {\n this.isStopped = this.closed = true;\n this.observers = this.currentObservers = null;\n }\n get observed() {\n var _a;\n return ((_a = this.observers) === null || _a === void 0 ? void 0 : _a.length) > 0;\n }\n _trySubscribe(subscriber) {\n this._throwIfClosed();\n return super._trySubscribe(subscriber);\n }\n _subscribe(subscriber) {\n this._throwIfClosed();\n this._checkFinalizedStatuses(subscriber);\n return this._innerSubscribe(subscriber);\n }\n _innerSubscribe(subscriber) {\n const { hasError, isStopped, observers } = this;\n if (hasError || isStopped) {\n return EMPTY_SUBSCRIPTION;\n }\n this.currentObservers = null;\n observers.push(subscriber);\n return new Subscription(() => {\n this.currentObservers = null;\n arrRemove(observers, subscriber);\n });\n }\n _checkFinalizedStatuses(subscriber) {\n const { hasError, thrownError, isStopped } = this;\n if (hasError) {\n subscriber.error(thrownError);\n }\n else if (isStopped) {\n subscriber.complete();\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 var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value);\n }\n error(err) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err);\n }\n complete() {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a);\n }\n _subscribe(subscriber) {\n var _a, _b;\n return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION;\n }\n}\n","export const COMPLETE_NOTIFICATION = (() => createNotification('C', undefined, undefined))();\nexport function errorNotification(error) {\n return createNotification('E', undefined, error);\n}\nexport function nextNotification(value) {\n return createNotification('N', value, undefined);\n}\nexport function createNotification(kind, value, error) {\n return {\n kind,\n value,\n error,\n };\n}\n","import { isFunction } from './util/isFunction';\nimport { isSubscription, Subscription } from './Subscription';\nimport { config } from './config';\nimport { reportUnhandledError } from './util/reportUnhandledError';\nimport { noop } from './util/noop';\nimport { nextNotification, errorNotification, COMPLETE_NOTIFICATION } from './NotificationFactories';\nimport { timeoutProvider } from './scheduler/timeoutProvider';\nimport { captureError } from './util/errorContext';\nexport class Subscriber extends Subscription {\n constructor(destination) {\n super();\n this.isStopped = false;\n if (destination) {\n this.destination = destination;\n if (isSubscription(destination)) {\n destination.add(this);\n }\n }\n else {\n this.destination = EMPTY_OBSERVER;\n }\n }\n static create(next, error, complete) {\n return new SafeSubscriber(next, error, complete);\n }\n next(value) {\n if (this.isStopped) {\n handleStoppedNotification(nextNotification(value), this);\n }\n else {\n this._next(value);\n }\n }\n error(err) {\n if (this.isStopped) {\n handleStoppedNotification(errorNotification(err), this);\n }\n else {\n this.isStopped = true;\n this._error(err);\n }\n }\n complete() {\n if (this.isStopped) {\n handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n }\n else {\n this.isStopped = true;\n this._complete();\n }\n }\n unsubscribe() {\n if (!this.closed) {\n this.isStopped = true;\n super.unsubscribe();\n this.destination = null;\n }\n }\n _next(value) {\n this.destination.next(value);\n }\n _error(err) {\n try {\n this.destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n _complete() {\n try {\n this.destination.complete();\n }\n finally {\n this.unsubscribe();\n }\n }\n}\nconst _bind = Function.prototype.bind;\nfunction bind(fn, thisArg) {\n return _bind.call(fn, thisArg);\n}\nclass ConsumerObserver {\n constructor(partialObserver) {\n this.partialObserver = partialObserver;\n }\n next(value) {\n const { partialObserver } = this;\n if (partialObserver.next) {\n try {\n partialObserver.next(value);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n }\n error(err) {\n const { partialObserver } = this;\n if (partialObserver.error) {\n try {\n partialObserver.error(err);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n else {\n handleUnhandledError(err);\n }\n }\n complete() {\n const { partialObserver } = this;\n if (partialObserver.complete) {\n try {\n partialObserver.complete();\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n }\n}\nexport class SafeSubscriber extends Subscriber {\n constructor(observerOrNext, error, complete) {\n super();\n let partialObserver;\n if (isFunction(observerOrNext) || !observerOrNext) {\n partialObserver = {\n next: (observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : undefined),\n error: error !== null && error !== void 0 ? error : undefined,\n complete: complete !== null && complete !== void 0 ? complete : undefined,\n };\n }\n else {\n let context;\n if (this && config.useDeprecatedNextContext) {\n context = Object.create(observerOrNext);\n context.unsubscribe = () => this.unsubscribe();\n partialObserver = {\n next: observerOrNext.next && bind(observerOrNext.next, context),\n error: observerOrNext.error && bind(observerOrNext.error, context),\n complete: observerOrNext.complete && bind(observerOrNext.complete, context),\n };\n }\n else {\n partialObserver = observerOrNext;\n }\n }\n this.destination = new ConsumerObserver(partialObserver);\n }\n}\nfunction handleUnhandledError(error) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n captureError(error);\n }\n else {\n reportUnhandledError(error);\n }\n}\nfunction defaultErrorHandler(err) {\n throw err;\n}\nfunction handleStoppedNotification(notification, subscriber) {\n const { onStoppedNotification } = config;\n onStoppedNotification && timeoutProvider.setTimeout(() => onStoppedNotification(notification, subscriber));\n}\nexport const EMPTY_OBSERVER = {\n closed: true,\n next: noop,\n error: defaultErrorHandler,\n complete: noop,\n};\n","import { createErrorClass } from './createErrorClass';\nexport const UnsubscriptionError = createErrorClass((_super) => function UnsubscriptionErrorImpl(errors) {\n _super(this);\n this.message = errors\n ? `${errors.length} errors occurred during unsubscription:\n${errors.map((err, i) => `${i + 1}) ${err.toString()}`).join('\\n ')}`\n : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n});\n","import { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { arrRemove } from './util/arrRemove';\nexport class Subscription {\n constructor(initialTeardown) {\n this.initialTeardown = initialTeardown;\n this.closed = false;\n this._parentage = null;\n this._finalizers = null;\n }\n unsubscribe() {\n let errors;\n if (!this.closed) {\n this.closed = true;\n const { _parentage } = this;\n if (_parentage) {\n this._parentage = null;\n if (Array.isArray(_parentage)) {\n for (const parent of _parentage) {\n parent.remove(this);\n }\n }\n else {\n _parentage.remove(this);\n }\n }\n const { initialTeardown: initialFinalizer } = this;\n if (isFunction(initialFinalizer)) {\n try {\n initialFinalizer();\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError ? e.errors : [e];\n }\n }\n const { _finalizers } = this;\n if (_finalizers) {\n this._finalizers = null;\n for (const finalizer of _finalizers) {\n try {\n execFinalizer(finalizer);\n }\n catch (err) {\n errors = errors !== null && errors !== void 0 ? errors : [];\n if (err instanceof UnsubscriptionError) {\n errors = [...errors, ...err.errors];\n }\n else {\n errors.push(err);\n }\n }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n }\n add(teardown) {\n var _a;\n if (teardown && teardown !== this) {\n if (this.closed) {\n execFinalizer(teardown);\n }\n else {\n if (teardown instanceof Subscription) {\n if (teardown.closed || teardown._hasParent(this)) {\n return;\n }\n teardown._addParent(this);\n }\n (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown);\n }\n }\n }\n _hasParent(parent) {\n const { _parentage } = this;\n return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n }\n _addParent(parent) {\n const { _parentage } = this;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n }\n _removeParent(parent) {\n const { _parentage } = this;\n if (_parentage === parent) {\n this._parentage = null;\n }\n else if (Array.isArray(_parentage)) {\n arrRemove(_parentage, parent);\n }\n }\n remove(teardown) {\n const { _finalizers } = this;\n _finalizers && arrRemove(_finalizers, teardown);\n if (teardown instanceof Subscription) {\n teardown._removeParent(this);\n }\n }\n}\nSubscription.EMPTY = (() => {\n const empty = new Subscription();\n empty.closed = true;\n return empty;\n})();\nexport const EMPTY_SUBSCRIPTION = Subscription.EMPTY;\nexport function isSubscription(value) {\n return (value instanceof Subscription ||\n (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe)));\n}\nfunction execFinalizer(finalizer) {\n if (isFunction(finalizer)) {\n finalizer();\n }\n else {\n finalizer.unsubscribe();\n }\n}\n","export const config = {\n onUnhandledError: null,\n onStoppedNotification: null,\n Promise: undefined,\n useDeprecatedSynchronousErrorHandling: false,\n useDeprecatedNextContext: false,\n};\n","import { EmptyError } from './util/EmptyError';\nimport { SafeSubscriber } from './Subscriber';\nexport function firstValueFrom(source, config) {\n const hasConfig = typeof config === 'object';\n return new Promise((resolve, reject) => {\n const subscriber = new SafeSubscriber({\n next: (value) => {\n resolve(value);\n subscriber.unsubscribe();\n },\n error: reject,\n complete: () => {\n if (hasConfig) {\n resolve(config.defaultValue);\n }\n else {\n reject(new EmptyError());\n }\n },\n });\n source.subscribe(subscriber);\n });\n}\n","import { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { refCount as higherOrderRefCount } from '../operators/refCount';\nimport { createOperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { hasLift } from '../util/lift';\nexport class ConnectableObservable extends Observable {\n constructor(source, subjectFactory) {\n super();\n this.source = source;\n this.subjectFactory = subjectFactory;\n this._subject = null;\n this._refCount = 0;\n this._connection = null;\n if (hasLift(source)) {\n this.lift = source.lift;\n }\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 _teardown() {\n this._refCount = 0;\n const { _connection } = this;\n this._subject = this._connection = null;\n _connection === null || _connection === void 0 ? void 0 : _connection.unsubscribe();\n }\n connect() {\n let connection = this._connection;\n if (!connection) {\n connection = this._connection = new Subscription();\n const subject = this.getSubject();\n connection.add(this.source.subscribe(createOperatorSubscriber(subject, undefined, () => {\n this._teardown();\n subject.complete();\n }, (err) => {\n this._teardown();\n subject.error(err);\n }, () => this._teardown())));\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}\n","import { Observable } from '../Observable';\nimport { argsArgArrayOrObject } from '../util/argsArgArrayOrObject';\nimport { from } from './from';\nimport { identity } from '../util/identity';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { popResultSelector, popScheduler } from '../util/args';\nimport { createObject } from '../util/createObject';\nimport { createOperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function combineLatest(...args) {\n const scheduler = popScheduler(args);\n const resultSelector = popResultSelector(args);\n const { args: observables, keys } = argsArgArrayOrObject(args);\n if (observables.length === 0) {\n return from([], scheduler);\n }\n const result = new Observable(combineLatestInit(observables, scheduler, keys\n ?\n (values) => createObject(keys, values)\n :\n identity));\n return resultSelector ? result.pipe(mapOneOrManyArgs(resultSelector)) : result;\n}\nexport function combineLatestInit(observables, scheduler, valueTransform = identity) {\n return (subscriber) => {\n maybeSchedule(scheduler, () => {\n const { length } = observables;\n const values = new Array(length);\n let active = length;\n let remainingFirstValues = length;\n for (let i = 0; i < length; i++) {\n maybeSchedule(scheduler, () => {\n const source = from(observables[i], scheduler);\n let hasFirstValue = false;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n values[i] = value;\n if (!hasFirstValue) {\n hasFirstValue = true;\n remainingFirstValues--;\n }\n if (!remainingFirstValues) {\n subscriber.next(valueTransform(values.slice()));\n }\n }, () => {\n if (!--active) {\n subscriber.complete();\n }\n }));\n }, subscriber);\n }\n }, subscriber);\n };\n}\nfunction maybeSchedule(scheduler, execute, subscription) {\n if (scheduler) {\n executeSchedule(subscription, scheduler, execute);\n }\n else {\n execute();\n }\n}\n","import { concatAll } from '../operators/concatAll';\nimport { popScheduler } from '../util/args';\nimport { from } from './from';\nexport function concat(...args) {\n return concatAll()(from(args, popScheduler(args)));\n}\n","import { mergeAll } from './mergeAll';\nexport function concatAll() {\n return mergeAll(1);\n}\n","import { Observable } from '../Observable';\nimport { innerFrom } from './innerFrom';\nexport function defer(observableFactory) {\n return new Observable((subscriber) => {\n innerFrom(observableFactory()).subscribe(subscriber);\n });\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 { argsArgArrayOrObject } from '../util/argsArgArrayOrObject';\nimport { innerFrom } from './innerFrom';\nimport { popResultSelector } from '../util/args';\nimport { createOperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nimport { createObject } from '../util/createObject';\nexport function forkJoin(...args) {\n const resultSelector = popResultSelector(args);\n const { args: sources, keys } = argsArgArrayOrObject(args);\n const result = new Observable((subscriber) => {\n const { length } = sources;\n if (!length) {\n subscriber.complete();\n return;\n }\n const values = new Array(length);\n let remainingCompletions = length;\n let remainingEmissions = length;\n for (let sourceIndex = 0; sourceIndex < length; sourceIndex++) {\n let hasValue = false;\n innerFrom(sources[sourceIndex]).subscribe(createOperatorSubscriber(subscriber, (value) => {\n if (!hasValue) {\n hasValue = true;\n remainingEmissions--;\n }\n values[sourceIndex] = value;\n }, () => remainingCompletions--, undefined, () => {\n if (!remainingCompletions || !hasValue) {\n if (!remainingEmissions) {\n subscriber.next(keys ? createObject(keys, values) : values);\n }\n subscriber.complete();\n }\n }));\n }\n });\n return resultSelector ? result.pipe(mapOneOrManyArgs(resultSelector)) : result;\n}\n","import { Observable } from '../Observable';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function scheduleAsyncIterable(input, scheduler) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n return new Observable((subscriber) => {\n executeSchedule(subscriber, scheduler, () => {\n const iterator = input[Symbol.asyncIterator]();\n executeSchedule(subscriber, scheduler, () => {\n iterator.next().then((result) => {\n if (result.done) {\n subscriber.complete();\n }\n else {\n subscriber.next(result.value);\n }\n });\n }, 0, true);\n });\n });\n}\n","import { scheduled } from '../scheduled/scheduled';\nimport { innerFrom } from './innerFrom';\nexport function from(input, scheduler) {\n return scheduler ? scheduled(input, scheduler) : innerFrom(input);\n}\n","import { scheduleObservable } from './scheduleObservable';\nimport { schedulePromise } from './schedulePromise';\nimport { scheduleArray } from './scheduleArray';\nimport { scheduleIterable } from './scheduleIterable';\nimport { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isPromise } from '../util/isPromise';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isIterable } from '../util/isIterable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isReadableStreamLike } from '../util/isReadableStreamLike';\nimport { scheduleReadableStreamLike } from './scheduleReadableStreamLike';\nexport function scheduled(input, scheduler) {\n if (input != null) {\n if (isInteropObservable(input)) {\n return scheduleObservable(input, scheduler);\n }\n if (isArrayLike(input)) {\n return scheduleArray(input, scheduler);\n }\n if (isPromise(input)) {\n return schedulePromise(input, scheduler);\n }\n if (isAsyncIterable(input)) {\n return scheduleAsyncIterable(input, scheduler);\n }\n if (isIterable(input)) {\n return scheduleIterable(input, scheduler);\n }\n if (isReadableStreamLike(input)) {\n return scheduleReadableStreamLike(input, scheduler);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nexport function scheduleObservable(input, scheduler) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n","import { Observable } from '../Observable';\nexport function scheduleArray(input, scheduler) {\n return new Observable((subscriber) => {\n let i = 0;\n return scheduler.schedule(function () {\n if (i === input.length) {\n subscriber.complete();\n }\n else {\n subscriber.next(input[i++]);\n if (!subscriber.closed) {\n this.schedule();\n }\n }\n });\n });\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nexport function schedulePromise(input, scheduler) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n","import { Observable } from '../Observable';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from '../util/isFunction';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function scheduleIterable(input, scheduler) {\n return new Observable((subscriber) => {\n let iterator;\n executeSchedule(subscriber, scheduler, () => {\n iterator = input[Symbol_iterator]();\n executeSchedule(subscriber, scheduler, () => {\n let value;\n let done;\n try {\n ({ value, done } = iterator.next());\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 }\n }, 0, true);\n });\n return () => isFunction(iterator === null || iterator === void 0 ? void 0 : iterator.return) && iterator.return();\n });\n}\n","import { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nexport function scheduleReadableStreamLike(input, scheduler) {\n return scheduleAsyncIterable(readableStreamLikeToAsyncGenerator(input), scheduler);\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { Observable } from '../Observable';\nimport { mergeMap } from '../operators/mergeMap';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isFunction } from '../util/isFunction';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nconst nodeEventEmitterMethods = ['addListener', 'removeListener'];\nconst eventTargetMethods = ['addEventListener', 'removeEventListener'];\nconst jqueryMethods = ['on', 'off'];\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(mapOneOrManyArgs(resultSelector));\n }\n const [add, remove] = isEventTarget(target)\n ? eventTargetMethods.map((methodName) => (handler) => target[methodName](eventName, handler, options))\n :\n isNodeStyleEventEmitter(target)\n ? nodeEventEmitterMethods.map(toCommonHandlerRegistry(target, eventName))\n : isJQueryStyleEventEmitter(target)\n ? jqueryMethods.map(toCommonHandlerRegistry(target, eventName))\n : [];\n if (!add) {\n if (isArrayLike(target)) {\n return mergeMap((subTarget) => fromEvent(subTarget, eventName, options))(innerFrom(target));\n }\n }\n if (!add) {\n throw new TypeError('Invalid event target');\n }\n return new Observable((subscriber) => {\n const handler = (...args) => subscriber.next(1 < args.length ? args : args[0]);\n add(handler);\n return () => remove(handler);\n });\n}\nfunction toCommonHandlerRegistry(target, eventName) {\n return (methodName) => (handler) => target[methodName](eventName, handler);\n}\nfunction isNodeStyleEventEmitter(target) {\n return isFunction(target.addListener) && isFunction(target.removeListener);\n}\nfunction isJQueryStyleEventEmitter(target) {\n return isFunction(target.on) && isFunction(target.off);\n}\nfunction isEventTarget(target) {\n return isFunction(target.addEventListener) && isFunction(target.removeEventListener);\n}\n","import { __asyncValues, __awaiter } from \"tslib\";\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isPromise } from '../util/isPromise';\nimport { Observable } from '../Observable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isIterable } from '../util/isIterable';\nimport { isReadableStreamLike, readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nimport { isFunction } from '../util/isFunction';\nimport { reportUnhandledError } from '../util/reportUnhandledError';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function innerFrom(input) {\n if (input instanceof Observable) {\n return input;\n }\n if (input != null) {\n if (isInteropObservable(input)) {\n return fromInteropObservable(input);\n }\n if (isArrayLike(input)) {\n return fromArrayLike(input);\n }\n if (isPromise(input)) {\n return fromPromise(input);\n }\n if (isAsyncIterable(input)) {\n return fromAsyncIterable(input);\n }\n if (isIterable(input)) {\n return fromIterable(input);\n }\n if (isReadableStreamLike(input)) {\n return fromReadableStreamLike(input);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\nexport function fromInteropObservable(obj) {\n return new Observable((subscriber) => {\n const obs = obj[Symbol_observable]();\n if (isFunction(obs.subscribe)) {\n return obs.subscribe(subscriber);\n }\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n });\n}\nexport function fromArrayLike(array) {\n return new Observable((subscriber) => {\n for (let i = 0; i < array.length && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n });\n}\nexport function fromPromise(promise) {\n return new Observable((subscriber) => {\n promise\n .then((value) => {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, (err) => subscriber.error(err))\n .then(null, reportUnhandledError);\n });\n}\nexport function fromIterable(iterable) {\n return new Observable((subscriber) => {\n for (const value of iterable) {\n subscriber.next(value);\n if (subscriber.closed) {\n return;\n }\n }\n subscriber.complete();\n });\n}\nexport function fromAsyncIterable(asyncIterable) {\n return new Observable((subscriber) => {\n process(asyncIterable, subscriber).catch((err) => subscriber.error(err));\n });\n}\nexport function fromReadableStreamLike(readableStream) {\n return fromAsyncIterable(readableStreamLikeToAsyncGenerator(readableStream));\n}\nfunction process(asyncIterable, subscriber) {\n var asyncIterable_1, asyncIterable_1_1;\n var e_1, _a;\n return __awaiter(this, void 0, void 0, function* () {\n try {\n for (asyncIterable_1 = __asyncValues(asyncIterable); asyncIterable_1_1 = yield asyncIterable_1.next(), !asyncIterable_1_1.done;) {\n const value = asyncIterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return)) yield _a.call(asyncIterable_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n subscriber.complete();\n });\n}\n","import { mergeAll } from '../operators/mergeAll';\nimport { innerFrom } from './innerFrom';\nimport { EMPTY } from './empty';\nimport { popNumber, popScheduler } from '../util/args';\nimport { from } from './from';\nexport function merge(...args) {\n const scheduler = popScheduler(args);\n const concurrent = popNumber(args, Infinity);\n const sources = args;\n return !sources.length\n ?\n EMPTY\n : sources.length === 1\n ?\n innerFrom(sources[0])\n :\n mergeAll(concurrent)(from(sources, scheduler));\n}\n","import { popScheduler } from '../util/args';\nimport { from } from './from';\nexport function of(...args) {\n const scheduler = popScheduler(args);\n return from(args, scheduler);\n}\n","import { Observable } from '../Observable';\nimport { isFunction } from '../util/isFunction';\nexport function throwError(errorOrErrorFactory, scheduler) {\n const errorFactory = isFunction(errorOrErrorFactory) ? errorOrErrorFactory : () => errorOrErrorFactory;\n const init = (subscriber) => subscriber.error(errorFactory());\n return new Observable(scheduler ? (subscriber) => scheduler.schedule(init, 0, subscriber) : init);\n}\n","import { Observable } from '../Observable';\nimport { async as asyncScheduler } from '../scheduler/async';\nimport { isScheduler } from '../util/isScheduler';\nimport { isValidDate } from '../util/isDate';\nexport function timer(dueTime = 0, intervalOrScheduler, scheduler = asyncScheduler) {\n let intervalDuration = -1;\n if (intervalOrScheduler != null) {\n if (isScheduler(intervalOrScheduler)) {\n scheduler = intervalOrScheduler;\n }\n else {\n intervalDuration = intervalOrScheduler;\n }\n }\n return new Observable((subscriber) => {\n let due = isValidDate(dueTime) ? +dueTime - scheduler.now() : dueTime;\n if (due < 0) {\n due = 0;\n }\n let n = 0;\n return scheduler.schedule(function () {\n if (!subscriber.closed) {\n subscriber.next(n++);\n if (0 <= intervalDuration) {\n this.schedule(undefined, intervalDuration);\n }\n else {\n subscriber.complete();\n }\n }\n }, due);\n });\n}\n","import { Subscriber } from '../Subscriber';\nexport function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {\n return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);\n}\nexport class OperatorSubscriber extends Subscriber {\n constructor(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) {\n super(destination);\n this.onFinalize = onFinalize;\n this.shouldUnsubscribe = shouldUnsubscribe;\n this._next = onNext\n ? function (value) {\n try {\n onNext(value);\n }\n catch (err) {\n destination.error(err);\n }\n }\n : super._next;\n this._error = onError\n ? function (err) {\n try {\n onError(err);\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : super._error;\n this._complete = onComplete\n ? function () {\n try {\n onComplete();\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : super._complete;\n }\n unsubscribe() {\n var _a;\n if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {\n const { closed } = this;\n super.unsubscribe();\n !closed && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this));\n }\n }\n}\n","import { asyncScheduler } from '../scheduler/async';\nimport { audit } from './audit';\nimport { timer } from '../observable/timer';\nexport function auditTime(duration, scheduler = asyncScheduler) {\n return audit(() => timer(duration, scheduler));\n}\n","import { operate } from '../util/lift';\nimport { innerFrom } from '../observable/innerFrom';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function audit(durationSelector) {\n return operate((source, subscriber) => {\n let hasValue = false;\n let lastValue = null;\n let durationSubscriber = null;\n let isComplete = false;\n const endDuration = () => {\n durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();\n durationSubscriber = null;\n if (hasValue) {\n hasValue = false;\n const value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n isComplete && subscriber.complete();\n };\n const cleanupDuration = () => {\n durationSubscriber = null;\n isComplete && subscriber.complete();\n };\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n hasValue = true;\n lastValue = value;\n if (!durationSubscriber) {\n innerFrom(durationSelector(value)).subscribe((durationSubscriber = createOperatorSubscriber(subscriber, endDuration, cleanupDuration)));\n }\n }, () => {\n isComplete = true;\n (!hasValue || !durationSubscriber || durationSubscriber.closed) && subscriber.complete();\n }));\n });\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { operate } from '../util/lift';\nexport function catchError(selector) {\n return operate((source, subscriber) => {\n let innerSub = null;\n let syncUnsub = false;\n let handledResult;\n innerSub = source.subscribe(createOperatorSubscriber(subscriber, undefined, undefined, (err) => {\n handledResult = innerFrom(selector(err, catchError(selector)(source)));\n if (innerSub) {\n innerSub.unsubscribe();\n innerSub = null;\n handledResult.subscribe(subscriber);\n }\n else {\n syncUnsub = true;\n }\n }));\n if (syncUnsub) {\n innerSub.unsubscribe();\n innerSub = null;\n handledResult.subscribe(subscriber);\n }\n });\n}\n","import { mergeMap } from './mergeMap';\nimport { isFunction } from '../util/isFunction';\nexport function concatMap(project, resultSelector) {\n return isFunction(resultSelector) ? mergeMap(project, resultSelector, 1) : mergeMap(project, 1);\n}\n","import { asyncScheduler } from '../scheduler/async';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function debounceTime(dueTime, scheduler = asyncScheduler) {\n return operate((source, subscriber) => {\n let activeTask = null;\n let lastValue = null;\n let lastTime = null;\n const emit = () => {\n if (activeTask) {\n activeTask.unsubscribe();\n activeTask = null;\n const value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n };\n function emitWhenIdle() {\n const targetTime = lastTime + dueTime;\n const now = scheduler.now();\n if (now < targetTime) {\n activeTask = this.schedule(undefined, targetTime - now);\n subscriber.add(activeTask);\n return;\n }\n emit();\n }\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n lastValue = value;\n lastTime = scheduler.now();\n if (!activeTask) {\n activeTask = scheduler.schedule(emitWhenIdle, dueTime);\n subscriber.add(activeTask);\n }\n }, () => {\n emit();\n subscriber.complete();\n }, undefined, () => {\n lastValue = activeTask = null;\n }));\n });\n}\n","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function defaultIfEmpty(defaultValue) {\n return operate((source, subscriber) => {\n let hasValue = false;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n hasValue = true;\n subscriber.next(value);\n }, () => {\n if (!hasValue) {\n subscriber.next(defaultValue);\n }\n subscriber.complete();\n }));\n });\n}\n","import { concat } from '../observable/concat';\nimport { take } from './take';\nimport { ignoreElements } from './ignoreElements';\nimport { mapTo } from './mapTo';\nimport { mergeMap } from './mergeMap';\nimport { innerFrom } from '../observable/innerFrom';\nexport function delayWhen(delayDurationSelector, subscriptionDelay) {\n if (subscriptionDelay) {\n return (source) => concat(subscriptionDelay.pipe(take(1), ignoreElements()), source.pipe(delayWhen(delayDurationSelector)));\n }\n return mergeMap((value, index) => innerFrom(delayDurationSelector(value, index)).pipe(take(1), mapTo(value)));\n}\n","import { asyncScheduler } from '../scheduler/async';\nimport { delayWhen } from './delayWhen';\nimport { timer } from '../observable/timer';\nexport function delay(due, scheduler = asyncScheduler) {\n const duration = timer(due, scheduler);\n return delayWhen(() => duration);\n}\n","import { identity } from '../util/identity';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function distinctUntilChanged(comparator, keySelector = identity) {\n comparator = comparator !== null && comparator !== void 0 ? comparator : defaultCompare;\n return operate((source, subscriber) => {\n let previousKey;\n let first = true;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n const currentKey = keySelector(value);\n if (first || !comparator(previousKey, currentKey)) {\n first = false;\n previousKey = currentKey;\n subscriber.next(value);\n }\n }));\n });\n}\nfunction defaultCompare(a, b) {\n return a === b;\n}\n","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function filter(predicate, thisArg) {\n return operate((source, subscriber) => {\n let index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => predicate.call(thisArg, value, index++) && subscriber.next(value)));\n });\n}\n","import { operate } from '../util/lift';\nexport function finalize(callback) {\n return operate((source, subscriber) => {\n try {\n source.subscribe(subscriber);\n }\n finally {\n subscriber.add(callback);\n }\n });\n}\n","import { EmptyError } from '../util/EmptyError';\nimport { filter } from './filter';\nimport { take } from './take';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { identity } from '../util/identity';\nexport function first(predicate, defaultValue) {\n const hasDefaultValue = arguments.length >= 2;\n return (source) => source.pipe(predicate ? filter((v, i) => predicate(v, i, source)) : identity, take(1), hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(() => new EmptyError()));\n}\n","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\nexport function ignoreElements() {\n return operate((source, subscriber) => {\n source.subscribe(createOperatorSubscriber(subscriber, noop));\n });\n}\n","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function map(project, thisArg) {\n return operate((source, subscriber) => {\n let index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n subscriber.next(project.call(thisArg, value, index++));\n }));\n });\n}\n","import { map } from './map';\nexport function mapTo(value) {\n return map(() => value);\n}\n","import { mergeMap } from './mergeMap';\nimport { identity } from '../util/identity';\nexport function mergeAll(concurrent = Infinity) {\n return mergeMap(identity, concurrent);\n}\n","import { map } from './map';\nimport { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { mergeInternals } from './mergeInternals';\nimport { isFunction } from '../util/isFunction';\nexport function mergeMap(project, resultSelector, concurrent = Infinity) {\n if (isFunction(resultSelector)) {\n return mergeMap((a, i) => map((b, ii) => resultSelector(a, b, i, ii))(innerFrom(project(a, i))), concurrent);\n }\n else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return operate((source, subscriber) => mergeInternals(source, subscriber, project, concurrent));\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { executeSchedule } from '../util/executeSchedule';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function mergeInternals(source, subscriber, project, concurrent, onBeforeNext, expand, innerSubScheduler, additionalFinalizer) {\n const buffer = [];\n let active = 0;\n let index = 0;\n let isComplete = false;\n const checkComplete = () => {\n if (isComplete && !buffer.length && !active) {\n subscriber.complete();\n }\n };\n const outerNext = (value) => (active < concurrent ? doInnerSub(value) : buffer.push(value));\n const doInnerSub = (value) => {\n expand && subscriber.next(value);\n active++;\n let innerComplete = false;\n innerFrom(project(value, index++)).subscribe(createOperatorSubscriber(subscriber, (innerValue) => {\n onBeforeNext === null || onBeforeNext === void 0 ? void 0 : onBeforeNext(innerValue);\n if (expand) {\n outerNext(innerValue);\n }\n else {\n subscriber.next(innerValue);\n }\n }, () => {\n innerComplete = true;\n }, undefined, () => {\n if (innerComplete) {\n try {\n active--;\n while (buffer.length && active < concurrent) {\n const bufferedValue = buffer.shift();\n if (innerSubScheduler) {\n executeSchedule(subscriber, innerSubScheduler, () => doInnerSub(bufferedValue));\n }\n else {\n doInnerSub(bufferedValue);\n }\n }\n checkComplete();\n }\n catch (err) {\n subscriber.error(err);\n }\n }\n }));\n };\n source.subscribe(createOperatorSubscriber(subscriber, outerNext, () => {\n isComplete = true;\n checkComplete();\n }));\n return () => {\n additionalFinalizer === null || additionalFinalizer === void 0 ? void 0 : additionalFinalizer();\n };\n}\n","import { executeSchedule } from '../util/executeSchedule';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function observeOn(scheduler, delay = 0) {\n return operate((source, subscriber) => {\n source.subscribe(createOperatorSubscriber(subscriber, (value) => executeSchedule(subscriber, scheduler, () => subscriber.next(value), delay), () => executeSchedule(subscriber, scheduler, () => subscriber.complete(), delay), (err) => executeSchedule(subscriber, scheduler, () => subscriber.error(err), delay)));\n });\n}\n","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function pairwise() {\n return operate((source, subscriber) => {\n let prev;\n let hasPrev = false;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n const p = prev;\n prev = value;\n hasPrev && subscriber.next([p, value]);\n hasPrev = true;\n }));\n });\n}\n","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function refCount() {\n return operate((source, subscriber) => {\n let connection = null;\n source._refCount++;\n const refCounter = createOperatorSubscriber(subscriber, undefined, undefined, undefined, () => {\n if (!source || source._refCount <= 0 || 0 < --source._refCount) {\n connection = null;\n return;\n }\n const sharedConnection = source._connection;\n const conn = connection;\n connection = null;\n if (sharedConnection && (!conn || sharedConnection === conn)) {\n sharedConnection.unsubscribe();\n }\n subscriber.unsubscribe();\n });\n source.subscribe(refCounter);\n if (!refCounter.closed) {\n connection = source.connect();\n }\n });\n}\n","import { createOperatorSubscriber } from './OperatorSubscriber';\nexport function scanInternals(accumulator, seed, hasSeed, emitOnNext, emitBeforeComplete) {\n return (source, subscriber) => {\n let hasState = hasSeed;\n let state = seed;\n let index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n const i = index++;\n state = hasState\n ?\n accumulator(state, value, i)\n :\n ((hasState = true), value);\n emitOnNext && subscriber.next(state);\n }, emitBeforeComplete &&\n (() => {\n hasState && subscriber.next(state);\n subscriber.complete();\n })));\n };\n}\n","import { operate } from '../util/lift';\nimport { scanInternals } from './scanInternals';\nexport function scan(accumulator, seed) {\n return operate(scanInternals(accumulator, seed, arguments.length >= 2, true));\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { Subject } from '../Subject';\nimport { SafeSubscriber } from '../Subscriber';\nimport { operate } from '../util/lift';\nexport function share(options = {}) {\n const { connector = () => new Subject(), resetOnError = true, resetOnComplete = true, resetOnRefCountZero = true } = options;\n return (wrapperSource) => {\n let connection;\n let resetConnection;\n let subject;\n let refCount = 0;\n let hasCompleted = false;\n let hasErrored = false;\n const cancelReset = () => {\n resetConnection === null || resetConnection === void 0 ? void 0 : resetConnection.unsubscribe();\n resetConnection = undefined;\n };\n const reset = () => {\n cancelReset();\n connection = subject = undefined;\n hasCompleted = hasErrored = false;\n };\n const resetAndUnsubscribe = () => {\n const conn = connection;\n reset();\n conn === null || conn === void 0 ? void 0 : conn.unsubscribe();\n };\n return operate((source, subscriber) => {\n refCount++;\n if (!hasErrored && !hasCompleted) {\n cancelReset();\n }\n const dest = (subject = subject !== null && subject !== void 0 ? subject : connector());\n subscriber.add(() => {\n refCount--;\n if (refCount === 0 && !hasErrored && !hasCompleted) {\n resetConnection = handleReset(resetAndUnsubscribe, resetOnRefCountZero);\n }\n });\n dest.subscribe(subscriber);\n if (!connection &&\n refCount > 0) {\n connection = new SafeSubscriber({\n next: (value) => dest.next(value),\n error: (err) => {\n hasErrored = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnError, err);\n dest.error(err);\n },\n complete: () => {\n hasCompleted = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnComplete);\n dest.complete();\n },\n });\n innerFrom(source).subscribe(connection);\n }\n })(wrapperSource);\n };\n}\nfunction handleReset(reset, on, ...args) {\n if (on === true) {\n reset();\n return;\n }\n if (on === false) {\n return;\n }\n const onSubscriber = new SafeSubscriber({\n next: () => {\n onSubscriber.unsubscribe();\n reset();\n },\n });\n return innerFrom(on(...args)).subscribe(onSubscriber);\n}\n","import { ReplaySubject } from '../ReplaySubject';\nimport { share } from './share';\nexport function shareReplay(configOrBufferSize, windowTime, scheduler) {\n let bufferSize;\n let refCount = false;\n if (configOrBufferSize && typeof configOrBufferSize === 'object') {\n ({ bufferSize = Infinity, windowTime = Infinity, refCount = false, scheduler } = configOrBufferSize);\n }\n else {\n bufferSize = (configOrBufferSize !== null && configOrBufferSize !== void 0 ? configOrBufferSize : Infinity);\n }\n return share({\n connector: () => new ReplaySubject(bufferSize, windowTime, scheduler),\n resetOnError: true,\n resetOnComplete: false,\n resetOnRefCountZero: refCount,\n });\n}\n","import { filter } from './filter';\nexport function skip(count) {\n return filter((_, index) => count <= index);\n}\n","import { concat } from '../observable/concat';\nimport { popScheduler } from '../util/args';\nimport { operate } from '../util/lift';\nexport function startWith(...values) {\n const scheduler = popScheduler(values);\n return operate((source, subscriber) => {\n (scheduler ? concat(values, source, scheduler) : concat(values, source)).subscribe(subscriber);\n });\n}\n","import { operate } from '../util/lift';\nexport function subscribeOn(scheduler, delay = 0) {\n return operate((source, subscriber) => {\n subscriber.add(scheduler.schedule(() => source.subscribe(subscriber), delay));\n });\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function switchMap(project, resultSelector) {\n return operate((source, subscriber) => {\n let innerSubscriber = null;\n let index = 0;\n let isComplete = false;\n const checkComplete = () => isComplete && !innerSubscriber && subscriber.complete();\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n innerSubscriber === null || innerSubscriber === void 0 ? void 0 : innerSubscriber.unsubscribe();\n let innerIndex = 0;\n const outerIndex = index++;\n innerFrom(project(value, outerIndex)).subscribe((innerSubscriber = createOperatorSubscriber(subscriber, (innerValue) => subscriber.next(resultSelector ? resultSelector(value, innerValue, outerIndex, innerIndex++) : innerValue), () => {\n innerSubscriber = null;\n checkComplete();\n })));\n }, () => {\n isComplete = true;\n checkComplete();\n }));\n });\n}\n","import { EMPTY } from '../observable/empty';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function take(count) {\n return count <= 0\n ?\n () => EMPTY\n : operate((source, subscriber) => {\n let seen = 0;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n if (++seen <= count) {\n subscriber.next(value);\n if (count <= seen) {\n subscriber.complete();\n }\n }\n }));\n });\n}\n","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nimport { noop } from '../util/noop';\nexport function takeUntil(notifier) {\n return operate((source, subscriber) => {\n innerFrom(notifier).subscribe(createOperatorSubscriber(subscriber, () => subscriber.complete(), noop));\n !subscriber.closed && source.subscribe(subscriber);\n });\n}\n","import { isFunction } from '../util/isFunction';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { identity } from '../util/identity';\nexport function tap(observerOrNext, error, complete) {\n const tapObserver = isFunction(observerOrNext) || error || complete\n ?\n { next: observerOrNext, error, complete }\n : observerOrNext;\n return tapObserver\n ? operate((source, subscriber) => {\n var _a;\n (_a = tapObserver.subscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n let isUnsub = true;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n var _a;\n (_a = tapObserver.next) === null || _a === void 0 ? void 0 : _a.call(tapObserver, value);\n subscriber.next(value);\n }, () => {\n var _a;\n isUnsub = false;\n (_a = tapObserver.complete) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n subscriber.complete();\n }, (err) => {\n var _a;\n isUnsub = false;\n (_a = tapObserver.error) === null || _a === void 0 ? void 0 : _a.call(tapObserver, err);\n subscriber.error(err);\n }, () => {\n var _a, _b;\n if (isUnsub) {\n (_a = tapObserver.unsubscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);\n }\n (_b = tapObserver.finalize) === null || _b === void 0 ? void 0 : _b.call(tapObserver);\n }));\n })\n :\n identity;\n}\n","import { EmptyError } from '../util/EmptyError';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function throwIfEmpty(errorFactory = defaultErrorFactory) {\n return operate((source, subscriber) => {\n let hasValue = false;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n hasValue = true;\n subscriber.next(value);\n }, () => (hasValue ? subscriber.complete() : subscriber.error(errorFactory()))));\n });\n}\nfunction defaultErrorFactory() {\n return new EmptyError();\n}\n","import { asyncScheduler } from '../scheduler/async';\nimport { isValidDate } from '../util/isDate';\nimport { operate } from '../util/lift';\nimport { innerFrom } from '../observable/innerFrom';\nimport { createErrorClass } from '../util/createErrorClass';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { executeSchedule } from '../util/executeSchedule';\nexport const TimeoutError = createErrorClass((_super) => function TimeoutErrorImpl(info = null) {\n _super(this);\n this.message = 'Timeout has occurred';\n this.name = 'TimeoutError';\n this.info = info;\n});\nexport function timeout(config, schedulerArg) {\n const { first, each, with: _with = timeoutErrorFactory, scheduler = schedulerArg !== null && schedulerArg !== void 0 ? schedulerArg : asyncScheduler, meta = null, } = (isValidDate(config) ? { first: config } : typeof config === 'number' ? { each: config } : config);\n if (first == null && each == null) {\n throw new TypeError('No timeout provided.');\n }\n return operate((source, subscriber) => {\n let originalSourceSubscription;\n let timerSubscription;\n let lastValue = null;\n let seen = 0;\n const startTimer = (delay) => {\n timerSubscription = executeSchedule(subscriber, scheduler, () => {\n try {\n originalSourceSubscription.unsubscribe();\n innerFrom(_with({\n meta,\n lastValue,\n seen,\n })).subscribe(subscriber);\n }\n catch (err) {\n subscriber.error(err);\n }\n }, delay);\n };\n originalSourceSubscription = source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.unsubscribe();\n seen++;\n subscriber.next((lastValue = value));\n each > 0 && startTimer(each);\n }, undefined, undefined, () => {\n if (!(timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.closed)) {\n timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.unsubscribe();\n }\n lastValue = null;\n }));\n !seen && startTimer(first != null ? (typeof first === 'number' ? first : +first - scheduler.now()) : each);\n });\n}\nfunction timeoutErrorFactory(info) {\n throw new TimeoutError(info);\n}\n","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nimport { identity } from '../util/identity';\nimport { noop } from '../util/noop';\nimport { popResultSelector } from '../util/args';\nexport function withLatestFrom(...inputs) {\n const project = popResultSelector(inputs);\n return operate((source, subscriber) => {\n const len = inputs.length;\n const otherValues = new Array(len);\n let hasValue = inputs.map(() => false);\n let ready = false;\n for (let i = 0; i < len; i++) {\n innerFrom(inputs[i]).subscribe(createOperatorSubscriber(subscriber, (value) => {\n otherValues[i] = value;\n if (!ready && !hasValue[i]) {\n hasValue[i] = true;\n (ready = hasValue.every(identity)) && (hasValue = null);\n }\n }, noop));\n }\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n if (ready) {\n const values = [value, ...otherValues];\n subscriber.next(project ? project(...values) : values);\n }\n }));\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 const intervalProvider = {\n setInterval(handler, timeout, ...args) {\n const { delegate } = intervalProvider;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setInterval) {\n return delegate.setInterval(handler, timeout, ...args);\n }\n return setInterval(handler, timeout, ...args);\n },\n clearInterval(handle) {\n const { delegate } = intervalProvider;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearInterval) || clearInterval)(handle);\n },\n delegate: undefined,\n};\n","import { Action } from './Action';\nimport { intervalProvider } from './intervalProvider';\nimport { arrRemove } from '../util/arrRemove';\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 var _a;\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 = (_a = this.id) !== null && _a !== void 0 ? _a : this.requestAsyncId(scheduler, this.id, delay);\n return this;\n }\n requestAsyncId(scheduler, _id, delay = 0) {\n return intervalProvider.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 if (id != null) {\n intervalProvider.clearInterval(id);\n }\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;\n try {\n this.work(state);\n }\n catch (e) {\n errored = true;\n errorValue = e ? e : new Error('Scheduled action threw falsy error');\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n }\n unsubscribe() {\n if (!this.closed) {\n const { id, scheduler } = this;\n const { actions } = scheduler;\n this.work = this.state = this.scheduler = null;\n this.pending = false;\n arrRemove(actions, this);\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n this.delay = null;\n super.unsubscribe();\n }\n }\n}\n","import { dateTimestampProvider } from './scheduler/dateTimestampProvider';\nexport class Scheduler {\n constructor(schedulerActionCtor, now = Scheduler.now) {\n this.schedulerActionCtor = schedulerActionCtor;\n this.now = now;\n }\n schedule(work, delay = 0, state) {\n return new this.schedulerActionCtor(this, work).schedule(state, delay);\n }\n}\nScheduler.now = dateTimestampProvider.now;\n","import { Scheduler } from '../Scheduler';\nexport class AsyncScheduler extends Scheduler {\n constructor(SchedulerAction, now = Scheduler.now) {\n super(SchedulerAction, now);\n this.actions = [];\n this._active = false;\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","let nextHandle = 1;\nlet resolved;\nconst activeHandles = {};\nfunction findAndClearHandle(handle) {\n if (handle in activeHandles) {\n delete activeHandles[handle];\n return true;\n }\n return false;\n}\nexport const Immediate = {\n setImmediate(cb) {\n const handle = nextHandle++;\n activeHandles[handle] = true;\n if (!resolved) {\n resolved = Promise.resolve();\n }\n resolved.then(() => findAndClearHandle(handle) && cb());\n return handle;\n },\n clearImmediate(handle) {\n findAndClearHandle(handle);\n },\n};\nexport const TestTools = {\n pending() {\n return Object.keys(activeHandles).length;\n }\n};\n","import { Immediate } from '../util/Immediate';\nconst { setImmediate, clearImmediate } = Immediate;\nexport const immediateProvider = {\n setImmediate(...args) {\n const { delegate } = immediateProvider;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.setImmediate) || setImmediate)(...args);\n },\n clearImmediate(handle) {\n const { delegate } = immediateProvider;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearImmediate) || clearImmediate)(handle);\n },\n delegate: undefined,\n};\n","import { AsapAction } from './AsapAction';\nimport { AsapScheduler } from './AsapScheduler';\nexport const asapScheduler = new AsapScheduler(AsapAction);\nexport const asap = asapScheduler;\n","import { AsyncScheduler } from './AsyncScheduler';\nexport class AsapScheduler extends AsyncScheduler {\n flush(action) {\n this._active = true;\n const flushId = this._scheduled;\n this._scheduled = undefined;\n const { actions } = this;\n let error;\n action = action || actions.shift();\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions[0]) && action.id === flushId && actions.shift());\n this._active = false;\n if (error) {\n while ((action = actions[0]) && action.id === flushId && actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n","import { AsyncAction } from './AsyncAction';\nimport { immediateProvider } from './immediateProvider';\nexport class AsapAction extends AsyncAction {\n constructor(scheduler, work) {\n super(scheduler, work);\n this.scheduler = scheduler;\n this.work = work;\n }\n requestAsyncId(scheduler, id, delay = 0) {\n if (delay !== null && delay > 0) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n scheduler.actions.push(this);\n return scheduler._scheduled || (scheduler._scheduled = immediateProvider.setImmediate(scheduler.flush.bind(scheduler, undefined)));\n }\n recycleAsyncId(scheduler, id, delay = 0) {\n var _a;\n if (delay != null ? delay > 0 : this.delay > 0) {\n return super.recycleAsyncId(scheduler, id, delay);\n }\n const { actions } = scheduler;\n if (id != null && ((_a = actions[actions.length - 1]) === null || _a === void 0 ? void 0 : _a.id) !== id) {\n immediateProvider.clearImmediate(id);\n if (scheduler._scheduled === id) {\n scheduler._scheduled = undefined;\n }\n }\n return undefined;\n }\n}\n","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\nexport const asyncScheduler = new AsyncScheduler(AsyncAction);\nexport const async = asyncScheduler;\n","export const dateTimestampProvider = {\n now() {\n return (dateTimestampProvider.delegate || Date).now();\n },\n delegate: undefined,\n};\n","import { QueueAction } from './QueueAction';\nimport { QueueScheduler } from './QueueScheduler';\nexport const queueScheduler = new QueueScheduler(QueueAction);\nexport const queue = queueScheduler;\n","import { AsyncScheduler } from './AsyncScheduler';\nexport class QueueScheduler extends AsyncScheduler {\n}\n","import { AsyncAction } from './AsyncAction';\nexport class QueueAction extends AsyncAction {\n constructor(scheduler, work) {\n super(scheduler, work);\n this.scheduler = scheduler;\n this.work = work;\n }\n schedule(state, delay = 0) {\n if (delay > 0) {\n return super.schedule(state, delay);\n }\n this.delay = delay;\n this.state = state;\n this.scheduler.flush(this);\n return this;\n }\n execute(state, delay) {\n return delay > 0 || this.closed ? super.execute(state, delay) : this._execute(state, delay);\n }\n requestAsyncId(scheduler, id, delay = 0) {\n if ((delay != null && delay > 0) || (delay == null && this.delay > 0)) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n scheduler.flush(this);\n return 0;\n }\n}\n","export const timeoutProvider = {\n setTimeout(handler, timeout, ...args) {\n const { delegate } = timeoutProvider;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) {\n return delegate.setTimeout(handler, timeout, ...args);\n }\n return setTimeout(handler, timeout, ...args);\n },\n clearTimeout(handle) {\n const { delegate } = timeoutProvider;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle);\n },\n delegate: undefined,\n};\n","export function getSymbolIterator() {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator';\n }\n return Symbol.iterator;\n}\nexport const iterator = getSymbolIterator();\n","export const observable = (() => (typeof Symbol === 'function' && Symbol.observable) || '@@observable')();\n","import { createErrorClass } from './createErrorClass';\nexport const EmptyError = createErrorClass((_super) => function EmptyErrorImpl() {\n _super(this);\n this.name = 'EmptyError';\n this.message = 'no elements in sequence';\n});\n","import { isFunction } from './isFunction';\nimport { isScheduler } from './isScheduler';\nfunction last(arr) {\n return arr[arr.length - 1];\n}\nexport function popResultSelector(args) {\n return isFunction(last(args)) ? args.pop() : undefined;\n}\nexport function popScheduler(args) {\n return isScheduler(last(args)) ? args.pop() : undefined;\n}\nexport function popNumber(args, defaultValue) {\n return typeof last(args) === 'number' ? args.pop() : defaultValue;\n}\n","const { isArray } = Array;\nconst { getPrototypeOf, prototype: objectProto, keys: getKeys } = Object;\nexport function argsArgArrayOrObject(args) {\n if (args.length === 1) {\n const first = args[0];\n if (isArray(first)) {\n return { args: first, keys: null };\n }\n if (isPOJO(first)) {\n const keys = getKeys(first);\n return {\n args: keys.map((key) => first[key]),\n keys,\n };\n }\n }\n return { args: args, keys: null };\n}\nfunction isPOJO(obj) {\n return obj && typeof obj === 'object' && getPrototypeOf(obj) === objectProto;\n}\n","export function arrRemove(arr, item) {\n if (arr) {\n const index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\n","export function createErrorClass(createImpl) {\n const _super = (instance) => {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n const ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\n","export function createObject(keys, values) {\n return keys.reduce((result, key, i) => ((result[key] = values[i]), result), {});\n}\n","import { config } from '../config';\nlet context = null;\nexport function errorContext(cb) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n const isRoot = !context;\n if (isRoot) {\n context = { errorThrown: false, error: null };\n }\n cb();\n if (isRoot) {\n const { errorThrown, error } = context;\n context = null;\n if (errorThrown) {\n throw error;\n }\n }\n }\n else {\n cb();\n }\n}\nexport function captureError(err) {\n if (config.useDeprecatedSynchronousErrorHandling && context) {\n context.errorThrown = true;\n context.error = err;\n }\n}\n","export function executeSchedule(parentSubscription, scheduler, work, delay = 0, repeat = false) {\n const scheduleSubscription = scheduler.schedule(function () {\n work();\n if (repeat) {\n parentSubscription.add(this.schedule(null, delay));\n }\n else {\n this.unsubscribe();\n }\n }, delay);\n parentSubscription.add(scheduleSubscription);\n if (!repeat) {\n return scheduleSubscription;\n }\n}\n","export function identity(x) {\n return x;\n}\n","export const isArrayLike = ((x) => x && typeof x.length === 'number' && typeof x !== 'function');\n","import { isFunction } from './isFunction';\nexport function isAsyncIterable(obj) {\n return Symbol.asyncIterator && isFunction(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]);\n}\n","export function isValidDate(value) {\n return value instanceof Date && !isNaN(value);\n}\n","export function isFunction(value) {\n return typeof value === 'function';\n}\n","import { observable as Symbol_observable } from '../symbol/observable';\nimport { isFunction } from './isFunction';\nexport function isInteropObservable(input) {\n return isFunction(input[Symbol_observable]);\n}\n","import { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from './isFunction';\nexport function isIterable(input) {\n return isFunction(input === null || input === void 0 ? void 0 : input[Symbol_iterator]);\n}\n","import { Observable } from '../Observable';\nimport { isFunction } from './isFunction';\nexport function isObservable(obj) {\n return !!obj && (obj instanceof Observable || (isFunction(obj.lift) && isFunction(obj.subscribe)));\n}\n","import { isFunction } from \"./isFunction\";\nexport function isPromise(value) {\n return isFunction(value === null || value === void 0 ? void 0 : value.then);\n}\n","import { __asyncGenerator, __await } from \"tslib\";\nimport { isFunction } from './isFunction';\nexport function readableStreamLikeToAsyncGenerator(readableStream) {\n return __asyncGenerator(this, arguments, function* readableStreamLikeToAsyncGenerator_1() {\n const reader = readableStream.getReader();\n try {\n while (true) {\n const { value, done } = yield __await(reader.read());\n if (done) {\n return yield __await(void 0);\n }\n yield yield __await(value);\n }\n }\n finally {\n reader.releaseLock();\n }\n });\n}\nexport function isReadableStreamLike(obj) {\n return isFunction(obj === null || obj === void 0 ? void 0 : obj.getReader);\n}\n","import { isFunction } from './isFunction';\nexport function isScheduler(value) {\n return value && isFunction(value.schedule);\n}\n","import { isFunction } from './isFunction';\nexport function hasLift(source) {\n return isFunction(source === null || source === void 0 ? void 0 : source.lift);\n}\nexport function operate(init) {\n return (source) => {\n if (hasLift(source)) {\n return source.lift(function (liftedSource) {\n try {\n return init(liftedSource, this);\n }\n catch (err) {\n this.error(err);\n }\n });\n }\n throw new TypeError('Unable to lift unknown Observable type');\n };\n}\n","import { map } from \"../operators/map\";\nconst { isArray } = Array;\nfunction callOrApply(fn, args) {\n return isArray(args) ? fn(...args) : fn(args);\n}\nexport function mapOneOrManyArgs(fn) {\n return map(args => callOrApply(fn, args));\n}\n","export function noop() { }\n","import { config } from '../config';\nimport { timeoutProvider } from '../scheduler/timeoutProvider';\nexport function reportUnhandledError(err) {\n timeoutProvider.setTimeout(() => {\n const { onUnhandledError } = config;\n if (onUnhandledError) {\n onUnhandledError(err);\n }\n else {\n throw err;\n }\n });\n}\n","export function createInvalidObservableTypeError(input) {\n return new TypeError(`You provided ${input !== null && typeof input === 'object' ? 'an invalid object' : `'${input}'`} where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`);\n}\n","/**\n * @license Angular v13.4.0\n * (c) 2010-2022 Google LLC. https://angular.io/\n * License: MIT\n */\n\n/**\n * An injectable service that produces an animation sequence programmatically within an\n * Angular component or directive.\n * Provided by the `BrowserAnimationsModule` or `NoopAnimationsModule`.\n *\n * @usageNotes\n *\n * To use this service, add it to your component or directive as a dependency.\n * The service is instantiated along with your component.\n *\n * Apps do not typically need to create their own animation players, but if you\n * do need to, follow these steps:\n *\n * 1. Use the [AnimationBuilder.build](api/animations/AnimationBuilder#build)() method\n * to create a programmatic animation. The method returns an `AnimationFactory` instance.\n *\n * 2. Use the factory object to create an `AnimationPlayer` and attach it to a DOM element.\n *\n * 3. Use the player object to control the animation programmatically.\n *\n * For example:\n *\n * ```ts\n * // import the service from BrowserAnimationsModule\n * import {AnimationBuilder} from '@angular/animations';\n * // require the service as a dependency\n * class MyCmp {\n * constructor(private _builder: AnimationBuilder) {}\n *\n * makeAnimation(element: any) {\n * // first define a reusable animation\n * const myAnimation = this._builder.build([\n * style({ width: 0 }),\n * animate(1000, style({ width: '100px' }))\n * ]);\n *\n * // use the returned factory object to create a player\n * const player = myAnimation.create(element);\n *\n * player.play();\n * }\n * }\n * ```\n *\n * @publicApi\n */\nclass AnimationBuilder {\n}\n/**\n * A factory object returned from the\n * [AnimationBuilder.build](api/animations/AnimationBuilder#build)()\n * method.\n *\n * @publicApi\n */\nclass AnimationFactory {\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 * Specifies automatic styling.\n *\n * @publicApi\n */\nconst AUTO_STYLE = '*';\n/**\n * Creates a named animation trigger, containing a list of [`state()`](api/animations/state)\n * and `transition()` entries to be evaluated when the expression\n * bound to the trigger changes.\n *\n * @param name An identifying string.\n * @param definitions An animation definition object, containing an array of\n * [`state()`](api/animations/state) and `transition()` declarations.\n *\n * @return An object that encapsulates the trigger data.\n *\n * @usageNotes\n * Define an animation trigger in the `animations` section of `@Component` metadata.\n * In the template, reference the trigger by name and bind it to a trigger expression that\n * evaluates to a defined animation state, using the following format:\n *\n * `[@triggerName]=\"expression\"`\n *\n * Animation trigger bindings convert all values to strings, and then match the\n * previous and current values against any linked transitions.\n * Booleans can be specified as `1` or `true` and `0` or `false`.\n *\n * ### Usage Example\n *\n * The following example creates an animation trigger reference based on the provided\n * name value.\n * The provided animation value is expected to be an array consisting of state and\n * transition declarations.\n *\n * ```typescript\n * @Component({\n * selector: \"my-component\",\n * templateUrl: \"my-component-tpl.html\",\n * animations: [\n * trigger(\"myAnimationTrigger\", [\n * state(...),\n * state(...),\n * transition(...),\n * transition(...)\n * ])\n * ]\n * })\n * class MyComponent {\n * myStatusExp = \"something\";\n * }\n * ```\n *\n * The template associated with this component makes use of the defined trigger\n * by binding to an element within its template code.\n *\n * ```html\n * \n *
    ...
    \n * ```\n *\n * ### Using an inline function\n * The `transition` animation method also supports reading an inline function which can decide\n * if its associated animation should be run.\n *\n * ```typescript\n * // this method is run each time the `myAnimationTrigger` trigger value changes.\n * function myInlineMatcherFn(fromState: string, toState: string, element: any, params: {[key:\n string]: any}): boolean {\n * // notice that `element` and `params` are also available here\n * return toState == 'yes-please-animate';\n * }\n *\n * @Component({\n * selector: 'my-component',\n * templateUrl: 'my-component-tpl.html',\n * animations: [\n * trigger('myAnimationTrigger', [\n * transition(myInlineMatcherFn, [\n * // the animation sequence code\n * ]),\n * ])\n * ]\n * })\n * class MyComponent {\n * myStatusExp = \"yes-please-animate\";\n * }\n * ```\n *\n * ### Disabling Animations\n * When true, the special animation control binding `@.disabled` binding prevents\n * all animations from rendering.\n * Place the `@.disabled` binding on an element to disable\n * animations on the element itself, as well as any inner animation triggers\n * within the element.\n *\n * The following example shows how to use this feature:\n *\n * ```typescript\n * @Component({\n * selector: 'my-component',\n * template: `\n *
    \n *
    \n *
    \n * `,\n * animations: [\n * trigger(\"childAnimation\", [\n * // ...\n * ])\n * ]\n * })\n * class MyComponent {\n * isDisabled = true;\n * exp = '...';\n * }\n * ```\n *\n * When `@.disabled` is true, it prevents the `@childAnimation` trigger from animating,\n * along with any inner animations.\n *\n * ### Disable animations application-wide\n * When an area of the template is set to have animations disabled,\n * **all** inner components have their animations disabled as well.\n * This means that you can disable all animations for an app\n * by placing a host binding set on `@.disabled` on the topmost Angular component.\n *\n * ```typescript\n * import {Component, HostBinding} from '@angular/core';\n *\n * @Component({\n * selector: 'app-component',\n * templateUrl: 'app.component.html',\n * })\n * class AppComponent {\n * @HostBinding('@.disabled')\n * public animationsDisabled = true;\n * }\n * ```\n *\n * ### Overriding disablement of inner animations\n * Despite inner animations being disabled, a parent animation can `query()`\n * for inner elements located in disabled areas of the template and still animate\n * them if needed. This is also the case for when a sub animation is\n * queried by a parent and then later animated using `animateChild()`.\n *\n * ### Detecting when an animation is disabled\n * If a region of the DOM (or the entire application) has its animations disabled, the animation\n * trigger callbacks still fire, but for zero seconds. When the callback fires, it provides\n * an instance of an `AnimationEvent`. If animations are disabled,\n * the `.disabled` flag on the event is true.\n *\n * @publicApi\n */\nfunction trigger(name, definitions) {\n return { type: 7 /* Trigger */, name, definitions, options: {} };\n}\n/**\n * Defines an animation step that combines styling information with timing information.\n *\n * @param timings Sets `AnimateTimings` for the parent animation.\n * A string in the format \"duration [delay] [easing]\".\n * - Duration and delay are expressed as a number and optional time unit,\n * such as \"1s\" or \"10ms\" for one second and 10 milliseconds, respectively.\n * The default unit is milliseconds.\n * - The easing value controls how the animation accelerates and decelerates\n * during its runtime. Value is one of `ease`, `ease-in`, `ease-out`,\n * `ease-in-out`, or a `cubic-bezier()` function call.\n * If not supplied, no easing is applied.\n *\n * For example, the string \"1s 100ms ease-out\" specifies a duration of\n * 1000 milliseconds, and delay of 100 ms, and the \"ease-out\" easing style,\n * which decelerates near the end of the duration.\n * @param styles Sets AnimationStyles for the parent animation.\n * A function call to either `style()` or `keyframes()`\n * that returns a collection of CSS style entries to be applied to the parent animation.\n * When null, uses the styles from the destination state.\n * This is useful when describing an animation step that will complete an animation;\n * see \"Animating to the final state\" in `transitions()`.\n * @returns An object that encapsulates the animation step.\n *\n * @usageNotes\n * Call within an animation `sequence()`, `{@link animations/group group()}`, or\n * `transition()` call to specify an animation step\n * that applies given style data to the parent animation for a given amount of time.\n *\n * ### Syntax Examples\n * **Timing examples**\n *\n * The following examples show various `timings` specifications.\n * - `animate(500)` : Duration is 500 milliseconds.\n * - `animate(\"1s\")` : Duration is 1000 milliseconds.\n * - `animate(\"100ms 0.5s\")` : Duration is 100 milliseconds, delay is 500 milliseconds.\n * - `animate(\"5s ease-in\")` : Duration is 5000 milliseconds, easing in.\n * - `animate(\"5s 10ms cubic-bezier(.17,.67,.88,.1)\")` : Duration is 5000 milliseconds, delay is 10\n * milliseconds, easing according to a bezier curve.\n *\n * **Style examples**\n *\n * The following example calls `style()` to set a single CSS style.\n * ```typescript\n * animate(500, style({ background: \"red\" }))\n * ```\n * The following example calls `keyframes()` to set a CSS style\n * to different values for successive keyframes.\n * ```typescript\n * animate(500, keyframes(\n * [\n * style({ background: \"blue\" }),\n * style({ background: \"red\" })\n * ])\n * ```\n *\n * @publicApi\n */\nfunction animate(timings, styles = null) {\n return { type: 4 /* Animate */, styles, timings };\n}\n/**\n * @description Defines a list of animation steps to be run in parallel.\n *\n * @param steps An array of animation step objects.\n * - When steps are defined by `style()` or `animate()`\n * function calls, each call within the group is executed instantly.\n * - To specify offset styles to be applied at a later time, define steps with\n * `keyframes()`, or use `animate()` calls with a delay value.\n * For example:\n *\n * ```typescript\n * group([\n * animate(\"1s\", style({ background: \"black\" })),\n * animate(\"2s\", style({ color: \"white\" }))\n * ])\n * ```\n *\n * @param options An options object containing a delay and\n * developer-defined parameters that provide styling defaults and\n * can be overridden on invocation.\n *\n * @return An object that encapsulates the group data.\n *\n * @usageNotes\n * Grouped animations are useful when a series of styles must be\n * animated at different starting times and closed off at different ending times.\n *\n * When called within a `sequence()` or a\n * `transition()` call, does not continue to the next\n * instruction until all of the inner animation steps have completed.\n *\n * @publicApi\n */\nfunction group(steps, options = null) {\n return { type: 3 /* Group */, steps, options };\n}\n/**\n * Defines a list of animation steps to be run sequentially, one by one.\n *\n * @param steps An array of animation step objects.\n * - Steps defined by `style()` calls apply the styling data immediately.\n * - Steps defined by `animate()` calls apply the styling data over time\n * as specified by the timing data.\n *\n * ```typescript\n * sequence([\n * style({ opacity: 0 }),\n * animate(\"1s\", style({ opacity: 1 }))\n * ])\n * ```\n *\n * @param options An options object containing a delay and\n * developer-defined parameters that provide styling defaults and\n * can be overridden on invocation.\n *\n * @return An object that encapsulates the sequence data.\n *\n * @usageNotes\n * When you pass an array of steps to a\n * `transition()` call, the steps run sequentially by default.\n * Compare this to the `{@link animations/group group()}` call, which runs animation steps in\n *parallel.\n *\n * When a sequence is used within a `{@link animations/group group()}` or a `transition()` call,\n * execution continues to the next instruction only after each of the inner animation\n * steps have completed.\n *\n * @publicApi\n **/\nfunction sequence(steps, options = null) {\n return { type: 2 /* Sequence */, steps, options };\n}\n/**\n * Declares a key/value object containing CSS properties/styles that\n * can then be used for an animation [`state`](api/animations/state), within an animation\n *`sequence`, or as styling data for calls to `animate()` and `keyframes()`.\n *\n * @param tokens A set of CSS styles or HTML styles associated with an animation state.\n * The value can be any of the following:\n * - A key-value style pair associating a CSS property with a value.\n * - An array of key-value style pairs.\n * - An asterisk (*), to use auto-styling, where styles are derived from the element\n * being animated and applied to the animation when it starts.\n *\n * Auto-styling can be used to define a state that depends on layout or other\n * environmental factors.\n *\n * @return An object that encapsulates the style data.\n *\n * @usageNotes\n * The following examples create animation styles that collect a set of\n * CSS property values:\n *\n * ```typescript\n * // string values for CSS properties\n * style({ background: \"red\", color: \"blue\" })\n *\n * // numerical pixel values\n * style({ width: 100, height: 0 })\n * ```\n *\n * The following example uses auto-styling to allow an element to animate from\n * a height of 0 up to its full height:\n *\n * ```\n * style({ height: 0 }),\n * animate(\"1s\", style({ height: \"*\" }))\n * ```\n *\n * @publicApi\n **/\nfunction style(tokens) {\n return { type: 6 /* Style */, styles: tokens, offset: null };\n}\n/**\n * Declares an animation state within a trigger attached to an element.\n *\n * @param name One or more names for the defined state in a comma-separated string.\n * The following reserved state names can be supplied to define a style for specific use\n * cases:\n *\n * - `void` You can associate styles with this name to be used when\n * the element is detached from the application. For example, when an `ngIf` evaluates\n * to false, the state of the associated element is void.\n * - `*` (asterisk) Indicates the default state. You can associate styles with this name\n * to be used as the fallback when the state that is being animated is not declared\n * within the trigger.\n *\n * @param styles A set of CSS styles associated with this state, created using the\n * `style()` function.\n * This set of styles persists on the element once the state has been reached.\n * @param options Parameters that can be passed to the state when it is invoked.\n * 0 or more key-value pairs.\n * @return An object that encapsulates the new state data.\n *\n * @usageNotes\n * Use the `trigger()` function to register states to an animation trigger.\n * Use the `transition()` function to animate between states.\n * When a state is active within a component, its associated styles persist on the element,\n * even when the animation ends.\n *\n * @publicApi\n **/\nfunction state(name, styles, options) {\n return { type: 0 /* State */, name, styles, options };\n}\n/**\n * Defines a set of animation styles, associating each style with an optional `offset` value.\n *\n * @param steps A set of animation styles with optional offset data.\n * The optional `offset` value for a style specifies a percentage of the total animation\n * time at which that style is applied.\n * @returns An object that encapsulates the keyframes data.\n *\n * @usageNotes\n * Use with the `animate()` call. Instead of applying animations\n * from the current state\n * to the destination state, keyframes describe how each style entry is applied and at what point\n * within the animation arc.\n * Compare [CSS Keyframe Animations](https://www.w3schools.com/css/css3_animations.asp).\n *\n * ### Usage\n *\n * In the following example, the offset values describe\n * when each `backgroundColor` value is applied. The color is red at the start, and changes to\n * blue when 20% of the total time has elapsed.\n *\n * ```typescript\n * // the provided offset values\n * animate(\"5s\", keyframes([\n * style({ backgroundColor: \"red\", offset: 0 }),\n * style({ backgroundColor: \"blue\", offset: 0.2 }),\n * style({ backgroundColor: \"orange\", offset: 0.3 }),\n * style({ backgroundColor: \"black\", offset: 1 })\n * ]))\n * ```\n *\n * If there are no `offset` values specified in the style entries, the offsets\n * are calculated automatically.\n *\n * ```typescript\n * animate(\"5s\", keyframes([\n * style({ backgroundColor: \"red\" }) // offset = 0\n * style({ backgroundColor: \"blue\" }) // offset = 0.33\n * style({ backgroundColor: \"orange\" }) // offset = 0.66\n * style({ backgroundColor: \"black\" }) // offset = 1\n * ]))\n *```\n\n * @publicApi\n */\nfunction keyframes(steps) {\n return { type: 5 /* Keyframes */, steps };\n}\n/**\n * Declares an animation transition which is played when a certain specified condition is met.\n *\n * @param stateChangeExpr A string with a specific format or a function that specifies when the\n * animation transition should occur (see [State Change Expression](#state-change-expression)).\n *\n * @param steps One or more animation objects that represent the animation's instructions.\n *\n * @param options An options object that can be used to specify a delay for the animation or provide\n * custom parameters for it.\n *\n * @returns An object that encapsulates the transition data.\n *\n * @usageNotes\n *\n * ### State Change Expression\n *\n * The State Change Expression instructs Angular when to run the transition's animations, it can\n *either be\n * - a string with a specific syntax\n * - or a function that compares the previous and current state (value of the expression bound to\n * the element's trigger) and returns `true` if the transition should occur or `false` otherwise\n *\n * The string format can be:\n * - `fromState => toState`, which indicates that the transition's animations should occur then the\n * expression bound to the trigger's element goes from `fromState` to `toState`\n *\n * _Example:_\n * ```typescript\n * transition('open => closed', animate('.5s ease-out', style({ height: 0 }) ))\n * ```\n *\n * - `fromState <=> toState`, which indicates that the transition's animations should occur then\n * the expression bound to the trigger's element goes from `fromState` to `toState` or vice versa\n *\n * _Example:_\n * ```typescript\n * transition('enabled <=> disabled', animate('1s cubic-bezier(0.8,0.3,0,1)'))\n * ```\n *\n * - `:enter`/`:leave`, which indicates that the transition's animations should occur when the\n * element enters or exists the DOM\n *\n * _Example:_\n * ```typescript\n * transition(':enter', [\n * style({ opacity: 0 }),\n * animate('500ms', style({ opacity: 1 }))\n * ])\n * ```\n *\n * - `:increment`/`:decrement`, which indicates that the transition's animations should occur when\n * the numerical expression bound to the trigger's element has increased in value or decreased\n *\n * _Example:_\n * ```typescript\n * transition(':increment', query('@counter', animateChild()))\n * ```\n *\n * - a sequence of any of the above divided by commas, which indicates that transition's animations\n * should occur whenever one of the state change expressions matches\n *\n * _Example:_\n * ```typescript\n * transition(':increment, * => enabled, :enter', animate('1s ease', keyframes([\n * style({ transform: 'scale(1)', offset: 0}),\n * style({ transform: 'scale(1.1)', offset: 0.7}),\n * style({ transform: 'scale(1)', offset: 1})\n * ]))),\n * ```\n *\n * Also note that in such context:\n * - `void` can be used to indicate the absence of the element\n * - asterisks can be used as wildcards that match any state\n * - (as a consequence of the above, `void => *` is equivalent to `:enter` and `* => void` is\n * equivalent to `:leave`)\n * - `true` and `false` also match expression values of `1` and `0` respectively (but do not match\n * _truthy_ and _falsy_ values)\n *\n *
    \n *\n * Be careful about entering end leaving elements as their transitions present a common\n * pitfall for developers.\n *\n * Note that when an element with a trigger enters the DOM its `:enter` transition always\n * gets executed, but its `:leave` transition will not be executed if the element is removed\n * alongside its parent (as it will be removed \"without warning\" before its transition has\n * a chance to be executed, the only way that such transition can occur is if the element\n * is exiting the DOM on its own).\n *\n *\n *
    \n *\n * ### Animating to a Final State\n *\n * If the final step in a transition is a call to `animate()` that uses a timing value\n * with no `style` data, that step is automatically considered the final animation arc,\n * for the element to reach the final state, in such case Angular automatically adds or removes\n * CSS styles to ensure that the element is in the correct final state.\n *\n *\n * ### Usage Examples\n *\n * - Transition animations applied based on\n * the trigger's expression value\n *\n * ```HTML\n *
    \n * ...\n *
    \n * ```\n *\n * ```typescript\n * trigger(\"myAnimationTrigger\", [\n * ..., // states\n * transition(\"on => off, open => closed\", animate(500)),\n * transition(\"* <=> error\", query('.indicator', animateChild()))\n * ])\n * ```\n *\n * - Transition animations applied based on custom logic dependent\n * on the trigger's expression value and provided parameters\n *\n * ```HTML\n *
    \n * ...\n *
    \n * ```\n *\n * ```typescript\n * trigger(\"myAnimationTrigger\", [\n * ..., // states\n * transition(\n * (fromState, toState, _element, params) =>\n * ['firststep', 'laststep'].includes(fromState.toLowerCase())\n * && toState === params?.['target'],\n * animate('1s')\n * )\n * ])\n * ```\n *\n * @publicApi\n **/\nfunction transition(stateChangeExpr, steps, options = null) {\n return { type: 1 /* Transition */, expr: stateChangeExpr, animation: steps, options };\n}\n/**\n * Produces a reusable animation that can be invoked in another animation or sequence,\n * by calling the `useAnimation()` function.\n *\n * @param steps One or more animation objects, as returned by the `animate()`\n * or `sequence()` function, that form a transformation from one state to another.\n * A sequence is used by default when you pass an array.\n * @param options An options object that can contain a delay value for the start of the\n * animation, and additional developer-defined parameters.\n * Provided values for additional parameters are used as defaults,\n * and override values can be passed to the caller on invocation.\n * @returns An object that encapsulates the animation data.\n *\n * @usageNotes\n * The following example defines a reusable animation, providing some default parameter\n * values.\n *\n * ```typescript\n * var fadeAnimation = animation([\n * style({ opacity: '{{ start }}' }),\n * animate('{{ time }}',\n * style({ opacity: '{{ end }}'}))\n * ],\n * { params: { time: '1000ms', start: 0, end: 1 }});\n * ```\n *\n * The following invokes the defined animation with a call to `useAnimation()`,\n * passing in override parameter values.\n *\n * ```js\n * useAnimation(fadeAnimation, {\n * params: {\n * time: '2s',\n * start: 1,\n * end: 0\n * }\n * })\n * ```\n *\n * If any of the passed-in parameter values are missing from this call,\n * the default values are used. If one or more parameter values are missing before a step is\n * animated, `useAnimation()` throws an error.\n *\n * @publicApi\n */\nfunction animation(steps, options = null) {\n return { type: 8 /* Reference */, animation: steps, options };\n}\n/**\n * Executes a queried inner animation element within an animation sequence.\n *\n * @param options An options object that can contain a delay value for the start of the\n * animation, and additional override values for developer-defined parameters.\n * @return An object that encapsulates the child animation data.\n *\n * @usageNotes\n * Each time an animation is triggered in Angular, the parent animation\n * has priority and any child animations are blocked. In order\n * for a child animation to run, the parent animation must query each of the elements\n * containing child animations, and run them using this function.\n *\n * Note that this feature is designed to be used with `query()` and it will only work\n * with animations that are assigned using the Angular animation library. CSS keyframes\n * and transitions are not handled by this API.\n *\n * @publicApi\n */\nfunction animateChild(options = null) {\n return { type: 9 /* AnimateChild */, options };\n}\n/**\n * Starts a reusable animation that is created using the `animation()` function.\n *\n * @param animation The reusable animation to start.\n * @param options An options object that can contain a delay value for the start of\n * the animation, and additional override values for developer-defined parameters.\n * @return An object that contains the animation parameters.\n *\n * @publicApi\n */\nfunction useAnimation(animation, options = null) {\n return { type: 10 /* AnimateRef */, animation, options };\n}\n/**\n * Finds one or more inner elements within the current element that is\n * being animated within a sequence. Use with `animate()`.\n *\n * @param selector The element to query, or a set of elements that contain Angular-specific\n * characteristics, specified with one or more of the following tokens.\n * - `query(\":enter\")` or `query(\":leave\")` : Query for newly inserted/removed elements (not\n * all elements can be queried via these tokens, see\n * [Entering and Leaving Elements](#entering-and-leaving-elements))\n * - `query(\":animating\")` : Query all currently animating elements.\n * - `query(\"@triggerName\")` : Query elements that contain an animation trigger.\n * - `query(\"@*\")` : Query all elements that contain an animation triggers.\n * - `query(\":self\")` : Include the current element into the animation sequence.\n *\n * @param animation One or more animation steps to apply to the queried element or elements.\n * An array is treated as an animation sequence.\n * @param options An options object. Use the 'limit' field to limit the total number of\n * items to collect.\n * @return An object that encapsulates the query data.\n *\n * @usageNotes\n *\n * ### Multiple Tokens\n *\n * Tokens can be merged into a combined query selector string. For example:\n *\n * ```typescript\n * query(':self, .record:enter, .record:leave, @subTrigger', [...])\n * ```\n *\n * The `query()` function collects multiple elements and works internally by using\n * `element.querySelectorAll`. Use the `limit` field of an options object to limit\n * the total number of items to be collected. For example:\n *\n * ```js\n * query('div', [\n * animate(...),\n * animate(...)\n * ], { limit: 1 })\n * ```\n *\n * By default, throws an error when zero items are found. Set the\n * `optional` flag to ignore this error. For example:\n *\n * ```js\n * query('.some-element-that-may-not-be-there', [\n * animate(...),\n * animate(...)\n * ], { optional: true })\n * ```\n *\n * ### Entering and Leaving Elements\n *\n * Not all elements can be queried via the `:enter` and `:leave` tokens, the only ones\n * that can are those that Angular assumes can enter/leave based on their own logic\n * (if their insertion/removal is simply a consequence of that of their parent they\n * should be queried via a different token in their parent's `:enter`/`:leave` transitions).\n *\n * The only elements Angular assumes can enter/leave based on their own logic (thus the only\n * ones that can be queried via the `:enter` and `:leave` tokens) are:\n * - Those inserted dynamically (via `ViewContainerRef`)\n * - Those that have a structural directive (which, under the hood, are a subset of the above ones)\n *\n *
    \n *\n * Note that elements will be successfully queried via `:enter`/`:leave` even if their\n * insertion/removal is not done manually via `ViewContainerRef`or caused by their structural\n * directive (e.g. they enter/exit alongside their parent).\n *\n *
    \n *\n *
    \n *\n * There is an exception to what previously mentioned, besides elements entering/leaving based on\n * their own logic, elements with an animation trigger can always be queried via `:leave` when\n * their parent is also leaving.\n *\n *
    \n *\n * ### Usage Example\n *\n * The following example queries for inner elements and animates them\n * individually using `animate()`.\n *\n * ```typescript\n * @Component({\n * selector: 'inner',\n * template: `\n *
    \n *

    Title

    \n *
    \n * Blah blah blah\n *
    \n *
    \n * `,\n * animations: [\n * trigger('queryAnimation', [\n * transition('* => goAnimate', [\n * // hide the inner elements\n * query('h1', style({ opacity: 0 })),\n * query('.content', style({ opacity: 0 })),\n *\n * // animate the inner elements in, one by one\n * query('h1', animate(1000, style({ opacity: 1 }))),\n * query('.content', animate(1000, style({ opacity: 1 }))),\n * ])\n * ])\n * ]\n * })\n * class Cmp {\n * exp = '';\n *\n * goAnimate() {\n * this.exp = 'goAnimate';\n * }\n * }\n * ```\n *\n * @publicApi\n */\nfunction query(selector, animation, options = null) {\n return { type: 11 /* Query */, selector, animation, options };\n}\n/**\n * Use within an animation `query()` call to issue a timing gap after\n * each queried item is animated.\n *\n * @param timings A delay value.\n * @param animation One ore more animation steps.\n * @returns An object that encapsulates the stagger data.\n *\n * @usageNotes\n * In the following example, a container element wraps a list of items stamped out\n * by an `ngFor`. The container element contains an animation trigger that will later be set\n * to query for each of the inner items.\n *\n * Each time items are added, the opacity fade-in animation runs,\n * and each removed item is faded out.\n * When either of these animations occur, the stagger effect is\n * applied after each item's animation is started.\n *\n * ```html\n * \n * \n *
    \n *
    \n *
    \n * {{ item }}\n *
    \n *
    \n * ```\n *\n * Here is the component code:\n *\n * ```typescript\n * import {trigger, transition, style, animate, query, stagger} from '@angular/animations';\n * @Component({\n * templateUrl: 'list.component.html',\n * animations: [\n * trigger('listAnimation', [\n * ...\n * ])\n * ]\n * })\n * class ListComponent {\n * items = [];\n *\n * showItems() {\n * this.items = [0,1,2,3,4];\n * }\n *\n * hideItems() {\n * this.items = [];\n * }\n *\n * toggle() {\n * this.items.length ? this.hideItems() : this.showItems();\n * }\n * }\n * ```\n *\n * Here is the animation trigger code:\n *\n * ```typescript\n * trigger('listAnimation', [\n * transition('* => *', [ // each time the binding value changes\n * query(':leave', [\n * stagger(100, [\n * animate('0.5s', style({ opacity: 0 }))\n * ])\n * ]),\n * query(':enter', [\n * style({ opacity: 0 }),\n * stagger(100, [\n * animate('0.5s', style({ opacity: 1 }))\n * ])\n * ])\n * ])\n * ])\n * ```\n *\n * @publicApi\n */\nfunction stagger(timings, animation) {\n return { type: 12 /* Stagger */, timings, animation };\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 scheduleMicroTask(cb) {\n Promise.resolve(null).then(cb);\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 * An empty programmatic controller for reusable animations.\n * Used internally when animations are disabled, to avoid\n * checking for the null case when an animation player is expected.\n *\n * @see `animate()`\n * @see `AnimationPlayer`\n * @see `GroupPlayer`\n *\n * @publicApi\n */\nclass NoopAnimationPlayer {\n constructor(duration = 0, delay = 0) {\n this._onDoneFns = [];\n this._onStartFns = [];\n this._onDestroyFns = [];\n this._started = false;\n this._destroyed = false;\n this._finished = false;\n this._position = 0;\n this.parentPlayer = null;\n this.totalTime = duration + delay;\n }\n _onFinish() {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach(fn => fn());\n this._onDoneFns = [];\n }\n }\n onStart(fn) {\n this._onStartFns.push(fn);\n }\n onDone(fn) {\n this._onDoneFns.push(fn);\n }\n onDestroy(fn) {\n this._onDestroyFns.push(fn);\n }\n hasStarted() {\n return this._started;\n }\n init() { }\n play() {\n if (!this.hasStarted()) {\n this._onStart();\n this.triggerMicrotask();\n }\n this._started = true;\n }\n /** @internal */\n triggerMicrotask() {\n scheduleMicroTask(() => this._onFinish());\n }\n _onStart() {\n this._onStartFns.forEach(fn => fn());\n this._onStartFns = [];\n }\n pause() { }\n restart() { }\n finish() {\n this._onFinish();\n }\n destroy() {\n if (!this._destroyed) {\n this._destroyed = true;\n if (!this.hasStarted()) {\n this._onStart();\n }\n this.finish();\n this._onDestroyFns.forEach(fn => fn());\n this._onDestroyFns = [];\n }\n }\n reset() {\n this._started = false;\n }\n setPosition(position) {\n this._position = this.totalTime ? position * this.totalTime : 1;\n }\n getPosition() {\n return this.totalTime ? this._position / this.totalTime : 1;\n }\n /** @internal */\n triggerCallback(phaseName) {\n const methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach(fn => fn());\n methods.length = 0;\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 programmatic controller for a group of reusable animations.\n * Used internally to control animations.\n *\n * @see `AnimationPlayer`\n * @see `{@link animations/group group()}`\n *\n */\nclass AnimationGroupPlayer {\n constructor(_players) {\n this._onDoneFns = [];\n this._onStartFns = [];\n this._finished = false;\n this._started = false;\n this._destroyed = false;\n this._onDestroyFns = [];\n this.parentPlayer = null;\n this.totalTime = 0;\n this.players = _players;\n let doneCount = 0;\n let destroyCount = 0;\n let startCount = 0;\n const total = this.players.length;\n if (total == 0) {\n scheduleMicroTask(() => this._onFinish());\n }\n else {\n this.players.forEach(player => {\n player.onDone(() => {\n if (++doneCount == total) {\n this._onFinish();\n }\n });\n player.onDestroy(() => {\n if (++destroyCount == total) {\n this._onDestroy();\n }\n });\n player.onStart(() => {\n if (++startCount == total) {\n this._onStart();\n }\n });\n });\n }\n this.totalTime = this.players.reduce((time, player) => Math.max(time, player.totalTime), 0);\n }\n _onFinish() {\n if (!this._finished) {\n this._finished = true;\n this._onDoneFns.forEach(fn => fn());\n this._onDoneFns = [];\n }\n }\n init() {\n this.players.forEach(player => player.init());\n }\n onStart(fn) {\n this._onStartFns.push(fn);\n }\n _onStart() {\n if (!this.hasStarted()) {\n this._started = true;\n this._onStartFns.forEach(fn => fn());\n this._onStartFns = [];\n }\n }\n onDone(fn) {\n this._onDoneFns.push(fn);\n }\n onDestroy(fn) {\n this._onDestroyFns.push(fn);\n }\n hasStarted() {\n return this._started;\n }\n play() {\n if (!this.parentPlayer) {\n this.init();\n }\n this._onStart();\n this.players.forEach(player => player.play());\n }\n pause() {\n this.players.forEach(player => player.pause());\n }\n restart() {\n this.players.forEach(player => player.restart());\n }\n finish() {\n this._onFinish();\n this.players.forEach(player => player.finish());\n }\n destroy() {\n this._onDestroy();\n }\n _onDestroy() {\n if (!this._destroyed) {\n this._destroyed = true;\n this._onFinish();\n this.players.forEach(player => player.destroy());\n this._onDestroyFns.forEach(fn => fn());\n this._onDestroyFns = [];\n }\n }\n reset() {\n this.players.forEach(player => player.reset());\n this._destroyed = false;\n this._finished = false;\n this._started = false;\n }\n setPosition(p) {\n const timeAtPosition = p * this.totalTime;\n this.players.forEach(player => {\n const position = player.totalTime ? Math.min(1, timeAtPosition / player.totalTime) : 1;\n player.setPosition(position);\n });\n }\n getPosition() {\n const longestPlayer = this.players.reduce((longestSoFar, player) => {\n const newPlayerIsLongest = longestSoFar === null || player.totalTime > longestSoFar.totalTime;\n return newPlayerIsLongest ? player : longestSoFar;\n }, null);\n return longestPlayer != null ? longestPlayer.getPosition() : 0;\n }\n beforeDestroy() {\n this.players.forEach(player => {\n if (player.beforeDestroy) {\n player.beforeDestroy();\n }\n });\n }\n /** @internal */\n triggerCallback(phaseName) {\n const methods = phaseName == 'start' ? this._onStartFns : this._onDoneFns;\n methods.forEach(fn => fn());\n methods.length = 0;\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 ɵPRE_STYLE = '!';\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/**\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 { AUTO_STYLE, AnimationBuilder, AnimationFactory, NoopAnimationPlayer, animate, animateChild, animation, group, keyframes, query, sequence, stagger, state, style, transition, trigger, useAnimation, AnimationGroupPlayer as ɵAnimationGroupPlayer, ɵPRE_STYLE };\n","import { DOCUMENT } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Injectable, Inject, QueryList, Directive, Input, InjectionToken, Optional, EventEmitter, Output, NgModule } from '@angular/core';\nimport * as i1 from '@angular/cdk/platform';\nimport { _getFocusedElementPierceShadowDom, normalizePassiveListenerOptions, _getEventTarget, _getShadowRoot } from '@angular/cdk/platform';\nimport { Subject, Subscription, BehaviorSubject, of } from 'rxjs';\nimport { hasModifierKey, A, Z, ZERO, NINE, END, HOME, LEFT_ARROW, RIGHT_ARROW, UP_ARROW, DOWN_ARROW, TAB, ALT, CONTROL, MAC_META, META, SHIFT } from '@angular/cdk/keycodes';\nimport { tap, debounceTime, filter, map, take, skip, distinctUntilChanged, takeUntil } from 'rxjs/operators';\nimport { coerceBooleanProperty, coerceElement } from '@angular/cdk/coercion';\nimport * as i1$1 from '@angular/cdk/observers';\nimport { ObserversModule } from '@angular/cdk/observers';\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/** IDs are delimited by an empty space, as per the spec. */\nconst ID_DELIMITER = ' ';\n/**\n * Adds the given ID to the specified ARIA attribute on an element.\n * Used for attributes such as aria-labelledby, aria-owns, etc.\n */\nfunction addAriaReferencedId(el, attr, id) {\n const ids = getAriaReferenceIds(el, attr);\n if (ids.some(existingId => existingId.trim() == id.trim())) {\n return;\n }\n ids.push(id.trim());\n el.setAttribute(attr, ids.join(ID_DELIMITER));\n}\n/**\n * Removes the given ID from the specified ARIA attribute on an element.\n * Used for attributes such as aria-labelledby, aria-owns, etc.\n */\nfunction removeAriaReferencedId(el, attr, id) {\n const ids = getAriaReferenceIds(el, attr);\n const filteredIds = ids.filter(val => val != id.trim());\n if (filteredIds.length) {\n el.setAttribute(attr, filteredIds.join(ID_DELIMITER));\n }\n else {\n el.removeAttribute(attr);\n }\n}\n/**\n * Gets the list of IDs referenced by the given ARIA attribute on an element.\n * Used for attributes such as aria-labelledby, aria-owns, etc.\n */\nfunction getAriaReferenceIds(el, attr) {\n // Get string array of all individual ids (whitespace delimited) in the attribute value\n return (el.getAttribute(attr) || '').match(/\\S+/g) || [];\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 * ID used for the body container where all messages are appended.\n * @deprecated No longer being used. To be removed.\n * @breaking-change 14.0.0\n */\nconst MESSAGES_CONTAINER_ID = 'cdk-describedby-message-container';\n/**\n * ID prefix used for each created message element.\n * @deprecated To be turned into a private variable.\n * @breaking-change 14.0.0\n */\nconst CDK_DESCRIBEDBY_ID_PREFIX = 'cdk-describedby-message';\n/**\n * Attribute given to each host element that is described by a message element.\n * @deprecated To be turned into a private variable.\n * @breaking-change 14.0.0\n */\nconst CDK_DESCRIBEDBY_HOST_ATTRIBUTE = 'cdk-describedby-host';\n/** Global incremental identifier for each registered message element. */\nlet nextId = 0;\n/**\n * Utility that creates visually hidden elements with a message content. Useful for elements that\n * want to use aria-describedby to further describe themselves without adding additional visual\n * content.\n */\nclass AriaDescriber {\n constructor(_document, \n /**\n * @deprecated To be turned into a required parameter.\n * @breaking-change 14.0.0\n */\n _platform) {\n this._platform = _platform;\n /** Map of all registered message elements that have been placed into the document. */\n this._messageRegistry = new Map();\n /** Container for all registered messages. */\n this._messagesContainer = null;\n /** Unique ID for the service. */\n this._id = `${nextId++}`;\n this._document = _document;\n }\n describe(hostElement, message, role) {\n if (!this._canBeDescribed(hostElement, message)) {\n return;\n }\n const key = getKey(message, role);\n if (typeof message !== 'string') {\n // We need to ensure that the element has an ID.\n setMessageId(message);\n this._messageRegistry.set(key, { messageElement: message, referenceCount: 0 });\n }\n else if (!this._messageRegistry.has(key)) {\n this._createMessageElement(message, role);\n }\n if (!this._isElementDescribedByMessage(hostElement, key)) {\n this._addMessageReference(hostElement, key);\n }\n }\n removeDescription(hostElement, message, role) {\n var _a;\n if (!message || !this._isElementNode(hostElement)) {\n return;\n }\n const key = getKey(message, role);\n if (this._isElementDescribedByMessage(hostElement, key)) {\n this._removeMessageReference(hostElement, key);\n }\n // If the message is a string, it means that it's one that we created for the\n // consumer so we can remove it safely, otherwise we should leave it in place.\n if (typeof message === 'string') {\n const registeredMessage = this._messageRegistry.get(key);\n if (registeredMessage && registeredMessage.referenceCount === 0) {\n this._deleteMessageElement(key);\n }\n }\n if (((_a = this._messagesContainer) === null || _a === void 0 ? void 0 : _a.childNodes.length) === 0) {\n this._messagesContainer.remove();\n this._messagesContainer = null;\n }\n }\n /** Unregisters all created message elements and removes the message container. */\n ngOnDestroy() {\n var _a;\n const describedElements = this._document.querySelectorAll(`[${CDK_DESCRIBEDBY_HOST_ATTRIBUTE}=\"${this._id}\"]`);\n for (let i = 0; i < describedElements.length; i++) {\n this._removeCdkDescribedByReferenceIds(describedElements[i]);\n describedElements[i].removeAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE);\n }\n (_a = this._messagesContainer) === null || _a === void 0 ? void 0 : _a.remove();\n this._messagesContainer = null;\n this._messageRegistry.clear();\n }\n /**\n * Creates a new element in the visually hidden message container element with the message\n * as its content and adds it to the message registry.\n */\n _createMessageElement(message, role) {\n const messageElement = this._document.createElement('div');\n setMessageId(messageElement);\n messageElement.textContent = message;\n if (role) {\n messageElement.setAttribute('role', role);\n }\n this._createMessagesContainer();\n this._messagesContainer.appendChild(messageElement);\n this._messageRegistry.set(getKey(message, role), { messageElement, referenceCount: 0 });\n }\n /** Deletes the message element from the global messages container. */\n _deleteMessageElement(key) {\n var _a, _b;\n (_b = (_a = this._messageRegistry.get(key)) === null || _a === void 0 ? void 0 : _a.messageElement) === null || _b === void 0 ? void 0 : _b.remove();\n this._messageRegistry.delete(key);\n }\n /** Creates the global container for all aria-describedby messages. */\n _createMessagesContainer() {\n if (this._messagesContainer) {\n return;\n }\n const containerClassName = 'cdk-describedby-message-container';\n const serverContainers = this._document.querySelectorAll(`.${containerClassName}[platform=\"server\"]`);\n for (let i = 0; i < serverContainers.length; i++) {\n // When going from the server to the client, we may end up in a situation where there's\n // already a container on the page, but we don't have a reference to it. Clear the\n // old container so we don't get duplicates. Doing this, instead of emptying the previous\n // container, should be slightly faster.\n serverContainers[i].remove();\n }\n const messagesContainer = this._document.createElement('div');\n // We add `visibility: hidden` in order to prevent text in this container from\n // being searchable by the browser's Ctrl + F functionality.\n // Screen-readers will still read the description for elements with aria-describedby even\n // when the description element is not visible.\n messagesContainer.style.visibility = 'hidden';\n // Even though we use `visibility: hidden`, we still apply `cdk-visually-hidden` so that\n // the description element doesn't impact page layout.\n messagesContainer.classList.add(containerClassName);\n messagesContainer.classList.add('cdk-visually-hidden');\n // @breaking-change 14.0.0 Remove null check for `_platform`.\n if (this._platform && !this._platform.isBrowser) {\n messagesContainer.setAttribute('platform', 'server');\n }\n this._document.body.appendChild(messagesContainer);\n this._messagesContainer = messagesContainer;\n }\n /** Removes all cdk-describedby messages that are hosted through the element. */\n _removeCdkDescribedByReferenceIds(element) {\n // Remove all aria-describedby reference IDs that are prefixed by CDK_DESCRIBEDBY_ID_PREFIX\n const originalReferenceIds = getAriaReferenceIds(element, 'aria-describedby').filter(id => id.indexOf(CDK_DESCRIBEDBY_ID_PREFIX) != 0);\n element.setAttribute('aria-describedby', originalReferenceIds.join(' '));\n }\n /**\n * Adds a message reference to the element using aria-describedby and increments the registered\n * message's reference count.\n */\n _addMessageReference(element, key) {\n const registeredMessage = this._messageRegistry.get(key);\n // Add the aria-describedby reference and set the\n // describedby_host attribute to mark the element.\n addAriaReferencedId(element, 'aria-describedby', registeredMessage.messageElement.id);\n element.setAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE, this._id);\n registeredMessage.referenceCount++;\n }\n /**\n * Removes a message reference from the element using aria-describedby\n * and decrements the registered message's reference count.\n */\n _removeMessageReference(element, key) {\n const registeredMessage = this._messageRegistry.get(key);\n registeredMessage.referenceCount--;\n removeAriaReferencedId(element, 'aria-describedby', registeredMessage.messageElement.id);\n element.removeAttribute(CDK_DESCRIBEDBY_HOST_ATTRIBUTE);\n }\n /** Returns true if the element has been described by the provided message ID. */\n _isElementDescribedByMessage(element, key) {\n const referenceIds = getAriaReferenceIds(element, 'aria-describedby');\n const registeredMessage = this._messageRegistry.get(key);\n const messageId = registeredMessage && registeredMessage.messageElement.id;\n return !!messageId && referenceIds.indexOf(messageId) != -1;\n }\n /** Determines whether a message can be described on a particular element. */\n _canBeDescribed(element, message) {\n if (!this._isElementNode(element)) {\n return false;\n }\n if (message && typeof message === 'object') {\n // We'd have to make some assumptions about the description element's text, if the consumer\n // passed in an element. Assume that if an element is passed in, the consumer has verified\n // that it can be used as a description.\n return true;\n }\n const trimmedMessage = message == null ? '' : `${message}`.trim();\n const ariaLabel = element.getAttribute('aria-label');\n // We shouldn't set descriptions if they're exactly the same as the `aria-label` of the\n // element, because screen readers will end up reading out the same text twice in a row.\n return trimmedMessage ? !ariaLabel || ariaLabel.trim() !== trimmedMessage : false;\n }\n /** Checks whether a node is an Element node. */\n _isElementNode(element) {\n return element.nodeType === this._document.ELEMENT_NODE;\n }\n}\nAriaDescriber.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: AriaDescriber, deps: [{ token: DOCUMENT }, { token: i1.Platform }], target: i0.ɵɵFactoryTarget.Injectable });\nAriaDescriber.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: AriaDescriber, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: AriaDescriber, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i1.Platform }];\n } });\n/** Gets a key that can be used to look messages up in the registry. */\nfunction getKey(message, role) {\n return typeof message === 'string' ? `${role || ''}/${message}` : message;\n}\n/** Assigns a unique ID to an element, if it doesn't have one already. */\nfunction setMessageId(element) {\n if (!element.id) {\n element.id = `${CDK_DESCRIBEDBY_ID_PREFIX}-${nextId++}`;\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 * This class manages keyboard events for selectable lists. If you pass it a query list\n * of items, it will set the active item correctly when arrow events occur.\n */\nclass ListKeyManager {\n constructor(_items) {\n this._items = _items;\n this._activeItemIndex = -1;\n this._activeItem = null;\n this._wrap = false;\n this._letterKeyStream = new Subject();\n this._typeaheadSubscription = Subscription.EMPTY;\n this._vertical = true;\n this._allowedModifierKeys = [];\n this._homeAndEnd = false;\n /**\n * Predicate function that can be used to check whether an item should be skipped\n * by the key manager. By default, disabled items are skipped.\n */\n this._skipPredicateFn = (item) => item.disabled;\n // Buffer for the letters that the user has pressed when the typeahead option is turned on.\n this._pressedLetters = [];\n /**\n * Stream that emits any time the TAB key is pressed, so components can react\n * when focus is shifted off of the list.\n */\n this.tabOut = new Subject();\n /** Stream that emits whenever the active item of the list manager changes. */\n this.change = new Subject();\n // We allow for the items to be an array because, in some cases, the consumer may\n // not have access to a QueryList of the items they want to manage (e.g. when the\n // items aren't being collected via `ViewChildren` or `ContentChildren`).\n if (_items instanceof QueryList) {\n _items.changes.subscribe((newItems) => {\n if (this._activeItem) {\n const itemArray = newItems.toArray();\n const newIndex = itemArray.indexOf(this._activeItem);\n if (newIndex > -1 && newIndex !== this._activeItemIndex) {\n this._activeItemIndex = newIndex;\n }\n }\n });\n }\n }\n /**\n * Sets the predicate function that determines which items should be skipped by the\n * list key manager.\n * @param predicate Function that determines whether the given item should be skipped.\n */\n skipPredicate(predicate) {\n this._skipPredicateFn = predicate;\n return this;\n }\n /**\n * Configures wrapping mode, which determines whether the active item will wrap to\n * the other end of list when there are no more items in the given direction.\n * @param shouldWrap Whether the list should wrap when reaching the end.\n */\n withWrap(shouldWrap = true) {\n this._wrap = shouldWrap;\n return this;\n }\n /**\n * Configures whether the key manager should be able to move the selection vertically.\n * @param enabled Whether vertical selection should be enabled.\n */\n withVerticalOrientation(enabled = true) {\n this._vertical = enabled;\n return this;\n }\n /**\n * Configures the key manager to move the selection horizontally.\n * Passing in `null` will disable horizontal movement.\n * @param direction Direction in which the selection can be moved.\n */\n withHorizontalOrientation(direction) {\n this._horizontal = direction;\n return this;\n }\n /**\n * Modifier keys which are allowed to be held down and whose default actions will be prevented\n * as the user is pressing the arrow keys. Defaults to not allowing any modifier keys.\n */\n withAllowedModifierKeys(keys) {\n this._allowedModifierKeys = keys;\n return this;\n }\n /**\n * Turns on typeahead mode which allows users to set the active item by typing.\n * @param debounceInterval Time to wait after the last keystroke before setting the active item.\n */\n withTypeAhead(debounceInterval = 200) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) &&\n this._items.length &&\n this._items.some(item => typeof item.getLabel !== 'function')) {\n throw Error('ListKeyManager items in typeahead mode must implement the `getLabel` method.');\n }\n this._typeaheadSubscription.unsubscribe();\n // Debounce the presses of non-navigational keys, collect the ones that correspond to letters\n // and convert those letters back into a string. Afterwards find the first item that starts\n // with that string and select it.\n this._typeaheadSubscription = this._letterKeyStream\n .pipe(tap(letter => this._pressedLetters.push(letter)), debounceTime(debounceInterval), filter(() => this._pressedLetters.length > 0), map(() => this._pressedLetters.join('')))\n .subscribe(inputString => {\n const items = this._getItemsArray();\n // Start at 1 because we want to start searching at the item immediately\n // following the current active item.\n for (let i = 1; i < items.length + 1; i++) {\n const index = (this._activeItemIndex + i) % items.length;\n const item = items[index];\n if (!this._skipPredicateFn(item) &&\n item.getLabel().toUpperCase().trim().indexOf(inputString) === 0) {\n this.setActiveItem(index);\n break;\n }\n }\n this._pressedLetters = [];\n });\n return this;\n }\n /**\n * Configures the key manager to activate the first and last items\n * respectively when the Home or End key is pressed.\n * @param enabled Whether pressing the Home or End key activates the first/last item.\n */\n withHomeAndEnd(enabled = true) {\n this._homeAndEnd = enabled;\n return this;\n }\n setActiveItem(item) {\n const previousActiveItem = this._activeItem;\n this.updateActiveItem(item);\n if (this._activeItem !== previousActiveItem) {\n this.change.next(this._activeItemIndex);\n }\n }\n /**\n * Sets the active item depending on the key event passed in.\n * @param event Keyboard event to be used for determining which element should be active.\n */\n onKeydown(event) {\n const keyCode = event.keyCode;\n const modifiers = ['altKey', 'ctrlKey', 'metaKey', 'shiftKey'];\n const isModifierAllowed = modifiers.every(modifier => {\n return !event[modifier] || this._allowedModifierKeys.indexOf(modifier) > -1;\n });\n switch (keyCode) {\n case TAB:\n this.tabOut.next();\n return;\n case DOWN_ARROW:\n if (this._vertical && isModifierAllowed) {\n this.setNextItemActive();\n break;\n }\n else {\n return;\n }\n case UP_ARROW:\n if (this._vertical && isModifierAllowed) {\n this.setPreviousItemActive();\n break;\n }\n else {\n return;\n }\n case RIGHT_ARROW:\n if (this._horizontal && isModifierAllowed) {\n this._horizontal === 'rtl' ? this.setPreviousItemActive() : this.setNextItemActive();\n break;\n }\n else {\n return;\n }\n case LEFT_ARROW:\n if (this._horizontal && isModifierAllowed) {\n this._horizontal === 'rtl' ? this.setNextItemActive() : this.setPreviousItemActive();\n break;\n }\n else {\n return;\n }\n case HOME:\n if (this._homeAndEnd && isModifierAllowed) {\n this.setFirstItemActive();\n break;\n }\n else {\n return;\n }\n case END:\n if (this._homeAndEnd && isModifierAllowed) {\n this.setLastItemActive();\n break;\n }\n else {\n return;\n }\n default:\n if (isModifierAllowed || hasModifierKey(event, 'shiftKey')) {\n // Attempt to use the `event.key` which also maps it to the user's keyboard language,\n // otherwise fall back to resolving alphanumeric characters via the keyCode.\n if (event.key && event.key.length === 1) {\n this._letterKeyStream.next(event.key.toLocaleUpperCase());\n }\n else if ((keyCode >= A && keyCode <= Z) || (keyCode >= ZERO && keyCode <= NINE)) {\n this._letterKeyStream.next(String.fromCharCode(keyCode));\n }\n }\n // Note that we return here, in order to avoid preventing\n // the default action of non-navigational keys.\n return;\n }\n this._pressedLetters = [];\n event.preventDefault();\n }\n /** Index of the currently active item. */\n get activeItemIndex() {\n return this._activeItemIndex;\n }\n /** The active item. */\n get activeItem() {\n return this._activeItem;\n }\n /** Gets whether the user is currently typing into the manager using the typeahead feature. */\n isTyping() {\n return this._pressedLetters.length > 0;\n }\n /** Sets the active item to the first enabled item in the list. */\n setFirstItemActive() {\n this._setActiveItemByIndex(0, 1);\n }\n /** Sets the active item to the last enabled item in the list. */\n setLastItemActive() {\n this._setActiveItemByIndex(this._items.length - 1, -1);\n }\n /** Sets the active item to the next enabled item in the list. */\n setNextItemActive() {\n this._activeItemIndex < 0 ? this.setFirstItemActive() : this._setActiveItemByDelta(1);\n }\n /** Sets the active item to a previous enabled item in the list. */\n setPreviousItemActive() {\n this._activeItemIndex < 0 && this._wrap\n ? this.setLastItemActive()\n : this._setActiveItemByDelta(-1);\n }\n updateActiveItem(item) {\n const itemArray = this._getItemsArray();\n const index = typeof item === 'number' ? item : itemArray.indexOf(item);\n const activeItem = itemArray[index];\n // Explicitly check for `null` and `undefined` because other falsy values are valid.\n this._activeItem = activeItem == null ? null : activeItem;\n this._activeItemIndex = index;\n }\n /**\n * This method sets the active item, given a list of items and the delta between the\n * currently active item and the new active item. It will calculate differently\n * depending on whether wrap mode is turned on.\n */\n _setActiveItemByDelta(delta) {\n this._wrap ? this._setActiveInWrapMode(delta) : this._setActiveInDefaultMode(delta);\n }\n /**\n * Sets the active item properly given \"wrap\" mode. In other words, it will continue to move\n * down the list until it finds an item that is not disabled, and it will wrap if it\n * encounters either end of the list.\n */\n _setActiveInWrapMode(delta) {\n const items = this._getItemsArray();\n for (let i = 1; i <= items.length; i++) {\n const index = (this._activeItemIndex + delta * i + items.length) % items.length;\n const item = items[index];\n if (!this._skipPredicateFn(item)) {\n this.setActiveItem(index);\n return;\n }\n }\n }\n /**\n * Sets the active item properly given the default mode. In other words, it will\n * continue to move down the list until it finds an item that is not disabled. If\n * it encounters either end of the list, it will stop and not wrap.\n */\n _setActiveInDefaultMode(delta) {\n this._setActiveItemByIndex(this._activeItemIndex + delta, delta);\n }\n /**\n * Sets the active item to the first enabled item starting at the index specified. If the\n * item is disabled, it will move in the fallbackDelta direction until it either\n * finds an enabled item or encounters the end of the list.\n */\n _setActiveItemByIndex(index, fallbackDelta) {\n const items = this._getItemsArray();\n if (!items[index]) {\n return;\n }\n while (this._skipPredicateFn(items[index])) {\n index += fallbackDelta;\n if (!items[index]) {\n return;\n }\n }\n this.setActiveItem(index);\n }\n /** Returns the items as an array. */\n _getItemsArray() {\n return this._items instanceof QueryList ? this._items.toArray() : this._items;\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 ActiveDescendantKeyManager extends ListKeyManager {\n setActiveItem(index) {\n if (this.activeItem) {\n this.activeItem.setInactiveStyles();\n }\n super.setActiveItem(index);\n if (this.activeItem) {\n this.activeItem.setActiveStyles();\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 */\nclass FocusKeyManager extends ListKeyManager {\n constructor() {\n super(...arguments);\n this._origin = 'program';\n }\n /**\n * Sets the focus origin that will be passed in to the items for any subsequent `focus` calls.\n * @param origin Focus origin to be used when focusing items.\n */\n setFocusOrigin(origin) {\n this._origin = origin;\n return this;\n }\n setActiveItem(item) {\n super.setActiveItem(item);\n if (this.activeItem) {\n this.activeItem.focus(this._origin);\n }\n }\n}\n\n/**\n * Configuration for the isFocusable method.\n */\nclass IsFocusableConfig {\n constructor() {\n /**\n * Whether to count an element as focusable even if it is not currently visible.\n */\n this.ignoreVisibility = false;\n }\n}\n// The InteractivityChecker leans heavily on the ally.js accessibility utilities.\n// Methods like `isTabbable` are only covering specific edge-cases for the browsers which are\n// supported.\n/**\n * Utility for checking the interactivity of an element, such as whether is is focusable or\n * tabbable.\n */\nclass InteractivityChecker {\n constructor(_platform) {\n this._platform = _platform;\n }\n /**\n * Gets whether an element is disabled.\n *\n * @param element Element to be checked.\n * @returns Whether the element is disabled.\n */\n isDisabled(element) {\n // This does not capture some cases, such as a non-form control with a disabled attribute or\n // a form control inside of a disabled form, but should capture the most common cases.\n return element.hasAttribute('disabled');\n }\n /**\n * Gets whether an element is visible for the purposes of interactivity.\n *\n * This will capture states like `display: none` and `visibility: hidden`, but not things like\n * being clipped by an `overflow: hidden` parent or being outside the viewport.\n *\n * @returns Whether the element is visible.\n */\n isVisible(element) {\n return hasGeometry(element) && getComputedStyle(element).visibility === 'visible';\n }\n /**\n * Gets whether an element can be reached via Tab key.\n * Assumes that the element has already been checked with isFocusable.\n *\n * @param element Element to be checked.\n * @returns Whether the element is tabbable.\n */\n isTabbable(element) {\n // Nothing is tabbable on the server 😎\n if (!this._platform.isBrowser) {\n return false;\n }\n const frameElement = getFrameElement(getWindow(element));\n if (frameElement) {\n // Frame elements inherit their tabindex onto all child elements.\n if (getTabIndexValue(frameElement) === -1) {\n return false;\n }\n // Browsers disable tabbing to an element inside of an invisible frame.\n if (!this.isVisible(frameElement)) {\n return false;\n }\n }\n let nodeName = element.nodeName.toLowerCase();\n let tabIndexValue = getTabIndexValue(element);\n if (element.hasAttribute('contenteditable')) {\n return tabIndexValue !== -1;\n }\n if (nodeName === 'iframe' || nodeName === 'object') {\n // The frame or object's content may be tabbable depending on the content, but it's\n // not possibly to reliably detect the content of the frames. We always consider such\n // elements as non-tabbable.\n return false;\n }\n // In iOS, the browser only considers some specific elements as tabbable.\n if (this._platform.WEBKIT && this._platform.IOS && !isPotentiallyTabbableIOS(element)) {\n return false;\n }\n if (nodeName === 'audio') {\n // Audio elements without controls enabled are never tabbable, regardless\n // of the tabindex attribute explicitly being set.\n if (!element.hasAttribute('controls')) {\n return false;\n }\n // Audio elements with controls are by default tabbable unless the\n // tabindex attribute is set to `-1` explicitly.\n return tabIndexValue !== -1;\n }\n if (nodeName === 'video') {\n // For all video elements, if the tabindex attribute is set to `-1`, the video\n // is not tabbable. Note: We cannot rely on the default `HTMLElement.tabIndex`\n // property as that one is set to `-1` in Chrome, Edge and Safari v13.1. The\n // tabindex attribute is the source of truth here.\n if (tabIndexValue === -1) {\n return false;\n }\n // If the tabindex is explicitly set, and not `-1` (as per check before), the\n // video element is always tabbable (regardless of whether it has controls or not).\n if (tabIndexValue !== null) {\n return true;\n }\n // Otherwise (when no explicit tabindex is set), a video is only tabbable if it\n // has controls enabled. Firefox is special as videos are always tabbable regardless\n // of whether there are controls or not.\n return this._platform.FIREFOX || element.hasAttribute('controls');\n }\n return element.tabIndex >= 0;\n }\n /**\n * Gets whether an element can be focused by the user.\n *\n * @param element Element to be checked.\n * @param config The config object with options to customize this method's behavior\n * @returns Whether the element is focusable.\n */\n isFocusable(element, config) {\n // Perform checks in order of left to most expensive.\n // Again, naive approach that does not capture many edge cases and browser quirks.\n return (isPotentiallyFocusable(element) &&\n !this.isDisabled(element) &&\n ((config === null || config === void 0 ? void 0 : config.ignoreVisibility) || this.isVisible(element)));\n }\n}\nInteractivityChecker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: InteractivityChecker, deps: [{ token: i1.Platform }], target: i0.ɵɵFactoryTarget.Injectable });\nInteractivityChecker.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: InteractivityChecker, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: InteractivityChecker, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i1.Platform }]; } });\n/**\n * Returns the frame element from a window object. Since browsers like MS Edge throw errors if\n * the frameElement property is being accessed from a different host address, this property\n * should be accessed carefully.\n */\nfunction getFrameElement(window) {\n try {\n return window.frameElement;\n }\n catch (_a) {\n return null;\n }\n}\n/** Checks whether the specified element has any geometry / rectangles. */\nfunction hasGeometry(element) {\n // Use logic from jQuery to check for an invisible element.\n // See https://github.com/jquery/jquery/blob/master/src/css/hiddenVisibleSelectors.js#L12\n return !!(element.offsetWidth ||\n element.offsetHeight ||\n (typeof element.getClientRects === 'function' && element.getClientRects().length));\n}\n/** Gets whether an element's */\nfunction isNativeFormElement(element) {\n let nodeName = element.nodeName.toLowerCase();\n return (nodeName === 'input' ||\n nodeName === 'select' ||\n nodeName === 'button' ||\n nodeName === 'textarea');\n}\n/** Gets whether an element is an ``. */\nfunction isHiddenInput(element) {\n return isInputElement(element) && element.type == 'hidden';\n}\n/** Gets whether an element is an anchor that has an href attribute. */\nfunction isAnchorWithHref(element) {\n return isAnchorElement(element) && element.hasAttribute('href');\n}\n/** Gets whether an element is an input element. */\nfunction isInputElement(element) {\n return element.nodeName.toLowerCase() == 'input';\n}\n/** Gets whether an element is an anchor element. */\nfunction isAnchorElement(element) {\n return element.nodeName.toLowerCase() == 'a';\n}\n/** Gets whether an element has a valid tabindex. */\nfunction hasValidTabIndex(element) {\n if (!element.hasAttribute('tabindex') || element.tabIndex === undefined) {\n return false;\n }\n let tabIndex = element.getAttribute('tabindex');\n return !!(tabIndex && !isNaN(parseInt(tabIndex, 10)));\n}\n/**\n * Returns the parsed tabindex from the element attributes instead of returning the\n * evaluated tabindex from the browsers defaults.\n */\nfunction getTabIndexValue(element) {\n if (!hasValidTabIndex(element)) {\n return null;\n }\n // See browser issue in Gecko https://bugzilla.mozilla.org/show_bug.cgi?id=1128054\n const tabIndex = parseInt(element.getAttribute('tabindex') || '', 10);\n return isNaN(tabIndex) ? -1 : tabIndex;\n}\n/** Checks whether the specified element is potentially tabbable on iOS */\nfunction isPotentiallyTabbableIOS(element) {\n let nodeName = element.nodeName.toLowerCase();\n let inputType = nodeName === 'input' && element.type;\n return (inputType === 'text' ||\n inputType === 'password' ||\n nodeName === 'select' ||\n nodeName === 'textarea');\n}\n/**\n * Gets whether an element is potentially focusable without taking current visible/disabled state\n * into account.\n */\nfunction isPotentiallyFocusable(element) {\n // Inputs are potentially focusable *unless* they're type=\"hidden\".\n if (isHiddenInput(element)) {\n return false;\n }\n return (isNativeFormElement(element) ||\n isAnchorWithHref(element) ||\n element.hasAttribute('contenteditable') ||\n hasValidTabIndex(element));\n}\n/** Gets the parent window of a DOM node with regards of being inside of an iframe. */\nfunction getWindow(node) {\n // ownerDocument is null if `node` itself *is* a document.\n return (node.ownerDocument && node.ownerDocument.defaultView) || window;\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 * Class that allows for trapping focus within a DOM element.\n *\n * This class currently uses a relatively simple approach to focus trapping.\n * It assumes that the tab order is the same as DOM order, which is not necessarily true.\n * Things like `tabIndex > 0`, flex `order`, and shadow roots can cause the two to be misaligned.\n *\n * @deprecated Use `ConfigurableFocusTrap` instead.\n * @breaking-change 11.0.0\n */\nclass FocusTrap {\n constructor(_element, _checker, _ngZone, _document, deferAnchors = false) {\n this._element = _element;\n this._checker = _checker;\n this._ngZone = _ngZone;\n this._document = _document;\n this._hasAttached = false;\n // Event listeners for the anchors. Need to be regular functions so that we can unbind them later.\n this.startAnchorListener = () => this.focusLastTabbableElement();\n this.endAnchorListener = () => this.focusFirstTabbableElement();\n this._enabled = true;\n if (!deferAnchors) {\n this.attachAnchors();\n }\n }\n /** Whether the focus trap is active. */\n get enabled() {\n return this._enabled;\n }\n set enabled(value) {\n this._enabled = value;\n if (this._startAnchor && this._endAnchor) {\n this._toggleAnchorTabIndex(value, this._startAnchor);\n this._toggleAnchorTabIndex(value, this._endAnchor);\n }\n }\n /** Destroys the focus trap by cleaning up the anchors. */\n destroy() {\n const startAnchor = this._startAnchor;\n const endAnchor = this._endAnchor;\n if (startAnchor) {\n startAnchor.removeEventListener('focus', this.startAnchorListener);\n startAnchor.remove();\n }\n if (endAnchor) {\n endAnchor.removeEventListener('focus', this.endAnchorListener);\n endAnchor.remove();\n }\n this._startAnchor = this._endAnchor = null;\n this._hasAttached = false;\n }\n /**\n * Inserts the anchors into the DOM. This is usually done automatically\n * in the constructor, but can be deferred for cases like directives with `*ngIf`.\n * @returns Whether the focus trap managed to attach successfully. This may not be the case\n * if the target element isn't currently in the DOM.\n */\n attachAnchors() {\n // If we're not on the browser, there can be no focus to trap.\n if (this._hasAttached) {\n return true;\n }\n this._ngZone.runOutsideAngular(() => {\n if (!this._startAnchor) {\n this._startAnchor = this._createAnchor();\n this._startAnchor.addEventListener('focus', this.startAnchorListener);\n }\n if (!this._endAnchor) {\n this._endAnchor = this._createAnchor();\n this._endAnchor.addEventListener('focus', this.endAnchorListener);\n }\n });\n if (this._element.parentNode) {\n this._element.parentNode.insertBefore(this._startAnchor, this._element);\n this._element.parentNode.insertBefore(this._endAnchor, this._element.nextSibling);\n this._hasAttached = true;\n }\n return this._hasAttached;\n }\n /**\n * Waits for the zone to stabilize, then focuses the first tabbable element.\n * @returns Returns a promise that resolves with a boolean, depending\n * on whether focus was moved successfully.\n */\n focusInitialElementWhenReady(options) {\n return new Promise(resolve => {\n this._executeOnStable(() => resolve(this.focusInitialElement(options)));\n });\n }\n /**\n * Waits for the zone to stabilize, then focuses\n * the first tabbable element within the focus trap region.\n * @returns Returns a promise that resolves with a boolean, depending\n * on whether focus was moved successfully.\n */\n focusFirstTabbableElementWhenReady(options) {\n return new Promise(resolve => {\n this._executeOnStable(() => resolve(this.focusFirstTabbableElement(options)));\n });\n }\n /**\n * Waits for the zone to stabilize, then focuses\n * the last tabbable element within the focus trap region.\n * @returns Returns a promise that resolves with a boolean, depending\n * on whether focus was moved successfully.\n */\n focusLastTabbableElementWhenReady(options) {\n return new Promise(resolve => {\n this._executeOnStable(() => resolve(this.focusLastTabbableElement(options)));\n });\n }\n /**\n * Get the specified boundary element of the trapped region.\n * @param bound The boundary to get (start or end of trapped region).\n * @returns The boundary element.\n */\n _getRegionBoundary(bound) {\n // Contains the deprecated version of selector, for temporary backwards comparability.\n const markers = this._element.querySelectorAll(`[cdk-focus-region-${bound}], ` + `[cdkFocusRegion${bound}], ` + `[cdk-focus-${bound}]`);\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n for (let i = 0; i < markers.length; i++) {\n // @breaking-change 8.0.0\n if (markers[i].hasAttribute(`cdk-focus-${bound}`)) {\n console.warn(`Found use of deprecated attribute 'cdk-focus-${bound}', ` +\n `use 'cdkFocusRegion${bound}' instead. The deprecated ` +\n `attribute will be removed in 8.0.0.`, markers[i]);\n }\n else if (markers[i].hasAttribute(`cdk-focus-region-${bound}`)) {\n console.warn(`Found use of deprecated attribute 'cdk-focus-region-${bound}', ` +\n `use 'cdkFocusRegion${bound}' instead. The deprecated attribute ` +\n `will be removed in 8.0.0.`, markers[i]);\n }\n }\n }\n if (bound == 'start') {\n return markers.length ? markers[0] : this._getFirstTabbableElement(this._element);\n }\n return markers.length\n ? markers[markers.length - 1]\n : this._getLastTabbableElement(this._element);\n }\n /**\n * Focuses the element that should be focused when the focus trap is initialized.\n * @returns Whether focus was moved successfully.\n */\n focusInitialElement(options) {\n // Contains the deprecated version of selector, for temporary backwards comparability.\n const redirectToElement = this._element.querySelector(`[cdk-focus-initial], ` + `[cdkFocusInitial]`);\n if (redirectToElement) {\n // @breaking-change 8.0.0\n if ((typeof ngDevMode === 'undefined' || ngDevMode) &&\n redirectToElement.hasAttribute(`cdk-focus-initial`)) {\n console.warn(`Found use of deprecated attribute 'cdk-focus-initial', ` +\n `use 'cdkFocusInitial' instead. The deprecated attribute ` +\n `will be removed in 8.0.0`, redirectToElement);\n }\n // Warn the consumer if the element they've pointed to\n // isn't focusable, when not in production mode.\n if ((typeof ngDevMode === 'undefined' || ngDevMode) &&\n !this._checker.isFocusable(redirectToElement)) {\n console.warn(`Element matching '[cdkFocusInitial]' is not focusable.`, redirectToElement);\n }\n if (!this._checker.isFocusable(redirectToElement)) {\n const focusableChild = this._getFirstTabbableElement(redirectToElement);\n focusableChild === null || focusableChild === void 0 ? void 0 : focusableChild.focus(options);\n return !!focusableChild;\n }\n redirectToElement.focus(options);\n return true;\n }\n return this.focusFirstTabbableElement(options);\n }\n /**\n * Focuses the first tabbable element within the focus trap region.\n * @returns Whether focus was moved successfully.\n */\n focusFirstTabbableElement(options) {\n const redirectToElement = this._getRegionBoundary('start');\n if (redirectToElement) {\n redirectToElement.focus(options);\n }\n return !!redirectToElement;\n }\n /**\n * Focuses the last tabbable element within the focus trap region.\n * @returns Whether focus was moved successfully.\n */\n focusLastTabbableElement(options) {\n const redirectToElement = this._getRegionBoundary('end');\n if (redirectToElement) {\n redirectToElement.focus(options);\n }\n return !!redirectToElement;\n }\n /**\n * Checks whether the focus trap has successfully been attached.\n */\n hasAttached() {\n return this._hasAttached;\n }\n /** Get the first tabbable element from a DOM subtree (inclusive). */\n _getFirstTabbableElement(root) {\n if (this._checker.isFocusable(root) && this._checker.isTabbable(root)) {\n return root;\n }\n const children = root.children;\n for (let i = 0; i < children.length; i++) {\n const tabbableChild = children[i].nodeType === this._document.ELEMENT_NODE\n ? this._getFirstTabbableElement(children[i])\n : null;\n if (tabbableChild) {\n return tabbableChild;\n }\n }\n return null;\n }\n /** Get the last tabbable element from a DOM subtree (inclusive). */\n _getLastTabbableElement(root) {\n if (this._checker.isFocusable(root) && this._checker.isTabbable(root)) {\n return root;\n }\n // Iterate in reverse DOM order.\n const children = root.children;\n for (let i = children.length - 1; i >= 0; i--) {\n const tabbableChild = children[i].nodeType === this._document.ELEMENT_NODE\n ? this._getLastTabbableElement(children[i])\n : null;\n if (tabbableChild) {\n return tabbableChild;\n }\n }\n return null;\n }\n /** Creates an anchor element. */\n _createAnchor() {\n const anchor = this._document.createElement('div');\n this._toggleAnchorTabIndex(this._enabled, anchor);\n anchor.classList.add('cdk-visually-hidden');\n anchor.classList.add('cdk-focus-trap-anchor');\n anchor.setAttribute('aria-hidden', 'true');\n return anchor;\n }\n /**\n * Toggles the `tabindex` of an anchor, based on the enabled state of the focus trap.\n * @param isEnabled Whether the focus trap is enabled.\n * @param anchor Anchor on which to toggle the tabindex.\n */\n _toggleAnchorTabIndex(isEnabled, anchor) {\n // Remove the tabindex completely, rather than setting it to -1, because if the\n // element has a tabindex, the user might still hit it when navigating with the arrow keys.\n isEnabled ? anchor.setAttribute('tabindex', '0') : anchor.removeAttribute('tabindex');\n }\n /**\n * Toggles the`tabindex` of both anchors to either trap Tab focus or allow it to escape.\n * @param enabled: Whether the anchors should trap Tab.\n */\n toggleAnchors(enabled) {\n if (this._startAnchor && this._endAnchor) {\n this._toggleAnchorTabIndex(enabled, this._startAnchor);\n this._toggleAnchorTabIndex(enabled, this._endAnchor);\n }\n }\n /** Executes a function when the zone is stable. */\n _executeOnStable(fn) {\n if (this._ngZone.isStable) {\n fn();\n }\n else {\n this._ngZone.onStable.pipe(take(1)).subscribe(fn);\n }\n }\n}\n/**\n * Factory that allows easy instantiation of focus traps.\n * @deprecated Use `ConfigurableFocusTrapFactory` instead.\n * @breaking-change 11.0.0\n */\nclass FocusTrapFactory {\n constructor(_checker, _ngZone, _document) {\n this._checker = _checker;\n this._ngZone = _ngZone;\n this._document = _document;\n }\n /**\n * Creates a focus-trapped region around the given element.\n * @param element The element around which focus will be trapped.\n * @param deferCaptureElements Defers the creation of focus-capturing elements to be done\n * manually by the user.\n * @returns The created focus trap instance.\n */\n create(element, deferCaptureElements = false) {\n return new FocusTrap(element, this._checker, this._ngZone, this._document, deferCaptureElements);\n }\n}\nFocusTrapFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FocusTrapFactory, deps: [{ token: InteractivityChecker }, { token: i0.NgZone }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nFocusTrapFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FocusTrapFactory, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FocusTrapFactory, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () {\n return [{ type: InteractivityChecker }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }];\n } });\n/** Directive for trapping focus within a region. */\nclass CdkTrapFocus {\n constructor(_elementRef, _focusTrapFactory, \n /**\n * @deprecated No longer being used. To be removed.\n * @breaking-change 13.0.0\n */\n _document) {\n this._elementRef = _elementRef;\n this._focusTrapFactory = _focusTrapFactory;\n /** Previously focused element to restore focus to upon destroy when using autoCapture. */\n this._previouslyFocusedElement = null;\n this.focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement, true);\n }\n /** Whether the focus trap is active. */\n get enabled() {\n return this.focusTrap.enabled;\n }\n set enabled(value) {\n this.focusTrap.enabled = coerceBooleanProperty(value);\n }\n /**\n * Whether the directive should automatically move focus into the trapped region upon\n * initialization and return focus to the previous activeElement upon destruction.\n */\n get autoCapture() {\n return this._autoCapture;\n }\n set autoCapture(value) {\n this._autoCapture = coerceBooleanProperty(value);\n }\n ngOnDestroy() {\n this.focusTrap.destroy();\n // If we stored a previously focused element when using autoCapture, return focus to that\n // element now that the trapped region is being destroyed.\n if (this._previouslyFocusedElement) {\n this._previouslyFocusedElement.focus();\n this._previouslyFocusedElement = null;\n }\n }\n ngAfterContentInit() {\n this.focusTrap.attachAnchors();\n if (this.autoCapture) {\n this._captureFocus();\n }\n }\n ngDoCheck() {\n if (!this.focusTrap.hasAttached()) {\n this.focusTrap.attachAnchors();\n }\n }\n ngOnChanges(changes) {\n const autoCaptureChange = changes['autoCapture'];\n if (autoCaptureChange &&\n !autoCaptureChange.firstChange &&\n this.autoCapture &&\n this.focusTrap.hasAttached()) {\n this._captureFocus();\n }\n }\n _captureFocus() {\n this._previouslyFocusedElement = _getFocusedElementPierceShadowDom();\n this.focusTrap.focusInitialElementWhenReady();\n }\n}\nCdkTrapFocus.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkTrapFocus, deps: [{ token: i0.ElementRef }, { token: FocusTrapFactory }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive });\nCdkTrapFocus.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkTrapFocus, selector: \"[cdkTrapFocus]\", inputs: { enabled: [\"cdkTrapFocus\", \"enabled\"], autoCapture: [\"cdkTrapFocusAutoCapture\", \"autoCapture\"] }, exportAs: [\"cdkTrapFocus\"], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkTrapFocus, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkTrapFocus]',\n exportAs: 'cdkTrapFocus',\n }]\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: FocusTrapFactory }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }];\n }, propDecorators: { enabled: [{\n type: Input,\n args: ['cdkTrapFocus']\n }], autoCapture: [{\n type: Input,\n args: ['cdkTrapFocusAutoCapture']\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 * Class that allows for trapping focus within a DOM element.\n *\n * This class uses a strategy pattern that determines how it traps focus.\n * See FocusTrapInertStrategy.\n */\nclass ConfigurableFocusTrap extends FocusTrap {\n constructor(_element, _checker, _ngZone, _document, _focusTrapManager, _inertStrategy, config) {\n super(_element, _checker, _ngZone, _document, config.defer);\n this._focusTrapManager = _focusTrapManager;\n this._inertStrategy = _inertStrategy;\n this._focusTrapManager.register(this);\n }\n /** Whether the FocusTrap is enabled. */\n get enabled() {\n return this._enabled;\n }\n set enabled(value) {\n this._enabled = value;\n if (this._enabled) {\n this._focusTrapManager.register(this);\n }\n else {\n this._focusTrapManager.deregister(this);\n }\n }\n /** Notifies the FocusTrapManager that this FocusTrap will be destroyed. */\n destroy() {\n this._focusTrapManager.deregister(this);\n super.destroy();\n }\n /** @docs-private Implemented as part of ManagedFocusTrap. */\n _enable() {\n this._inertStrategy.preventFocus(this);\n this.toggleAnchors(true);\n }\n /** @docs-private Implemented as part of ManagedFocusTrap. */\n _disable() {\n this._inertStrategy.allowFocus(this);\n this.toggleAnchors(false);\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/** The injection token used to specify the inert strategy. */\nconst FOCUS_TRAP_INERT_STRATEGY = new InjectionToken('FOCUS_TRAP_INERT_STRATEGY');\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 * Lightweight FocusTrapInertStrategy that adds a document focus event\n * listener to redirect focus back inside the FocusTrap.\n */\nclass EventListenerFocusTrapInertStrategy {\n constructor() {\n /** Focus event handler. */\n this._listener = null;\n }\n /** Adds a document event listener that keeps focus inside the FocusTrap. */\n preventFocus(focusTrap) {\n // Ensure there's only one listener per document\n if (this._listener) {\n focusTrap._document.removeEventListener('focus', this._listener, true);\n }\n this._listener = (e) => this._trapFocus(focusTrap, e);\n focusTrap._ngZone.runOutsideAngular(() => {\n focusTrap._document.addEventListener('focus', this._listener, true);\n });\n }\n /** Removes the event listener added in preventFocus. */\n allowFocus(focusTrap) {\n if (!this._listener) {\n return;\n }\n focusTrap._document.removeEventListener('focus', this._listener, true);\n this._listener = null;\n }\n /**\n * Refocuses the first element in the FocusTrap if the focus event target was outside\n * the FocusTrap.\n *\n * This is an event listener callback. The event listener is added in runOutsideAngular,\n * so all this code runs outside Angular as well.\n */\n _trapFocus(focusTrap, event) {\n var _a;\n const target = event.target;\n const focusTrapRoot = focusTrap._element;\n // Don't refocus if target was in an overlay, because the overlay might be associated\n // with an element inside the FocusTrap, ex. mat-select.\n if (target && !focusTrapRoot.contains(target) && !((_a = target.closest) === null || _a === void 0 ? void 0 : _a.call(target, 'div.cdk-overlay-pane'))) {\n // Some legacy FocusTrap usages have logic that focuses some element on the page\n // just before FocusTrap is destroyed. For backwards compatibility, wait\n // to be sure FocusTrap is still enabled before refocusing.\n setTimeout(() => {\n // Check whether focus wasn't put back into the focus trap while the timeout was pending.\n if (focusTrap.enabled && !focusTrapRoot.contains(focusTrap._document.activeElement)) {\n focusTrap.focusFirstTabbableElement();\n }\n });\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/** Injectable that ensures only the most recently enabled FocusTrap is active. */\nclass FocusTrapManager {\n constructor() {\n // A stack of the FocusTraps on the page. Only the FocusTrap at the\n // top of the stack is active.\n this._focusTrapStack = [];\n }\n /**\n * Disables the FocusTrap at the top of the stack, and then pushes\n * the new FocusTrap onto the stack.\n */\n register(focusTrap) {\n // Dedupe focusTraps that register multiple times.\n this._focusTrapStack = this._focusTrapStack.filter(ft => ft !== focusTrap);\n let stack = this._focusTrapStack;\n if (stack.length) {\n stack[stack.length - 1]._disable();\n }\n stack.push(focusTrap);\n focusTrap._enable();\n }\n /**\n * Removes the FocusTrap from the stack, and activates the\n * FocusTrap that is the new top of the stack.\n */\n deregister(focusTrap) {\n focusTrap._disable();\n const stack = this._focusTrapStack;\n const i = stack.indexOf(focusTrap);\n if (i !== -1) {\n stack.splice(i, 1);\n if (stack.length) {\n stack[stack.length - 1]._enable();\n }\n }\n }\n}\nFocusTrapManager.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FocusTrapManager, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nFocusTrapManager.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FocusTrapManager, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FocusTrapManager, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\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/** Factory that allows easy instantiation of configurable focus traps. */\nclass ConfigurableFocusTrapFactory {\n constructor(_checker, _ngZone, _focusTrapManager, _document, _inertStrategy) {\n this._checker = _checker;\n this._ngZone = _ngZone;\n this._focusTrapManager = _focusTrapManager;\n this._document = _document;\n // TODO split up the strategies into different modules, similar to DateAdapter.\n this._inertStrategy = _inertStrategy || new EventListenerFocusTrapInertStrategy();\n }\n create(element, config = { defer: false }) {\n let configObject;\n if (typeof config === 'boolean') {\n configObject = { defer: config };\n }\n else {\n configObject = config;\n }\n return new ConfigurableFocusTrap(element, this._checker, this._ngZone, this._document, this._focusTrapManager, this._inertStrategy, configObject);\n }\n}\nConfigurableFocusTrapFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: ConfigurableFocusTrapFactory, deps: [{ token: InteractivityChecker }, { token: i0.NgZone }, { token: FocusTrapManager }, { token: DOCUMENT }, { token: FOCUS_TRAP_INERT_STRATEGY, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nConfigurableFocusTrapFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: ConfigurableFocusTrapFactory, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: ConfigurableFocusTrapFactory, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () {\n return [{ type: InteractivityChecker }, { type: i0.NgZone }, { type: FocusTrapManager }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [FOCUS_TRAP_INERT_STRATEGY]\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/** Gets whether an event could be a faked `mousedown` event dispatched by a screen reader. */\nfunction isFakeMousedownFromScreenReader(event) {\n // Some screen readers will dispatch a fake `mousedown` event when pressing enter or space on\n // a clickable element. We can distinguish these events when both `offsetX` and `offsetY` are\n // zero or `event.buttons` is zero, depending on the browser:\n // - `event.buttons` works on Firefox, but fails on Chrome.\n // - `offsetX` and `offsetY` work on Chrome, but fail on Firefox.\n // Note that there's an edge case where the user could click the 0x0 spot of the\n // screen themselves, but that is unlikely to contain interactive elements.\n return event.buttons === 0 || (event.offsetX === 0 && event.offsetY === 0);\n}\n/** Gets whether an event could be a faked `touchstart` event dispatched by a screen reader. */\nfunction isFakeTouchstartFromScreenReader(event) {\n const touch = (event.touches && event.touches[0]) || (event.changedTouches && event.changedTouches[0]);\n // A fake `touchstart` can be distinguished from a real one by looking at the `identifier`\n // which is typically >= 0 on a real device versus -1 from a screen reader. Just to be safe,\n // we can also look at `radiusX` and `radiusY`. This behavior was observed against a Windows 10\n // device with a touch screen running NVDA v2020.4 and Firefox 85 or Chrome 88.\n return (!!touch &&\n touch.identifier === -1 &&\n (touch.radiusX == null || touch.radiusX === 1) &&\n (touch.radiusY == null || touch.radiusY === 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 * Injectable options for the InputModalityDetector. These are shallowly merged with the default\n * options.\n */\nconst INPUT_MODALITY_DETECTOR_OPTIONS = new InjectionToken('cdk-input-modality-detector-options');\n/**\n * Default options for the InputModalityDetector.\n *\n * Modifier keys are ignored by default (i.e. when pressed won't cause the service to detect\n * keyboard input modality) for two reasons:\n *\n * 1. Modifier keys are commonly used with mouse to perform actions such as 'right click' or 'open\n * in new tab', and are thus less representative of actual keyboard interaction.\n * 2. VoiceOver triggers some keyboard events when linearly navigating with Control + Option (but\n * confusingly not with Caps Lock). Thus, to have parity with other screen readers, we ignore\n * these keys so as to not update the input modality.\n *\n * Note that we do not by default ignore the right Meta key on Safari because it has the same key\n * code as the ContextMenu key on other browsers. When we switch to using event.key, we can\n * distinguish between the two.\n */\nconst INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS = {\n ignoreKeys: [ALT, CONTROL, MAC_META, META, SHIFT],\n};\n/**\n * The amount of time needed to pass after a touchstart event in order for a subsequent mousedown\n * event to be attributed as mouse and not touch.\n *\n * This is the value used by AngularJS Material. Through trial and error (on iPhone 6S) they found\n * that a value of around 650ms seems appropriate.\n */\nconst TOUCH_BUFFER_MS = 650;\n/**\n * Event listener options that enable capturing and also mark the listener as passive if the browser\n * supports it.\n */\nconst modalityEventListenerOptions = normalizePassiveListenerOptions({\n passive: true,\n capture: true,\n});\n/**\n * Service that detects the user's input modality.\n *\n * This service does not update the input modality when a user navigates with a screen reader\n * (e.g. linear navigation with VoiceOver, object navigation / browse mode with NVDA, virtual PC\n * cursor mode with JAWS). This is in part due to technical limitations (i.e. keyboard events do not\n * fire as expected in these modes) but is also arguably the correct behavior. Navigating with a\n * screen reader is akin to visually scanning a page, and should not be interpreted as actual user\n * input interaction.\n *\n * When a user is not navigating but *interacting* with a screen reader, this service attempts to\n * update the input modality to keyboard, but in general this service's behavior is largely\n * undefined.\n */\nclass InputModalityDetector {\n constructor(_platform, ngZone, document, options) {\n this._platform = _platform;\n /**\n * The most recently detected input modality event target. Is null if no input modality has been\n * detected or if the associated event target is null for some unknown reason.\n */\n this._mostRecentTarget = null;\n /** The underlying BehaviorSubject that emits whenever an input modality is detected. */\n this._modality = new BehaviorSubject(null);\n /**\n * The timestamp of the last touch input modality. Used to determine whether mousedown events\n * should be attributed to mouse or touch.\n */\n this._lastTouchMs = 0;\n /**\n * Handles keydown events. Must be an arrow function in order to preserve the context when it gets\n * bound.\n */\n this._onKeydown = (event) => {\n var _a, _b;\n // If this is one of the keys we should ignore, then ignore it and don't update the input\n // modality to keyboard.\n if ((_b = (_a = this._options) === null || _a === void 0 ? void 0 : _a.ignoreKeys) === null || _b === void 0 ? void 0 : _b.some(keyCode => keyCode === event.keyCode)) {\n return;\n }\n this._modality.next('keyboard');\n this._mostRecentTarget = _getEventTarget(event);\n };\n /**\n * Handles mousedown events. Must be an arrow function in order to preserve the context when it\n * gets bound.\n */\n this._onMousedown = (event) => {\n // Touches trigger both touch and mouse events, so we need to distinguish between mouse events\n // that were triggered via mouse vs touch. To do so, check if the mouse event occurs closely\n // after the previous touch event.\n if (Date.now() - this._lastTouchMs < TOUCH_BUFFER_MS) {\n return;\n }\n // Fake mousedown events are fired by some screen readers when controls are activated by the\n // screen reader. Attribute them to keyboard input modality.\n this._modality.next(isFakeMousedownFromScreenReader(event) ? 'keyboard' : 'mouse');\n this._mostRecentTarget = _getEventTarget(event);\n };\n /**\n * Handles touchstart events. Must be an arrow function in order to preserve the context when it\n * gets bound.\n */\n this._onTouchstart = (event) => {\n // Same scenario as mentioned in _onMousedown, but on touch screen devices, fake touchstart\n // events are fired. Again, attribute to keyboard input modality.\n if (isFakeTouchstartFromScreenReader(event)) {\n this._modality.next('keyboard');\n return;\n }\n // Store the timestamp of this touch event, as it's used to distinguish between mouse events\n // triggered via mouse vs touch.\n this._lastTouchMs = Date.now();\n this._modality.next('touch');\n this._mostRecentTarget = _getEventTarget(event);\n };\n this._options = Object.assign(Object.assign({}, INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS), options);\n // Skip the first emission as it's null.\n this.modalityDetected = this._modality.pipe(skip(1));\n this.modalityChanged = this.modalityDetected.pipe(distinctUntilChanged());\n // If we're not in a browser, this service should do nothing, as there's no relevant input\n // modality to detect.\n if (_platform.isBrowser) {\n ngZone.runOutsideAngular(() => {\n document.addEventListener('keydown', this._onKeydown, modalityEventListenerOptions);\n document.addEventListener('mousedown', this._onMousedown, modalityEventListenerOptions);\n document.addEventListener('touchstart', this._onTouchstart, modalityEventListenerOptions);\n });\n }\n }\n /** The most recently detected input modality. */\n get mostRecentModality() {\n return this._modality.value;\n }\n ngOnDestroy() {\n this._modality.complete();\n if (this._platform.isBrowser) {\n document.removeEventListener('keydown', this._onKeydown, modalityEventListenerOptions);\n document.removeEventListener('mousedown', this._onMousedown, modalityEventListenerOptions);\n document.removeEventListener('touchstart', this._onTouchstart, modalityEventListenerOptions);\n }\n }\n}\nInputModalityDetector.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: InputModalityDetector, deps: [{ token: i1.Platform }, { token: i0.NgZone }, { token: DOCUMENT }, { token: INPUT_MODALITY_DETECTOR_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nInputModalityDetector.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: InputModalityDetector, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: InputModalityDetector, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () {\n return [{ type: i1.Platform }, { type: i0.NgZone }, { type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [INPUT_MODALITY_DETECTOR_OPTIONS]\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 LIVE_ANNOUNCER_ELEMENT_TOKEN = new InjectionToken('liveAnnouncerElement', {\n providedIn: 'root',\n factory: LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY,\n});\n/** @docs-private */\nfunction LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY() {\n return null;\n}\n/** Injection token that can be used to configure the default options for the LiveAnnouncer. */\nconst LIVE_ANNOUNCER_DEFAULT_OPTIONS = new InjectionToken('LIVE_ANNOUNCER_DEFAULT_OPTIONS');\n\nclass LiveAnnouncer {\n constructor(elementToken, _ngZone, _document, _defaultOptions) {\n this._ngZone = _ngZone;\n this._defaultOptions = _defaultOptions;\n // We inject the live element and document as `any` because the constructor signature cannot\n // reference browser globals (HTMLElement, Document) on non-browser environments, since having\n // a class decorator causes TypeScript to preserve the constructor signature types.\n this._document = _document;\n this._liveElement = elementToken || this._createLiveElement();\n }\n announce(message, ...args) {\n const defaultOptions = this._defaultOptions;\n let politeness;\n let duration;\n if (args.length === 1 && typeof args[0] === 'number') {\n duration = args[0];\n }\n else {\n [politeness, duration] = args;\n }\n this.clear();\n clearTimeout(this._previousTimeout);\n if (!politeness) {\n politeness =\n defaultOptions && defaultOptions.politeness ? defaultOptions.politeness : 'polite';\n }\n if (duration == null && defaultOptions) {\n duration = defaultOptions.duration;\n }\n // TODO: ensure changing the politeness works on all environments we support.\n this._liveElement.setAttribute('aria-live', politeness);\n // This 100ms timeout is necessary for some browser + screen-reader combinations:\n // - Both JAWS and NVDA over IE11 will not announce anything without a non-zero timeout.\n // - With Chrome and IE11 with NVDA or JAWS, a repeated (identical) message won't be read a\n // second time without clearing and then using a non-zero delay.\n // (using JAWS 17 at time of this writing).\n return this._ngZone.runOutsideAngular(() => {\n if (!this._currentPromise) {\n this._currentPromise = new Promise(resolve => (this._currentResolve = resolve));\n }\n clearTimeout(this._previousTimeout);\n this._previousTimeout = setTimeout(() => {\n this._liveElement.textContent = message;\n if (typeof duration === 'number') {\n this._previousTimeout = setTimeout(() => this.clear(), duration);\n }\n this._currentResolve();\n this._currentPromise = this._currentResolve = undefined;\n }, 100);\n return this._currentPromise;\n });\n }\n /**\n * Clears the current text from the announcer element. Can be used to prevent\n * screen readers from reading the text out again while the user is going\n * through the page landmarks.\n */\n clear() {\n if (this._liveElement) {\n this._liveElement.textContent = '';\n }\n }\n ngOnDestroy() {\n var _a, _b;\n clearTimeout(this._previousTimeout);\n (_a = this._liveElement) === null || _a === void 0 ? void 0 : _a.remove();\n this._liveElement = null;\n (_b = this._currentResolve) === null || _b === void 0 ? void 0 : _b.call(this);\n this._currentPromise = this._currentResolve = undefined;\n }\n _createLiveElement() {\n const elementClass = 'cdk-live-announcer-element';\n const previousElements = this._document.getElementsByClassName(elementClass);\n const liveEl = this._document.createElement('div');\n // Remove any old containers. This can happen when coming in from a server-side-rendered page.\n for (let i = 0; i < previousElements.length; i++) {\n previousElements[i].remove();\n }\n liveEl.classList.add(elementClass);\n liveEl.classList.add('cdk-visually-hidden');\n liveEl.setAttribute('aria-atomic', 'true');\n liveEl.setAttribute('aria-live', 'polite');\n this._document.body.appendChild(liveEl);\n return liveEl;\n }\n}\nLiveAnnouncer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: LiveAnnouncer, deps: [{ token: LIVE_ANNOUNCER_ELEMENT_TOKEN, optional: true }, { token: i0.NgZone }, { token: DOCUMENT }, { token: LIVE_ANNOUNCER_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nLiveAnnouncer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: LiveAnnouncer, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: LiveAnnouncer, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [LIVE_ANNOUNCER_ELEMENT_TOKEN]\n }] }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [LIVE_ANNOUNCER_DEFAULT_OPTIONS]\n }] }];\n } });\n/**\n * A directive that works similarly to aria-live, but uses the LiveAnnouncer to ensure compatibility\n * with a wider range of browsers and screen readers.\n */\nclass CdkAriaLive {\n constructor(_elementRef, _liveAnnouncer, _contentObserver, _ngZone) {\n this._elementRef = _elementRef;\n this._liveAnnouncer = _liveAnnouncer;\n this._contentObserver = _contentObserver;\n this._ngZone = _ngZone;\n this._politeness = 'polite';\n }\n /** The aria-live politeness level to use when announcing messages. */\n get politeness() {\n return this._politeness;\n }\n set politeness(value) {\n this._politeness = value === 'off' || value === 'assertive' ? value : 'polite';\n if (this._politeness === 'off') {\n if (this._subscription) {\n this._subscription.unsubscribe();\n this._subscription = null;\n }\n }\n else if (!this._subscription) {\n this._subscription = this._ngZone.runOutsideAngular(() => {\n return this._contentObserver.observe(this._elementRef).subscribe(() => {\n // Note that we use textContent here, rather than innerText, in order to avoid a reflow.\n const elementText = this._elementRef.nativeElement.textContent;\n // The `MutationObserver` fires also for attribute\n // changes which we don't want to announce.\n if (elementText !== this._previousAnnouncedText) {\n this._liveAnnouncer.announce(elementText, this._politeness);\n this._previousAnnouncedText = elementText;\n }\n });\n });\n }\n }\n ngOnDestroy() {\n if (this._subscription) {\n this._subscription.unsubscribe();\n }\n }\n}\nCdkAriaLive.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkAriaLive, deps: [{ token: i0.ElementRef }, { token: LiveAnnouncer }, { token: i1$1.ContentObserver }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nCdkAriaLive.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkAriaLive, selector: \"[cdkAriaLive]\", inputs: { politeness: [\"cdkAriaLive\", \"politeness\"] }, exportAs: [\"cdkAriaLive\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkAriaLive, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkAriaLive]',\n exportAs: 'cdkAriaLive',\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: LiveAnnouncer }, { type: i1$1.ContentObserver }, { type: i0.NgZone }]; }, propDecorators: { politeness: [{\n type: Input,\n args: ['cdkAriaLive']\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/** InjectionToken for FocusMonitorOptions. */\nconst FOCUS_MONITOR_DEFAULT_OPTIONS = new InjectionToken('cdk-focus-monitor-default-options');\n/**\n * Event listener options that enable capturing and also\n * mark the listener as passive if the browser supports it.\n */\nconst captureEventListenerOptions = normalizePassiveListenerOptions({\n passive: true,\n capture: true,\n});\n/** Monitors mouse and keyboard events to determine the cause of focus events. */\nclass FocusMonitor {\n constructor(_ngZone, _platform, _inputModalityDetector, \n /** @breaking-change 11.0.0 make document required */\n document, options) {\n this._ngZone = _ngZone;\n this._platform = _platform;\n this._inputModalityDetector = _inputModalityDetector;\n /** The focus origin that the next focus event is a result of. */\n this._origin = null;\n /** Whether the window has just been focused. */\n this._windowFocused = false;\n /**\n * Whether the origin was determined via a touch interaction. Necessary as properly attributing\n * focus events to touch interactions requires special logic.\n */\n this._originFromTouchInteraction = false;\n /** Map of elements being monitored to their info. */\n this._elementInfo = new Map();\n /** The number of elements currently being monitored. */\n this._monitoredElementCount = 0;\n /**\n * Keeps track of the root nodes to which we've currently bound a focus/blur handler,\n * as well as the number of monitored elements that they contain. We have to treat focus/blur\n * handlers differently from the rest of the events, because the browser won't emit events\n * to the document when focus moves inside of a shadow root.\n */\n this._rootNodeFocusListenerCount = new Map();\n /**\n * Event listener for `focus` events on the window.\n * Needs to be an arrow function in order to preserve the context when it gets bound.\n */\n this._windowFocusListener = () => {\n // Make a note of when the window regains focus, so we can\n // restore the origin info for the focused element.\n this._windowFocused = true;\n this._windowFocusTimeoutId = window.setTimeout(() => (this._windowFocused = false));\n };\n /** Subject for stopping our InputModalityDetector subscription. */\n this._stopInputModalityDetector = new Subject();\n /**\n * Event listener for `focus` and 'blur' events on the document.\n * Needs to be an arrow function in order to preserve the context when it gets bound.\n */\n this._rootNodeFocusAndBlurListener = (event) => {\n const target = _getEventTarget(event);\n const handler = event.type === 'focus' ? this._onFocus : this._onBlur;\n // We need to walk up the ancestor chain in order to support `checkChildren`.\n for (let element = target; element; element = element.parentElement) {\n handler.call(this, event, element);\n }\n };\n this._document = document;\n this._detectionMode = (options === null || options === void 0 ? void 0 : options.detectionMode) || 0 /* IMMEDIATE */;\n }\n monitor(element, checkChildren = false) {\n const nativeElement = coerceElement(element);\n // Do nothing if we're not on the browser platform or the passed in node isn't an element.\n if (!this._platform.isBrowser || nativeElement.nodeType !== 1) {\n return of(null);\n }\n // If the element is inside the shadow DOM, we need to bind our focus/blur listeners to\n // the shadow root, rather than the `document`, because the browser won't emit focus events\n // to the `document`, if focus is moving within the same shadow root.\n const rootNode = _getShadowRoot(nativeElement) || this._getDocument();\n const cachedInfo = this._elementInfo.get(nativeElement);\n // Check if we're already monitoring this element.\n if (cachedInfo) {\n if (checkChildren) {\n // TODO(COMP-318): this can be problematic, because it'll turn all non-checkChildren\n // observers into ones that behave as if `checkChildren` was turned on. We need a more\n // robust solution.\n cachedInfo.checkChildren = true;\n }\n return cachedInfo.subject;\n }\n // Create monitored element info.\n const info = {\n checkChildren: checkChildren,\n subject: new Subject(),\n rootNode,\n };\n this._elementInfo.set(nativeElement, info);\n this._registerGlobalListeners(info);\n return info.subject;\n }\n stopMonitoring(element) {\n const nativeElement = coerceElement(element);\n const elementInfo = this._elementInfo.get(nativeElement);\n if (elementInfo) {\n elementInfo.subject.complete();\n this._setClasses(nativeElement);\n this._elementInfo.delete(nativeElement);\n this._removeGlobalListeners(elementInfo);\n }\n }\n focusVia(element, origin, options) {\n const nativeElement = coerceElement(element);\n const focusedElement = this._getDocument().activeElement;\n // If the element is focused already, calling `focus` again won't trigger the event listener\n // which means that the focus classes won't be updated. If that's the case, update the classes\n // directly without waiting for an event.\n if (nativeElement === focusedElement) {\n this._getClosestElementsInfo(nativeElement).forEach(([currentElement, info]) => this._originChanged(currentElement, origin, info));\n }\n else {\n this._setOrigin(origin);\n // `focus` isn't available on the server\n if (typeof nativeElement.focus === 'function') {\n nativeElement.focus(options);\n }\n }\n }\n ngOnDestroy() {\n this._elementInfo.forEach((_info, element) => this.stopMonitoring(element));\n }\n /** Access injected document if available or fallback to global document reference */\n _getDocument() {\n return this._document || document;\n }\n /** Use defaultView of injected document if available or fallback to global window reference */\n _getWindow() {\n const doc = this._getDocument();\n return doc.defaultView || window;\n }\n _getFocusOrigin(focusEventTarget) {\n if (this._origin) {\n // If the origin was realized via a touch interaction, we need to perform additional checks\n // to determine whether the focus origin should be attributed to touch or program.\n if (this._originFromTouchInteraction) {\n return this._shouldBeAttributedToTouch(focusEventTarget) ? 'touch' : 'program';\n }\n else {\n return this._origin;\n }\n }\n // If the window has just regained focus, we can restore the most recent origin from before the\n // window blurred. Otherwise, we've reached the point where we can't identify the source of the\n // focus. This typically means one of two things happened:\n //\n // 1) The element was programmatically focused, or\n // 2) The element was focused via screen reader navigation (which generally doesn't fire\n // events).\n //\n // Because we can't distinguish between these two cases, we default to setting `program`.\n return this._windowFocused && this._lastFocusOrigin ? this._lastFocusOrigin : 'program';\n }\n /**\n * Returns whether the focus event should be attributed to touch. Recall that in IMMEDIATE mode, a\n * touch origin isn't immediately reset at the next tick (see _setOrigin). This means that when we\n * handle a focus event following a touch interaction, we need to determine whether (1) the focus\n * event was directly caused by the touch interaction or (2) the focus event was caused by a\n * subsequent programmatic focus call triggered by the touch interaction.\n * @param focusEventTarget The target of the focus event under examination.\n */\n _shouldBeAttributedToTouch(focusEventTarget) {\n // Please note that this check is not perfect. Consider the following edge case:\n //\n //
    \n //
    \n //
    \n //\n // Suppose there is a FocusMonitor in IMMEDIATE mode attached to #parent. When the user touches\n // #child, #parent is programmatically focused. This code will attribute the focus to touch\n // instead of program. This is a relatively minor edge-case that can be worked around by using\n // focusVia(parent, 'program') to focus #parent.\n return (this._detectionMode === 1 /* EVENTUAL */ ||\n !!(focusEventTarget === null || focusEventTarget === void 0 ? void 0 : focusEventTarget.contains(this._inputModalityDetector._mostRecentTarget)));\n }\n /**\n * Sets the focus classes on the element based on the given focus origin.\n * @param element The element to update the classes on.\n * @param origin The focus origin.\n */\n _setClasses(element, origin) {\n element.classList.toggle('cdk-focused', !!origin);\n element.classList.toggle('cdk-touch-focused', origin === 'touch');\n element.classList.toggle('cdk-keyboard-focused', origin === 'keyboard');\n element.classList.toggle('cdk-mouse-focused', origin === 'mouse');\n element.classList.toggle('cdk-program-focused', origin === 'program');\n }\n /**\n * Updates the focus origin. If we're using immediate detection mode, we schedule an async\n * function to clear the origin at the end of a timeout. The duration of the timeout depends on\n * the origin being set.\n * @param origin The origin to set.\n * @param isFromInteraction Whether we are setting the origin from an interaction event.\n */\n _setOrigin(origin, isFromInteraction = false) {\n this._ngZone.runOutsideAngular(() => {\n this._origin = origin;\n this._originFromTouchInteraction = origin === 'touch' && isFromInteraction;\n // If we're in IMMEDIATE mode, reset the origin at the next tick (or in `TOUCH_BUFFER_MS` ms\n // for a touch event). We reset the origin at the next tick because Firefox focuses one tick\n // after the interaction event. We wait `TOUCH_BUFFER_MS` ms before resetting the origin for\n // a touch event because when a touch event is fired, the associated focus event isn't yet in\n // the event queue. Before doing so, clear any pending timeouts.\n if (this._detectionMode === 0 /* IMMEDIATE */) {\n clearTimeout(this._originTimeoutId);\n const ms = this._originFromTouchInteraction ? TOUCH_BUFFER_MS : 1;\n this._originTimeoutId = setTimeout(() => (this._origin = null), ms);\n }\n });\n }\n /**\n * Handles focus events on a registered element.\n * @param event The focus event.\n * @param element The monitored element.\n */\n _onFocus(event, element) {\n // NOTE(mmalerba): We currently set the classes based on the focus origin of the most recent\n // focus event affecting the monitored element. If we want to use the origin of the first event\n // instead we should check for the cdk-focused class here and return if the element already has\n // it. (This only matters for elements that have includesChildren = true).\n // If we are not counting child-element-focus as focused, make sure that the event target is the\n // monitored element itself.\n const elementInfo = this._elementInfo.get(element);\n const focusEventTarget = _getEventTarget(event);\n if (!elementInfo || (!elementInfo.checkChildren && element !== focusEventTarget)) {\n return;\n }\n this._originChanged(element, this._getFocusOrigin(focusEventTarget), elementInfo);\n }\n /**\n * Handles blur events on a registered element.\n * @param event The blur event.\n * @param element The monitored element.\n */\n _onBlur(event, element) {\n // If we are counting child-element-focus as focused, make sure that we aren't just blurring in\n // order to focus another child of the monitored element.\n const elementInfo = this._elementInfo.get(element);\n if (!elementInfo ||\n (elementInfo.checkChildren &&\n event.relatedTarget instanceof Node &&\n element.contains(event.relatedTarget))) {\n return;\n }\n this._setClasses(element);\n this._emitOrigin(elementInfo.subject, null);\n }\n _emitOrigin(subject, origin) {\n this._ngZone.run(() => subject.next(origin));\n }\n _registerGlobalListeners(elementInfo) {\n if (!this._platform.isBrowser) {\n return;\n }\n const rootNode = elementInfo.rootNode;\n const rootNodeFocusListeners = this._rootNodeFocusListenerCount.get(rootNode) || 0;\n if (!rootNodeFocusListeners) {\n this._ngZone.runOutsideAngular(() => {\n rootNode.addEventListener('focus', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n rootNode.addEventListener('blur', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n });\n }\n this._rootNodeFocusListenerCount.set(rootNode, rootNodeFocusListeners + 1);\n // Register global listeners when first element is monitored.\n if (++this._monitoredElementCount === 1) {\n // Note: we listen to events in the capture phase so we\n // can detect them even if the user stops propagation.\n this._ngZone.runOutsideAngular(() => {\n const window = this._getWindow();\n window.addEventListener('focus', this._windowFocusListener);\n });\n // The InputModalityDetector is also just a collection of global listeners.\n this._inputModalityDetector.modalityDetected\n .pipe(takeUntil(this._stopInputModalityDetector))\n .subscribe(modality => {\n this._setOrigin(modality, true /* isFromInteraction */);\n });\n }\n }\n _removeGlobalListeners(elementInfo) {\n const rootNode = elementInfo.rootNode;\n if (this._rootNodeFocusListenerCount.has(rootNode)) {\n const rootNodeFocusListeners = this._rootNodeFocusListenerCount.get(rootNode);\n if (rootNodeFocusListeners > 1) {\n this._rootNodeFocusListenerCount.set(rootNode, rootNodeFocusListeners - 1);\n }\n else {\n rootNode.removeEventListener('focus', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n rootNode.removeEventListener('blur', this._rootNodeFocusAndBlurListener, captureEventListenerOptions);\n this._rootNodeFocusListenerCount.delete(rootNode);\n }\n }\n // Unregister global listeners when last element is unmonitored.\n if (!--this._monitoredElementCount) {\n const window = this._getWindow();\n window.removeEventListener('focus', this._windowFocusListener);\n // Equivalently, stop our InputModalityDetector subscription.\n this._stopInputModalityDetector.next();\n // Clear timeouts for all potentially pending timeouts to prevent the leaks.\n clearTimeout(this._windowFocusTimeoutId);\n clearTimeout(this._originTimeoutId);\n }\n }\n /** Updates all the state on an element once its focus origin has changed. */\n _originChanged(element, origin, elementInfo) {\n this._setClasses(element, origin);\n this._emitOrigin(elementInfo.subject, origin);\n this._lastFocusOrigin = origin;\n }\n /**\n * Collects the `MonitoredElementInfo` of a particular element and\n * all of its ancestors that have enabled `checkChildren`.\n * @param element Element from which to start the search.\n */\n _getClosestElementsInfo(element) {\n const results = [];\n this._elementInfo.forEach((info, currentElement) => {\n if (currentElement === element || (info.checkChildren && currentElement.contains(element))) {\n results.push([currentElement, info]);\n }\n });\n return results;\n }\n}\nFocusMonitor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FocusMonitor, deps: [{ token: i0.NgZone }, { token: i1.Platform }, { token: InputModalityDetector }, { token: DOCUMENT, optional: true }, { token: FOCUS_MONITOR_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nFocusMonitor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FocusMonitor, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FocusMonitor, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () {\n return [{ type: i0.NgZone }, { type: i1.Platform }, { type: InputModalityDetector }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [FOCUS_MONITOR_DEFAULT_OPTIONS]\n }] }];\n } });\n/**\n * Directive that determines how a particular element was focused (via keyboard, mouse, touch, or\n * programmatically) and adds corresponding classes to the element.\n *\n * There are two variants of this directive:\n * 1) cdkMonitorElementFocus: does not consider an element to be focused if one of its children is\n * focused.\n * 2) cdkMonitorSubtreeFocus: considers an element focused if it or any of its children are focused.\n */\nclass CdkMonitorFocus {\n constructor(_elementRef, _focusMonitor) {\n this._elementRef = _elementRef;\n this._focusMonitor = _focusMonitor;\n this.cdkFocusChange = new EventEmitter();\n }\n ngAfterViewInit() {\n const element = this._elementRef.nativeElement;\n this._monitorSubscription = this._focusMonitor\n .monitor(element, element.nodeType === 1 && element.hasAttribute('cdkMonitorSubtreeFocus'))\n .subscribe(origin => this.cdkFocusChange.emit(origin));\n }\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this._elementRef);\n if (this._monitorSubscription) {\n this._monitorSubscription.unsubscribe();\n }\n }\n}\nCdkMonitorFocus.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkMonitorFocus, deps: [{ token: i0.ElementRef }, { token: FocusMonitor }], target: i0.ɵɵFactoryTarget.Directive });\nCdkMonitorFocus.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkMonitorFocus, selector: \"[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]\", outputs: { cdkFocusChange: \"cdkFocusChange\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkMonitorFocus, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]',\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: FocusMonitor }]; }, propDecorators: { cdkFocusChange: [{\n type: Output\n }] } });\n\n/** CSS class applied to the document body when in black-on-white high-contrast mode. */\nconst BLACK_ON_WHITE_CSS_CLASS = 'cdk-high-contrast-black-on-white';\n/** CSS class applied to the document body when in white-on-black high-contrast mode. */\nconst WHITE_ON_BLACK_CSS_CLASS = 'cdk-high-contrast-white-on-black';\n/** CSS class applied to the document body when in high-contrast mode. */\nconst HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS = 'cdk-high-contrast-active';\n/**\n * Service to determine whether the browser is currently in a high-contrast-mode environment.\n *\n * Microsoft Windows supports an accessibility feature called \"High Contrast Mode\". This mode\n * changes the appearance of all applications, including web applications, to dramatically increase\n * contrast.\n *\n * IE, Edge, and Firefox currently support this mode. Chrome does not support Windows High Contrast\n * Mode. This service does not detect high-contrast mode as added by the Chrome \"High Contrast\"\n * browser extension.\n */\nclass HighContrastModeDetector {\n constructor(_platform, document) {\n this._platform = _platform;\n this._document = document;\n }\n /** Gets the current high-contrast-mode for the page. */\n getHighContrastMode() {\n if (!this._platform.isBrowser) {\n return 0 /* NONE */;\n }\n // Create a test element with an arbitrary background-color that is neither black nor\n // white; high-contrast mode will coerce the color to either black or white. Also ensure that\n // appending the test element to the DOM does not affect layout by absolutely positioning it\n const testElement = this._document.createElement('div');\n testElement.style.backgroundColor = 'rgb(1,2,3)';\n testElement.style.position = 'absolute';\n this._document.body.appendChild(testElement);\n // Get the computed style for the background color, collapsing spaces to normalize between\n // browsers. Once we get this color, we no longer need the test element. Access the `window`\n // via the document so we can fake it in tests. Note that we have extra null checks, because\n // this logic will likely run during app bootstrap and throwing can break the entire app.\n const documentWindow = this._document.defaultView || window;\n const computedStyle = documentWindow && documentWindow.getComputedStyle\n ? documentWindow.getComputedStyle(testElement)\n : null;\n const computedColor = ((computedStyle && computedStyle.backgroundColor) || '').replace(/ /g, '');\n testElement.remove();\n switch (computedColor) {\n case 'rgb(0,0,0)':\n return 2 /* WHITE_ON_BLACK */;\n case 'rgb(255,255,255)':\n return 1 /* BLACK_ON_WHITE */;\n }\n return 0 /* NONE */;\n }\n /** Applies CSS classes indicating high-contrast mode to document body (browser-only). */\n _applyBodyHighContrastModeCssClasses() {\n if (!this._hasCheckedHighContrastMode && this._platform.isBrowser && this._document.body) {\n const bodyClasses = this._document.body.classList;\n // IE11 doesn't support `classList` operations with multiple arguments\n bodyClasses.remove(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS);\n bodyClasses.remove(BLACK_ON_WHITE_CSS_CLASS);\n bodyClasses.remove(WHITE_ON_BLACK_CSS_CLASS);\n this._hasCheckedHighContrastMode = true;\n const mode = this.getHighContrastMode();\n if (mode === 1 /* BLACK_ON_WHITE */) {\n bodyClasses.add(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS);\n bodyClasses.add(BLACK_ON_WHITE_CSS_CLASS);\n }\n else if (mode === 2 /* WHITE_ON_BLACK */) {\n bodyClasses.add(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS);\n bodyClasses.add(WHITE_ON_BLACK_CSS_CLASS);\n }\n }\n }\n}\nHighContrastModeDetector.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: HighContrastModeDetector, deps: [{ token: i1.Platform }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nHighContrastModeDetector.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: HighContrastModeDetector, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: HighContrastModeDetector, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () {\n return [{ type: i1.Platform }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\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 A11yModule {\n constructor(highContrastModeDetector) {\n highContrastModeDetector._applyBodyHighContrastModeCssClasses();\n }\n}\nA11yModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: A11yModule, deps: [{ token: HighContrastModeDetector }], target: i0.ɵɵFactoryTarget.NgModule });\nA11yModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: A11yModule, declarations: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus], imports: [ObserversModule], exports: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus] });\nA11yModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: A11yModule, imports: [[ObserversModule]] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: A11yModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [ObserversModule],\n declarations: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus],\n exports: [CdkAriaLive, CdkTrapFocus, CdkMonitorFocus],\n }]\n }], ctorParameters: function () { return [{ type: HighContrastModeDetector }]; } });\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/**\n * Generated bundle index. Do not edit.\n */\n\nexport { A11yModule, ActiveDescendantKeyManager, AriaDescriber, CDK_DESCRIBEDBY_HOST_ATTRIBUTE, CDK_DESCRIBEDBY_ID_PREFIX, CdkAriaLive, CdkMonitorFocus, CdkTrapFocus, ConfigurableFocusTrap, ConfigurableFocusTrapFactory, EventListenerFocusTrapInertStrategy, FOCUS_MONITOR_DEFAULT_OPTIONS, FOCUS_TRAP_INERT_STRATEGY, FocusKeyManager, FocusMonitor, FocusTrap, FocusTrapFactory, HighContrastModeDetector, INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS, INPUT_MODALITY_DETECTOR_OPTIONS, InputModalityDetector, InteractivityChecker, IsFocusableConfig, LIVE_ANNOUNCER_DEFAULT_OPTIONS, LIVE_ANNOUNCER_ELEMENT_TOKEN, LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY, ListKeyManager, LiveAnnouncer, MESSAGES_CONTAINER_ID, isFakeMousedownFromScreenReader, isFakeTouchstartFromScreenReader };\n","import * as i0 from '@angular/core';\nimport { InjectionToken, inject, EventEmitter, Injectable, Optional, Inject, Directive, Output, Input, NgModule } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\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 * Injection token used to inject the document into Directionality.\n * This is used so that the value can be faked in tests.\n *\n * We can't use the real document in tests because changing the real `dir` causes geometry-based\n * tests in Safari to fail.\n *\n * We also can't re-provide the DOCUMENT token from platform-brower because the unit tests\n * themselves use things like `querySelector` in test code.\n *\n * This token is defined in a separate file from Directionality as a workaround for\n * https://github.com/angular/angular/issues/22559\n *\n * @docs-private\n */\nconst DIR_DOCUMENT = new InjectionToken('cdk-dir-doc', {\n providedIn: 'root',\n factory: DIR_DOCUMENT_FACTORY,\n});\n/** @docs-private */\nfunction DIR_DOCUMENT_FACTORY() {\n return 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/** Regex that matches locales with an RTL script. Taken from `goog.i18n.bidi.isRtlLanguage`. */\nconst RTL_LOCALE_PATTERN = /^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Adlm|Arab|Hebr|Nkoo|Rohg|Thaa))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i;\n/** Resolves a string value to a specific direction. */\nfunction _resolveDirectionality(rawValue) {\n const value = (rawValue === null || rawValue === void 0 ? void 0 : rawValue.toLowerCase()) || '';\n if (value === 'auto' && typeof navigator !== 'undefined' && (navigator === null || navigator === void 0 ? void 0 : navigator.language)) {\n return RTL_LOCALE_PATTERN.test(navigator.language) ? 'rtl' : 'ltr';\n }\n return value === 'rtl' ? 'rtl' : 'ltr';\n}\n/**\n * The directionality (LTR / RTL) context for the application (or a subtree of it).\n * Exposes the current direction and a stream of direction changes.\n */\nclass Directionality {\n constructor(_document) {\n /** The current 'ltr' or 'rtl' value. */\n this.value = 'ltr';\n /** Stream that emits whenever the 'ltr' / 'rtl' state changes. */\n this.change = new EventEmitter();\n if (_document) {\n const bodyDir = _document.body ? _document.body.dir : null;\n const htmlDir = _document.documentElement ? _document.documentElement.dir : null;\n this.value = _resolveDirectionality(bodyDir || htmlDir || 'ltr');\n }\n }\n ngOnDestroy() {\n this.change.complete();\n }\n}\nDirectionality.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: Directionality, deps: [{ token: DIR_DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nDirectionality.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: Directionality, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: Directionality, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DIR_DOCUMENT]\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 * Directive to listen for changes of direction of part of the DOM.\n *\n * Provides itself as Directionality such that descendant directives only need to ever inject\n * Directionality to get the closest direction.\n */\nclass Dir {\n constructor() {\n /** Normalized direction that accounts for invalid/unsupported values. */\n this._dir = 'ltr';\n /** Whether the `value` has been set to its initial value. */\n this._isInitialized = false;\n /** Event emitted when the direction changes. */\n this.change = new EventEmitter();\n }\n /** @docs-private */\n get dir() {\n return this._dir;\n }\n set dir(value) {\n const previousValue = this._dir;\n // Note: `_resolveDirectionality` resolves the language based on the browser's language,\n // whereas the browser does it based on the content of the element. Since doing so based\n // on the content can be expensive, for now we're doing the simpler matching.\n this._dir = _resolveDirectionality(value);\n this._rawDir = value;\n if (previousValue !== this._dir && this._isInitialized) {\n this.change.emit(this._dir);\n }\n }\n /** Current layout direction of the element. */\n get value() {\n return this.dir;\n }\n /** Initialize once default value has been set. */\n ngAfterContentInit() {\n this._isInitialized = true;\n }\n ngOnDestroy() {\n this.change.complete();\n }\n}\nDir.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: Dir, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nDir.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: Dir, selector: \"[dir]\", inputs: { dir: \"dir\" }, outputs: { change: \"dirChange\" }, host: { properties: { \"attr.dir\": \"_rawDir\" } }, providers: [{ provide: Directionality, useExisting: Dir }], exportAs: [\"dir\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: Dir, decorators: [{\n type: Directive,\n args: [{\n selector: '[dir]',\n providers: [{ provide: Directionality, useExisting: Dir }],\n host: { '[attr.dir]': '_rawDir' },\n exportAs: 'dir',\n }]\n }], propDecorators: { change: [{\n type: Output,\n args: ['dirChange']\n }], dir: [{\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 */\nclass BidiModule {\n}\nBidiModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: BidiModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nBidiModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: BidiModule, declarations: [Dir], exports: [Dir] });\nBidiModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: BidiModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: BidiModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [Dir],\n declarations: [Dir],\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/**\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 { BidiModule, DIR_DOCUMENT, Dir, Directionality };\n","import { ElementRef } 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 */\n/** Coerces a data-bound value (typically a string) to a boolean. */\nfunction coerceBooleanProperty(value) {\n return value != null && `${value}` !== '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 coerceNumberProperty(value, fallbackValue = 0) {\n return _isNumberValue(value) ? Number(value) : fallbackValue;\n}\n/**\n * Whether the provided value is considered a number.\n * @docs-private\n */\nfunction _isNumberValue(value) {\n // parseFloat(value) handles most of the cases we're interested in (it treats null, empty string,\n // and other non-number values as NaN, where Number just uses 0) but it considers the string\n // '123hello' to be a valid number. Therefore we also check if Number(value) is NaN.\n return !isNaN(parseFloat(value)) && !isNaN(Number(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 */\nfunction coerceArray(value) {\n return Array.isArray(value) ? value : [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/** Coerces a value to a CSS pixel value. */\nfunction coerceCssPixelValue(value) {\n if (value == null) {\n return '';\n }\n return typeof value === 'string' ? value : `${value}px`;\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 * Coerces an ElementRef or an Element into an element.\n * Useful for APIs that can accept either a ref or the native element itself.\n */\nfunction coerceElement(elementOrRef) {\n return elementOrRef instanceof ElementRef ? elementOrRef.nativeElement : elementOrRef;\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 * Coerces a value to an array of trimmed non-empty strings.\n * Any input that is not an array, `null` or `undefined` will be turned into a string\n * via `toString()` and subsequently split with the given separator.\n * `null` and `undefined` will result in an empty array.\n * This results in the following outcomes:\n * - `null` -> `[]`\n * - `[null]` -> `[\"null\"]`\n * - `[\"a\", \"b \", \" \"]` -> `[\"a\", \"b\"]`\n * - `[1, [2, 3]]` -> `[\"1\", \"2,3\"]`\n * - `[{ a: 0 }]` -> `[\"[object Object]\"]`\n * - `{ a: 0 }` -> `[\"[object\", \"Object]\"]`\n *\n * Useful for defining CSS classes or table columns.\n * @param value the value to coerce into an array of strings\n * @param separator split-separator if value isn't an array\n */\nfunction coerceStringArray(value, separator = /\\s+/) {\n const result = [];\n if (value != null) {\n const sourceValues = Array.isArray(value) ? value : `${value}`.split(separator);\n for (const sourceValue of sourceValues) {\n const trimmedString = `${sourceValue}`.trim();\n if (trimmedString) {\n result.push(trimmedString);\n }\n }\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/**\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\nexport { _isNumberValue, coerceArray, coerceBooleanProperty, coerceCssPixelValue, coerceElement, coerceNumberProperty, coerceStringArray };\n","import { isObservable, of, Subject } from 'rxjs';\nimport * as i0 from '@angular/core';\nimport { Injectable, InjectionToken } 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 */\nclass DataSource {\n}\n/** Checks whether an object is a data source. */\nfunction isDataSource(value) {\n // Check if the value is a DataSource by observing if it has a connect function. Cannot\n // be checked as an `instanceof DataSource` since people could create their own sources\n // that match the interface, but don't extend DataSource.\n return value && typeof value.connect === 'function';\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/** DataSource wrapper for a native array. */\nclass ArrayDataSource extends DataSource {\n constructor(_data) {\n super();\n this._data = _data;\n }\n connect() {\n return isObservable(this._data) ? this._data : of(this._data);\n }\n disconnect() { }\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 repeater that destroys views when they are removed from a\n * {@link ViewContainerRef}. When new items are inserted into the container,\n * the repeater will always construct a new embedded view for each item.\n *\n * @template T The type for the embedded view's $implicit property.\n * @template R The type for the item in each IterableDiffer change record.\n * @template C The type for the context passed to each embedded view.\n */\nclass _DisposeViewRepeaterStrategy {\n applyChanges(changes, viewContainerRef, itemContextFactory, itemValueResolver, itemViewChanged) {\n changes.forEachOperation((record, adjustedPreviousIndex, currentIndex) => {\n let view;\n let operation;\n if (record.previousIndex == null) {\n const insertContext = itemContextFactory(record, adjustedPreviousIndex, currentIndex);\n view = viewContainerRef.createEmbeddedView(insertContext.templateRef, insertContext.context, insertContext.index);\n operation = 1 /* INSERTED */;\n }\n else if (currentIndex == null) {\n viewContainerRef.remove(adjustedPreviousIndex);\n operation = 3 /* REMOVED */;\n }\n else {\n view = viewContainerRef.get(adjustedPreviousIndex);\n viewContainerRef.move(view, currentIndex);\n operation = 2 /* MOVED */;\n }\n if (itemViewChanged) {\n itemViewChanged({\n context: view === null || view === void 0 ? void 0 : view.context,\n operation,\n record,\n });\n }\n });\n }\n detach() { }\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 repeater that caches views when they are removed from a\n * {@link ViewContainerRef}. When new items are inserted into the container,\n * the repeater will reuse one of the cached views instead of creating a new\n * embedded view. Recycling cached views reduces the quantity of expensive DOM\n * inserts.\n *\n * @template T The type for the embedded view's $implicit property.\n * @template R The type for the item in each IterableDiffer change record.\n * @template C The type for the context passed to each embedded view.\n */\nclass _RecycleViewRepeaterStrategy {\n constructor() {\n /**\n * The size of the cache used to store unused views.\n * Setting the cache size to `0` will disable caching. Defaults to 20 views.\n */\n this.viewCacheSize = 20;\n /**\n * View cache that stores embedded view instances that have been previously stamped out,\n * but don't are not currently rendered. The view repeater will reuse these views rather than\n * creating brand new ones.\n *\n * TODO(michaeljamesparsons) Investigate whether using a linked list would improve performance.\n */\n this._viewCache = [];\n }\n /** Apply changes to the DOM. */\n applyChanges(changes, viewContainerRef, itemContextFactory, itemValueResolver, itemViewChanged) {\n // Rearrange the views to put them in the right location.\n changes.forEachOperation((record, adjustedPreviousIndex, currentIndex) => {\n let view;\n let operation;\n if (record.previousIndex == null) {\n // Item added.\n const viewArgsFactory = () => itemContextFactory(record, adjustedPreviousIndex, currentIndex);\n view = this._insertView(viewArgsFactory, currentIndex, viewContainerRef, itemValueResolver(record));\n operation = view ? 1 /* INSERTED */ : 0 /* REPLACED */;\n }\n else if (currentIndex == null) {\n // Item removed.\n this._detachAndCacheView(adjustedPreviousIndex, viewContainerRef);\n operation = 3 /* REMOVED */;\n }\n else {\n // Item moved.\n view = this._moveView(adjustedPreviousIndex, currentIndex, viewContainerRef, itemValueResolver(record));\n operation = 2 /* MOVED */;\n }\n if (itemViewChanged) {\n itemViewChanged({\n context: view === null || view === void 0 ? void 0 : view.context,\n operation,\n record,\n });\n }\n });\n }\n detach() {\n for (const view of this._viewCache) {\n view.destroy();\n }\n this._viewCache = [];\n }\n /**\n * Inserts a view for a new item, either from the cache or by creating a new\n * one. Returns `undefined` if the item was inserted into a cached view.\n */\n _insertView(viewArgsFactory, currentIndex, viewContainerRef, value) {\n const cachedView = this._insertViewFromCache(currentIndex, viewContainerRef);\n if (cachedView) {\n cachedView.context.$implicit = value;\n return undefined;\n }\n const viewArgs = viewArgsFactory();\n return viewContainerRef.createEmbeddedView(viewArgs.templateRef, viewArgs.context, viewArgs.index);\n }\n /** Detaches the view at the given index and inserts into the view cache. */\n _detachAndCacheView(index, viewContainerRef) {\n const detachedView = viewContainerRef.detach(index);\n this._maybeCacheView(detachedView, viewContainerRef);\n }\n /** Moves view at the previous index to the current index. */\n _moveView(adjustedPreviousIndex, currentIndex, viewContainerRef, value) {\n const view = viewContainerRef.get(adjustedPreviousIndex);\n viewContainerRef.move(view, currentIndex);\n view.context.$implicit = value;\n return view;\n }\n /**\n * Cache the given detached view. If the cache is full, the view will be\n * destroyed.\n */\n _maybeCacheView(view, viewContainerRef) {\n if (this._viewCache.length < this.viewCacheSize) {\n this._viewCache.push(view);\n }\n else {\n const index = viewContainerRef.indexOf(view);\n // The host component could remove views from the container outside of\n // the view repeater. It's unlikely this will occur, but just in case,\n // destroy the view on its own, otherwise destroy it through the\n // container to ensure that all the references are removed.\n if (index === -1) {\n view.destroy();\n }\n else {\n viewContainerRef.remove(index);\n }\n }\n }\n /** Inserts a recycled view from the cache at the given index. */\n _insertViewFromCache(index, viewContainerRef) {\n const cachedView = this._viewCache.pop();\n if (cachedView) {\n viewContainerRef.insert(cachedView, index);\n }\n return cachedView || 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 * Class to be used to power selecting one or more options from a list.\n */\nclass SelectionModel {\n constructor(_multiple = false, initiallySelectedValues, _emitChanges = true) {\n this._multiple = _multiple;\n this._emitChanges = _emitChanges;\n /** Currently-selected values. */\n this._selection = new Set();\n /** Keeps track of the deselected options that haven't been emitted by the change event. */\n this._deselectedToEmit = [];\n /** Keeps track of the selected options that haven't been emitted by the change event. */\n this._selectedToEmit = [];\n /** Event emitted when the value has changed. */\n this.changed = new Subject();\n if (initiallySelectedValues && initiallySelectedValues.length) {\n if (_multiple) {\n initiallySelectedValues.forEach(value => this._markSelected(value));\n }\n else {\n this._markSelected(initiallySelectedValues[0]);\n }\n // Clear the array in order to avoid firing the change event for preselected values.\n this._selectedToEmit.length = 0;\n }\n }\n /** Selected values. */\n get selected() {\n if (!this._selected) {\n this._selected = Array.from(this._selection.values());\n }\n return this._selected;\n }\n /**\n * Selects a value or an array of values.\n */\n select(...values) {\n this._verifyValueAssignment(values);\n values.forEach(value => this._markSelected(value));\n this._emitChangeEvent();\n }\n /**\n * Deselects a value or an array of values.\n */\n deselect(...values) {\n this._verifyValueAssignment(values);\n values.forEach(value => this._unmarkSelected(value));\n this._emitChangeEvent();\n }\n /**\n * Toggles a value between selected and deselected.\n */\n toggle(value) {\n this.isSelected(value) ? this.deselect(value) : this.select(value);\n }\n /**\n * Clears all of the selected values.\n */\n clear() {\n this._unmarkAll();\n this._emitChangeEvent();\n }\n /**\n * Determines whether a value is selected.\n */\n isSelected(value) {\n return this._selection.has(value);\n }\n /**\n * Determines whether the model does not have a value.\n */\n isEmpty() {\n return this._selection.size === 0;\n }\n /**\n * Determines whether the model has a value.\n */\n hasValue() {\n return !this.isEmpty();\n }\n /**\n * Sorts the selected values based on a predicate function.\n */\n sort(predicate) {\n if (this._multiple && this.selected) {\n this._selected.sort(predicate);\n }\n }\n /**\n * Gets whether multiple values can be selected.\n */\n isMultipleSelection() {\n return this._multiple;\n }\n /** Emits a change event and clears the records of selected and deselected values. */\n _emitChangeEvent() {\n // Clear the selected values so they can be re-cached.\n this._selected = null;\n if (this._selectedToEmit.length || this._deselectedToEmit.length) {\n this.changed.next({\n source: this,\n added: this._selectedToEmit,\n removed: this._deselectedToEmit,\n });\n this._deselectedToEmit = [];\n this._selectedToEmit = [];\n }\n }\n /** Selects a value. */\n _markSelected(value) {\n if (!this.isSelected(value)) {\n if (!this._multiple) {\n this._unmarkAll();\n }\n this._selection.add(value);\n if (this._emitChanges) {\n this._selectedToEmit.push(value);\n }\n }\n }\n /** Deselects a value. */\n _unmarkSelected(value) {\n if (this.isSelected(value)) {\n this._selection.delete(value);\n if (this._emitChanges) {\n this._deselectedToEmit.push(value);\n }\n }\n }\n /** Clears out the selected values. */\n _unmarkAll() {\n if (!this.isEmpty()) {\n this._selection.forEach(value => this._unmarkSelected(value));\n }\n }\n /**\n * Verifies the value assignment and throws an error if the specified value array is\n * including multiple values while the selection model is not supporting multiple values.\n */\n _verifyValueAssignment(values) {\n if (values.length > 1 && !this._multiple && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMultipleValuesInSingleSelectionError();\n }\n }\n}\n/**\n * Returns an error that reports that multiple values are passed into a selection model\n * with a single value.\n * @docs-private\n */\nfunction getMultipleValuesInSingleSelectionError() {\n return Error('Cannot pass multiple values into SelectionModel with single-value mode.');\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 * Class to coordinate unique selection based on name.\n * Intended to be consumed as an Angular service.\n * This service is needed because native radio change events are only fired on the item currently\n * being selected, and we still need to uncheck the previous selection.\n *\n * This service does not *store* any IDs and names because they may change at any time, so it is\n * less error-prone if they are simply passed through when the events occur.\n */\nclass UniqueSelectionDispatcher {\n constructor() {\n this._listeners = [];\n }\n /**\n * Notify other items that selection for the given name has been set.\n * @param id ID of the item.\n * @param name Name of the item.\n */\n notify(id, name) {\n for (let listener of this._listeners) {\n listener(id, name);\n }\n }\n /**\n * Listen for future changes to item selection.\n * @return Function used to deregister listener\n */\n listen(listener) {\n this._listeners.push(listener);\n return () => {\n this._listeners = this._listeners.filter((registered) => {\n return listener !== registered;\n });\n };\n }\n ngOnDestroy() {\n this._listeners = [];\n }\n}\nUniqueSelectionDispatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: UniqueSelectionDispatcher, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nUniqueSelectionDispatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: UniqueSelectionDispatcher, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: UniqueSelectionDispatcher, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\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 * Injection token for {@link _ViewRepeater}. This token is for use by Angular Material only.\n * @docs-private\n */\nconst _VIEW_REPEATER_STRATEGY = new InjectionToken('_ViewRepeater');\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/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ArrayDataSource, DataSource, SelectionModel, UniqueSelectionDispatcher, _DisposeViewRepeaterStrategy, _RecycleViewRepeaterStrategy, _VIEW_REPEATER_STRATEGY, getMultipleValuesInSingleSelectionError, isDataSource };\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 MAC_ENTER = 3;\nconst BACKSPACE = 8;\nconst TAB = 9;\nconst NUM_CENTER = 12;\nconst ENTER = 13;\nconst SHIFT = 16;\nconst CONTROL = 17;\nconst ALT = 18;\nconst PAUSE = 19;\nconst CAPS_LOCK = 20;\nconst ESCAPE = 27;\nconst SPACE = 32;\nconst PAGE_UP = 33;\nconst PAGE_DOWN = 34;\nconst END = 35;\nconst HOME = 36;\nconst LEFT_ARROW = 37;\nconst UP_ARROW = 38;\nconst RIGHT_ARROW = 39;\nconst DOWN_ARROW = 40;\nconst PLUS_SIGN = 43;\nconst PRINT_SCREEN = 44;\nconst INSERT = 45;\nconst DELETE = 46;\nconst ZERO = 48;\nconst ONE = 49;\nconst TWO = 50;\nconst THREE = 51;\nconst FOUR = 52;\nconst FIVE = 53;\nconst SIX = 54;\nconst SEVEN = 55;\nconst EIGHT = 56;\nconst NINE = 57;\nconst FF_SEMICOLON = 59; // Firefox (Gecko) fires this for semicolon instead of 186\nconst FF_EQUALS = 61; // Firefox (Gecko) fires this for equals instead of 187\nconst QUESTION_MARK = 63;\nconst AT_SIGN = 64;\nconst A = 65;\nconst B = 66;\nconst C = 67;\nconst D = 68;\nconst E = 69;\nconst F = 70;\nconst G = 71;\nconst H = 72;\nconst I = 73;\nconst J = 74;\nconst K = 75;\nconst L = 76;\nconst M = 77;\nconst N = 78;\nconst O = 79;\nconst P = 80;\nconst Q = 81;\nconst R = 82;\nconst S = 83;\nconst T = 84;\nconst U = 85;\nconst V = 86;\nconst W = 87;\nconst X = 88;\nconst Y = 89;\nconst Z = 90;\nconst META = 91; // WIN_KEY_LEFT\nconst MAC_WK_CMD_LEFT = 91;\nconst MAC_WK_CMD_RIGHT = 93;\nconst CONTEXT_MENU = 93;\nconst NUMPAD_ZERO = 96;\nconst NUMPAD_ONE = 97;\nconst NUMPAD_TWO = 98;\nconst NUMPAD_THREE = 99;\nconst NUMPAD_FOUR = 100;\nconst NUMPAD_FIVE = 101;\nconst NUMPAD_SIX = 102;\nconst NUMPAD_SEVEN = 103;\nconst NUMPAD_EIGHT = 104;\nconst NUMPAD_NINE = 105;\nconst NUMPAD_MULTIPLY = 106;\nconst NUMPAD_PLUS = 107;\nconst NUMPAD_MINUS = 109;\nconst NUMPAD_PERIOD = 110;\nconst NUMPAD_DIVIDE = 111;\nconst F1 = 112;\nconst F2 = 113;\nconst F3 = 114;\nconst F4 = 115;\nconst F5 = 116;\nconst F6 = 117;\nconst F7 = 118;\nconst F8 = 119;\nconst F9 = 120;\nconst F10 = 121;\nconst F11 = 122;\nconst F12 = 123;\nconst NUM_LOCK = 144;\nconst SCROLL_LOCK = 145;\nconst FIRST_MEDIA = 166;\nconst FF_MINUS = 173;\nconst MUTE = 173; // Firefox (Gecko) fires 181 for MUTE\nconst VOLUME_DOWN = 174; // Firefox (Gecko) fires 182 for VOLUME_DOWN\nconst VOLUME_UP = 175; // Firefox (Gecko) fires 183 for VOLUME_UP\nconst FF_MUTE = 181;\nconst FF_VOLUME_DOWN = 182;\nconst LAST_MEDIA = 183;\nconst FF_VOLUME_UP = 183;\nconst SEMICOLON = 186; // Firefox (Gecko) fires 59 for SEMICOLON\nconst EQUALS = 187; // Firefox (Gecko) fires 61 for EQUALS\nconst COMMA = 188;\nconst DASH = 189; // Firefox (Gecko) fires 173 for DASH/MINUS\nconst PERIOD = 190;\nconst SLASH = 191;\nconst APOSTROPHE = 192;\nconst TILDE = 192;\nconst OPEN_SQUARE_BRACKET = 219;\nconst BACKSLASH = 220;\nconst CLOSE_SQUARE_BRACKET = 221;\nconst SINGLE_QUOTE = 222;\nconst MAC_META = 224;\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 * Checks whether a modifier key is pressed.\n * @param event Event to be checked.\n */\nfunction hasModifierKey(event, ...modifiers) {\n if (modifiers.length) {\n return modifiers.some(modifier => event[modifier]);\n }\n return event.altKey || event.shiftKey || event.ctrlKey || event.metaKey;\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/**\n * Generated bundle index. Do not edit.\n */\n\nexport { A, ALT, APOSTROPHE, AT_SIGN, B, BACKSLASH, BACKSPACE, C, CAPS_LOCK, CLOSE_SQUARE_BRACKET, COMMA, CONTEXT_MENU, CONTROL, D, DASH, DELETE, DOWN_ARROW, E, EIGHT, END, ENTER, EQUALS, ESCAPE, F, F1, F10, F11, F12, F2, F3, F4, F5, F6, F7, F8, F9, FF_EQUALS, FF_MINUS, FF_MUTE, FF_SEMICOLON, FF_VOLUME_DOWN, FF_VOLUME_UP, FIRST_MEDIA, FIVE, FOUR, G, H, HOME, I, INSERT, J, K, L, LAST_MEDIA, LEFT_ARROW, M, MAC_ENTER, MAC_META, MAC_WK_CMD_LEFT, MAC_WK_CMD_RIGHT, META, MUTE, N, NINE, NUMPAD_DIVIDE, NUMPAD_EIGHT, NUMPAD_FIVE, NUMPAD_FOUR, NUMPAD_MINUS, NUMPAD_MULTIPLY, NUMPAD_NINE, NUMPAD_ONE, NUMPAD_PERIOD, NUMPAD_PLUS, NUMPAD_SEVEN, NUMPAD_SIX, NUMPAD_THREE, NUMPAD_TWO, NUMPAD_ZERO, NUM_CENTER, NUM_LOCK, O, ONE, OPEN_SQUARE_BRACKET, P, PAGE_DOWN, PAGE_UP, PAUSE, PERIOD, PLUS_SIGN, PRINT_SCREEN, Q, QUESTION_MARK, R, RIGHT_ARROW, S, SCROLL_LOCK, SEMICOLON, SEVEN, SHIFT, SINGLE_QUOTE, SIX, SLASH, SPACE, T, TAB, THREE, TILDE, TWO, U, UP_ARROW, V, VOLUME_DOWN, VOLUME_UP, W, X, Y, Z, ZERO, hasModifierKey };\n","import * as i0 from '@angular/core';\nimport { NgModule, Injectable } from '@angular/core';\nimport { coerceArray } from '@angular/cdk/coercion';\nimport { Subject, combineLatest, concat, Observable } from 'rxjs';\nimport { take, skip, debounceTime, map, startWith, takeUntil } from 'rxjs/operators';\nimport * as i1 from '@angular/cdk/platform';\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 LayoutModule {\n}\nLayoutModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: LayoutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nLayoutModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: LayoutModule });\nLayoutModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: LayoutModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: LayoutModule, decorators: [{\n type: NgModule,\n args: [{}]\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/** Global registry for all dynamically-created, injected media queries. */\nconst mediaQueriesForWebkitCompatibility = new Set();\n/** Style tag that holds all of the dynamically-created media queries. */\nlet mediaQueryStyleNode;\n/** A utility for calling matchMedia queries. */\nclass MediaMatcher {\n constructor(_platform) {\n this._platform = _platform;\n this._matchMedia =\n this._platform.isBrowser && window.matchMedia\n ? // matchMedia is bound to the window scope intentionally as it is an illegal invocation to\n // call it from a different scope.\n window.matchMedia.bind(window)\n : noopMatchMedia;\n }\n /**\n * Evaluates the given media query and returns the native MediaQueryList from which results\n * can be retrieved.\n * Confirms the layout engine will trigger for the selector query provided and returns the\n * MediaQueryList for the query provided.\n */\n matchMedia(query) {\n if (this._platform.WEBKIT || this._platform.BLINK) {\n createEmptyStyleRule(query);\n }\n return this._matchMedia(query);\n }\n}\nMediaMatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MediaMatcher, deps: [{ token: i1.Platform }], target: i0.ɵɵFactoryTarget.Injectable });\nMediaMatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MediaMatcher, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MediaMatcher, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i1.Platform }]; } });\n/**\n * Creates an empty stylesheet that is used to work around browser inconsistencies related to\n * `matchMedia`. At the time of writing, it handles the following cases:\n * 1. On WebKit browsers, a media query has to have at least one rule in order for `matchMedia`\n * to fire. We work around it by declaring a dummy stylesheet with a `@media` declaration.\n * 2. In some cases Blink browsers will stop firing the `matchMedia` listener if none of the rules\n * inside the `@media` match existing elements on the page. We work around it by having one rule\n * targeting the `body`. See https://github.com/angular/components/issues/23546.\n */\nfunction createEmptyStyleRule(query) {\n if (mediaQueriesForWebkitCompatibility.has(query)) {\n return;\n }\n try {\n if (!mediaQueryStyleNode) {\n mediaQueryStyleNode = document.createElement('style');\n mediaQueryStyleNode.setAttribute('type', 'text/css');\n document.head.appendChild(mediaQueryStyleNode);\n }\n if (mediaQueryStyleNode.sheet) {\n mediaQueryStyleNode.sheet.insertRule(`@media ${query} {body{ }}`, 0);\n mediaQueriesForWebkitCompatibility.add(query);\n }\n }\n catch (e) {\n console.error(e);\n }\n}\n/** No-op matchMedia replacement for non-browser platforms. */\nfunction noopMatchMedia(query) {\n // Use `as any` here to avoid adding additional necessary properties for\n // the noop matcher.\n return {\n matches: query === 'all' || query === '',\n media: query,\n addListener: () => { },\n removeListener: () => { },\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/** Utility for checking the matching state of @media queries. */\nclass BreakpointObserver {\n constructor(_mediaMatcher, _zone) {\n this._mediaMatcher = _mediaMatcher;\n this._zone = _zone;\n /** A map of all media queries currently being listened for. */\n this._queries = new Map();\n /** A subject for all other observables to takeUntil based on. */\n this._destroySubject = new Subject();\n }\n /** Completes the active subject, signalling to all other observables to complete. */\n ngOnDestroy() {\n this._destroySubject.next();\n this._destroySubject.complete();\n }\n /**\n * Whether one or more media queries match the current viewport size.\n * @param value One or more media queries to check.\n * @returns Whether any of the media queries match.\n */\n isMatched(value) {\n const queries = splitQueries(coerceArray(value));\n return queries.some(mediaQuery => this._registerQuery(mediaQuery).mql.matches);\n }\n /**\n * Gets an observable of results for the given queries that will emit new results for any changes\n * in matching of the given queries.\n * @param value One or more media queries to check.\n * @returns A stream of matches for the given queries.\n */\n observe(value) {\n const queries = splitQueries(coerceArray(value));\n const observables = queries.map(query => this._registerQuery(query).observable);\n let stateObservable = combineLatest(observables);\n // Emit the first state immediately, and then debounce the subsequent emissions.\n stateObservable = concat(stateObservable.pipe(take(1)), stateObservable.pipe(skip(1), debounceTime(0)));\n return stateObservable.pipe(map(breakpointStates => {\n const response = {\n matches: false,\n breakpoints: {},\n };\n breakpointStates.forEach(({ matches, query }) => {\n response.matches = response.matches || matches;\n response.breakpoints[query] = matches;\n });\n return response;\n }));\n }\n /** Registers a specific query to be listened for. */\n _registerQuery(query) {\n // Only set up a new MediaQueryList if it is not already being listened for.\n if (this._queries.has(query)) {\n return this._queries.get(query);\n }\n const mql = this._mediaMatcher.matchMedia(query);\n // Create callback for match changes and add it is as a listener.\n const queryObservable = new Observable((observer) => {\n // Listener callback methods are wrapped to be placed back in ngZone. Callbacks must be placed\n // back into the zone because matchMedia is only included in Zone.js by loading the\n // webapis-media-query.js file alongside the zone.js file. Additionally, some browsers do not\n // have MediaQueryList inherit from EventTarget, which causes inconsistencies in how Zone.js\n // patches it.\n const handler = (e) => this._zone.run(() => observer.next(e));\n mql.addListener(handler);\n return () => {\n mql.removeListener(handler);\n };\n }).pipe(startWith(mql), map(({ matches }) => ({ query, matches })), takeUntil(this._destroySubject));\n // Add the MediaQueryList to the set of queries.\n const output = { observable: queryObservable, mql };\n this._queries.set(query, output);\n return output;\n }\n}\nBreakpointObserver.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: BreakpointObserver, deps: [{ token: MediaMatcher }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nBreakpointObserver.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: BreakpointObserver, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: BreakpointObserver, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: MediaMatcher }, { type: i0.NgZone }]; } });\n/**\n * Split each query string into separate query strings if two queries are provided as comma\n * separated.\n */\nfunction splitQueries(queries) {\n return queries\n .map(query => query.split(','))\n .reduce((a1, a2) => a1.concat(a2))\n .map(query => query.trim());\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// PascalCase is being used as Breakpoints is used like an enum.\n// tslint:disable-next-line:variable-name\nconst Breakpoints = {\n XSmall: '(max-width: 599.98px)',\n Small: '(min-width: 600px) and (max-width: 959.98px)',\n Medium: '(min-width: 960px) and (max-width: 1279.98px)',\n Large: '(min-width: 1280px) and (max-width: 1919.98px)',\n XLarge: '(min-width: 1920px)',\n Handset: '(max-width: 599.98px) and (orientation: portrait), ' +\n '(max-width: 959.98px) and (orientation: landscape)',\n Tablet: '(min-width: 600px) and (max-width: 839.98px) and (orientation: portrait), ' +\n '(min-width: 960px) and (max-width: 1279.98px) and (orientation: landscape)',\n Web: '(min-width: 840px) and (orientation: portrait), ' +\n '(min-width: 1280px) and (orientation: landscape)',\n HandsetPortrait: '(max-width: 599.98px) and (orientation: portrait)',\n TabletPortrait: '(min-width: 600px) and (max-width: 839.98px) and (orientation: portrait)',\n WebPortrait: '(min-width: 840px) and (orientation: portrait)',\n HandsetLandscape: '(max-width: 959.98px) and (orientation: landscape)',\n TabletLandscape: '(min-width: 960px) and (max-width: 1279.98px) and (orientation: landscape)',\n WebLandscape: '(min-width: 1280px) and (orientation: landscape)',\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/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BreakpointObserver, Breakpoints, LayoutModule, MediaMatcher };\n","import { coerceElement, coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport * as i0 from '@angular/core';\nimport { Injectable, EventEmitter, Directive, Output, Input, NgModule } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { debounceTime } 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 * Factory that creates a new MutationObserver and allows us to stub it out in unit tests.\n * @docs-private\n */\nclass MutationObserverFactory {\n create(callback) {\n return typeof MutationObserver === 'undefined' ? null : new MutationObserver(callback);\n }\n}\nMutationObserverFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MutationObserverFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nMutationObserverFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MutationObserverFactory, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: MutationObserverFactory, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n/** An injectable service that allows watching elements for changes to their content. */\nclass ContentObserver {\n constructor(_mutationObserverFactory) {\n this._mutationObserverFactory = _mutationObserverFactory;\n /** Keeps track of the existing MutationObservers so they can be reused. */\n this._observedElements = new Map();\n }\n ngOnDestroy() {\n this._observedElements.forEach((_, element) => this._cleanupObserver(element));\n }\n observe(elementOrRef) {\n const element = coerceElement(elementOrRef);\n return new Observable((observer) => {\n const stream = this._observeElement(element);\n const subscription = stream.subscribe(observer);\n return () => {\n subscription.unsubscribe();\n this._unobserveElement(element);\n };\n });\n }\n /**\n * Observes the given element by using the existing MutationObserver if available, or creating a\n * new one if not.\n */\n _observeElement(element) {\n if (!this._observedElements.has(element)) {\n const stream = new Subject();\n const observer = this._mutationObserverFactory.create(mutations => stream.next(mutations));\n if (observer) {\n observer.observe(element, {\n characterData: true,\n childList: true,\n subtree: true,\n });\n }\n this._observedElements.set(element, { observer, stream, count: 1 });\n }\n else {\n this._observedElements.get(element).count++;\n }\n return this._observedElements.get(element).stream;\n }\n /**\n * Un-observes the given element and cleans up the underlying MutationObserver if nobody else is\n * observing this element.\n */\n _unobserveElement(element) {\n if (this._observedElements.has(element)) {\n this._observedElements.get(element).count--;\n if (!this._observedElements.get(element).count) {\n this._cleanupObserver(element);\n }\n }\n }\n /** Clean up the underlying MutationObserver for the specified element. */\n _cleanupObserver(element) {\n if (this._observedElements.has(element)) {\n const { observer, stream } = this._observedElements.get(element);\n if (observer) {\n observer.disconnect();\n }\n stream.complete();\n this._observedElements.delete(element);\n }\n }\n}\nContentObserver.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: ContentObserver, deps: [{ token: MutationObserverFactory }], target: i0.ɵɵFactoryTarget.Injectable });\nContentObserver.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: ContentObserver, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: ContentObserver, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: MutationObserverFactory }]; } });\n/**\n * Directive that triggers a callback whenever the content of\n * its associated element has changed.\n */\nclass CdkObserveContent {\n constructor(_contentObserver, _elementRef, _ngZone) {\n this._contentObserver = _contentObserver;\n this._elementRef = _elementRef;\n this._ngZone = _ngZone;\n /** Event emitted for each change in the element's content. */\n this.event = new EventEmitter();\n this._disabled = false;\n this._currentSubscription = null;\n }\n /**\n * Whether observing content is disabled. This option can be used\n * to disconnect the underlying MutationObserver until it is needed.\n */\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = coerceBooleanProperty(value);\n this._disabled ? this._unsubscribe() : this._subscribe();\n }\n /** Debounce interval for emitting the changes. */\n get debounce() {\n return this._debounce;\n }\n set debounce(value) {\n this._debounce = coerceNumberProperty(value);\n this._subscribe();\n }\n ngAfterContentInit() {\n if (!this._currentSubscription && !this.disabled) {\n this._subscribe();\n }\n }\n ngOnDestroy() {\n this._unsubscribe();\n }\n _subscribe() {\n this._unsubscribe();\n const stream = this._contentObserver.observe(this._elementRef);\n // TODO(mmalerba): We shouldn't be emitting on this @Output() outside the zone.\n // Consider brining it back inside the zone next time we're making breaking changes.\n // Bringing it back inside can cause things like infinite change detection loops and changed\n // after checked errors if people's code isn't handling it properly.\n this._ngZone.runOutsideAngular(() => {\n this._currentSubscription = (this.debounce ? stream.pipe(debounceTime(this.debounce)) : stream).subscribe(this.event);\n });\n }\n _unsubscribe() {\n var _a;\n (_a = this._currentSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();\n }\n}\nCdkObserveContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkObserveContent, deps: [{ token: ContentObserver }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nCdkObserveContent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkObserveContent, selector: \"[cdkObserveContent]\", inputs: { disabled: [\"cdkObserveContentDisabled\", \"disabled\"], debounce: \"debounce\" }, outputs: { event: \"cdkObserveContent\" }, exportAs: [\"cdkObserveContent\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkObserveContent, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkObserveContent]',\n exportAs: 'cdkObserveContent',\n }]\n }], ctorParameters: function () { return [{ type: ContentObserver }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { event: [{\n type: Output,\n args: ['cdkObserveContent']\n }], disabled: [{\n type: Input,\n args: ['cdkObserveContentDisabled']\n }], debounce: [{\n type: Input\n }] } });\nclass ObserversModule {\n}\nObserversModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: ObserversModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nObserversModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: ObserversModule, declarations: [CdkObserveContent], exports: [CdkObserveContent] });\nObserversModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: ObserversModule, providers: [MutationObserverFactory] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: ObserversModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [CdkObserveContent],\n declarations: [CdkObserveContent],\n providers: [MutationObserverFactory],\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/**\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 { CdkObserveContent, ContentObserver, MutationObserverFactory, ObserversModule };\n","import * as i1 from '@angular/cdk/scrolling';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nexport { CdkScrollable, ScrollDispatcher, ViewportRuler } from '@angular/cdk/scrolling';\nimport * as i6 from '@angular/common';\nimport { DOCUMENT } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Injectable, Inject, ElementRef, Optional, ApplicationRef, InjectionToken, Directive, EventEmitter, Input, Output, NgModule } from '@angular/core';\nimport { coerceCssPixelValue, coerceArray, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport * as i1$1 from '@angular/cdk/platform';\nimport { supportsScrollBehavior, _isTestEnvironment, _getEventTarget } from '@angular/cdk/platform';\nimport * as i5 from '@angular/cdk/bidi';\nimport { BidiModule } from '@angular/cdk/bidi';\nimport { DomPortalOutlet, TemplatePortal, PortalModule } from '@angular/cdk/portal';\nimport { Subject, Subscription, merge } from 'rxjs';\nimport { take, takeUntil, takeWhile } from 'rxjs/operators';\nimport { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';\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 scrollBehaviorSupported = supportsScrollBehavior();\n/**\n * Strategy that will prevent the user from scrolling while the overlay is visible.\n */\nclass BlockScrollStrategy {\n constructor(_viewportRuler, document) {\n this._viewportRuler = _viewportRuler;\n this._previousHTMLStyles = { top: '', left: '' };\n this._isEnabled = false;\n this._document = document;\n }\n /** Attaches this scroll strategy to an overlay. */\n attach() { }\n /** Blocks page-level scroll while the attached overlay is open. */\n enable() {\n if (this._canBeEnabled()) {\n const root = this._document.documentElement;\n this._previousScrollPosition = this._viewportRuler.getViewportScrollPosition();\n // Cache the previous inline styles in case the user had set them.\n this._previousHTMLStyles.left = root.style.left || '';\n this._previousHTMLStyles.top = root.style.top || '';\n // Note: we're using the `html` node, instead of the `body`, because the `body` may\n // have the user agent margin, whereas the `html` is guaranteed not to have one.\n root.style.left = coerceCssPixelValue(-this._previousScrollPosition.left);\n root.style.top = coerceCssPixelValue(-this._previousScrollPosition.top);\n root.classList.add('cdk-global-scrollblock');\n this._isEnabled = true;\n }\n }\n /** Unblocks page-level scroll while the attached overlay is open. */\n disable() {\n if (this._isEnabled) {\n const html = this._document.documentElement;\n const body = this._document.body;\n const htmlStyle = html.style;\n const bodyStyle = body.style;\n const previousHtmlScrollBehavior = htmlStyle.scrollBehavior || '';\n const previousBodyScrollBehavior = bodyStyle.scrollBehavior || '';\n this._isEnabled = false;\n htmlStyle.left = this._previousHTMLStyles.left;\n htmlStyle.top = this._previousHTMLStyles.top;\n html.classList.remove('cdk-global-scrollblock');\n // Disable user-defined smooth scrolling temporarily while we restore the scroll position.\n // See https://developer.mozilla.org/en-US/docs/Web/CSS/scroll-behavior\n // Note that we don't mutate the property if the browser doesn't support `scroll-behavior`,\n // because it can throw off feature detections in `supportsScrollBehavior` which\n // checks for `'scrollBehavior' in documentElement.style`.\n if (scrollBehaviorSupported) {\n htmlStyle.scrollBehavior = bodyStyle.scrollBehavior = 'auto';\n }\n window.scroll(this._previousScrollPosition.left, this._previousScrollPosition.top);\n if (scrollBehaviorSupported) {\n htmlStyle.scrollBehavior = previousHtmlScrollBehavior;\n bodyStyle.scrollBehavior = previousBodyScrollBehavior;\n }\n }\n }\n _canBeEnabled() {\n // Since the scroll strategies can't be singletons, we have to use a global CSS class\n // (`cdk-global-scrollblock`) to make sure that we don't try to disable global\n // scrolling multiple times.\n const html = this._document.documentElement;\n if (html.classList.contains('cdk-global-scrollblock') || this._isEnabled) {\n return false;\n }\n const body = this._document.body;\n const viewport = this._viewportRuler.getViewportSize();\n return body.scrollHeight > viewport.height || body.scrollWidth > viewport.width;\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 * Returns an error to be thrown when attempting to attach an already-attached scroll strategy.\n */\nfunction getMatScrollStrategyAlreadyAttachedError() {\n return Error(`Scroll strategy has already been attached.`);\n}\n\n/**\n * Strategy that will close the overlay as soon as the user starts scrolling.\n */\nclass CloseScrollStrategy {\n constructor(_scrollDispatcher, _ngZone, _viewportRuler, _config) {\n this._scrollDispatcher = _scrollDispatcher;\n this._ngZone = _ngZone;\n this._viewportRuler = _viewportRuler;\n this._config = _config;\n this._scrollSubscription = null;\n /** Detaches the overlay ref and disables the scroll strategy. */\n this._detach = () => {\n this.disable();\n if (this._overlayRef.hasAttached()) {\n this._ngZone.run(() => this._overlayRef.detach());\n }\n };\n }\n /** Attaches this scroll strategy to an overlay. */\n attach(overlayRef) {\n if (this._overlayRef && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatScrollStrategyAlreadyAttachedError();\n }\n this._overlayRef = overlayRef;\n }\n /** Enables the closing of the attached overlay on scroll. */\n enable() {\n if (this._scrollSubscription) {\n return;\n }\n const stream = this._scrollDispatcher.scrolled(0);\n if (this._config && this._config.threshold && this._config.threshold > 1) {\n this._initialScrollPosition = this._viewportRuler.getViewportScrollPosition().top;\n this._scrollSubscription = stream.subscribe(() => {\n const scrollPosition = this._viewportRuler.getViewportScrollPosition().top;\n if (Math.abs(scrollPosition - this._initialScrollPosition) > this._config.threshold) {\n this._detach();\n }\n else {\n this._overlayRef.updatePosition();\n }\n });\n }\n else {\n this._scrollSubscription = stream.subscribe(this._detach);\n }\n }\n /** Disables the closing the attached overlay on scroll. */\n disable() {\n if (this._scrollSubscription) {\n this._scrollSubscription.unsubscribe();\n this._scrollSubscription = null;\n }\n }\n detach() {\n this.disable();\n this._overlayRef = 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/** Scroll strategy that doesn't do anything. */\nclass NoopScrollStrategy {\n /** Does nothing, as this scroll strategy is a no-op. */\n enable() { }\n /** Does nothing, as this scroll strategy is a no-op. */\n disable() { }\n /** Does nothing, as this scroll strategy is a no-op. */\n attach() { }\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 * Gets whether an element is scrolled outside of view by any of its parent scrolling containers.\n * @param element Dimensions of the element (from getBoundingClientRect)\n * @param scrollContainers Dimensions of element's scrolling containers (from getBoundingClientRect)\n * @returns Whether the element is scrolled out of view\n * @docs-private\n */\nfunction isElementScrolledOutsideView(element, scrollContainers) {\n return scrollContainers.some(containerBounds => {\n const outsideAbove = element.bottom < containerBounds.top;\n const outsideBelow = element.top > containerBounds.bottom;\n const outsideLeft = element.right < containerBounds.left;\n const outsideRight = element.left > containerBounds.right;\n return outsideAbove || outsideBelow || outsideLeft || outsideRight;\n });\n}\n/**\n * Gets whether an element is clipped by any of its scrolling containers.\n * @param element Dimensions of the element (from getBoundingClientRect)\n * @param scrollContainers Dimensions of element's scrolling containers (from getBoundingClientRect)\n * @returns Whether the element is clipped\n * @docs-private\n */\nfunction isElementClippedByScrolling(element, scrollContainers) {\n return scrollContainers.some(scrollContainerRect => {\n const clippedAbove = element.top < scrollContainerRect.top;\n const clippedBelow = element.bottom > scrollContainerRect.bottom;\n const clippedLeft = element.left < scrollContainerRect.left;\n const clippedRight = element.right > scrollContainerRect.right;\n return clippedAbove || clippedBelow || clippedLeft || clippedRight;\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 * Strategy that will update the element position as the user is scrolling.\n */\nclass RepositionScrollStrategy {\n constructor(_scrollDispatcher, _viewportRuler, _ngZone, _config) {\n this._scrollDispatcher = _scrollDispatcher;\n this._viewportRuler = _viewportRuler;\n this._ngZone = _ngZone;\n this._config = _config;\n this._scrollSubscription = null;\n }\n /** Attaches this scroll strategy to an overlay. */\n attach(overlayRef) {\n if (this._overlayRef && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatScrollStrategyAlreadyAttachedError();\n }\n this._overlayRef = overlayRef;\n }\n /** Enables repositioning of the attached overlay on scroll. */\n enable() {\n if (!this._scrollSubscription) {\n const throttle = this._config ? this._config.scrollThrottle : 0;\n this._scrollSubscription = this._scrollDispatcher.scrolled(throttle).subscribe(() => {\n this._overlayRef.updatePosition();\n // TODO(crisbeto): make `close` on by default once all components can handle it.\n if (this._config && this._config.autoClose) {\n const overlayRect = this._overlayRef.overlayElement.getBoundingClientRect();\n const { width, height } = this._viewportRuler.getViewportSize();\n // TODO(crisbeto): include all ancestor scroll containers here once\n // we have a way of exposing the trigger element to the scroll strategy.\n const parentRects = [{ width, height, bottom: height, right: width, top: 0, left: 0 }];\n if (isElementScrolledOutsideView(overlayRect, parentRects)) {\n this.disable();\n this._ngZone.run(() => this._overlayRef.detach());\n }\n }\n });\n }\n }\n /** Disables repositioning of the attached overlay on scroll. */\n disable() {\n if (this._scrollSubscription) {\n this._scrollSubscription.unsubscribe();\n this._scrollSubscription = null;\n }\n }\n detach() {\n this.disable();\n this._overlayRef = null;\n }\n}\n\n/**\n * Options for how an overlay will handle scrolling.\n *\n * Users can provide a custom value for `ScrollStrategyOptions` to replace the default\n * behaviors. This class primarily acts as a factory for ScrollStrategy instances.\n */\nclass ScrollStrategyOptions {\n constructor(_scrollDispatcher, _viewportRuler, _ngZone, document) {\n this._scrollDispatcher = _scrollDispatcher;\n this._viewportRuler = _viewportRuler;\n this._ngZone = _ngZone;\n /** Do nothing on scroll. */\n this.noop = () => new NoopScrollStrategy();\n /**\n * Close the overlay as soon as the user scrolls.\n * @param config Configuration to be used inside the scroll strategy.\n */\n this.close = (config) => new CloseScrollStrategy(this._scrollDispatcher, this._ngZone, this._viewportRuler, config);\n /** Block scrolling. */\n this.block = () => new BlockScrollStrategy(this._viewportRuler, this._document);\n /**\n * Update the overlay's position on scroll.\n * @param config Configuration to be used inside the scroll strategy.\n * Allows debouncing the reposition calls.\n */\n this.reposition = (config) => new RepositionScrollStrategy(this._scrollDispatcher, this._viewportRuler, this._ngZone, config);\n this._document = document;\n }\n}\nScrollStrategyOptions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: ScrollStrategyOptions, deps: [{ token: i1.ScrollDispatcher }, { token: i1.ViewportRuler }, { token: i0.NgZone }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nScrollStrategyOptions.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: ScrollStrategyOptions, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: ScrollStrategyOptions, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () {\n return [{ type: i1.ScrollDispatcher }, { type: i1.ViewportRuler }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\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/**\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/** Initial configuration used when creating an overlay. */\nclass OverlayConfig {\n constructor(config) {\n /** Strategy to be used when handling scroll events while the overlay is open. */\n this.scrollStrategy = new NoopScrollStrategy();\n /** Custom class to add to the overlay pane. */\n this.panelClass = '';\n /** Whether the overlay has a backdrop. */\n this.hasBackdrop = false;\n /** Custom class to add to the backdrop */\n this.backdropClass = 'cdk-overlay-dark-backdrop';\n /**\n * Whether the overlay should be disposed of when the user goes backwards/forwards in history.\n * Note that this usually doesn't include clicking on links (unless the user is using\n * the `HashLocationStrategy`).\n */\n this.disposeOnNavigation = false;\n if (config) {\n // Use `Iterable` instead of `Array` because TypeScript, as of 3.6.3,\n // loses the array generic type in the `for of`. But we *also* have to use `Array` because\n // typescript won't iterate over an `Iterable` unless you compile with `--downlevelIteration`\n const configKeys = Object.keys(config);\n for (const key of configKeys) {\n if (config[key] !== undefined) {\n // TypeScript, as of version 3.5, sees the left-hand-side of this expression\n // as \"I don't know *which* key this is, so the only valid value is the intersection\n // of all the posible values.\" In this case, that happens to be `undefined`. TypeScript\n // is not smart enough to see that the right-hand-side is actually an access of the same\n // exact type with the same exact key, meaning that the value type must be identical.\n // So we use `any` to work around this.\n this[key] = config[key];\n }\n }\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/** The points of the origin element and the overlay element to connect. */\nclass ConnectionPositionPair {\n constructor(origin, overlay, \n /** Offset along the X axis. */\n offsetX, \n /** Offset along the Y axis. */\n offsetY, \n /** Class(es) to be applied to the panel while this position is active. */\n panelClass) {\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n this.panelClass = panelClass;\n this.originX = origin.originX;\n this.originY = origin.originY;\n this.overlayX = overlay.overlayX;\n this.overlayY = overlay.overlayY;\n }\n}\n/**\n * Set of properties regarding the position of the origin and overlay relative to the viewport\n * with respect to the containing Scrollable elements.\n *\n * The overlay and origin are clipped if any part of their bounding client rectangle exceeds the\n * bounds of any one of the strategy's Scrollable's bounding client rectangle.\n *\n * The overlay and origin are outside view if there is no overlap between their bounding client\n * rectangle and any one of the strategy's Scrollable's bounding client rectangle.\n *\n * ----------- -----------\n * | outside | | clipped |\n * | view | --------------------------\n * | | | | | |\n * ---------- | ----------- |\n * -------------------------- | |\n * | | | Scrollable |\n * | | | |\n * | | --------------------------\n * | Scrollable |\n * | |\n * --------------------------\n *\n * @docs-private\n */\nclass ScrollingVisibility {\n}\n/** The change event emitted by the strategy when a fallback position is used. */\nclass ConnectedOverlayPositionChange {\n constructor(\n /** The position used as a result of this change. */\n connectionPair, \n /** @docs-private */\n scrollableViewProperties) {\n this.connectionPair = connectionPair;\n this.scrollableViewProperties = scrollableViewProperties;\n }\n}\n/**\n * Validates whether a vertical position property matches the expected values.\n * @param property Name of the property being validated.\n * @param value Value of the property being validated.\n * @docs-private\n */\nfunction validateVerticalPosition(property, value) {\n if (value !== 'top' && value !== 'bottom' && value !== 'center') {\n throw Error(`ConnectedPosition: Invalid ${property} \"${value}\". ` +\n `Expected \"top\", \"bottom\" or \"center\".`);\n }\n}\n/**\n * Validates whether a horizontal position property matches the expected values.\n * @param property Name of the property being validated.\n * @param value Value of the property being validated.\n * @docs-private\n */\nfunction validateHorizontalPosition(property, value) {\n if (value !== 'start' && value !== 'end' && value !== 'center') {\n throw Error(`ConnectedPosition: Invalid ${property} \"${value}\". ` +\n `Expected \"start\", \"end\" or \"center\".`);\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 * Reference to an overlay that has been created with the Overlay service.\n * Used to manipulate or dispose of said overlay.\n */\nclass OverlayRef {\n constructor(_portalOutlet, _host, _pane, _config, _ngZone, _keyboardDispatcher, _document, _location, _outsideClickDispatcher) {\n this._portalOutlet = _portalOutlet;\n this._host = _host;\n this._pane = _pane;\n this._config = _config;\n this._ngZone = _ngZone;\n this._keyboardDispatcher = _keyboardDispatcher;\n this._document = _document;\n this._location = _location;\n this._outsideClickDispatcher = _outsideClickDispatcher;\n this._backdropElement = null;\n this._backdropClick = new Subject();\n this._attachments = new Subject();\n this._detachments = new Subject();\n this._locationChanges = Subscription.EMPTY;\n this._backdropClickHandler = (event) => this._backdropClick.next(event);\n this._backdropTransitionendHandler = (event) => {\n this._disposeBackdrop(event.target);\n };\n /** Stream of keydown events dispatched to this overlay. */\n this._keydownEvents = new Subject();\n /** Stream of mouse outside events dispatched to this overlay. */\n this._outsidePointerEvents = new Subject();\n if (_config.scrollStrategy) {\n this._scrollStrategy = _config.scrollStrategy;\n this._scrollStrategy.attach(this);\n }\n this._positionStrategy = _config.positionStrategy;\n }\n /** The overlay's HTML element */\n get overlayElement() {\n return this._pane;\n }\n /** The overlay's backdrop HTML element. */\n get backdropElement() {\n return this._backdropElement;\n }\n /**\n * Wrapper around the panel element. Can be used for advanced\n * positioning where a wrapper with specific styling is\n * required around the overlay pane.\n */\n get hostElement() {\n return this._host;\n }\n /**\n * Attaches content, given via a Portal, to the overlay.\n * If the overlay is configured to have a backdrop, it will be created.\n *\n * @param portal Portal instance to which to attach the overlay.\n * @returns The portal attachment result.\n */\n attach(portal) {\n // Insert the host into the DOM before attaching the portal, otherwise\n // the animations module will skip animations on repeat attachments.\n if (!this._host.parentElement && this._previousHostParent) {\n this._previousHostParent.appendChild(this._host);\n }\n const attachResult = this._portalOutlet.attach(portal);\n if (this._positionStrategy) {\n this._positionStrategy.attach(this);\n }\n this._updateStackingOrder();\n this._updateElementSize();\n this._updateElementDirection();\n if (this._scrollStrategy) {\n this._scrollStrategy.enable();\n }\n // Update the position once the zone is stable so that the overlay will be fully rendered\n // before attempting to position it, as the position may depend on the size of the rendered\n // content.\n this._ngZone.onStable.pipe(take(1)).subscribe(() => {\n // The overlay could've been detached before the zone has stabilized.\n if (this.hasAttached()) {\n this.updatePosition();\n }\n });\n // Enable pointer events for the overlay pane element.\n this._togglePointerEvents(true);\n if (this._config.hasBackdrop) {\n this._attachBackdrop();\n }\n if (this._config.panelClass) {\n this._toggleClasses(this._pane, this._config.panelClass, true);\n }\n // Only emit the `attachments` event once all other setup is done.\n this._attachments.next();\n // Track this overlay by the keyboard dispatcher\n this._keyboardDispatcher.add(this);\n if (this._config.disposeOnNavigation) {\n this._locationChanges = this._location.subscribe(() => this.dispose());\n }\n this._outsideClickDispatcher.add(this);\n return attachResult;\n }\n /**\n * Detaches an overlay from a portal.\n * @returns The portal detachment result.\n */\n detach() {\n if (!this.hasAttached()) {\n return;\n }\n this.detachBackdrop();\n // When the overlay is detached, the pane element should disable pointer events.\n // This is necessary because otherwise the pane element will cover the page and disable\n // pointer events therefore. Depends on the position strategy and the applied pane boundaries.\n this._togglePointerEvents(false);\n if (this._positionStrategy && this._positionStrategy.detach) {\n this._positionStrategy.detach();\n }\n if (this._scrollStrategy) {\n this._scrollStrategy.disable();\n }\n const detachmentResult = this._portalOutlet.detach();\n // Only emit after everything is detached.\n this._detachments.next();\n // Remove this overlay from keyboard dispatcher tracking.\n this._keyboardDispatcher.remove(this);\n // Keeping the host element in the DOM can cause scroll jank, because it still gets\n // rendered, even though it's transparent and unclickable which is why we remove it.\n this._detachContentWhenStable();\n this._locationChanges.unsubscribe();\n this._outsideClickDispatcher.remove(this);\n return detachmentResult;\n }\n /** Cleans up the overlay from the DOM. */\n dispose() {\n var _a;\n const isAttached = this.hasAttached();\n if (this._positionStrategy) {\n this._positionStrategy.dispose();\n }\n this._disposeScrollStrategy();\n this._disposeBackdrop(this._backdropElement);\n this._locationChanges.unsubscribe();\n this._keyboardDispatcher.remove(this);\n this._portalOutlet.dispose();\n this._attachments.complete();\n this._backdropClick.complete();\n this._keydownEvents.complete();\n this._outsidePointerEvents.complete();\n this._outsideClickDispatcher.remove(this);\n (_a = this._host) === null || _a === void 0 ? void 0 : _a.remove();\n this._previousHostParent = this._pane = this._host = null;\n if (isAttached) {\n this._detachments.next();\n }\n this._detachments.complete();\n }\n /** Whether the overlay has attached content. */\n hasAttached() {\n return this._portalOutlet.hasAttached();\n }\n /** Gets an observable that emits when the backdrop has been clicked. */\n backdropClick() {\n return this._backdropClick;\n }\n /** Gets an observable that emits when the overlay has been attached. */\n attachments() {\n return this._attachments;\n }\n /** Gets an observable that emits when the overlay has been detached. */\n detachments() {\n return this._detachments;\n }\n /** Gets an observable of keydown events targeted to this overlay. */\n keydownEvents() {\n return this._keydownEvents;\n }\n /** Gets an observable of pointer events targeted outside this overlay. */\n outsidePointerEvents() {\n return this._outsidePointerEvents;\n }\n /** Gets the current overlay configuration, which is immutable. */\n getConfig() {\n return this._config;\n }\n /** Updates the position of the overlay based on the position strategy. */\n updatePosition() {\n if (this._positionStrategy) {\n this._positionStrategy.apply();\n }\n }\n /** Switches to a new position strategy and updates the overlay position. */\n updatePositionStrategy(strategy) {\n if (strategy === this._positionStrategy) {\n return;\n }\n if (this._positionStrategy) {\n this._positionStrategy.dispose();\n }\n this._positionStrategy = strategy;\n if (this.hasAttached()) {\n strategy.attach(this);\n this.updatePosition();\n }\n }\n /** Update the size properties of the overlay. */\n updateSize(sizeConfig) {\n this._config = Object.assign(Object.assign({}, this._config), sizeConfig);\n this._updateElementSize();\n }\n /** Sets the LTR/RTL direction for the overlay. */\n setDirection(dir) {\n this._config = Object.assign(Object.assign({}, this._config), { direction: dir });\n this._updateElementDirection();\n }\n /** Add a CSS class or an array of classes to the overlay pane. */\n addPanelClass(classes) {\n if (this._pane) {\n this._toggleClasses(this._pane, classes, true);\n }\n }\n /** Remove a CSS class or an array of classes from the overlay pane. */\n removePanelClass(classes) {\n if (this._pane) {\n this._toggleClasses(this._pane, classes, false);\n }\n }\n /**\n * Returns the layout direction of the overlay panel.\n */\n getDirection() {\n const direction = this._config.direction;\n if (!direction) {\n return 'ltr';\n }\n return typeof direction === 'string' ? direction : direction.value;\n }\n /** Switches to a new scroll strategy. */\n updateScrollStrategy(strategy) {\n if (strategy === this._scrollStrategy) {\n return;\n }\n this._disposeScrollStrategy();\n this._scrollStrategy = strategy;\n if (this.hasAttached()) {\n strategy.attach(this);\n strategy.enable();\n }\n }\n /** Updates the text direction of the overlay panel. */\n _updateElementDirection() {\n this._host.setAttribute('dir', this.getDirection());\n }\n /** Updates the size of the overlay element based on the overlay config. */\n _updateElementSize() {\n if (!this._pane) {\n return;\n }\n const style = this._pane.style;\n style.width = coerceCssPixelValue(this._config.width);\n style.height = coerceCssPixelValue(this._config.height);\n style.minWidth = coerceCssPixelValue(this._config.minWidth);\n style.minHeight = coerceCssPixelValue(this._config.minHeight);\n style.maxWidth = coerceCssPixelValue(this._config.maxWidth);\n style.maxHeight = coerceCssPixelValue(this._config.maxHeight);\n }\n /** Toggles the pointer events for the overlay pane element. */\n _togglePointerEvents(enablePointer) {\n this._pane.style.pointerEvents = enablePointer ? '' : 'none';\n }\n /** Attaches a backdrop for this overlay. */\n _attachBackdrop() {\n const showingClass = 'cdk-overlay-backdrop-showing';\n this._backdropElement = this._document.createElement('div');\n this._backdropElement.classList.add('cdk-overlay-backdrop');\n if (this._config.backdropClass) {\n this._toggleClasses(this._backdropElement, this._config.backdropClass, true);\n }\n // Insert the backdrop before the pane in the DOM order,\n // in order to handle stacked overlays properly.\n this._host.parentElement.insertBefore(this._backdropElement, this._host);\n // Forward backdrop clicks such that the consumer of the overlay can perform whatever\n // action desired when such a click occurs (usually closing the overlay).\n this._backdropElement.addEventListener('click', this._backdropClickHandler);\n // Add class to fade-in the backdrop after one frame.\n if (typeof requestAnimationFrame !== 'undefined') {\n this._ngZone.runOutsideAngular(() => {\n requestAnimationFrame(() => {\n if (this._backdropElement) {\n this._backdropElement.classList.add(showingClass);\n }\n });\n });\n }\n else {\n this._backdropElement.classList.add(showingClass);\n }\n }\n /**\n * Updates the stacking order of the element, moving it to the top if necessary.\n * This is required in cases where one overlay was detached, while another one,\n * that should be behind it, was destroyed. The next time both of them are opened,\n * the stacking will be wrong, because the detached element's pane will still be\n * in its original DOM position.\n */\n _updateStackingOrder() {\n if (this._host.nextSibling) {\n this._host.parentNode.appendChild(this._host);\n }\n }\n /** Detaches the backdrop (if any) associated with the overlay. */\n detachBackdrop() {\n const backdropToDetach = this._backdropElement;\n if (!backdropToDetach) {\n return;\n }\n backdropToDetach.classList.remove('cdk-overlay-backdrop-showing');\n this._ngZone.runOutsideAngular(() => {\n backdropToDetach.addEventListener('transitionend', this._backdropTransitionendHandler);\n });\n // If the backdrop doesn't have a transition, the `transitionend` event won't fire.\n // In this case we make it unclickable and we try to remove it after a delay.\n backdropToDetach.style.pointerEvents = 'none';\n // Run this outside the Angular zone because there's nothing that Angular cares about.\n // If it were to run inside the Angular zone, every test that used Overlay would have to be\n // either async or fakeAsync.\n this._backdropTimeout = this._ngZone.runOutsideAngular(() => setTimeout(() => {\n this._disposeBackdrop(backdropToDetach);\n }, 500));\n }\n /** Toggles a single CSS class or an array of classes on an element. */\n _toggleClasses(element, cssClasses, isAdd) {\n const classes = coerceArray(cssClasses || []).filter(c => !!c);\n if (classes.length) {\n isAdd ? element.classList.add(...classes) : element.classList.remove(...classes);\n }\n }\n /** Detaches the overlay content next time the zone stabilizes. */\n _detachContentWhenStable() {\n // Normally we wouldn't have to explicitly run this outside the `NgZone`, however\n // if the consumer is using `zone-patch-rxjs`, the `Subscription.unsubscribe` call will\n // be patched to run inside the zone, which will throw us into an infinite loop.\n this._ngZone.runOutsideAngular(() => {\n // We can't remove the host here immediately, because the overlay pane's content\n // might still be animating. This stream helps us avoid interrupting the animation\n // by waiting for the pane to become empty.\n const subscription = this._ngZone.onStable\n .pipe(takeUntil(merge(this._attachments, this._detachments)))\n .subscribe(() => {\n // Needs a couple of checks for the pane and host, because\n // they may have been removed by the time the zone stabilizes.\n if (!this._pane || !this._host || this._pane.children.length === 0) {\n if (this._pane && this._config.panelClass) {\n this._toggleClasses(this._pane, this._config.panelClass, false);\n }\n if (this._host && this._host.parentElement) {\n this._previousHostParent = this._host.parentElement;\n this._host.remove();\n }\n subscription.unsubscribe();\n }\n });\n });\n }\n /** Disposes of a scroll strategy. */\n _disposeScrollStrategy() {\n const scrollStrategy = this._scrollStrategy;\n if (scrollStrategy) {\n scrollStrategy.disable();\n if (scrollStrategy.detach) {\n scrollStrategy.detach();\n }\n }\n }\n /** Removes a backdrop element from the DOM. */\n _disposeBackdrop(backdrop) {\n if (backdrop) {\n backdrop.removeEventListener('click', this._backdropClickHandler);\n backdrop.removeEventListener('transitionend', this._backdropTransitionendHandler);\n backdrop.remove();\n // It is possible that a new portal has been attached to this overlay since we started\n // removing the backdrop. If that is the case, only clear the backdrop reference if it\n // is still the same instance that we started to remove.\n if (this._backdropElement === backdrop) {\n this._backdropElement = null;\n }\n }\n if (this._backdropTimeout) {\n clearTimeout(this._backdropTimeout);\n this._backdropTimeout = undefined;\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/** Container inside which all overlays will render. */\nclass OverlayContainer {\n constructor(document, _platform) {\n this._platform = _platform;\n this._document = document;\n }\n ngOnDestroy() {\n var _a;\n (_a = this._containerElement) === null || _a === void 0 ? void 0 : _a.remove();\n }\n /**\n * This method returns the overlay container element. It will lazily\n * create the element the first time it is called to facilitate using\n * the container in non-browser environments.\n * @returns the container element\n */\n getContainerElement() {\n if (!this._containerElement) {\n this._createContainer();\n }\n return this._containerElement;\n }\n /**\n * Create the overlay container element, which is simply a div\n * with the 'cdk-overlay-container' class on the document body.\n */\n _createContainer() {\n const containerClass = 'cdk-overlay-container';\n // TODO(crisbeto): remove the testing check once we have an overlay testing\n // module or Angular starts tearing down the testing `NgModule`. See:\n // https://github.com/angular/angular/issues/18831\n if (this._platform.isBrowser || _isTestEnvironment()) {\n const oppositePlatformContainers = this._document.querySelectorAll(`.${containerClass}[platform=\"server\"], ` + `.${containerClass}[platform=\"test\"]`);\n // Remove any old containers from the opposite platform.\n // This can happen when transitioning from the server to the client.\n for (let i = 0; i < oppositePlatformContainers.length; i++) {\n oppositePlatformContainers[i].remove();\n }\n }\n const container = this._document.createElement('div');\n container.classList.add(containerClass);\n // A long time ago we kept adding new overlay containers whenever a new app was instantiated,\n // but at some point we added logic which clears the duplicate ones in order to avoid leaks.\n // The new logic was a little too aggressive since it was breaking some legitimate use cases.\n // To mitigate the problem we made it so that only containers from a different platform are\n // cleared, but the side-effect was that people started depending on the overly-aggressive\n // logic to clean up their tests for them. Until we can introduce an overlay-specific testing\n // module which does the cleanup, we try to detect that we're in a test environment and we\n // always clear the container. See #17006.\n // TODO(crisbeto): remove the test environment check once we have an overlay testing module.\n if (_isTestEnvironment()) {\n container.setAttribute('platform', 'test');\n }\n else if (!this._platform.isBrowser) {\n container.setAttribute('platform', 'server');\n }\n this._document.body.appendChild(container);\n this._containerElement = container;\n }\n}\nOverlayContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: OverlayContainer, deps: [{ token: DOCUMENT }, { token: i1$1.Platform }], target: i0.ɵɵFactoryTarget.Injectable });\nOverlayContainer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: OverlayContainer, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: OverlayContainer, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i1$1.Platform }];\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// TODO: refactor clipping detection into a separate thing (part of scrolling module)\n// TODO: doesn't handle both flexible width and height when it has to scroll along both axis.\n/** Class to be added to the overlay bounding box. */\nconst boundingBoxClass = 'cdk-overlay-connected-position-bounding-box';\n/** Regex used to split a string on its CSS units. */\nconst cssUnitPattern = /([A-Za-z%]+)$/;\n/**\n * A strategy for positioning overlays. Using this strategy, an overlay is given an\n * implicit position relative some origin element. The relative position is defined in terms of\n * a point on the origin element that is connected to a point on the overlay element. For example,\n * a basic dropdown is connecting the bottom-left corner of the origin to the top-left corner\n * of the overlay.\n */\nclass FlexibleConnectedPositionStrategy {\n constructor(connectedTo, _viewportRuler, _document, _platform, _overlayContainer) {\n this._viewportRuler = _viewportRuler;\n this._document = _document;\n this._platform = _platform;\n this._overlayContainer = _overlayContainer;\n /** Last size used for the bounding box. Used to avoid resizing the overlay after open. */\n this._lastBoundingBoxSize = { width: 0, height: 0 };\n /** Whether the overlay was pushed in a previous positioning. */\n this._isPushed = false;\n /** Whether the overlay can be pushed on-screen on the initial open. */\n this._canPush = true;\n /** Whether the overlay can grow via flexible width/height after the initial open. */\n this._growAfterOpen = false;\n /** Whether the overlay's width and height can be constrained to fit within the viewport. */\n this._hasFlexibleDimensions = true;\n /** Whether the overlay position is locked. */\n this._positionLocked = false;\n /** Amount of space that must be maintained between the overlay and the edge of the viewport. */\n this._viewportMargin = 0;\n /** The Scrollable containers used to check scrollable view properties on position change. */\n this._scrollables = [];\n /** Ordered list of preferred positions, from most to least desirable. */\n this._preferredPositions = [];\n /** Subject that emits whenever the position changes. */\n this._positionChanges = new Subject();\n /** Subscription to viewport size changes. */\n this._resizeSubscription = Subscription.EMPTY;\n /** Default offset for the overlay along the x axis. */\n this._offsetX = 0;\n /** Default offset for the overlay along the y axis. */\n this._offsetY = 0;\n /** Keeps track of the CSS classes that the position strategy has applied on the overlay panel. */\n this._appliedPanelClasses = [];\n /** Observable sequence of position changes. */\n this.positionChanges = this._positionChanges;\n this.setOrigin(connectedTo);\n }\n /** Ordered list of preferred positions, from most to least desirable. */\n get positions() {\n return this._preferredPositions;\n }\n /** Attaches this position strategy to an overlay. */\n attach(overlayRef) {\n if (this._overlayRef &&\n overlayRef !== this._overlayRef &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('This position strategy is already attached to an overlay');\n }\n this._validatePositions();\n overlayRef.hostElement.classList.add(boundingBoxClass);\n this._overlayRef = overlayRef;\n this._boundingBox = overlayRef.hostElement;\n this._pane = overlayRef.overlayElement;\n this._isDisposed = false;\n this._isInitialRender = true;\n this._lastPosition = null;\n this._resizeSubscription.unsubscribe();\n this._resizeSubscription = this._viewportRuler.change().subscribe(() => {\n // When the window is resized, we want to trigger the next reposition as if it\n // was an initial render, in order for the strategy to pick a new optimal position,\n // otherwise position locking will cause it to stay at the old one.\n this._isInitialRender = true;\n this.apply();\n });\n }\n /**\n * Updates the position of the overlay element, using whichever preferred position relative\n * to the origin best fits on-screen.\n *\n * The selection of a position goes as follows:\n * - If any positions fit completely within the viewport as-is,\n * choose the first position that does so.\n * - If flexible dimensions are enabled and at least one satifies the given minimum width/height,\n * choose the position with the greatest available size modified by the positions' weight.\n * - If pushing is enabled, take the position that went off-screen the least and push it\n * on-screen.\n * - If none of the previous criteria were met, use the position that goes off-screen the least.\n * @docs-private\n */\n apply() {\n // We shouldn't do anything if the strategy was disposed or we're on the server.\n if (this._isDisposed || !this._platform.isBrowser) {\n return;\n }\n // If the position has been applied already (e.g. when the overlay was opened) and the\n // consumer opted into locking in the position, re-use the old position, in order to\n // prevent the overlay from jumping around.\n if (!this._isInitialRender && this._positionLocked && this._lastPosition) {\n this.reapplyLastPosition();\n return;\n }\n this._clearPanelClasses();\n this._resetOverlayElementStyles();\n this._resetBoundingBoxStyles();\n // We need the bounding rects for the origin, the overlay and the container to determine how to position\n // the overlay relative to the origin.\n // We use the viewport rect to determine whether a position would go off-screen.\n this._viewportRect = this._getNarrowedViewportRect();\n this._originRect = this._getOriginRect();\n this._overlayRect = this._pane.getBoundingClientRect();\n this._containerRect = this._overlayContainer.getContainerElement().getBoundingClientRect();\n const originRect = this._originRect;\n const overlayRect = this._overlayRect;\n const viewportRect = this._viewportRect;\n const containerRect = this._containerRect;\n // Positions where the overlay will fit with flexible dimensions.\n const flexibleFits = [];\n // Fallback if none of the preferred positions fit within the viewport.\n let fallback;\n // Go through each of the preferred positions looking for a good fit.\n // If a good fit is found, it will be applied immediately.\n for (let pos of this._preferredPositions) {\n // Get the exact (x, y) coordinate for the point-of-origin on the origin element.\n let originPoint = this._getOriginPoint(originRect, containerRect, pos);\n // From that point-of-origin, get the exact (x, y) coordinate for the top-left corner of the\n // overlay in this position. We use the top-left corner for calculations and later translate\n // this into an appropriate (top, left, bottom, right) style.\n let overlayPoint = this._getOverlayPoint(originPoint, overlayRect, pos);\n // Calculate how well the overlay would fit into the viewport with this point.\n let overlayFit = this._getOverlayFit(overlayPoint, overlayRect, viewportRect, pos);\n // If the overlay, without any further work, fits into the viewport, use this position.\n if (overlayFit.isCompletelyWithinViewport) {\n this._isPushed = false;\n this._applyPosition(pos, originPoint);\n return;\n }\n // If the overlay has flexible dimensions, we can use this position\n // so long as there's enough space for the minimum dimensions.\n if (this._canFitWithFlexibleDimensions(overlayFit, overlayPoint, viewportRect)) {\n // Save positions where the overlay will fit with flexible dimensions. We will use these\n // if none of the positions fit *without* flexible dimensions.\n flexibleFits.push({\n position: pos,\n origin: originPoint,\n overlayRect,\n boundingBoxRect: this._calculateBoundingBoxRect(originPoint, pos),\n });\n continue;\n }\n // If the current preferred position does not fit on the screen, remember the position\n // if it has more visible area on-screen than we've seen and move onto the next preferred\n // position.\n if (!fallback || fallback.overlayFit.visibleArea < overlayFit.visibleArea) {\n fallback = { overlayFit, overlayPoint, originPoint, position: pos, overlayRect };\n }\n }\n // If there are any positions where the overlay would fit with flexible dimensions, choose the\n // one that has the greatest area available modified by the position's weight\n if (flexibleFits.length) {\n let bestFit = null;\n let bestScore = -1;\n for (const fit of flexibleFits) {\n const score = fit.boundingBoxRect.width * fit.boundingBoxRect.height * (fit.position.weight || 1);\n if (score > bestScore) {\n bestScore = score;\n bestFit = fit;\n }\n }\n this._isPushed = false;\n this._applyPosition(bestFit.position, bestFit.origin);\n return;\n }\n // When none of the preferred positions fit within the viewport, take the position\n // that went off-screen the least and attempt to push it on-screen.\n if (this._canPush) {\n // TODO(jelbourn): after pushing, the opening \"direction\" of the overlay might not make sense.\n this._isPushed = true;\n this._applyPosition(fallback.position, fallback.originPoint);\n return;\n }\n // All options for getting the overlay within the viewport have been exhausted, so go with the\n // position that went off-screen the least.\n this._applyPosition(fallback.position, fallback.originPoint);\n }\n detach() {\n this._clearPanelClasses();\n this._lastPosition = null;\n this._previousPushAmount = null;\n this._resizeSubscription.unsubscribe();\n }\n /** Cleanup after the element gets destroyed. */\n dispose() {\n if (this._isDisposed) {\n return;\n }\n // We can't use `_resetBoundingBoxStyles` here, because it resets\n // some properties to zero, rather than removing them.\n if (this._boundingBox) {\n extendStyles(this._boundingBox.style, {\n top: '',\n left: '',\n right: '',\n bottom: '',\n height: '',\n width: '',\n alignItems: '',\n justifyContent: '',\n });\n }\n if (this._pane) {\n this._resetOverlayElementStyles();\n }\n if (this._overlayRef) {\n this._overlayRef.hostElement.classList.remove(boundingBoxClass);\n }\n this.detach();\n this._positionChanges.complete();\n this._overlayRef = this._boundingBox = null;\n this._isDisposed = true;\n }\n /**\n * This re-aligns the overlay element with the trigger in its last calculated position,\n * even if a position higher in the \"preferred positions\" list would now fit. This\n * allows one to re-align the panel without changing the orientation of the panel.\n */\n reapplyLastPosition() {\n if (this._isDisposed || !this._platform.isBrowser) {\n return;\n }\n const lastPosition = this._lastPosition;\n if (lastPosition) {\n this._originRect = this._getOriginRect();\n this._overlayRect = this._pane.getBoundingClientRect();\n this._viewportRect = this._getNarrowedViewportRect();\n this._containerRect = this._overlayContainer.getContainerElement().getBoundingClientRect();\n const originPoint = this._getOriginPoint(this._originRect, this._containerRect, lastPosition);\n this._applyPosition(lastPosition, originPoint);\n }\n else {\n this.apply();\n }\n }\n /**\n * Sets the list of Scrollable containers that host the origin element so that\n * on reposition we can evaluate if it or the overlay has been clipped or outside view. Every\n * Scrollable must be an ancestor element of the strategy's origin element.\n */\n withScrollableContainers(scrollables) {\n this._scrollables = scrollables;\n return this;\n }\n /**\n * Adds new preferred positions.\n * @param positions List of positions options for this overlay.\n */\n withPositions(positions) {\n this._preferredPositions = positions;\n // If the last calculated position object isn't part of the positions anymore, clear\n // it in order to avoid it being picked up if the consumer tries to re-apply.\n if (positions.indexOf(this._lastPosition) === -1) {\n this._lastPosition = null;\n }\n this._validatePositions();\n return this;\n }\n /**\n * Sets a minimum distance the overlay may be positioned to the edge of the viewport.\n * @param margin Required margin between the overlay and the viewport edge in pixels.\n */\n withViewportMargin(margin) {\n this._viewportMargin = margin;\n return this;\n }\n /** Sets whether the overlay's width and height can be constrained to fit within the viewport. */\n withFlexibleDimensions(flexibleDimensions = true) {\n this._hasFlexibleDimensions = flexibleDimensions;\n return this;\n }\n /** Sets whether the overlay can grow after the initial open via flexible width/height. */\n withGrowAfterOpen(growAfterOpen = true) {\n this._growAfterOpen = growAfterOpen;\n return this;\n }\n /** Sets whether the overlay can be pushed on-screen if none of the provided positions fit. */\n withPush(canPush = true) {\n this._canPush = canPush;\n return this;\n }\n /**\n * Sets whether the overlay's position should be locked in after it is positioned\n * initially. When an overlay is locked in, it won't attempt to reposition itself\n * when the position is re-applied (e.g. when the user scrolls away).\n * @param isLocked Whether the overlay should locked in.\n */\n withLockedPosition(isLocked = true) {\n this._positionLocked = isLocked;\n return this;\n }\n /**\n * Sets the origin, relative to which to position the overlay.\n * Using an element origin is useful for building components that need to be positioned\n * relatively to a trigger (e.g. dropdown menus or tooltips), whereas using a point can be\n * used for cases like contextual menus which open relative to the user's pointer.\n * @param origin Reference to the new origin.\n */\n setOrigin(origin) {\n this._origin = origin;\n return this;\n }\n /**\n * Sets the default offset for the overlay's connection point on the x-axis.\n * @param offset New offset in the X axis.\n */\n withDefaultOffsetX(offset) {\n this._offsetX = offset;\n return this;\n }\n /**\n * Sets the default offset for the overlay's connection point on the y-axis.\n * @param offset New offset in the Y axis.\n */\n withDefaultOffsetY(offset) {\n this._offsetY = offset;\n return this;\n }\n /**\n * Configures that the position strategy should set a `transform-origin` on some elements\n * inside the overlay, depending on the current position that is being applied. This is\n * useful for the cases where the origin of an animation can change depending on the\n * alignment of the overlay.\n * @param selector CSS selector that will be used to find the target\n * elements onto which to set the transform origin.\n */\n withTransformOriginOn(selector) {\n this._transformOriginSelector = selector;\n return this;\n }\n /**\n * Gets the (x, y) coordinate of a connection point on the origin based on a relative position.\n */\n _getOriginPoint(originRect, containerRect, pos) {\n let x;\n if (pos.originX == 'center') {\n // Note: when centering we should always use the `left`\n // offset, otherwise the position will be wrong in RTL.\n x = originRect.left + originRect.width / 2;\n }\n else {\n const startX = this._isRtl() ? originRect.right : originRect.left;\n const endX = this._isRtl() ? originRect.left : originRect.right;\n x = pos.originX == 'start' ? startX : endX;\n }\n // When zooming in Safari the container rectangle contains negative values for the position\n // and we need to re-add them to the calculated coordinates.\n if (containerRect.left < 0) {\n x -= containerRect.left;\n }\n let y;\n if (pos.originY == 'center') {\n y = originRect.top + originRect.height / 2;\n }\n else {\n y = pos.originY == 'top' ? originRect.top : originRect.bottom;\n }\n // Normally the containerRect's top value would be zero, however when the overlay is attached to an input\n // (e.g. in an autocomplete), mobile browsers will shift everything in order to put the input in the middle\n // of the screen and to make space for the virtual keyboard. We need to account for this offset,\n // otherwise our positioning will be thrown off.\n // Additionally, when zooming in Safari this fixes the vertical position.\n if (containerRect.top < 0) {\n y -= containerRect.top;\n }\n return { x, y };\n }\n /**\n * Gets the (x, y) coordinate of the top-left corner of the overlay given a given position and\n * origin point to which the overlay should be connected.\n */\n _getOverlayPoint(originPoint, overlayRect, pos) {\n // Calculate the (overlayStartX, overlayStartY), the start of the\n // potential overlay position relative to the origin point.\n let overlayStartX;\n if (pos.overlayX == 'center') {\n overlayStartX = -overlayRect.width / 2;\n }\n else if (pos.overlayX === 'start') {\n overlayStartX = this._isRtl() ? -overlayRect.width : 0;\n }\n else {\n overlayStartX = this._isRtl() ? 0 : -overlayRect.width;\n }\n let overlayStartY;\n if (pos.overlayY == 'center') {\n overlayStartY = -overlayRect.height / 2;\n }\n else {\n overlayStartY = pos.overlayY == 'top' ? 0 : -overlayRect.height;\n }\n // The (x, y) coordinates of the overlay.\n return {\n x: originPoint.x + overlayStartX,\n y: originPoint.y + overlayStartY,\n };\n }\n /** Gets how well an overlay at the given point will fit within the viewport. */\n _getOverlayFit(point, rawOverlayRect, viewport, position) {\n // Round the overlay rect when comparing against the\n // viewport, because the viewport is always rounded.\n const overlay = getRoundedBoundingClientRect(rawOverlayRect);\n let { x, y } = point;\n let offsetX = this._getOffset(position, 'x');\n let offsetY = this._getOffset(position, 'y');\n // Account for the offsets since they could push the overlay out of the viewport.\n if (offsetX) {\n x += offsetX;\n }\n if (offsetY) {\n y += offsetY;\n }\n // How much the overlay would overflow at this position, on each side.\n let leftOverflow = 0 - x;\n let rightOverflow = x + overlay.width - viewport.width;\n let topOverflow = 0 - y;\n let bottomOverflow = y + overlay.height - viewport.height;\n // Visible parts of the element on each axis.\n let visibleWidth = this._subtractOverflows(overlay.width, leftOverflow, rightOverflow);\n let visibleHeight = this._subtractOverflows(overlay.height, topOverflow, bottomOverflow);\n let visibleArea = visibleWidth * visibleHeight;\n return {\n visibleArea,\n isCompletelyWithinViewport: overlay.width * overlay.height === visibleArea,\n fitsInViewportVertically: visibleHeight === overlay.height,\n fitsInViewportHorizontally: visibleWidth == overlay.width,\n };\n }\n /**\n * Whether the overlay can fit within the viewport when it may resize either its width or height.\n * @param fit How well the overlay fits in the viewport at some position.\n * @param point The (x, y) coordinates of the overlay at some position.\n * @param viewport The geometry of the viewport.\n */\n _canFitWithFlexibleDimensions(fit, point, viewport) {\n if (this._hasFlexibleDimensions) {\n const availableHeight = viewport.bottom - point.y;\n const availableWidth = viewport.right - point.x;\n const minHeight = getPixelValue(this._overlayRef.getConfig().minHeight);\n const minWidth = getPixelValue(this._overlayRef.getConfig().minWidth);\n const verticalFit = fit.fitsInViewportVertically || (minHeight != null && minHeight <= availableHeight);\n const horizontalFit = fit.fitsInViewportHorizontally || (minWidth != null && minWidth <= availableWidth);\n return verticalFit && horizontalFit;\n }\n return false;\n }\n /**\n * Gets the point at which the overlay can be \"pushed\" on-screen. If the overlay is larger than\n * the viewport, the top-left corner will be pushed on-screen (with overflow occuring on the\n * right and bottom).\n *\n * @param start Starting point from which the overlay is pushed.\n * @param rawOverlayRect Dimensions of the overlay.\n * @param scrollPosition Current viewport scroll position.\n * @returns The point at which to position the overlay after pushing. This is effectively a new\n * originPoint.\n */\n _pushOverlayOnScreen(start, rawOverlayRect, scrollPosition) {\n // If the position is locked and we've pushed the overlay already, reuse the previous push\n // amount, rather than pushing it again. If we were to continue pushing, the element would\n // remain in the viewport, which goes against the expectations when position locking is enabled.\n if (this._previousPushAmount && this._positionLocked) {\n return {\n x: start.x + this._previousPushAmount.x,\n y: start.y + this._previousPushAmount.y,\n };\n }\n // Round the overlay rect when comparing against the\n // viewport, because the viewport is always rounded.\n const overlay = getRoundedBoundingClientRect(rawOverlayRect);\n const viewport = this._viewportRect;\n // Determine how much the overlay goes outside the viewport on each\n // side, which we'll use to decide which direction to push it.\n const overflowRight = Math.max(start.x + overlay.width - viewport.width, 0);\n const overflowBottom = Math.max(start.y + overlay.height - viewport.height, 0);\n const overflowTop = Math.max(viewport.top - scrollPosition.top - start.y, 0);\n const overflowLeft = Math.max(viewport.left - scrollPosition.left - start.x, 0);\n // Amount by which to push the overlay in each axis such that it remains on-screen.\n let pushX = 0;\n let pushY = 0;\n // If the overlay fits completely within the bounds of the viewport, push it from whichever\n // direction is goes off-screen. Otherwise, push the top-left corner such that its in the\n // viewport and allow for the trailing end of the overlay to go out of bounds.\n if (overlay.width <= viewport.width) {\n pushX = overflowLeft || -overflowRight;\n }\n else {\n pushX = start.x < this._viewportMargin ? viewport.left - scrollPosition.left - start.x : 0;\n }\n if (overlay.height <= viewport.height) {\n pushY = overflowTop || -overflowBottom;\n }\n else {\n pushY = start.y < this._viewportMargin ? viewport.top - scrollPosition.top - start.y : 0;\n }\n this._previousPushAmount = { x: pushX, y: pushY };\n return {\n x: start.x + pushX,\n y: start.y + pushY,\n };\n }\n /**\n * Applies a computed position to the overlay and emits a position change.\n * @param position The position preference\n * @param originPoint The point on the origin element where the overlay is connected.\n */\n _applyPosition(position, originPoint) {\n this._setTransformOrigin(position);\n this._setOverlayElementStyles(originPoint, position);\n this._setBoundingBoxStyles(originPoint, position);\n if (position.panelClass) {\n this._addPanelClasses(position.panelClass);\n }\n // Save the last connected position in case the position needs to be re-calculated.\n this._lastPosition = position;\n // Notify that the position has been changed along with its change properties.\n // We only emit if we've got any subscriptions, because the scroll visibility\n // calculcations can be somewhat expensive.\n if (this._positionChanges.observers.length) {\n const scrollableViewProperties = this._getScrollVisibility();\n const changeEvent = new ConnectedOverlayPositionChange(position, scrollableViewProperties);\n this._positionChanges.next(changeEvent);\n }\n this._isInitialRender = false;\n }\n /** Sets the transform origin based on the configured selector and the passed-in position. */\n _setTransformOrigin(position) {\n if (!this._transformOriginSelector) {\n return;\n }\n const elements = this._boundingBox.querySelectorAll(this._transformOriginSelector);\n let xOrigin;\n let yOrigin = position.overlayY;\n if (position.overlayX === 'center') {\n xOrigin = 'center';\n }\n else if (this._isRtl()) {\n xOrigin = position.overlayX === 'start' ? 'right' : 'left';\n }\n else {\n xOrigin = position.overlayX === 'start' ? 'left' : 'right';\n }\n for (let i = 0; i < elements.length; i++) {\n elements[i].style.transformOrigin = `${xOrigin} ${yOrigin}`;\n }\n }\n /**\n * Gets the position and size of the overlay's sizing container.\n *\n * This method does no measuring and applies no styles so that we can cheaply compute the\n * bounds for all positions and choose the best fit based on these results.\n */\n _calculateBoundingBoxRect(origin, position) {\n const viewport = this._viewportRect;\n const isRtl = this._isRtl();\n let height, top, bottom;\n if (position.overlayY === 'top') {\n // Overlay is opening \"downward\" and thus is bound by the bottom viewport edge.\n top = origin.y;\n height = viewport.height - top + this._viewportMargin;\n }\n else if (position.overlayY === 'bottom') {\n // Overlay is opening \"upward\" and thus is bound by the top viewport edge. We need to add\n // the viewport margin back in, because the viewport rect is narrowed down to remove the\n // margin, whereas the `origin` position is calculated based on its `ClientRect`.\n bottom = viewport.height - origin.y + this._viewportMargin * 2;\n height = viewport.height - bottom + this._viewportMargin;\n }\n else {\n // If neither top nor bottom, it means that the overlay is vertically centered on the\n // origin point. Note that we want the position relative to the viewport, rather than\n // the page, which is why we don't use something like `viewport.bottom - origin.y` and\n // `origin.y - viewport.top`.\n const smallestDistanceToViewportEdge = Math.min(viewport.bottom - origin.y + viewport.top, origin.y);\n const previousHeight = this._lastBoundingBoxSize.height;\n height = smallestDistanceToViewportEdge * 2;\n top = origin.y - smallestDistanceToViewportEdge;\n if (height > previousHeight && !this._isInitialRender && !this._growAfterOpen) {\n top = origin.y - previousHeight / 2;\n }\n }\n // The overlay is opening 'right-ward' (the content flows to the right).\n const isBoundedByRightViewportEdge = (position.overlayX === 'start' && !isRtl) || (position.overlayX === 'end' && isRtl);\n // The overlay is opening 'left-ward' (the content flows to the left).\n const isBoundedByLeftViewportEdge = (position.overlayX === 'end' && !isRtl) || (position.overlayX === 'start' && isRtl);\n let width, left, right;\n if (isBoundedByLeftViewportEdge) {\n right = viewport.width - origin.x + this._viewportMargin;\n width = origin.x - this._viewportMargin;\n }\n else if (isBoundedByRightViewportEdge) {\n left = origin.x;\n width = viewport.right - origin.x;\n }\n else {\n // If neither start nor end, it means that the overlay is horizontally centered on the\n // origin point. Note that we want the position relative to the viewport, rather than\n // the page, which is why we don't use something like `viewport.right - origin.x` and\n // `origin.x - viewport.left`.\n const smallestDistanceToViewportEdge = Math.min(viewport.right - origin.x + viewport.left, origin.x);\n const previousWidth = this._lastBoundingBoxSize.width;\n width = smallestDistanceToViewportEdge * 2;\n left = origin.x - smallestDistanceToViewportEdge;\n if (width > previousWidth && !this._isInitialRender && !this._growAfterOpen) {\n left = origin.x - previousWidth / 2;\n }\n }\n return { top: top, left: left, bottom: bottom, right: right, width, height };\n }\n /**\n * Sets the position and size of the overlay's sizing wrapper. The wrapper is positioned on the\n * origin's connection point and stetches to the bounds of the viewport.\n *\n * @param origin The point on the origin element where the overlay is connected.\n * @param position The position preference\n */\n _setBoundingBoxStyles(origin, position) {\n const boundingBoxRect = this._calculateBoundingBoxRect(origin, position);\n // It's weird if the overlay *grows* while scrolling, so we take the last size into account\n // when applying a new size.\n if (!this._isInitialRender && !this._growAfterOpen) {\n boundingBoxRect.height = Math.min(boundingBoxRect.height, this._lastBoundingBoxSize.height);\n boundingBoxRect.width = Math.min(boundingBoxRect.width, this._lastBoundingBoxSize.width);\n }\n const styles = {};\n if (this._hasExactPosition()) {\n styles.top = styles.left = '0';\n styles.bottom = styles.right = styles.maxHeight = styles.maxWidth = '';\n styles.width = styles.height = '100%';\n }\n else {\n const maxHeight = this._overlayRef.getConfig().maxHeight;\n const maxWidth = this._overlayRef.getConfig().maxWidth;\n styles.height = coerceCssPixelValue(boundingBoxRect.height);\n styles.top = coerceCssPixelValue(boundingBoxRect.top);\n styles.bottom = coerceCssPixelValue(boundingBoxRect.bottom);\n styles.width = coerceCssPixelValue(boundingBoxRect.width);\n styles.left = coerceCssPixelValue(boundingBoxRect.left);\n styles.right = coerceCssPixelValue(boundingBoxRect.right);\n // Push the pane content towards the proper direction.\n if (position.overlayX === 'center') {\n styles.alignItems = 'center';\n }\n else {\n styles.alignItems = position.overlayX === 'end' ? 'flex-end' : 'flex-start';\n }\n if (position.overlayY === 'center') {\n styles.justifyContent = 'center';\n }\n else {\n styles.justifyContent = position.overlayY === 'bottom' ? 'flex-end' : 'flex-start';\n }\n if (maxHeight) {\n styles.maxHeight = coerceCssPixelValue(maxHeight);\n }\n if (maxWidth) {\n styles.maxWidth = coerceCssPixelValue(maxWidth);\n }\n }\n this._lastBoundingBoxSize = boundingBoxRect;\n extendStyles(this._boundingBox.style, styles);\n }\n /** Resets the styles for the bounding box so that a new positioning can be computed. */\n _resetBoundingBoxStyles() {\n extendStyles(this._boundingBox.style, {\n top: '0',\n left: '0',\n right: '0',\n bottom: '0',\n height: '',\n width: '',\n alignItems: '',\n justifyContent: '',\n });\n }\n /** Resets the styles for the overlay pane so that a new positioning can be computed. */\n _resetOverlayElementStyles() {\n extendStyles(this._pane.style, {\n top: '',\n left: '',\n bottom: '',\n right: '',\n position: '',\n transform: '',\n });\n }\n /** Sets positioning styles to the overlay element. */\n _setOverlayElementStyles(originPoint, position) {\n const styles = {};\n const hasExactPosition = this._hasExactPosition();\n const hasFlexibleDimensions = this._hasFlexibleDimensions;\n const config = this._overlayRef.getConfig();\n if (hasExactPosition) {\n const scrollPosition = this._viewportRuler.getViewportScrollPosition();\n extendStyles(styles, this._getExactOverlayY(position, originPoint, scrollPosition));\n extendStyles(styles, this._getExactOverlayX(position, originPoint, scrollPosition));\n }\n else {\n styles.position = 'static';\n }\n // Use a transform to apply the offsets. We do this because the `center` positions rely on\n // being in the normal flex flow and setting a `top` / `left` at all will completely throw\n // off the position. We also can't use margins, because they won't have an effect in some\n // cases where the element doesn't have anything to \"push off of\". Finally, this works\n // better both with flexible and non-flexible positioning.\n let transformString = '';\n let offsetX = this._getOffset(position, 'x');\n let offsetY = this._getOffset(position, 'y');\n if (offsetX) {\n transformString += `translateX(${offsetX}px) `;\n }\n if (offsetY) {\n transformString += `translateY(${offsetY}px)`;\n }\n styles.transform = transformString.trim();\n // If a maxWidth or maxHeight is specified on the overlay, we remove them. We do this because\n // we need these values to both be set to \"100%\" for the automatic flexible sizing to work.\n // The maxHeight and maxWidth are set on the boundingBox in order to enforce the constraint.\n // Note that this doesn't apply when we have an exact position, in which case we do want to\n // apply them because they'll be cleared from the bounding box.\n if (config.maxHeight) {\n if (hasExactPosition) {\n styles.maxHeight = coerceCssPixelValue(config.maxHeight);\n }\n else if (hasFlexibleDimensions) {\n styles.maxHeight = '';\n }\n }\n if (config.maxWidth) {\n if (hasExactPosition) {\n styles.maxWidth = coerceCssPixelValue(config.maxWidth);\n }\n else if (hasFlexibleDimensions) {\n styles.maxWidth = '';\n }\n }\n extendStyles(this._pane.style, styles);\n }\n /** Gets the exact top/bottom for the overlay when not using flexible sizing or when pushing. */\n _getExactOverlayY(position, originPoint, scrollPosition) {\n // Reset any existing styles. This is necessary in case the\n // preferred position has changed since the last `apply`.\n let styles = { top: '', bottom: '' };\n let overlayPoint = this._getOverlayPoint(originPoint, this._overlayRect, position);\n if (this._isPushed) {\n overlayPoint = this._pushOverlayOnScreen(overlayPoint, this._overlayRect, scrollPosition);\n }\n // We want to set either `top` or `bottom` based on whether the overlay wants to appear\n // above or below the origin and the direction in which the element will expand.\n if (position.overlayY === 'bottom') {\n // When using `bottom`, we adjust the y position such that it is the distance\n // from the bottom of the viewport rather than the top.\n const documentHeight = this._document.documentElement.clientHeight;\n styles.bottom = `${documentHeight - (overlayPoint.y + this._overlayRect.height)}px`;\n }\n else {\n styles.top = coerceCssPixelValue(overlayPoint.y);\n }\n return styles;\n }\n /** Gets the exact left/right for the overlay when not using flexible sizing or when pushing. */\n _getExactOverlayX(position, originPoint, scrollPosition) {\n // Reset any existing styles. This is necessary in case the preferred position has\n // changed since the last `apply`.\n let styles = { left: '', right: '' };\n let overlayPoint = this._getOverlayPoint(originPoint, this._overlayRect, position);\n if (this._isPushed) {\n overlayPoint = this._pushOverlayOnScreen(overlayPoint, this._overlayRect, scrollPosition);\n }\n // We want to set either `left` or `right` based on whether the overlay wants to appear \"before\"\n // or \"after\" the origin, which determines the direction in which the element will expand.\n // For the horizontal axis, the meaning of \"before\" and \"after\" change based on whether the\n // page is in RTL or LTR.\n let horizontalStyleProperty;\n if (this._isRtl()) {\n horizontalStyleProperty = position.overlayX === 'end' ? 'left' : 'right';\n }\n else {\n horizontalStyleProperty = position.overlayX === 'end' ? 'right' : 'left';\n }\n // When we're setting `right`, we adjust the x position such that it is the distance\n // from the right edge of the viewport rather than the left edge.\n if (horizontalStyleProperty === 'right') {\n const documentWidth = this._document.documentElement.clientWidth;\n styles.right = `${documentWidth - (overlayPoint.x + this._overlayRect.width)}px`;\n }\n else {\n styles.left = coerceCssPixelValue(overlayPoint.x);\n }\n return styles;\n }\n /**\n * Gets the view properties of the trigger and overlay, including whether they are clipped\n * or completely outside the view of any of the strategy's scrollables.\n */\n _getScrollVisibility() {\n // Note: needs fresh rects since the position could've changed.\n const originBounds = this._getOriginRect();\n const overlayBounds = this._pane.getBoundingClientRect();\n // TODO(jelbourn): instead of needing all of the client rects for these scrolling containers\n // every time, we should be able to use the scrollTop of the containers if the size of those\n // containers hasn't changed.\n const scrollContainerBounds = this._scrollables.map(scrollable => {\n return scrollable.getElementRef().nativeElement.getBoundingClientRect();\n });\n return {\n isOriginClipped: isElementClippedByScrolling(originBounds, scrollContainerBounds),\n isOriginOutsideView: isElementScrolledOutsideView(originBounds, scrollContainerBounds),\n isOverlayClipped: isElementClippedByScrolling(overlayBounds, scrollContainerBounds),\n isOverlayOutsideView: isElementScrolledOutsideView(overlayBounds, scrollContainerBounds),\n };\n }\n /** Subtracts the amount that an element is overflowing on an axis from its length. */\n _subtractOverflows(length, ...overflows) {\n return overflows.reduce((currentValue, currentOverflow) => {\n return currentValue - Math.max(currentOverflow, 0);\n }, length);\n }\n /** Narrows the given viewport rect by the current _viewportMargin. */\n _getNarrowedViewportRect() {\n // We recalculate the viewport rect here ourselves, rather than using the ViewportRuler,\n // because we want to use the `clientWidth` and `clientHeight` as the base. The difference\n // being that the client properties don't include the scrollbar, as opposed to `innerWidth`\n // and `innerHeight` that do. This is necessary, because the overlay container uses\n // 100% `width` and `height` which don't include the scrollbar either.\n const width = this._document.documentElement.clientWidth;\n const height = this._document.documentElement.clientHeight;\n const scrollPosition = this._viewportRuler.getViewportScrollPosition();\n return {\n top: scrollPosition.top + this._viewportMargin,\n left: scrollPosition.left + this._viewportMargin,\n right: scrollPosition.left + width - this._viewportMargin,\n bottom: scrollPosition.top + height - this._viewportMargin,\n width: width - 2 * this._viewportMargin,\n height: height - 2 * this._viewportMargin,\n };\n }\n /** Whether the we're dealing with an RTL context */\n _isRtl() {\n return this._overlayRef.getDirection() === 'rtl';\n }\n /** Determines whether the overlay uses exact or flexible positioning. */\n _hasExactPosition() {\n return !this._hasFlexibleDimensions || this._isPushed;\n }\n /** Retrieves the offset of a position along the x or y axis. */\n _getOffset(position, axis) {\n if (axis === 'x') {\n // We don't do something like `position['offset' + axis]` in\n // order to avoid breking minifiers that rename properties.\n return position.offsetX == null ? this._offsetX : position.offsetX;\n }\n return position.offsetY == null ? this._offsetY : position.offsetY;\n }\n /** Validates that the current position match the expected values. */\n _validatePositions() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!this._preferredPositions.length) {\n throw Error('FlexibleConnectedPositionStrategy: At least one position is required.');\n }\n // TODO(crisbeto): remove these once Angular's template type\n // checking is advanced enough to catch these cases.\n this._preferredPositions.forEach(pair => {\n validateHorizontalPosition('originX', pair.originX);\n validateVerticalPosition('originY', pair.originY);\n validateHorizontalPosition('overlayX', pair.overlayX);\n validateVerticalPosition('overlayY', pair.overlayY);\n });\n }\n }\n /** Adds a single CSS class or an array of classes on the overlay panel. */\n _addPanelClasses(cssClasses) {\n if (this._pane) {\n coerceArray(cssClasses).forEach(cssClass => {\n if (cssClass !== '' && this._appliedPanelClasses.indexOf(cssClass) === -1) {\n this._appliedPanelClasses.push(cssClass);\n this._pane.classList.add(cssClass);\n }\n });\n }\n }\n /** Clears the classes that the position strategy has applied from the overlay panel. */\n _clearPanelClasses() {\n if (this._pane) {\n this._appliedPanelClasses.forEach(cssClass => {\n this._pane.classList.remove(cssClass);\n });\n this._appliedPanelClasses = [];\n }\n }\n /** Returns the ClientRect of the current origin. */\n _getOriginRect() {\n const origin = this._origin;\n if (origin instanceof ElementRef) {\n return origin.nativeElement.getBoundingClientRect();\n }\n // Check for Element so SVG elements are also supported.\n if (origin instanceof Element) {\n return origin.getBoundingClientRect();\n }\n const width = origin.width || 0;\n const height = origin.height || 0;\n // If the origin is a point, return a client rect as if it was a 0x0 element at the point.\n return {\n top: origin.y,\n bottom: origin.y + height,\n left: origin.x,\n right: origin.x + width,\n height,\n width,\n };\n }\n}\n/** Shallow-extends a stylesheet object with another stylesheet object. */\nfunction extendStyles(destination, source) {\n for (let key in source) {\n if (source.hasOwnProperty(key)) {\n destination[key] = source[key];\n }\n }\n return destination;\n}\n/**\n * Extracts the pixel value as a number from a value, if it's a number\n * or a CSS pixel string (e.g. `1337px`). Otherwise returns null.\n */\nfunction getPixelValue(input) {\n if (typeof input !== 'number' && input != null) {\n const [value, units] = input.split(cssUnitPattern);\n return !units || units === 'px' ? parseFloat(value) : null;\n }\n return input || null;\n}\n/**\n * Gets a version of an element's bounding `ClientRect` where all the values are rounded down to\n * the nearest pixel. This allows us to account for the cases where there may be sub-pixel\n * deviations in the `ClientRect` returned by the browser (e.g. when zoomed in with a percentage\n * size, see #21350).\n */\nfunction getRoundedBoundingClientRect(clientRect) {\n return {\n top: Math.floor(clientRect.top),\n right: Math.floor(clientRect.right),\n bottom: Math.floor(clientRect.bottom),\n left: Math.floor(clientRect.left),\n width: Math.floor(clientRect.width),\n height: Math.floor(clientRect.height),\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/** Class to be added to the overlay pane wrapper. */\nconst wrapperClass = 'cdk-global-overlay-wrapper';\n/**\n * A strategy for positioning overlays. Using this strategy, an overlay is given an\n * explicit position relative to the browser's viewport. We use flexbox, instead of\n * transforms, in order to avoid issues with subpixel rendering which can cause the\n * element to become blurry.\n */\nclass GlobalPositionStrategy {\n constructor() {\n this._cssPosition = 'static';\n this._topOffset = '';\n this._bottomOffset = '';\n this._leftOffset = '';\n this._rightOffset = '';\n this._alignItems = '';\n this._justifyContent = '';\n this._width = '';\n this._height = '';\n }\n attach(overlayRef) {\n const config = overlayRef.getConfig();\n this._overlayRef = overlayRef;\n if (this._width && !config.width) {\n overlayRef.updateSize({ width: this._width });\n }\n if (this._height && !config.height) {\n overlayRef.updateSize({ height: this._height });\n }\n overlayRef.hostElement.classList.add(wrapperClass);\n this._isDisposed = false;\n }\n /**\n * Sets the top position of the overlay. Clears any previously set vertical position.\n * @param value New top offset.\n */\n top(value = '') {\n this._bottomOffset = '';\n this._topOffset = value;\n this._alignItems = 'flex-start';\n return this;\n }\n /**\n * Sets the left position of the overlay. Clears any previously set horizontal position.\n * @param value New left offset.\n */\n left(value = '') {\n this._rightOffset = '';\n this._leftOffset = value;\n this._justifyContent = 'flex-start';\n return this;\n }\n /**\n * Sets the bottom position of the overlay. Clears any previously set vertical position.\n * @param value New bottom offset.\n */\n bottom(value = '') {\n this._topOffset = '';\n this._bottomOffset = value;\n this._alignItems = 'flex-end';\n return this;\n }\n /**\n * Sets the right position of the overlay. Clears any previously set horizontal position.\n * @param value New right offset.\n */\n right(value = '') {\n this._leftOffset = '';\n this._rightOffset = value;\n this._justifyContent = 'flex-end';\n return this;\n }\n /**\n * Sets the overlay width and clears any previously set width.\n * @param value New width for the overlay\n * @deprecated Pass the `width` through the `OverlayConfig`.\n * @breaking-change 8.0.0\n */\n width(value = '') {\n if (this._overlayRef) {\n this._overlayRef.updateSize({ width: value });\n }\n else {\n this._width = value;\n }\n return this;\n }\n /**\n * Sets the overlay height and clears any previously set height.\n * @param value New height for the overlay\n * @deprecated Pass the `height` through the `OverlayConfig`.\n * @breaking-change 8.0.0\n */\n height(value = '') {\n if (this._overlayRef) {\n this._overlayRef.updateSize({ height: value });\n }\n else {\n this._height = value;\n }\n return this;\n }\n /**\n * Centers the overlay horizontally with an optional offset.\n * Clears any previously set horizontal position.\n *\n * @param offset Overlay offset from the horizontal center.\n */\n centerHorizontally(offset = '') {\n this.left(offset);\n this._justifyContent = 'center';\n return this;\n }\n /**\n * Centers the overlay vertically with an optional offset.\n * Clears any previously set vertical position.\n *\n * @param offset Overlay offset from the vertical center.\n */\n centerVertically(offset = '') {\n this.top(offset);\n this._alignItems = 'center';\n return this;\n }\n /**\n * Apply the position to the element.\n * @docs-private\n */\n apply() {\n // Since the overlay ref applies the strategy asynchronously, it could\n // have been disposed before it ends up being applied. If that is the\n // case, we shouldn't do anything.\n if (!this._overlayRef || !this._overlayRef.hasAttached()) {\n return;\n }\n const styles = this._overlayRef.overlayElement.style;\n const parentStyles = this._overlayRef.hostElement.style;\n const config = this._overlayRef.getConfig();\n const { width, height, maxWidth, maxHeight } = config;\n const shouldBeFlushHorizontally = (width === '100%' || width === '100vw') &&\n (!maxWidth || maxWidth === '100%' || maxWidth === '100vw');\n const shouldBeFlushVertically = (height === '100%' || height === '100vh') &&\n (!maxHeight || maxHeight === '100%' || maxHeight === '100vh');\n styles.position = this._cssPosition;\n styles.marginLeft = shouldBeFlushHorizontally ? '0' : this._leftOffset;\n styles.marginTop = shouldBeFlushVertically ? '0' : this._topOffset;\n styles.marginBottom = this._bottomOffset;\n styles.marginRight = this._rightOffset;\n if (shouldBeFlushHorizontally) {\n parentStyles.justifyContent = 'flex-start';\n }\n else if (this._justifyContent === 'center') {\n parentStyles.justifyContent = 'center';\n }\n else if (this._overlayRef.getConfig().direction === 'rtl') {\n // In RTL the browser will invert `flex-start` and `flex-end` automatically, but we\n // don't want that because our positioning is explicitly `left` and `right`, hence\n // why we do another inversion to ensure that the overlay stays in the same position.\n // TODO: reconsider this if we add `start` and `end` methods.\n if (this._justifyContent === 'flex-start') {\n parentStyles.justifyContent = 'flex-end';\n }\n else if (this._justifyContent === 'flex-end') {\n parentStyles.justifyContent = 'flex-start';\n }\n }\n else {\n parentStyles.justifyContent = this._justifyContent;\n }\n parentStyles.alignItems = shouldBeFlushVertically ? 'flex-start' : this._alignItems;\n }\n /**\n * Cleans up the DOM changes from the position strategy.\n * @docs-private\n */\n dispose() {\n if (this._isDisposed || !this._overlayRef) {\n return;\n }\n const styles = this._overlayRef.overlayElement.style;\n const parent = this._overlayRef.hostElement;\n const parentStyles = parent.style;\n parent.classList.remove(wrapperClass);\n parentStyles.justifyContent =\n parentStyles.alignItems =\n styles.marginTop =\n styles.marginBottom =\n styles.marginLeft =\n styles.marginRight =\n styles.position =\n '';\n this._overlayRef = null;\n this._isDisposed = true;\n }\n}\n\n/** Builder for overlay position strategy. */\nclass OverlayPositionBuilder {\n constructor(_viewportRuler, _document, _platform, _overlayContainer) {\n this._viewportRuler = _viewportRuler;\n this._document = _document;\n this._platform = _platform;\n this._overlayContainer = _overlayContainer;\n }\n /**\n * Creates a global position strategy.\n */\n global() {\n return new GlobalPositionStrategy();\n }\n /**\n * Creates a flexible position strategy.\n * @param origin Origin relative to which to position the overlay.\n */\n flexibleConnectedTo(origin) {\n return new FlexibleConnectedPositionStrategy(origin, this._viewportRuler, this._document, this._platform, this._overlayContainer);\n }\n}\nOverlayPositionBuilder.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: OverlayPositionBuilder, deps: [{ token: i1.ViewportRuler }, { token: DOCUMENT }, { token: i1$1.Platform }, { token: OverlayContainer }], target: i0.ɵɵFactoryTarget.Injectable });\nOverlayPositionBuilder.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: OverlayPositionBuilder, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: OverlayPositionBuilder, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () {\n return [{ type: i1.ViewportRuler }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i1$1.Platform }, { type: OverlayContainer }];\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 * Service for dispatching events that land on the body to appropriate overlay ref,\n * if any. It maintains a list of attached overlays to determine best suited overlay based\n * on event target and order of overlay opens.\n */\nclass BaseOverlayDispatcher {\n constructor(document) {\n /** Currently attached overlays in the order they were attached. */\n this._attachedOverlays = [];\n this._document = document;\n }\n ngOnDestroy() {\n this.detach();\n }\n /** Add a new overlay to the list of attached overlay refs. */\n add(overlayRef) {\n // Ensure that we don't get the same overlay multiple times.\n this.remove(overlayRef);\n this._attachedOverlays.push(overlayRef);\n }\n /** Remove an overlay from the list of attached overlay refs. */\n remove(overlayRef) {\n const index = this._attachedOverlays.indexOf(overlayRef);\n if (index > -1) {\n this._attachedOverlays.splice(index, 1);\n }\n // Remove the global listener once there are no more overlays.\n if (this._attachedOverlays.length === 0) {\n this.detach();\n }\n }\n}\nBaseOverlayDispatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: BaseOverlayDispatcher, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nBaseOverlayDispatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: BaseOverlayDispatcher, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: BaseOverlayDispatcher, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\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 * Service for dispatching keyboard events that land on the body to appropriate overlay ref,\n * if any. It maintains a list of attached overlays to determine best suited overlay based\n * on event target and order of overlay opens.\n */\nclass OverlayKeyboardDispatcher extends BaseOverlayDispatcher {\n constructor(document, \n /** @breaking-change 14.0.0 _ngZone will be required. */\n _ngZone) {\n super(document);\n this._ngZone = _ngZone;\n /** Keyboard event listener that will be attached to the body. */\n this._keydownListener = (event) => {\n const overlays = this._attachedOverlays;\n for (let i = overlays.length - 1; i > -1; i--) {\n // Dispatch the keydown event to the top overlay which has subscribers to its keydown events.\n // We want to target the most recent overlay, rather than trying to match where the event came\n // from, because some components might open an overlay, but keep focus on a trigger element\n // (e.g. for select and autocomplete). We skip overlays without keydown event subscriptions,\n // because we don't want overlays that don't handle keyboard events to block the ones below\n // them that do.\n if (overlays[i]._keydownEvents.observers.length > 0) {\n const keydownEvents = overlays[i]._keydownEvents;\n /** @breaking-change 14.0.0 _ngZone will be required. */\n if (this._ngZone) {\n this._ngZone.run(() => keydownEvents.next(event));\n }\n else {\n keydownEvents.next(event);\n }\n break;\n }\n }\n };\n }\n /** Add a new overlay to the list of attached overlay refs. */\n add(overlayRef) {\n super.add(overlayRef);\n // Lazily start dispatcher once first overlay is added\n if (!this._isAttached) {\n /** @breaking-change 14.0.0 _ngZone will be required. */\n if (this._ngZone) {\n this._ngZone.runOutsideAngular(() => this._document.body.addEventListener('keydown', this._keydownListener));\n }\n else {\n this._document.body.addEventListener('keydown', this._keydownListener);\n }\n this._isAttached = true;\n }\n }\n /** Detaches the global keyboard event listener. */\n detach() {\n if (this._isAttached) {\n this._document.body.removeEventListener('keydown', this._keydownListener);\n this._isAttached = false;\n }\n }\n}\nOverlayKeyboardDispatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: OverlayKeyboardDispatcher, deps: [{ token: DOCUMENT }, { token: i0.NgZone, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nOverlayKeyboardDispatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: OverlayKeyboardDispatcher, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: OverlayKeyboardDispatcher, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i0.NgZone, decorators: [{\n type: Optional\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 * Service for dispatching mouse click events that land on the body to appropriate overlay ref,\n * if any. It maintains a list of attached overlays to determine best suited overlay based\n * on event target and order of overlay opens.\n */\nclass OverlayOutsideClickDispatcher extends BaseOverlayDispatcher {\n constructor(document, _platform, \n /** @breaking-change 14.0.0 _ngZone will be required. */\n _ngZone) {\n super(document);\n this._platform = _platform;\n this._ngZone = _ngZone;\n this._cursorStyleIsSet = false;\n /** Store pointerdown event target to track origin of click. */\n this._pointerDownListener = (event) => {\n this._pointerDownEventTarget = _getEventTarget(event);\n };\n /** Click event listener that will be attached to the body propagate phase. */\n this._clickListener = (event) => {\n const target = _getEventTarget(event);\n // In case of a click event, we want to check the origin of the click\n // (e.g. in case where a user starts a click inside the overlay and\n // releases the click outside of it).\n // This is done by using the event target of the preceding pointerdown event.\n // Every click event caused by a pointer device has a preceding pointerdown\n // event, unless the click was programmatically triggered (e.g. in a unit test).\n const origin = event.type === 'click' && this._pointerDownEventTarget\n ? this._pointerDownEventTarget\n : target;\n // Reset the stored pointerdown event target, to avoid having it interfere\n // in subsequent events.\n this._pointerDownEventTarget = null;\n // We copy the array because the original may be modified asynchronously if the\n // outsidePointerEvents listener decides to detach overlays resulting in index errors inside\n // the for loop.\n const overlays = this._attachedOverlays.slice();\n // Dispatch the mouse event to the top overlay which has subscribers to its mouse events.\n // We want to target all overlays for which the click could be considered as outside click.\n // As soon as we reach an overlay for which the click is not outside click we break off\n // the loop.\n for (let i = overlays.length - 1; i > -1; i--) {\n const overlayRef = overlays[i];\n if (overlayRef._outsidePointerEvents.observers.length < 1 || !overlayRef.hasAttached()) {\n continue;\n }\n // If it's a click inside the overlay, just break - we should do nothing\n // If it's an outside click (both origin and target of the click) dispatch the mouse event,\n // and proceed with the next overlay\n if (overlayRef.overlayElement.contains(target) ||\n overlayRef.overlayElement.contains(origin)) {\n break;\n }\n const outsidePointerEvents = overlayRef._outsidePointerEvents;\n /** @breaking-change 14.0.0 _ngZone will be required. */\n if (this._ngZone) {\n this._ngZone.run(() => outsidePointerEvents.next(event));\n }\n else {\n outsidePointerEvents.next(event);\n }\n }\n };\n }\n /** Add a new overlay to the list of attached overlay refs. */\n add(overlayRef) {\n super.add(overlayRef);\n // Safari on iOS does not generate click events for non-interactive\n // elements. However, we want to receive a click for any element outside\n // the overlay. We can force a \"clickable\" state by setting\n // `cursor: pointer` on the document body. See:\n // https://developer.mozilla.org/en-US/docs/Web/API/Element/click_event#Safari_Mobile\n // https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html\n if (!this._isAttached) {\n const body = this._document.body;\n /** @breaking-change 14.0.0 _ngZone will be required. */\n if (this._ngZone) {\n this._ngZone.runOutsideAngular(() => this._addEventListeners(body));\n }\n else {\n this._addEventListeners(body);\n }\n // click event is not fired on iOS. To make element \"clickable\" we are\n // setting the cursor to pointer\n if (this._platform.IOS && !this._cursorStyleIsSet) {\n this._cursorOriginalValue = body.style.cursor;\n body.style.cursor = 'pointer';\n this._cursorStyleIsSet = true;\n }\n this._isAttached = true;\n }\n }\n /** Detaches the global keyboard event listener. */\n detach() {\n if (this._isAttached) {\n const body = this._document.body;\n body.removeEventListener('pointerdown', this._pointerDownListener, true);\n body.removeEventListener('click', this._clickListener, true);\n body.removeEventListener('auxclick', this._clickListener, true);\n body.removeEventListener('contextmenu', this._clickListener, true);\n if (this._platform.IOS && this._cursorStyleIsSet) {\n body.style.cursor = this._cursorOriginalValue;\n this._cursorStyleIsSet = false;\n }\n this._isAttached = false;\n }\n }\n _addEventListeners(body) {\n body.addEventListener('pointerdown', this._pointerDownListener, true);\n body.addEventListener('click', this._clickListener, true);\n body.addEventListener('auxclick', this._clickListener, true);\n body.addEventListener('contextmenu', this._clickListener, true);\n }\n}\nOverlayOutsideClickDispatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: OverlayOutsideClickDispatcher, deps: [{ token: DOCUMENT }, { token: i1$1.Platform }, { token: i0.NgZone, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nOverlayOutsideClickDispatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: OverlayOutsideClickDispatcher, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: OverlayOutsideClickDispatcher, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i1$1.Platform }, { type: i0.NgZone, decorators: [{\n type: Optional\n }] }];\n } });\n\n/** Next overlay unique ID. */\nlet nextUniqueId = 0;\n// Note that Overlay is *not* scoped to the app root because of the ComponentFactoryResolver\n// which needs to be different depending on where OverlayModule is imported.\n/**\n * Service to create Overlays. Overlays are dynamically added pieces of floating UI, meant to be\n * used as a low-level building block for other components. Dialogs, tooltips, menus,\n * selects, etc. can all be built using overlays. The service should primarily be used by authors\n * of re-usable components rather than developers building end-user applications.\n *\n * An overlay *is* a PortalOutlet, so any kind of Portal can be loaded into one.\n */\nclass Overlay {\n constructor(\n /** Scrolling strategies that can be used when creating an overlay. */\n scrollStrategies, _overlayContainer, _componentFactoryResolver, _positionBuilder, _keyboardDispatcher, _injector, _ngZone, _document, _directionality, _location, _outsideClickDispatcher) {\n this.scrollStrategies = scrollStrategies;\n this._overlayContainer = _overlayContainer;\n this._componentFactoryResolver = _componentFactoryResolver;\n this._positionBuilder = _positionBuilder;\n this._keyboardDispatcher = _keyboardDispatcher;\n this._injector = _injector;\n this._ngZone = _ngZone;\n this._document = _document;\n this._directionality = _directionality;\n this._location = _location;\n this._outsideClickDispatcher = _outsideClickDispatcher;\n }\n /**\n * Creates an overlay.\n * @param config Configuration applied to the overlay.\n * @returns Reference to the created overlay.\n */\n create(config) {\n const host = this._createHostElement();\n const pane = this._createPaneElement(host);\n const portalOutlet = this._createPortalOutlet(pane);\n const overlayConfig = new OverlayConfig(config);\n overlayConfig.direction = overlayConfig.direction || this._directionality.value;\n return new OverlayRef(portalOutlet, host, pane, overlayConfig, this._ngZone, this._keyboardDispatcher, this._document, this._location, this._outsideClickDispatcher);\n }\n /**\n * Gets a position builder that can be used, via fluent API,\n * to construct and configure a position strategy.\n * @returns An overlay position builder.\n */\n position() {\n return this._positionBuilder;\n }\n /**\n * Creates the DOM element for an overlay and appends it to the overlay container.\n * @returns Newly-created pane element\n */\n _createPaneElement(host) {\n const pane = this._document.createElement('div');\n pane.id = `cdk-overlay-${nextUniqueId++}`;\n pane.classList.add('cdk-overlay-pane');\n host.appendChild(pane);\n return pane;\n }\n /**\n * Creates the host element that wraps around an overlay\n * and can be used for advanced positioning.\n * @returns Newly-create host element.\n */\n _createHostElement() {\n const host = this._document.createElement('div');\n this._overlayContainer.getContainerElement().appendChild(host);\n return host;\n }\n /**\n * Create a DomPortalOutlet into which the overlay content can be loaded.\n * @param pane The DOM element to turn into a portal outlet.\n * @returns A portal outlet for the given DOM element.\n */\n _createPortalOutlet(pane) {\n // We have to resolve the ApplicationRef later in order to allow people\n // to use overlay-based providers during app initialization.\n if (!this._appRef) {\n this._appRef = this._injector.get(ApplicationRef);\n }\n return new DomPortalOutlet(pane, this._componentFactoryResolver, this._appRef, this._injector, this._document);\n }\n}\nOverlay.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: Overlay, deps: [{ token: ScrollStrategyOptions }, { token: OverlayContainer }, { token: i0.ComponentFactoryResolver }, { token: OverlayPositionBuilder }, { token: OverlayKeyboardDispatcher }, { token: i0.Injector }, { token: i0.NgZone }, { token: DOCUMENT }, { token: i5.Directionality }, { token: i6.Location }, { token: OverlayOutsideClickDispatcher }], target: i0.ɵɵFactoryTarget.Injectable });\nOverlay.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: Overlay });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: Overlay, decorators: [{\n type: Injectable\n }], ctorParameters: function () {\n return [{ type: ScrollStrategyOptions }, { type: OverlayContainer }, { type: i0.ComponentFactoryResolver }, { type: OverlayPositionBuilder }, { type: OverlayKeyboardDispatcher }, { type: i0.Injector }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i5.Directionality }, { type: i6.Location }, { type: OverlayOutsideClickDispatcher }];\n } });\n\n/** Default set of positions for the overlay. Follows the behavior of a dropdown. */\nconst defaultPositionList = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n];\n/** Injection token that determines the scroll handling while the connected overlay is open. */\nconst CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY = new InjectionToken('cdk-connected-overlay-scroll-strategy');\n/**\n * Directive applied to an element to make it usable as an origin for an Overlay using a\n * ConnectedPositionStrategy.\n */\nclass CdkOverlayOrigin {\n constructor(\n /** Reference to the element on which the directive is applied. */\n elementRef) {\n this.elementRef = elementRef;\n }\n}\nCdkOverlayOrigin.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkOverlayOrigin, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkOverlayOrigin.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkOverlayOrigin, selector: \"[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]\", exportAs: [\"cdkOverlayOrigin\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkOverlayOrigin, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]',\n exportAs: 'cdkOverlayOrigin',\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });\n/**\n * Directive to facilitate declarative creation of an\n * Overlay using a FlexibleConnectedPositionStrategy.\n */\nclass CdkConnectedOverlay {\n // TODO(jelbourn): inputs for size, scroll behavior, animation, etc.\n constructor(_overlay, templateRef, viewContainerRef, scrollStrategyFactory, _dir) {\n this._overlay = _overlay;\n this._dir = _dir;\n this._hasBackdrop = false;\n this._lockPosition = false;\n this._growAfterOpen = false;\n this._flexibleDimensions = false;\n this._push = false;\n this._backdropSubscription = Subscription.EMPTY;\n this._attachSubscription = Subscription.EMPTY;\n this._detachSubscription = Subscription.EMPTY;\n this._positionSubscription = Subscription.EMPTY;\n /** Margin between the overlay and the viewport edges. */\n this.viewportMargin = 0;\n /** Whether the overlay is open. */\n this.open = false;\n /** Whether the overlay can be closed by user interaction. */\n this.disableClose = false;\n /** Event emitted when the backdrop is clicked. */\n this.backdropClick = new EventEmitter();\n /** Event emitted when the position has changed. */\n this.positionChange = new EventEmitter();\n /** Event emitted when the overlay has been attached. */\n this.attach = new EventEmitter();\n /** Event emitted when the overlay has been detached. */\n this.detach = new EventEmitter();\n /** Emits when there are keyboard events that are targeted at the overlay. */\n this.overlayKeydown = new EventEmitter();\n /** Emits when there are mouse outside click events that are targeted at the overlay. */\n this.overlayOutsideClick = new EventEmitter();\n this._templatePortal = new TemplatePortal(templateRef, viewContainerRef);\n this._scrollStrategyFactory = scrollStrategyFactory;\n this.scrollStrategy = this._scrollStrategyFactory();\n }\n /** The offset in pixels for the overlay connection point on the x-axis */\n get offsetX() {\n return this._offsetX;\n }\n set offsetX(offsetX) {\n this._offsetX = offsetX;\n if (this._position) {\n this._updatePositionStrategy(this._position);\n }\n }\n /** The offset in pixels for the overlay connection point on the y-axis */\n get offsetY() {\n return this._offsetY;\n }\n set offsetY(offsetY) {\n this._offsetY = offsetY;\n if (this._position) {\n this._updatePositionStrategy(this._position);\n }\n }\n /** Whether or not the overlay should attach a backdrop. */\n get hasBackdrop() {\n return this._hasBackdrop;\n }\n set hasBackdrop(value) {\n this._hasBackdrop = coerceBooleanProperty(value);\n }\n /** Whether or not the overlay should be locked when scrolling. */\n get lockPosition() {\n return this._lockPosition;\n }\n set lockPosition(value) {\n this._lockPosition = coerceBooleanProperty(value);\n }\n /** Whether the overlay's width and height can be constrained to fit within the viewport. */\n get flexibleDimensions() {\n return this._flexibleDimensions;\n }\n set flexibleDimensions(value) {\n this._flexibleDimensions = coerceBooleanProperty(value);\n }\n /** Whether the overlay can grow after the initial open when flexible positioning is turned on. */\n get growAfterOpen() {\n return this._growAfterOpen;\n }\n set growAfterOpen(value) {\n this._growAfterOpen = coerceBooleanProperty(value);\n }\n /** Whether the overlay can be pushed on-screen if none of the provided positions fit. */\n get push() {\n return this._push;\n }\n set push(value) {\n this._push = coerceBooleanProperty(value);\n }\n /** The associated overlay reference. */\n get overlayRef() {\n return this._overlayRef;\n }\n /** The element's layout direction. */\n get dir() {\n return this._dir ? this._dir.value : 'ltr';\n }\n ngOnDestroy() {\n this._attachSubscription.unsubscribe();\n this._detachSubscription.unsubscribe();\n this._backdropSubscription.unsubscribe();\n this._positionSubscription.unsubscribe();\n if (this._overlayRef) {\n this._overlayRef.dispose();\n }\n }\n ngOnChanges(changes) {\n if (this._position) {\n this._updatePositionStrategy(this._position);\n this._overlayRef.updateSize({\n width: this.width,\n minWidth: this.minWidth,\n height: this.height,\n minHeight: this.minHeight,\n });\n if (changes['origin'] && this.open) {\n this._position.apply();\n }\n }\n if (changes['open']) {\n this.open ? this._attachOverlay() : this._detachOverlay();\n }\n }\n /** Creates an overlay */\n _createOverlay() {\n if (!this.positions || !this.positions.length) {\n this.positions = defaultPositionList;\n }\n const overlayRef = (this._overlayRef = this._overlay.create(this._buildConfig()));\n this._attachSubscription = overlayRef.attachments().subscribe(() => this.attach.emit());\n this._detachSubscription = overlayRef.detachments().subscribe(() => this.detach.emit());\n overlayRef.keydownEvents().subscribe((event) => {\n this.overlayKeydown.next(event);\n if (event.keyCode === ESCAPE && !this.disableClose && !hasModifierKey(event)) {\n event.preventDefault();\n this._detachOverlay();\n }\n });\n this._overlayRef.outsidePointerEvents().subscribe((event) => {\n this.overlayOutsideClick.next(event);\n });\n }\n /** Builds the overlay config based on the directive's inputs */\n _buildConfig() {\n const positionStrategy = (this._position =\n this.positionStrategy || this._createPositionStrategy());\n const overlayConfig = new OverlayConfig({\n direction: this._dir,\n positionStrategy,\n scrollStrategy: this.scrollStrategy,\n hasBackdrop: this.hasBackdrop,\n });\n if (this.width || this.width === 0) {\n overlayConfig.width = this.width;\n }\n if (this.height || this.height === 0) {\n overlayConfig.height = this.height;\n }\n if (this.minWidth || this.minWidth === 0) {\n overlayConfig.minWidth = this.minWidth;\n }\n if (this.minHeight || this.minHeight === 0) {\n overlayConfig.minHeight = this.minHeight;\n }\n if (this.backdropClass) {\n overlayConfig.backdropClass = this.backdropClass;\n }\n if (this.panelClass) {\n overlayConfig.panelClass = this.panelClass;\n }\n return overlayConfig;\n }\n /** Updates the state of a position strategy, based on the values of the directive inputs. */\n _updatePositionStrategy(positionStrategy) {\n const positions = this.positions.map(currentPosition => ({\n originX: currentPosition.originX,\n originY: currentPosition.originY,\n overlayX: currentPosition.overlayX,\n overlayY: currentPosition.overlayY,\n offsetX: currentPosition.offsetX || this.offsetX,\n offsetY: currentPosition.offsetY || this.offsetY,\n panelClass: currentPosition.panelClass || undefined,\n }));\n return positionStrategy\n .setOrigin(this._getFlexibleConnectedPositionStrategyOrigin())\n .withPositions(positions)\n .withFlexibleDimensions(this.flexibleDimensions)\n .withPush(this.push)\n .withGrowAfterOpen(this.growAfterOpen)\n .withViewportMargin(this.viewportMargin)\n .withLockedPosition(this.lockPosition)\n .withTransformOriginOn(this.transformOriginSelector);\n }\n /** Returns the position strategy of the overlay to be set on the overlay config */\n _createPositionStrategy() {\n const strategy = this._overlay\n .position()\n .flexibleConnectedTo(this._getFlexibleConnectedPositionStrategyOrigin());\n this._updatePositionStrategy(strategy);\n return strategy;\n }\n _getFlexibleConnectedPositionStrategyOrigin() {\n if (this.origin instanceof CdkOverlayOrigin) {\n return this.origin.elementRef;\n }\n else {\n return this.origin;\n }\n }\n /** Attaches the overlay and subscribes to backdrop clicks if backdrop exists */\n _attachOverlay() {\n if (!this._overlayRef) {\n this._createOverlay();\n }\n else {\n // Update the overlay size, in case the directive's inputs have changed\n this._overlayRef.getConfig().hasBackdrop = this.hasBackdrop;\n }\n if (!this._overlayRef.hasAttached()) {\n this._overlayRef.attach(this._templatePortal);\n }\n if (this.hasBackdrop) {\n this._backdropSubscription = this._overlayRef.backdropClick().subscribe(event => {\n this.backdropClick.emit(event);\n });\n }\n else {\n this._backdropSubscription.unsubscribe();\n }\n this._positionSubscription.unsubscribe();\n // Only subscribe to `positionChanges` if requested, because putting\n // together all the information for it can be expensive.\n if (this.positionChange.observers.length > 0) {\n this._positionSubscription = this._position.positionChanges\n .pipe(takeWhile(() => this.positionChange.observers.length > 0))\n .subscribe(position => {\n this.positionChange.emit(position);\n if (this.positionChange.observers.length === 0) {\n this._positionSubscription.unsubscribe();\n }\n });\n }\n }\n /** Detaches the overlay and unsubscribes to backdrop clicks if backdrop exists */\n _detachOverlay() {\n if (this._overlayRef) {\n this._overlayRef.detach();\n }\n this._backdropSubscription.unsubscribe();\n this._positionSubscription.unsubscribe();\n }\n}\nCdkConnectedOverlay.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkConnectedOverlay, deps: [{ token: Overlay }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY }, { token: i5.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nCdkConnectedOverlay.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkConnectedOverlay, selector: \"[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]\", inputs: { origin: [\"cdkConnectedOverlayOrigin\", \"origin\"], positions: [\"cdkConnectedOverlayPositions\", \"positions\"], positionStrategy: [\"cdkConnectedOverlayPositionStrategy\", \"positionStrategy\"], offsetX: [\"cdkConnectedOverlayOffsetX\", \"offsetX\"], offsetY: [\"cdkConnectedOverlayOffsetY\", \"offsetY\"], width: [\"cdkConnectedOverlayWidth\", \"width\"], height: [\"cdkConnectedOverlayHeight\", \"height\"], minWidth: [\"cdkConnectedOverlayMinWidth\", \"minWidth\"], minHeight: [\"cdkConnectedOverlayMinHeight\", \"minHeight\"], backdropClass: [\"cdkConnectedOverlayBackdropClass\", \"backdropClass\"], panelClass: [\"cdkConnectedOverlayPanelClass\", \"panelClass\"], viewportMargin: [\"cdkConnectedOverlayViewportMargin\", \"viewportMargin\"], scrollStrategy: [\"cdkConnectedOverlayScrollStrategy\", \"scrollStrategy\"], open: [\"cdkConnectedOverlayOpen\", \"open\"], disableClose: [\"cdkConnectedOverlayDisableClose\", \"disableClose\"], transformOriginSelector: [\"cdkConnectedOverlayTransformOriginOn\", \"transformOriginSelector\"], hasBackdrop: [\"cdkConnectedOverlayHasBackdrop\", \"hasBackdrop\"], lockPosition: [\"cdkConnectedOverlayLockPosition\", \"lockPosition\"], flexibleDimensions: [\"cdkConnectedOverlayFlexibleDimensions\", \"flexibleDimensions\"], growAfterOpen: [\"cdkConnectedOverlayGrowAfterOpen\", \"growAfterOpen\"], push: [\"cdkConnectedOverlayPush\", \"push\"] }, outputs: { backdropClick: \"backdropClick\", positionChange: \"positionChange\", attach: \"attach\", detach: \"detach\", overlayKeydown: \"overlayKeydown\", overlayOutsideClick: \"overlayOutsideClick\" }, exportAs: [\"cdkConnectedOverlay\"], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkConnectedOverlay, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]',\n exportAs: 'cdkConnectedOverlay',\n }]\n }], ctorParameters: function () {\n return [{ type: Overlay }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY]\n }] }, { type: i5.Directionality, decorators: [{\n type: Optional\n }] }];\n }, propDecorators: { origin: [{\n type: Input,\n args: ['cdkConnectedOverlayOrigin']\n }], positions: [{\n type: Input,\n args: ['cdkConnectedOverlayPositions']\n }], positionStrategy: [{\n type: Input,\n args: ['cdkConnectedOverlayPositionStrategy']\n }], offsetX: [{\n type: Input,\n args: ['cdkConnectedOverlayOffsetX']\n }], offsetY: [{\n type: Input,\n args: ['cdkConnectedOverlayOffsetY']\n }], width: [{\n type: Input,\n args: ['cdkConnectedOverlayWidth']\n }], height: [{\n type: Input,\n args: ['cdkConnectedOverlayHeight']\n }], minWidth: [{\n type: Input,\n args: ['cdkConnectedOverlayMinWidth']\n }], minHeight: [{\n type: Input,\n args: ['cdkConnectedOverlayMinHeight']\n }], backdropClass: [{\n type: Input,\n args: ['cdkConnectedOverlayBackdropClass']\n }], panelClass: [{\n type: Input,\n args: ['cdkConnectedOverlayPanelClass']\n }], viewportMargin: [{\n type: Input,\n args: ['cdkConnectedOverlayViewportMargin']\n }], scrollStrategy: [{\n type: Input,\n args: ['cdkConnectedOverlayScrollStrategy']\n }], open: [{\n type: Input,\n args: ['cdkConnectedOverlayOpen']\n }], disableClose: [{\n type: Input,\n args: ['cdkConnectedOverlayDisableClose']\n }], transformOriginSelector: [{\n type: Input,\n args: ['cdkConnectedOverlayTransformOriginOn']\n }], hasBackdrop: [{\n type: Input,\n args: ['cdkConnectedOverlayHasBackdrop']\n }], lockPosition: [{\n type: Input,\n args: ['cdkConnectedOverlayLockPosition']\n }], flexibleDimensions: [{\n type: Input,\n args: ['cdkConnectedOverlayFlexibleDimensions']\n }], growAfterOpen: [{\n type: Input,\n args: ['cdkConnectedOverlayGrowAfterOpen']\n }], push: [{\n type: Input,\n args: ['cdkConnectedOverlayPush']\n }], backdropClick: [{\n type: Output\n }], positionChange: [{\n type: Output\n }], attach: [{\n type: Output\n }], detach: [{\n type: Output\n }], overlayKeydown: [{\n type: Output\n }], overlayOutsideClick: [{\n type: Output\n }] } });\n/** @docs-private */\nfunction CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER_FACTORY(overlay) {\n return () => overlay.scrollStrategies.reposition();\n}\n/** @docs-private */\nconst CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER = {\n provide: CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER_FACTORY,\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 OverlayModule {\n}\nOverlayModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: OverlayModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nOverlayModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: OverlayModule, declarations: [CdkConnectedOverlay, CdkOverlayOrigin], imports: [BidiModule, PortalModule, ScrollingModule], exports: [CdkConnectedOverlay, CdkOverlayOrigin, ScrollingModule] });\nOverlayModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: OverlayModule, providers: [Overlay, CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER], imports: [[BidiModule, PortalModule, ScrollingModule], ScrollingModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: OverlayModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [BidiModule, PortalModule, ScrollingModule],\n exports: [CdkConnectedOverlay, CdkOverlayOrigin, ScrollingModule],\n declarations: [CdkConnectedOverlay, CdkOverlayOrigin],\n providers: [Overlay, CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER],\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/**\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 * Alternative to OverlayContainer that supports correct displaying of overlay elements in\n * Fullscreen mode\n * https://developer.mozilla.org/en-US/docs/Web/API/Element/requestFullScreen\n *\n * Should be provided in the root component.\n */\nclass FullscreenOverlayContainer extends OverlayContainer {\n constructor(_document, platform) {\n super(_document, platform);\n }\n ngOnDestroy() {\n super.ngOnDestroy();\n if (this._fullScreenEventName && this._fullScreenListener) {\n this._document.removeEventListener(this._fullScreenEventName, this._fullScreenListener);\n }\n }\n _createContainer() {\n super._createContainer();\n this._adjustParentForFullscreenChange();\n this._addFullscreenChangeListener(() => this._adjustParentForFullscreenChange());\n }\n _adjustParentForFullscreenChange() {\n if (!this._containerElement) {\n return;\n }\n const fullscreenElement = this.getFullscreenElement();\n const parent = fullscreenElement || this._document.body;\n parent.appendChild(this._containerElement);\n }\n _addFullscreenChangeListener(fn) {\n const eventName = this._getEventName();\n if (eventName) {\n if (this._fullScreenListener) {\n this._document.removeEventListener(eventName, this._fullScreenListener);\n }\n this._document.addEventListener(eventName, fn);\n this._fullScreenListener = fn;\n }\n }\n _getEventName() {\n if (!this._fullScreenEventName) {\n const _document = this._document;\n if (_document.fullscreenEnabled) {\n this._fullScreenEventName = 'fullscreenchange';\n }\n else if (_document.webkitFullscreenEnabled) {\n this._fullScreenEventName = 'webkitfullscreenchange';\n }\n else if (_document.mozFullScreenEnabled) {\n this._fullScreenEventName = 'mozfullscreenchange';\n }\n else if (_document.msFullscreenEnabled) {\n this._fullScreenEventName = 'MSFullscreenChange';\n }\n }\n return this._fullScreenEventName;\n }\n /**\n * When the page is put into fullscreen mode, a specific element is specified.\n * Only that element and its children are visible when in fullscreen mode.\n */\n getFullscreenElement() {\n const _document = this._document;\n return (_document.fullscreenElement ||\n _document.webkitFullscreenElement ||\n _document.mozFullScreenElement ||\n _document.msFullscreenElement ||\n null);\n }\n}\nFullscreenOverlayContainer.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FullscreenOverlayContainer, deps: [{ token: DOCUMENT }, { token: i1$1.Platform }], target: i0.ɵɵFactoryTarget.Injectable });\nFullscreenOverlayContainer.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FullscreenOverlayContainer, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: FullscreenOverlayContainer, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: i1$1.Platform }];\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/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BlockScrollStrategy, CdkConnectedOverlay, CdkOverlayOrigin, CloseScrollStrategy, ConnectedOverlayPositionChange, ConnectionPositionPair, FlexibleConnectedPositionStrategy, FullscreenOverlayContainer, GlobalPositionStrategy, NoopScrollStrategy, Overlay, OverlayConfig, OverlayContainer, OverlayKeyboardDispatcher, OverlayModule, OverlayOutsideClickDispatcher, OverlayPositionBuilder, OverlayRef, RepositionScrollStrategy, ScrollStrategyOptions, ScrollingVisibility, validateHorizontalPosition, validateVerticalPosition };\n","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function takeWhile(predicate, inclusive = false) {\n return operate((source, subscriber) => {\n let index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n const result = predicate(value, index++);\n (result || inclusive) && subscriber.next(value);\n !result && subscriber.complete();\n }));\n });\n}\n","import * as i0 from '@angular/core';\nimport { PLATFORM_ID, Injectable, Inject, NgModule } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\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// Whether the current platform supports the V8 Break Iterator. The V8 check\n// is necessary to detect all Blink based browsers.\nlet hasV8BreakIterator;\n// We need a try/catch around the reference to `Intl`, because accessing it in some cases can\n// cause IE to throw. These cases are tied to particular versions of Windows and can happen if\n// the consumer is providing a polyfilled `Map`. See:\n// https://github.com/Microsoft/ChakraCore/issues/3189\n// https://github.com/angular/components/issues/15687\ntry {\n hasV8BreakIterator = typeof Intl !== 'undefined' && Intl.v8BreakIterator;\n}\ncatch (_a) {\n hasV8BreakIterator = false;\n}\n/**\n * Service to detect the current platform by comparing the userAgent strings and\n * checking browser-specific global properties.\n */\nclass Platform {\n constructor(_platformId) {\n this._platformId = _platformId;\n // We want to use the Angular platform check because if the Document is shimmed\n // without the navigator, the following checks will fail. This is preferred because\n // sometimes the Document may be shimmed without the user's knowledge or intention\n /** Whether the Angular application is being rendered in the browser. */\n this.isBrowser = this._platformId\n ? isPlatformBrowser(this._platformId)\n : typeof document === 'object' && !!document;\n /** Whether the current browser is Microsoft Edge. */\n this.EDGE = this.isBrowser && /(edge)/i.test(navigator.userAgent);\n /** Whether the current rendering engine is Microsoft Trident. */\n this.TRIDENT = this.isBrowser && /(msie|trident)/i.test(navigator.userAgent);\n // EdgeHTML and Trident mock Blink specific things and need to be excluded from this check.\n /** Whether the current rendering engine is Blink. */\n this.BLINK = this.isBrowser &&\n !!(window.chrome || hasV8BreakIterator) &&\n typeof CSS !== 'undefined' &&\n !this.EDGE &&\n !this.TRIDENT;\n // Webkit is part of the userAgent in EdgeHTML, Blink and Trident. Therefore we need to\n // ensure that Webkit runs standalone and is not used as another engine's base.\n /** Whether the current rendering engine is WebKit. */\n this.WEBKIT = this.isBrowser &&\n /AppleWebKit/i.test(navigator.userAgent) &&\n !this.BLINK &&\n !this.EDGE &&\n !this.TRIDENT;\n /** Whether the current platform is Apple iOS. */\n this.IOS = this.isBrowser && /iPad|iPhone|iPod/.test(navigator.userAgent) && !('MSStream' in window);\n // It's difficult to detect the plain Gecko engine, because most of the browsers identify\n // them self as Gecko-like browsers and modify the userAgent's according to that.\n // Since we only cover one explicit Firefox case, we can simply check for Firefox\n // instead of having an unstable check for Gecko.\n /** Whether the current browser is Firefox. */\n this.FIREFOX = this.isBrowser && /(firefox|minefield)/i.test(navigator.userAgent);\n /** Whether the current platform is Android. */\n // Trident on mobile adds the android platform to the userAgent to trick detections.\n this.ANDROID = this.isBrowser && /android/i.test(navigator.userAgent) && !this.TRIDENT;\n // Safari browsers will include the Safari keyword in their userAgent. Some browsers may fake\n // this and just place the Safari keyword in the userAgent. To be more safe about Safari every\n // Safari browser should also use Webkit as its layout engine.\n /** Whether the current browser is Safari. */\n this.SAFARI = this.isBrowser && /safari/i.test(navigator.userAgent) && this.WEBKIT;\n }\n}\nPlatform.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: Platform, deps: [{ token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable });\nPlatform.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: Platform, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: Platform, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () {\n return [{ type: Object, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\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 PlatformModule {\n}\nPlatformModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: PlatformModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nPlatformModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: PlatformModule });\nPlatformModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: PlatformModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: PlatformModule, decorators: [{\n type: NgModule,\n args: [{}]\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/** Cached result Set of input types support by the current browser. */\nlet supportedInputTypes;\n/** Types of `` that *might* be supported. */\nconst candidateInputTypes = [\n // `color` must come first. Chrome 56 shows a warning if we change the type to `color` after\n // first changing it to something else:\n // The specified value \"\" does not conform to the required format.\n // The format is \"#rrggbb\" where rr, gg, bb are two-digit hexadecimal numbers.\n 'color',\n 'button',\n 'checkbox',\n 'date',\n 'datetime-local',\n 'email',\n 'file',\n 'hidden',\n 'image',\n 'month',\n 'number',\n 'password',\n 'radio',\n 'range',\n 'reset',\n 'search',\n 'submit',\n 'tel',\n 'text',\n 'time',\n 'url',\n 'week',\n];\n/** @returns The input types supported by this browser. */\nfunction getSupportedInputTypes() {\n // Result is cached.\n if (supportedInputTypes) {\n return supportedInputTypes;\n }\n // We can't check if an input type is not supported until we're on the browser, so say that\n // everything is supported when not on the browser. We don't use `Platform` here since it's\n // just a helper function and can't inject it.\n if (typeof document !== 'object' || !document) {\n supportedInputTypes = new Set(candidateInputTypes);\n return supportedInputTypes;\n }\n let featureTestInput = document.createElement('input');\n supportedInputTypes = new Set(candidateInputTypes.filter(value => {\n featureTestInput.setAttribute('type', value);\n return featureTestInput.type === value;\n }));\n return supportedInputTypes;\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/** Cached result of whether the user's browser supports passive event listeners. */\nlet supportsPassiveEvents;\n/**\n * Checks whether the user's browser supports passive event listeners.\n * See: https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n */\nfunction supportsPassiveEventListeners() {\n if (supportsPassiveEvents == null && typeof window !== 'undefined') {\n try {\n window.addEventListener('test', null, Object.defineProperty({}, 'passive', {\n get: () => (supportsPassiveEvents = true),\n }));\n }\n finally {\n supportsPassiveEvents = supportsPassiveEvents || false;\n }\n }\n return supportsPassiveEvents;\n}\n/**\n * Normalizes an `AddEventListener` object to something that can be passed\n * to `addEventListener` on any browser, no matter whether it supports the\n * `options` parameter.\n * @param options Object to be normalized.\n */\nfunction normalizePassiveListenerOptions(options) {\n return supportsPassiveEventListeners() ? options : !!options.capture;\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/** Cached result of the way the browser handles the horizontal scroll axis in RTL mode. */\nlet rtlScrollAxisType;\n/** Cached result of the check that indicates whether the browser supports scroll behaviors. */\nlet scrollBehaviorSupported;\n/** Check whether the browser supports scroll behaviors. */\nfunction supportsScrollBehavior() {\n if (scrollBehaviorSupported == null) {\n // If we're not in the browser, it can't be supported. Also check for `Element`, because\n // some projects stub out the global `document` during SSR which can throw us off.\n if (typeof document !== 'object' || !document || typeof Element !== 'function' || !Element) {\n scrollBehaviorSupported = false;\n return scrollBehaviorSupported;\n }\n // If the element can have a `scrollBehavior` style, we can be sure that it's supported.\n if ('scrollBehavior' in document.documentElement.style) {\n scrollBehaviorSupported = true;\n }\n else {\n // At this point we have 3 possibilities: `scrollTo` isn't supported at all, it's\n // supported but it doesn't handle scroll behavior, or it has been polyfilled.\n const scrollToFunction = Element.prototype.scrollTo;\n if (scrollToFunction) {\n // We can detect if the function has been polyfilled by calling `toString` on it. Native\n // functions are obfuscated using `[native code]`, whereas if it was overwritten we'd get\n // the actual function source. Via https://davidwalsh.name/detect-native-function. Consider\n // polyfilled functions as supporting scroll behavior.\n scrollBehaviorSupported = !/\\{\\s*\\[native code\\]\\s*\\}/.test(scrollToFunction.toString());\n }\n else {\n scrollBehaviorSupported = false;\n }\n }\n }\n return scrollBehaviorSupported;\n}\n/**\n * Checks the type of RTL scroll axis used by this browser. As of time of writing, Chrome is NORMAL,\n * Firefox & Safari are NEGATED, and IE & Edge are INVERTED.\n */\nfunction getRtlScrollAxisType() {\n // We can't check unless we're on the browser. Just assume 'normal' if we're not.\n if (typeof document !== 'object' || !document) {\n return 0 /* NORMAL */;\n }\n if (rtlScrollAxisType == null) {\n // Create a 1px wide scrolling container and a 2px wide content element.\n const scrollContainer = document.createElement('div');\n const containerStyle = scrollContainer.style;\n scrollContainer.dir = 'rtl';\n containerStyle.width = '1px';\n containerStyle.overflow = 'auto';\n containerStyle.visibility = 'hidden';\n containerStyle.pointerEvents = 'none';\n containerStyle.position = 'absolute';\n const content = document.createElement('div');\n const contentStyle = content.style;\n contentStyle.width = '2px';\n contentStyle.height = '1px';\n scrollContainer.appendChild(content);\n document.body.appendChild(scrollContainer);\n rtlScrollAxisType = 0 /* NORMAL */;\n // The viewport starts scrolled all the way to the right in RTL mode. If we are in a NORMAL\n // browser this would mean that the scrollLeft should be 1. If it's zero instead we know we're\n // dealing with one of the other two types of browsers.\n if (scrollContainer.scrollLeft === 0) {\n // In a NEGATED browser the scrollLeft is always somewhere in [-maxScrollAmount, 0]. For an\n // INVERTED browser it is always somewhere in [0, maxScrollAmount]. We can determine which by\n // setting to the scrollLeft to 1. This is past the max for a NEGATED browser, so it will\n // return 0 when we read it again.\n scrollContainer.scrollLeft = 1;\n rtlScrollAxisType =\n scrollContainer.scrollLeft === 0 ? 1 /* NEGATED */ : 2 /* INVERTED */;\n }\n scrollContainer.remove();\n }\n return rtlScrollAxisType;\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 */\nlet shadowDomIsSupported;\n/** Checks whether the user's browser support Shadow DOM. */\nfunction _supportsShadowDom() {\n if (shadowDomIsSupported == null) {\n const head = typeof document !== 'undefined' ? document.head : null;\n shadowDomIsSupported = !!(head && (head.createShadowRoot || head.attachShadow));\n }\n return shadowDomIsSupported;\n}\n/** Gets the shadow root of an element, if supported and the element is inside the Shadow DOM. */\nfunction _getShadowRoot(element) {\n if (_supportsShadowDom()) {\n const rootNode = element.getRootNode ? element.getRootNode() : null;\n // Note that this should be caught by `_supportsShadowDom`, but some\n // teams have been able to hit this code path on unsupported browsers.\n if (typeof ShadowRoot !== 'undefined' && ShadowRoot && rootNode instanceof ShadowRoot) {\n return rootNode;\n }\n }\n return null;\n}\n/**\n * Gets the currently-focused element on the page while\n * also piercing through Shadow DOM boundaries.\n */\nfunction _getFocusedElementPierceShadowDom() {\n let activeElement = typeof document !== 'undefined' && document\n ? document.activeElement\n : null;\n while (activeElement && activeElement.shadowRoot) {\n const newActiveElement = activeElement.shadowRoot.activeElement;\n if (newActiveElement === activeElement) {\n break;\n }\n else {\n activeElement = newActiveElement;\n }\n }\n return activeElement;\n}\n/** Gets the target of an event while accounting for Shadow DOM. */\nfunction _getEventTarget(event) {\n // If an event is bound outside the Shadow DOM, the `event.target` will\n // point to the shadow root so we have to use `composedPath` instead.\n return (event.composedPath ? event.composedPath()[0] : event.target);\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/** Gets whether the code is currently running in a test environment. */\nfunction _isTestEnvironment() {\n // We can't use `declare const` because it causes conflicts inside Google with the real typings\n // for these symbols and we can't read them off the global object, because they don't appear to\n // be attached there for some runners like Jest.\n // (see: https://github.com/angular/components/issues/23365#issuecomment-938146643)\n return (\n // @ts-ignore\n (typeof __karma__ !== 'undefined' && !!__karma__) ||\n // @ts-ignore\n (typeof jasmine !== 'undefined' && !!jasmine) ||\n // @ts-ignore\n (typeof jest !== 'undefined' && !!jest) ||\n // @ts-ignore\n (typeof Mocha !== 'undefined' && !!Mocha));\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/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Platform, PlatformModule, _getEventTarget, _getFocusedElementPierceShadowDom, _getShadowRoot, _isTestEnvironment, _supportsShadowDom, getRtlScrollAxisType, getSupportedInputTypes, normalizePassiveListenerOptions, supportsPassiveEventListeners, supportsScrollBehavior };\n","import * as i0 from '@angular/core';\nimport { ElementRef, Injector, Directive, EventEmitter, Inject, Output, NgModule } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\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 * Throws an exception when attempting to attach a null portal to a host.\n * @docs-private\n */\nfunction throwNullPortalError() {\n throw Error('Must provide a portal to attach');\n}\n/**\n * Throws an exception when attempting to attach a portal to a host that is already attached.\n * @docs-private\n */\nfunction throwPortalAlreadyAttachedError() {\n throw Error('Host already has a portal attached');\n}\n/**\n * Throws an exception when attempting to attach a portal to an already-disposed host.\n * @docs-private\n */\nfunction throwPortalOutletAlreadyDisposedError() {\n throw Error('This PortalOutlet has already been disposed');\n}\n/**\n * Throws an exception when attempting to attach an unknown portal type.\n * @docs-private\n */\nfunction throwUnknownPortalTypeError() {\n throw Error('Attempting to attach an unknown Portal type. BasePortalOutlet accepts either ' +\n 'a ComponentPortal or a TemplatePortal.');\n}\n/**\n * Throws an exception when attempting to attach a portal to a null host.\n * @docs-private\n */\nfunction throwNullPortalOutletError() {\n throw Error('Attempting to attach a portal to a null PortalOutlet');\n}\n/**\n * Throws an exception when attempting to detach a portal that is not attached.\n * @docs-private\n */\nfunction throwNoPortalAttachedError() {\n throw Error('Attempting to detach a portal that is not attached to a 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 * A `Portal` is something that you want to render somewhere else.\n * It can be attach to / detached from a `PortalOutlet`.\n */\nclass Portal {\n /** Attach this portal to a host. */\n attach(host) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (host == null) {\n throwNullPortalOutletError();\n }\n if (host.hasAttached()) {\n throwPortalAlreadyAttachedError();\n }\n }\n this._attachedHost = host;\n return host.attach(this);\n }\n /** Detach this portal from its host */\n detach() {\n let host = this._attachedHost;\n if (host != null) {\n this._attachedHost = null;\n host.detach();\n }\n else if (typeof ngDevMode === 'undefined' || ngDevMode) {\n throwNoPortalAttachedError();\n }\n }\n /** Whether this portal is attached to a host. */\n get isAttached() {\n return this._attachedHost != null;\n }\n /**\n * Sets the PortalOutlet reference without performing `attach()`. This is used directly by\n * the PortalOutlet when it is performing an `attach()` or `detach()`.\n */\n setAttachedHost(host) {\n this._attachedHost = host;\n }\n}\n/**\n * A `ComponentPortal` is a portal that instantiates some Component upon attachment.\n */\nclass ComponentPortal extends Portal {\n constructor(component, viewContainerRef, injector, componentFactoryResolver) {\n super();\n this.component = component;\n this.viewContainerRef = viewContainerRef;\n this.injector = injector;\n this.componentFactoryResolver = componentFactoryResolver;\n }\n}\n/**\n * A `TemplatePortal` is a portal that represents some embedded template (TemplateRef).\n */\nclass TemplatePortal extends Portal {\n constructor(template, viewContainerRef, context) {\n super();\n this.templateRef = template;\n this.viewContainerRef = viewContainerRef;\n this.context = context;\n }\n get origin() {\n return this.templateRef.elementRef;\n }\n /**\n * Attach the portal to the provided `PortalOutlet`.\n * When a context is provided it will override the `context` property of the `TemplatePortal`\n * instance.\n */\n attach(host, context = this.context) {\n this.context = context;\n return super.attach(host);\n }\n detach() {\n this.context = undefined;\n return super.detach();\n }\n}\n/**\n * A `DomPortal` is a portal whose DOM element will be taken from its current position\n * in the DOM and moved into a portal outlet, when it is attached. On detach, the content\n * will be restored to its original position.\n */\nclass DomPortal extends Portal {\n constructor(element) {\n super();\n this.element = element instanceof ElementRef ? element.nativeElement : element;\n }\n}\n/**\n * Partial implementation of PortalOutlet that handles attaching\n * ComponentPortal and TemplatePortal.\n */\nclass BasePortalOutlet {\n constructor() {\n /** Whether this host has already been permanently disposed. */\n this._isDisposed = false;\n // @breaking-change 10.0.0 `attachDomPortal` to become a required abstract method.\n this.attachDomPortal = null;\n }\n /** Whether this host has an attached portal. */\n hasAttached() {\n return !!this._attachedPortal;\n }\n /** Attaches a portal. */\n attach(portal) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!portal) {\n throwNullPortalError();\n }\n if (this.hasAttached()) {\n throwPortalAlreadyAttachedError();\n }\n if (this._isDisposed) {\n throwPortalOutletAlreadyDisposedError();\n }\n }\n if (portal instanceof ComponentPortal) {\n this._attachedPortal = portal;\n return this.attachComponentPortal(portal);\n }\n else if (portal instanceof TemplatePortal) {\n this._attachedPortal = portal;\n return this.attachTemplatePortal(portal);\n // @breaking-change 10.0.0 remove null check for `this.attachDomPortal`.\n }\n else if (this.attachDomPortal && portal instanceof DomPortal) {\n this._attachedPortal = portal;\n return this.attachDomPortal(portal);\n }\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n throwUnknownPortalTypeError();\n }\n }\n /** Detaches a previously attached portal. */\n detach() {\n if (this._attachedPortal) {\n this._attachedPortal.setAttachedHost(null);\n this._attachedPortal = null;\n }\n this._invokeDisposeFn();\n }\n /** Permanently dispose of this portal host. */\n dispose() {\n if (this.hasAttached()) {\n this.detach();\n }\n this._invokeDisposeFn();\n this._isDisposed = true;\n }\n /** @docs-private */\n setDisposeFn(fn) {\n this._disposeFn = fn;\n }\n _invokeDisposeFn() {\n if (this._disposeFn) {\n this._disposeFn();\n this._disposeFn = null;\n }\n }\n}\n/**\n * @deprecated Use `BasePortalOutlet` instead.\n * @breaking-change 9.0.0\n */\nclass BasePortalHost extends BasePortalOutlet {\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 PortalOutlet for attaching portals to an arbitrary DOM element outside of the Angular\n * application context.\n */\nclass DomPortalOutlet extends BasePortalOutlet {\n /**\n * @param outletElement Element into which the content is projected.\n * @param _componentFactoryResolver Used to resolve the component factory.\n * Only required when attaching component portals.\n * @param _appRef Reference to the application. Only used in component portals when there\n * is no `ViewContainerRef` available.\n * @param _defaultInjector Injector to use as a fallback when the portal being attached doesn't\n * have one. Only used for component portals.\n * @param _document Reference to the document. Used when attaching a DOM portal. Will eventually\n * become a required parameter.\n */\n constructor(\n /** Element into which the content is projected. */\n outletElement, _componentFactoryResolver, _appRef, _defaultInjector, \n /**\n * @deprecated `_document` Parameter to be made required.\n * @breaking-change 10.0.0\n */\n _document) {\n super();\n this.outletElement = outletElement;\n this._componentFactoryResolver = _componentFactoryResolver;\n this._appRef = _appRef;\n this._defaultInjector = _defaultInjector;\n /**\n * Attaches a DOM portal by transferring its content into the outlet.\n * @param portal Portal to be attached.\n * @deprecated To be turned into a method.\n * @breaking-change 10.0.0\n */\n this.attachDomPortal = (portal) => {\n // @breaking-change 10.0.0 Remove check and error once the\n // `_document` constructor parameter is required.\n if (!this._document && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Cannot attach DOM portal without _document constructor parameter');\n }\n const element = portal.element;\n if (!element.parentNode && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('DOM portal content must be attached to a parent node.');\n }\n // Anchor used to save the element's previous position so\n // that we can restore it when the portal is detached.\n const anchorNode = this._document.createComment('dom-portal');\n element.parentNode.insertBefore(anchorNode, element);\n this.outletElement.appendChild(element);\n this._attachedPortal = portal;\n super.setDisposeFn(() => {\n // We can't use `replaceWith` here because IE doesn't support it.\n if (anchorNode.parentNode) {\n anchorNode.parentNode.replaceChild(element, anchorNode);\n }\n });\n };\n this._document = _document;\n }\n /**\n * Attach the given ComponentPortal to DOM element using the ComponentFactoryResolver.\n * @param portal Portal to be attached\n * @returns Reference to the created component.\n */\n attachComponentPortal(portal) {\n const resolver = (portal.componentFactoryResolver || this._componentFactoryResolver);\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !resolver) {\n throw Error('Cannot attach component portal to outlet without a ComponentFactoryResolver.');\n }\n const componentFactory = resolver.resolveComponentFactory(portal.component);\n let componentRef;\n // If the portal specifies a ViewContainerRef, we will use that as the attachment point\n // for the component (in terms of Angular's component tree, not rendering).\n // When the ViewContainerRef is missing, we use the factory to create the component directly\n // and then manually attach the view to the application.\n if (portal.viewContainerRef) {\n componentRef = portal.viewContainerRef.createComponent(componentFactory, portal.viewContainerRef.length, portal.injector || portal.viewContainerRef.injector);\n this.setDisposeFn(() => componentRef.destroy());\n }\n else {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !this._appRef) {\n throw Error('Cannot attach component portal to outlet without an ApplicationRef.');\n }\n componentRef = componentFactory.create(portal.injector || this._defaultInjector || Injector.NULL);\n this._appRef.attachView(componentRef.hostView);\n this.setDisposeFn(() => {\n // Verify that the ApplicationRef has registered views before trying to detach a host view.\n // This check also protects the `detachView` from being called on a destroyed ApplicationRef.\n if (this._appRef.viewCount > 0) {\n this._appRef.detachView(componentRef.hostView);\n }\n componentRef.destroy();\n });\n }\n // At this point the component has been instantiated, so we move it to the location in the DOM\n // where we want it to be rendered.\n this.outletElement.appendChild(this._getComponentRootNode(componentRef));\n this._attachedPortal = portal;\n return componentRef;\n }\n /**\n * Attaches a template portal to the DOM as an embedded view.\n * @param portal Portal to be attached.\n * @returns Reference to the created embedded view.\n */\n attachTemplatePortal(portal) {\n let viewContainer = portal.viewContainerRef;\n let viewRef = viewContainer.createEmbeddedView(portal.templateRef, portal.context);\n // The method `createEmbeddedView` will add the view as a child of the viewContainer.\n // But for the DomPortalOutlet the view can be added everywhere in the DOM\n // (e.g Overlay Container) To move the view to the specified host element. We just\n // re-append the existing root nodes.\n viewRef.rootNodes.forEach(rootNode => this.outletElement.appendChild(rootNode));\n // Note that we want to detect changes after the nodes have been moved so that\n // any directives inside the portal that are looking at the DOM inside a lifecycle\n // hook won't be invoked too early.\n viewRef.detectChanges();\n this.setDisposeFn(() => {\n let index = viewContainer.indexOf(viewRef);\n if (index !== -1) {\n viewContainer.remove(index);\n }\n });\n this._attachedPortal = portal;\n // TODO(jelbourn): Return locals from view.\n return viewRef;\n }\n /**\n * Clears out a portal from the DOM.\n */\n dispose() {\n super.dispose();\n this.outletElement.remove();\n }\n /** Gets the root HTMLElement for an instantiated component. */\n _getComponentRootNode(componentRef) {\n return componentRef.hostView.rootNodes[0];\n }\n}\n/**\n * @deprecated Use `DomPortalOutlet` instead.\n * @breaking-change 9.0.0\n */\nclass DomPortalHost extends DomPortalOutlet {\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 * Directive version of a `TemplatePortal`. Because the directive *is* a TemplatePortal,\n * the directive instance itself can be attached to a host, enabling declarative use of portals.\n */\nclass CdkPortal extends TemplatePortal {\n constructor(templateRef, viewContainerRef) {\n super(templateRef, viewContainerRef);\n }\n}\nCdkPortal.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkPortal, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });\nCdkPortal.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkPortal, selector: \"[cdkPortal]\", exportAs: [\"cdkPortal\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkPortal, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkPortal]',\n exportAs: 'cdkPortal',\n }]\n }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; } });\n/**\n * @deprecated Use `CdkPortal` instead.\n * @breaking-change 9.0.0\n */\nclass TemplatePortalDirective extends CdkPortal {\n}\nTemplatePortalDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: TemplatePortalDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nTemplatePortalDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: TemplatePortalDirective, selector: \"[cdk-portal], [portal]\", providers: [\n {\n provide: CdkPortal,\n useExisting: TemplatePortalDirective,\n },\n ], exportAs: [\"cdkPortal\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: TemplatePortalDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdk-portal], [portal]',\n exportAs: 'cdkPortal',\n providers: [\n {\n provide: CdkPortal,\n useExisting: TemplatePortalDirective,\n },\n ],\n }]\n }] });\n/**\n * Directive version of a PortalOutlet. Because the directive *is* a PortalOutlet, portals can be\n * directly attached to it, enabling declarative use.\n *\n * Usage:\n * ``\n */\nclass CdkPortalOutlet extends BasePortalOutlet {\n constructor(_componentFactoryResolver, _viewContainerRef, \n /**\n * @deprecated `_document` parameter to be made required.\n * @breaking-change 9.0.0\n */\n _document) {\n super();\n this._componentFactoryResolver = _componentFactoryResolver;\n this._viewContainerRef = _viewContainerRef;\n /** Whether the portal component is initialized. */\n this._isInitialized = false;\n /** Emits when a portal is attached to the outlet. */\n this.attached = new EventEmitter();\n /**\n * Attaches the given DomPortal to this PortalHost by moving all of the portal content into it.\n * @param portal Portal to be attached.\n * @deprecated To be turned into a method.\n * @breaking-change 10.0.0\n */\n this.attachDomPortal = (portal) => {\n // @breaking-change 9.0.0 Remove check and error once the\n // `_document` constructor parameter is required.\n if (!this._document && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Cannot attach DOM portal without _document constructor parameter');\n }\n const element = portal.element;\n if (!element.parentNode && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('DOM portal content must be attached to a parent node.');\n }\n // Anchor used to save the element's previous position so\n // that we can restore it when the portal is detached.\n const anchorNode = this._document.createComment('dom-portal');\n portal.setAttachedHost(this);\n element.parentNode.insertBefore(anchorNode, element);\n this._getRootNode().appendChild(element);\n this._attachedPortal = portal;\n super.setDisposeFn(() => {\n if (anchorNode.parentNode) {\n anchorNode.parentNode.replaceChild(element, anchorNode);\n }\n });\n };\n this._document = _document;\n }\n /** Portal associated with the Portal outlet. */\n get portal() {\n return this._attachedPortal;\n }\n set portal(portal) {\n // Ignore the cases where the `portal` is set to a falsy value before the lifecycle hooks have\n // run. This handles the cases where the user might do something like `
    `\n // and attach a portal programmatically in the parent component. When Angular does the first CD\n // round, it will fire the setter with empty string, causing the user's content to be cleared.\n if (this.hasAttached() && !portal && !this._isInitialized) {\n return;\n }\n if (this.hasAttached()) {\n super.detach();\n }\n if (portal) {\n super.attach(portal);\n }\n this._attachedPortal = portal || null;\n }\n /** Component or view reference that is attached to the portal. */\n get attachedRef() {\n return this._attachedRef;\n }\n ngOnInit() {\n this._isInitialized = true;\n }\n ngOnDestroy() {\n super.dispose();\n this._attachedPortal = null;\n this._attachedRef = null;\n }\n /**\n * Attach the given ComponentPortal to this PortalOutlet using the ComponentFactoryResolver.\n *\n * @param portal Portal to be attached to the portal outlet.\n * @returns Reference to the created component.\n */\n attachComponentPortal(portal) {\n portal.setAttachedHost(this);\n // If the portal specifies an origin, use that as the logical location of the component\n // in the application tree. Otherwise use the location of this PortalOutlet.\n const viewContainerRef = portal.viewContainerRef != null ? portal.viewContainerRef : this._viewContainerRef;\n const resolver = portal.componentFactoryResolver || this._componentFactoryResolver;\n const componentFactory = resolver.resolveComponentFactory(portal.component);\n const ref = viewContainerRef.createComponent(componentFactory, viewContainerRef.length, portal.injector || viewContainerRef.injector);\n // If we're using a view container that's different from the injected one (e.g. when the portal\n // specifies its own) we need to move the component into the outlet, otherwise it'll be rendered\n // inside of the alternate view container.\n if (viewContainerRef !== this._viewContainerRef) {\n this._getRootNode().appendChild(ref.hostView.rootNodes[0]);\n }\n super.setDisposeFn(() => ref.destroy());\n this._attachedPortal = portal;\n this._attachedRef = ref;\n this.attached.emit(ref);\n return ref;\n }\n /**\n * Attach the given TemplatePortal to this PortalHost as an embedded View.\n * @param portal Portal to be attached.\n * @returns Reference to the created embedded view.\n */\n attachTemplatePortal(portal) {\n portal.setAttachedHost(this);\n const viewRef = this._viewContainerRef.createEmbeddedView(portal.templateRef, portal.context);\n super.setDisposeFn(() => this._viewContainerRef.clear());\n this._attachedPortal = portal;\n this._attachedRef = viewRef;\n this.attached.emit(viewRef);\n return viewRef;\n }\n /** Gets the root node of the portal outlet. */\n _getRootNode() {\n const nativeElement = this._viewContainerRef.element.nativeElement;\n // The directive could be set on a template which will result in a comment\n // node being the root. Use the comment's parent node if that is the case.\n return (nativeElement.nodeType === nativeElement.ELEMENT_NODE\n ? nativeElement\n : nativeElement.parentNode);\n }\n}\nCdkPortalOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkPortalOutlet, deps: [{ token: i0.ComponentFactoryResolver }, { token: i0.ViewContainerRef }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive });\nCdkPortalOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkPortalOutlet, selector: \"[cdkPortalOutlet]\", inputs: { portal: [\"cdkPortalOutlet\", \"portal\"] }, outputs: { attached: \"attached\" }, exportAs: [\"cdkPortalOutlet\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkPortalOutlet, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkPortalOutlet]',\n exportAs: 'cdkPortalOutlet',\n inputs: ['portal: cdkPortalOutlet'],\n }]\n }], ctorParameters: function () {\n return [{ type: i0.ComponentFactoryResolver }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }];\n }, propDecorators: { attached: [{\n type: Output\n }] } });\n/**\n * @deprecated Use `CdkPortalOutlet` instead.\n * @breaking-change 9.0.0\n */\nclass PortalHostDirective extends CdkPortalOutlet {\n}\nPortalHostDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: PortalHostDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });\nPortalHostDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: PortalHostDirective, selector: \"[cdkPortalHost], [portalHost]\", inputs: { portal: [\"cdkPortalHost\", \"portal\"] }, providers: [\n {\n provide: CdkPortalOutlet,\n useExisting: PortalHostDirective,\n },\n ], exportAs: [\"cdkPortalHost\"], usesInheritance: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: PortalHostDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkPortalHost], [portalHost]',\n exportAs: 'cdkPortalHost',\n inputs: ['portal: cdkPortalHost'],\n providers: [\n {\n provide: CdkPortalOutlet,\n useExisting: PortalHostDirective,\n },\n ],\n }]\n }] });\nclass PortalModule {\n}\nPortalModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: PortalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nPortalModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: PortalModule, declarations: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective], exports: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective] });\nPortalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: PortalModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: PortalModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective],\n declarations: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective],\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 * Custom injector to be used when providing custom\n * injection tokens to components inside a portal.\n * @docs-private\n * @deprecated Use `Injector.create` instead.\n * @breaking-change 11.0.0\n */\nclass PortalInjector {\n constructor(_parentInjector, _customTokens) {\n this._parentInjector = _parentInjector;\n this._customTokens = _customTokens;\n }\n get(token, notFoundValue) {\n const value = this._customTokens.get(token);\n if (typeof value !== 'undefined') {\n return value;\n }\n return this._parentInjector.get(token, notFoundValue);\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/**\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 { BasePortalHost, BasePortalOutlet, CdkPortal, CdkPortalOutlet, ComponentPortal, DomPortal, DomPortalHost, DomPortalOutlet, Portal, PortalHostDirective, PortalInjector, PortalModule, TemplatePortal, TemplatePortalDirective };\n","import { Subscription } from '../Subscription';\nexport const animationFrameProvider = {\n schedule(callback) {\n let request = requestAnimationFrame;\n let cancel = cancelAnimationFrame;\n const { delegate } = animationFrameProvider;\n if (delegate) {\n request = delegate.requestAnimationFrame;\n cancel = delegate.cancelAnimationFrame;\n }\n const handle = request((timestamp) => {\n cancel = undefined;\n callback(timestamp);\n });\n return new Subscription(() => cancel === null || cancel === void 0 ? void 0 : cancel(handle));\n },\n requestAnimationFrame(...args) {\n const { delegate } = animationFrameProvider;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.requestAnimationFrame) || requestAnimationFrame)(...args);\n },\n cancelAnimationFrame(...args) {\n const { delegate } = animationFrameProvider;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.cancelAnimationFrame) || cancelAnimationFrame)(...args);\n },\n delegate: undefined,\n};\n","import { AnimationFrameAction } from './AnimationFrameAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\nexport const animationFrameScheduler = new AnimationFrameScheduler(AnimationFrameAction);\nexport const animationFrame = animationFrameScheduler;\n","import { AsyncScheduler } from './AsyncScheduler';\nexport class AnimationFrameScheduler extends AsyncScheduler {\n flush(action) {\n this._active = true;\n const flushId = this._scheduled;\n this._scheduled = undefined;\n const { actions } = this;\n let error;\n action = action || actions.shift();\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions[0]) && action.id === flushId && actions.shift());\n this._active = false;\n if (error) {\n while ((action = actions[0]) && action.id === flushId && actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n","import { AsyncAction } from './AsyncAction';\nimport { animationFrameProvider } from './animationFrameProvider';\nexport class AnimationFrameAction extends AsyncAction {\n constructor(scheduler, work) {\n super(scheduler, work);\n this.scheduler = scheduler;\n this.work = work;\n }\n requestAsyncId(scheduler, id, delay = 0) {\n if (delay !== null && delay > 0) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n scheduler.actions.push(this);\n return scheduler._scheduled || (scheduler._scheduled = animationFrameProvider.requestAnimationFrame(() => scheduler.flush(undefined)));\n }\n recycleAsyncId(scheduler, id, delay = 0) {\n var _a;\n if (delay != null ? delay > 0 : this.delay > 0) {\n return super.recycleAsyncId(scheduler, id, delay);\n }\n const { actions } = scheduler;\n if (id != null && ((_a = actions[actions.length - 1]) === null || _a === void 0 ? void 0 : _a.id) !== id) {\n animationFrameProvider.cancelAnimationFrame(id);\n scheduler._scheduled = undefined;\n }\n return undefined;\n }\n}\n","import { coerceNumberProperty, coerceElement, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport * as i0 from '@angular/core';\nimport { InjectionToken, forwardRef, Directive, Input, Injectable, Optional, Inject, Component, ViewEncapsulation, ChangeDetectionStrategy, Output, ViewChild, SkipSelf, NgModule } from '@angular/core';\nimport { Subject, of, Observable, fromEvent, animationFrameScheduler, asapScheduler, Subscription, isObservable } from 'rxjs';\nimport { distinctUntilChanged, auditTime, filter, takeUntil, startWith, pairwise, switchMap, shareReplay } from 'rxjs/operators';\nimport { DOCUMENT } from '@angular/common';\nimport * as i1 from '@angular/cdk/platform';\nimport { getRtlScrollAxisType, supportsScrollBehavior } from '@angular/cdk/platform';\nimport * as i2 from '@angular/cdk/bidi';\nimport { BidiModule } from '@angular/cdk/bidi';\nimport * as i2$1 from '@angular/cdk/collections';\nimport { isDataSource, ArrayDataSource, _VIEW_REPEATER_STRATEGY, _RecycleViewRepeaterStrategy } from '@angular/cdk/collections';\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/** The injection token used to specify the virtual scrolling strategy. */\nconst VIRTUAL_SCROLL_STRATEGY = new InjectionToken('VIRTUAL_SCROLL_STRATEGY');\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/** Virtual scrolling strategy for lists with items of known fixed size. */\nclass FixedSizeVirtualScrollStrategy {\n /**\n * @param itemSize The size of the items in the virtually scrolling list.\n * @param minBufferPx The minimum amount of buffer (in pixels) before needing to render more\n * @param maxBufferPx The amount of buffer (in pixels) to render when rendering more.\n */\n constructor(itemSize, minBufferPx, maxBufferPx) {\n this._scrolledIndexChange = new Subject();\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n this.scrolledIndexChange = this._scrolledIndexChange.pipe(distinctUntilChanged());\n /** The attached viewport. */\n this._viewport = null;\n this._itemSize = itemSize;\n this._minBufferPx = minBufferPx;\n this._maxBufferPx = maxBufferPx;\n }\n /**\n * Attaches this scroll strategy to a viewport.\n * @param viewport The viewport to attach this strategy to.\n */\n attach(viewport) {\n this._viewport = viewport;\n this._updateTotalContentSize();\n this._updateRenderedRange();\n }\n /** Detaches this scroll strategy from the currently attached viewport. */\n detach() {\n this._scrolledIndexChange.complete();\n this._viewport = null;\n }\n /**\n * Update the item size and buffer size.\n * @param itemSize The size of the items in the virtually scrolling list.\n * @param minBufferPx The minimum amount of buffer (in pixels) before needing to render more\n * @param maxBufferPx The amount of buffer (in pixels) to render when rendering more.\n */\n updateItemAndBufferSize(itemSize, minBufferPx, maxBufferPx) {\n if (maxBufferPx < minBufferPx && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('CDK virtual scroll: maxBufferPx must be greater than or equal to minBufferPx');\n }\n this._itemSize = itemSize;\n this._minBufferPx = minBufferPx;\n this._maxBufferPx = maxBufferPx;\n this._updateTotalContentSize();\n this._updateRenderedRange();\n }\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onContentScrolled() {\n this._updateRenderedRange();\n }\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onDataLengthChanged() {\n this._updateTotalContentSize();\n this._updateRenderedRange();\n }\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onContentRendered() {\n /* no-op */\n }\n /** @docs-private Implemented as part of VirtualScrollStrategy. */\n onRenderedOffsetChanged() {\n /* no-op */\n }\n /**\n * Scroll to the offset for the given index.\n * @param index The index of the element to scroll to.\n * @param behavior The ScrollBehavior to use when scrolling.\n */\n scrollToIndex(index, behavior) {\n if (this._viewport) {\n this._viewport.scrollToOffset(index * this._itemSize, behavior);\n }\n }\n /** Update the viewport's total content size. */\n _updateTotalContentSize() {\n if (!this._viewport) {\n return;\n }\n this._viewport.setTotalContentSize(this._viewport.getDataLength() * this._itemSize);\n }\n /** Update the viewport's rendered range. */\n _updateRenderedRange() {\n if (!this._viewport) {\n return;\n }\n const renderedRange = this._viewport.getRenderedRange();\n const newRange = { start: renderedRange.start, end: renderedRange.end };\n const viewportSize = this._viewport.getViewportSize();\n const dataLength = this._viewport.getDataLength();\n let scrollOffset = this._viewport.measureScrollOffset();\n // Prevent NaN as result when dividing by zero.\n let firstVisibleIndex = this._itemSize > 0 ? scrollOffset / this._itemSize : 0;\n // If user scrolls to the bottom of the list and data changes to a smaller list\n if (newRange.end > dataLength) {\n // We have to recalculate the first visible index based on new data length and viewport size.\n const maxVisibleItems = Math.ceil(viewportSize / this._itemSize);\n const newVisibleIndex = Math.max(0, Math.min(firstVisibleIndex, dataLength - maxVisibleItems));\n // If first visible index changed we must update scroll offset to handle start/end buffers\n // Current range must also be adjusted to cover the new position (bottom of new list).\n if (firstVisibleIndex != newVisibleIndex) {\n firstVisibleIndex = newVisibleIndex;\n scrollOffset = newVisibleIndex * this._itemSize;\n newRange.start = Math.floor(firstVisibleIndex);\n }\n newRange.end = Math.max(0, Math.min(dataLength, newRange.start + maxVisibleItems));\n }\n const startBuffer = scrollOffset - newRange.start * this._itemSize;\n if (startBuffer < this._minBufferPx && newRange.start != 0) {\n const expandStart = Math.ceil((this._maxBufferPx - startBuffer) / this._itemSize);\n newRange.start = Math.max(0, newRange.start - expandStart);\n newRange.end = Math.min(dataLength, Math.ceil(firstVisibleIndex + (viewportSize + this._minBufferPx) / this._itemSize));\n }\n else {\n const endBuffer = newRange.end * this._itemSize - (scrollOffset + viewportSize);\n if (endBuffer < this._minBufferPx && newRange.end != dataLength) {\n const expandEnd = Math.ceil((this._maxBufferPx - endBuffer) / this._itemSize);\n if (expandEnd > 0) {\n newRange.end = Math.min(dataLength, newRange.end + expandEnd);\n newRange.start = Math.max(0, Math.floor(firstVisibleIndex - this._minBufferPx / this._itemSize));\n }\n }\n }\n this._viewport.setRenderedRange(newRange);\n this._viewport.setRenderedContentOffset(this._itemSize * newRange.start);\n this._scrolledIndexChange.next(Math.floor(firstVisibleIndex));\n }\n}\n/**\n * Provider factory for `FixedSizeVirtualScrollStrategy` that simply extracts the already created\n * `FixedSizeVirtualScrollStrategy` from the given directive.\n * @param fixedSizeDir The instance of `CdkFixedSizeVirtualScroll` to extract the\n * `FixedSizeVirtualScrollStrategy` from.\n */\nfunction _fixedSizeVirtualScrollStrategyFactory(fixedSizeDir) {\n return fixedSizeDir._scrollStrategy;\n}\n/** A virtual scroll strategy that supports fixed-size items. */\nclass CdkFixedSizeVirtualScroll {\n constructor() {\n this._itemSize = 20;\n this._minBufferPx = 100;\n this._maxBufferPx = 200;\n /** The scroll strategy used by this directive. */\n this._scrollStrategy = new FixedSizeVirtualScrollStrategy(this.itemSize, this.minBufferPx, this.maxBufferPx);\n }\n /** The size of the items in the list (in pixels). */\n get itemSize() {\n return this._itemSize;\n }\n set itemSize(value) {\n this._itemSize = coerceNumberProperty(value);\n }\n /**\n * The minimum amount of buffer rendered beyond the viewport (in pixels).\n * If the amount of buffer dips below this number, more items will be rendered. Defaults to 100px.\n */\n get minBufferPx() {\n return this._minBufferPx;\n }\n set minBufferPx(value) {\n this._minBufferPx = coerceNumberProperty(value);\n }\n /**\n * The number of pixels worth of buffer to render for when rendering new items. Defaults to 200px.\n */\n get maxBufferPx() {\n return this._maxBufferPx;\n }\n set maxBufferPx(value) {\n this._maxBufferPx = coerceNumberProperty(value);\n }\n ngOnChanges() {\n this._scrollStrategy.updateItemAndBufferSize(this.itemSize, this.minBufferPx, this.maxBufferPx);\n }\n}\nCdkFixedSizeVirtualScroll.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkFixedSizeVirtualScroll, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nCdkFixedSizeVirtualScroll.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkFixedSizeVirtualScroll, selector: \"cdk-virtual-scroll-viewport[itemSize]\", inputs: { itemSize: \"itemSize\", minBufferPx: \"minBufferPx\", maxBufferPx: \"maxBufferPx\" }, providers: [\n {\n provide: VIRTUAL_SCROLL_STRATEGY,\n useFactory: _fixedSizeVirtualScrollStrategyFactory,\n deps: [forwardRef(() => CdkFixedSizeVirtualScroll)],\n },\n ], usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkFixedSizeVirtualScroll, decorators: [{\n type: Directive,\n args: [{\n selector: 'cdk-virtual-scroll-viewport[itemSize]',\n providers: [\n {\n provide: VIRTUAL_SCROLL_STRATEGY,\n useFactory: _fixedSizeVirtualScrollStrategyFactory,\n deps: [forwardRef(() => CdkFixedSizeVirtualScroll)],\n },\n ],\n }]\n }], propDecorators: { itemSize: [{\n type: Input\n }], minBufferPx: [{\n type: Input\n }], maxBufferPx: [{\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/** Time in ms to throttle the scrolling events by default. */\nconst DEFAULT_SCROLL_TIME = 20;\n/**\n * Service contained all registered Scrollable references and emits an event when any one of the\n * Scrollable references emit a scrolled event.\n */\nclass ScrollDispatcher {\n constructor(_ngZone, _platform, document) {\n this._ngZone = _ngZone;\n this._platform = _platform;\n /** Subject for notifying that a registered scrollable reference element has been scrolled. */\n this._scrolled = new Subject();\n /** Keeps track of the global `scroll` and `resize` subscriptions. */\n this._globalSubscription = null;\n /** Keeps track of the amount of subscriptions to `scrolled`. Used for cleaning up afterwards. */\n this._scrolledCount = 0;\n /**\n * Map of all the scrollable references that are registered with the service and their\n * scroll event subscriptions.\n */\n this.scrollContainers = new Map();\n this._document = document;\n }\n /**\n * Registers a scrollable instance with the service and listens for its scrolled events. When the\n * scrollable is scrolled, the service emits the event to its scrolled observable.\n * @param scrollable Scrollable instance to be registered.\n */\n register(scrollable) {\n if (!this.scrollContainers.has(scrollable)) {\n this.scrollContainers.set(scrollable, scrollable.elementScrolled().subscribe(() => this._scrolled.next(scrollable)));\n }\n }\n /**\n * Deregisters a Scrollable reference and unsubscribes from its scroll event observable.\n * @param scrollable Scrollable instance to be deregistered.\n */\n deregister(scrollable) {\n const scrollableReference = this.scrollContainers.get(scrollable);\n if (scrollableReference) {\n scrollableReference.unsubscribe();\n this.scrollContainers.delete(scrollable);\n }\n }\n /**\n * Returns an observable that emits an event whenever any of the registered Scrollable\n * references (or window, document, or body) fire a scrolled event. Can provide a time in ms\n * to override the default \"throttle\" time.\n *\n * **Note:** in order to avoid hitting change detection for every scroll event,\n * all of the events emitted from this stream will be run outside the Angular zone.\n * If you need to update any data bindings as a result of a scroll event, you have\n * to run the callback using `NgZone.run`.\n */\n scrolled(auditTimeInMs = DEFAULT_SCROLL_TIME) {\n if (!this._platform.isBrowser) {\n return of();\n }\n return new Observable((observer) => {\n if (!this._globalSubscription) {\n this._addGlobalListener();\n }\n // In the case of a 0ms delay, use an observable without auditTime\n // since it does add a perceptible delay in processing overhead.\n const subscription = auditTimeInMs > 0\n ? this._scrolled.pipe(auditTime(auditTimeInMs)).subscribe(observer)\n : this._scrolled.subscribe(observer);\n this._scrolledCount++;\n return () => {\n subscription.unsubscribe();\n this._scrolledCount--;\n if (!this._scrolledCount) {\n this._removeGlobalListener();\n }\n };\n });\n }\n ngOnDestroy() {\n this._removeGlobalListener();\n this.scrollContainers.forEach((_, container) => this.deregister(container));\n this._scrolled.complete();\n }\n /**\n * Returns an observable that emits whenever any of the\n * scrollable ancestors of an element are scrolled.\n * @param elementOrElementRef Element whose ancestors to listen for.\n * @param auditTimeInMs Time to throttle the scroll events.\n */\n ancestorScrolled(elementOrElementRef, auditTimeInMs) {\n const ancestors = this.getAncestorScrollContainers(elementOrElementRef);\n return this.scrolled(auditTimeInMs).pipe(filter(target => {\n return !target || ancestors.indexOf(target) > -1;\n }));\n }\n /** Returns all registered Scrollables that contain the provided element. */\n getAncestorScrollContainers(elementOrElementRef) {\n const scrollingContainers = [];\n this.scrollContainers.forEach((_subscription, scrollable) => {\n if (this._scrollableContainsElement(scrollable, elementOrElementRef)) {\n scrollingContainers.push(scrollable);\n }\n });\n return scrollingContainers;\n }\n /** Use defaultView of injected document if available or fallback to global window reference */\n _getWindow() {\n return this._document.defaultView || window;\n }\n /** Returns true if the element is contained within the provided Scrollable. */\n _scrollableContainsElement(scrollable, elementOrElementRef) {\n let element = coerceElement(elementOrElementRef);\n let scrollableElement = scrollable.getElementRef().nativeElement;\n // Traverse through the element parents until we reach null, checking if any of the elements\n // are the scrollable's element.\n do {\n if (element == scrollableElement) {\n return true;\n }\n } while ((element = element.parentElement));\n return false;\n }\n /** Sets up the global scroll listeners. */\n _addGlobalListener() {\n this._globalSubscription = this._ngZone.runOutsideAngular(() => {\n const window = this._getWindow();\n return fromEvent(window.document, 'scroll').subscribe(() => this._scrolled.next());\n });\n }\n /** Cleans up the global scroll listener. */\n _removeGlobalListener() {\n if (this._globalSubscription) {\n this._globalSubscription.unsubscribe();\n this._globalSubscription = null;\n }\n }\n}\nScrollDispatcher.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: ScrollDispatcher, deps: [{ token: i0.NgZone }, { token: i1.Platform }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nScrollDispatcher.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: ScrollDispatcher, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: ScrollDispatcher, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () {\n return [{ type: i0.NgZone }, { type: i1.Platform }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }];\n } });\n\n/**\n * Sends an event when the directive's element is scrolled. Registers itself with the\n * ScrollDispatcher service to include itself as part of its collection of scrolling events that it\n * can be listened to through the service.\n */\nclass CdkScrollable {\n constructor(elementRef, scrollDispatcher, ngZone, dir) {\n this.elementRef = elementRef;\n this.scrollDispatcher = scrollDispatcher;\n this.ngZone = ngZone;\n this.dir = dir;\n this._destroyed = new Subject();\n this._elementScrolled = new Observable((observer) => this.ngZone.runOutsideAngular(() => fromEvent(this.elementRef.nativeElement, 'scroll')\n .pipe(takeUntil(this._destroyed))\n .subscribe(observer)));\n }\n ngOnInit() {\n this.scrollDispatcher.register(this);\n }\n ngOnDestroy() {\n this.scrollDispatcher.deregister(this);\n this._destroyed.next();\n this._destroyed.complete();\n }\n /** Returns observable that emits when a scroll event is fired on the host element. */\n elementScrolled() {\n return this._elementScrolled;\n }\n /** Gets the ElementRef for the viewport. */\n getElementRef() {\n return this.elementRef;\n }\n /**\n * Scrolls to the specified offsets. This is a normalized version of the browser's native scrollTo\n * method, since browsers are not consistent about what scrollLeft means in RTL. For this method\n * left and right always refer to the left and right side of the scrolling container irrespective\n * of the layout direction. start and end refer to left and right in an LTR context and vice-versa\n * in an RTL context.\n * @param options specified the offsets to scroll to.\n */\n scrollTo(options) {\n const el = this.elementRef.nativeElement;\n const isRtl = this.dir && this.dir.value == 'rtl';\n // Rewrite start & end offsets as right or left offsets.\n if (options.left == null) {\n options.left = isRtl ? options.end : options.start;\n }\n if (options.right == null) {\n options.right = isRtl ? options.start : options.end;\n }\n // Rewrite the bottom offset as a top offset.\n if (options.bottom != null) {\n options.top =\n el.scrollHeight - el.clientHeight - options.bottom;\n }\n // Rewrite the right offset as a left offset.\n if (isRtl && getRtlScrollAxisType() != 0 /* NORMAL */) {\n if (options.left != null) {\n options.right =\n el.scrollWidth - el.clientWidth - options.left;\n }\n if (getRtlScrollAxisType() == 2 /* INVERTED */) {\n options.left = options.right;\n }\n else if (getRtlScrollAxisType() == 1 /* NEGATED */) {\n options.left = options.right ? -options.right : options.right;\n }\n }\n else {\n if (options.right != null) {\n options.left =\n el.scrollWidth - el.clientWidth - options.right;\n }\n }\n this._applyScrollToOptions(options);\n }\n _applyScrollToOptions(options) {\n const el = this.elementRef.nativeElement;\n if (supportsScrollBehavior()) {\n el.scrollTo(options);\n }\n else {\n if (options.top != null) {\n el.scrollTop = options.top;\n }\n if (options.left != null) {\n el.scrollLeft = options.left;\n }\n }\n }\n /**\n * Measures the scroll offset relative to the specified edge of the viewport. This method can be\n * used instead of directly checking scrollLeft or scrollTop, since browsers are not consistent\n * about what scrollLeft means in RTL. The values returned by this method are normalized such that\n * left and right always refer to the left and right side of the scrolling container irrespective\n * of the layout direction. start and end refer to left and right in an LTR context and vice-versa\n * in an RTL context.\n * @param from The edge to measure from.\n */\n measureScrollOffset(from) {\n const LEFT = 'left';\n const RIGHT = 'right';\n const el = this.elementRef.nativeElement;\n if (from == 'top') {\n return el.scrollTop;\n }\n if (from == 'bottom') {\n return el.scrollHeight - el.clientHeight - el.scrollTop;\n }\n // Rewrite start & end as left or right offsets.\n const isRtl = this.dir && this.dir.value == 'rtl';\n if (from == 'start') {\n from = isRtl ? RIGHT : LEFT;\n }\n else if (from == 'end') {\n from = isRtl ? LEFT : RIGHT;\n }\n if (isRtl && getRtlScrollAxisType() == 2 /* INVERTED */) {\n // For INVERTED, scrollLeft is (scrollWidth - clientWidth) when scrolled all the way left and\n // 0 when scrolled all the way right.\n if (from == LEFT) {\n return el.scrollWidth - el.clientWidth - el.scrollLeft;\n }\n else {\n return el.scrollLeft;\n }\n }\n else if (isRtl && getRtlScrollAxisType() == 1 /* NEGATED */) {\n // For NEGATED, scrollLeft is -(scrollWidth - clientWidth) when scrolled all the way left and\n // 0 when scrolled all the way right.\n if (from == LEFT) {\n return el.scrollLeft + el.scrollWidth - el.clientWidth;\n }\n else {\n return -el.scrollLeft;\n }\n }\n else {\n // For NORMAL, as well as non-RTL contexts, scrollLeft is 0 when scrolled all the way left and\n // (scrollWidth - clientWidth) when scrolled all the way right.\n if (from == LEFT) {\n return el.scrollLeft;\n }\n else {\n return el.scrollWidth - el.clientWidth - el.scrollLeft;\n }\n }\n }\n}\nCdkScrollable.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkScrollable, deps: [{ token: i0.ElementRef }, { token: ScrollDispatcher }, { token: i0.NgZone }, { token: i2.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nCdkScrollable.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkScrollable, selector: \"[cdk-scrollable], [cdkScrollable]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkScrollable, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdk-scrollable], [cdkScrollable]',\n }]\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: ScrollDispatcher }, { type: i0.NgZone }, { type: i2.Directionality, decorators: [{\n type: Optional\n }] }];\n } });\n\n/** Time in ms to throttle the resize events by default. */\nconst DEFAULT_RESIZE_TIME = 20;\n/**\n * Simple utility for getting the bounds of the browser viewport.\n * @docs-private\n */\nclass ViewportRuler {\n constructor(_platform, ngZone, document) {\n this._platform = _platform;\n /** Stream of viewport change events. */\n this._change = new Subject();\n /** Event listener that will be used to handle the viewport change events. */\n this._changeListener = (event) => {\n this._change.next(event);\n };\n this._document = document;\n ngZone.runOutsideAngular(() => {\n if (_platform.isBrowser) {\n const window = this._getWindow();\n // Note that bind the events ourselves, rather than going through something like RxJS's\n // `fromEvent` so that we can ensure that they're bound outside of the NgZone.\n window.addEventListener('resize', this._changeListener);\n window.addEventListener('orientationchange', this._changeListener);\n }\n // Clear the cached position so that the viewport is re-measured next time it is required.\n // We don't need to keep track of the subscription, because it is completed on destroy.\n this.change().subscribe(() => (this._viewportSize = null));\n });\n }\n ngOnDestroy() {\n if (this._platform.isBrowser) {\n const window = this._getWindow();\n window.removeEventListener('resize', this._changeListener);\n window.removeEventListener('orientationchange', this._changeListener);\n }\n this._change.complete();\n }\n /** Returns the viewport's width and height. */\n getViewportSize() {\n if (!this._viewportSize) {\n this._updateViewportSize();\n }\n const output = { width: this._viewportSize.width, height: this._viewportSize.height };\n // If we're not on a browser, don't cache the size since it'll be mocked out anyway.\n if (!this._platform.isBrowser) {\n this._viewportSize = null;\n }\n return output;\n }\n /** Gets a ClientRect for the viewport's bounds. */\n getViewportRect() {\n // Use the document element's bounding rect rather than the window scroll properties\n // (e.g. pageYOffset, scrollY) due to in issue in Chrome and IE where window scroll\n // properties and client coordinates (boundingClientRect, clientX/Y, etc.) are in different\n // conceptual viewports. Under most circumstances these viewports are equivalent, but they\n // can disagree when the page is pinch-zoomed (on devices that support touch).\n // See https://bugs.chromium.org/p/chromium/issues/detail?id=489206#c4\n // We use the documentElement instead of the body because, by default (without a css reset)\n // browsers typically give the document body an 8px margin, which is not included in\n // getBoundingClientRect().\n const scrollPosition = this.getViewportScrollPosition();\n const { width, height } = this.getViewportSize();\n return {\n top: scrollPosition.top,\n left: scrollPosition.left,\n bottom: scrollPosition.top + height,\n right: scrollPosition.left + width,\n height,\n width,\n };\n }\n /** Gets the (top, left) scroll position of the viewport. */\n getViewportScrollPosition() {\n // While we can get a reference to the fake document\n // during SSR, it doesn't have getBoundingClientRect.\n if (!this._platform.isBrowser) {\n return { top: 0, left: 0 };\n }\n // The top-left-corner of the viewport is determined by the scroll position of the document\n // body, normally just (scrollLeft, scrollTop). However, Chrome and Firefox disagree about\n // whether `document.body` or `document.documentElement` is the scrolled element, so reading\n // `scrollTop` and `scrollLeft` is inconsistent. However, using the bounding rect of\n // `document.documentElement` works consistently, where the `top` and `left` values will\n // equal negative the scroll position.\n const document = this._document;\n const window = this._getWindow();\n const documentElement = document.documentElement;\n const documentRect = documentElement.getBoundingClientRect();\n const top = -documentRect.top ||\n document.body.scrollTop ||\n window.scrollY ||\n documentElement.scrollTop ||\n 0;\n const left = -documentRect.left ||\n document.body.scrollLeft ||\n window.scrollX ||\n documentElement.scrollLeft ||\n 0;\n return { top, left };\n }\n /**\n * Returns a stream that emits whenever the size of the viewport changes.\n * This stream emits outside of the Angular zone.\n * @param throttleTime Time in milliseconds to throttle the stream.\n */\n change(throttleTime = DEFAULT_RESIZE_TIME) {\n return throttleTime > 0 ? this._change.pipe(auditTime(throttleTime)) : this._change;\n }\n /** Use defaultView of injected document if available or fallback to global window reference */\n _getWindow() {\n return this._document.defaultView || window;\n }\n /** Updates the cached viewport size. */\n _updateViewportSize() {\n const window = this._getWindow();\n this._viewportSize = this._platform.isBrowser\n ? { width: window.innerWidth, height: window.innerHeight }\n : { width: 0, height: 0 };\n }\n}\nViewportRuler.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: ViewportRuler, deps: [{ token: i1.Platform }, { token: i0.NgZone }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nViewportRuler.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: ViewportRuler, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: ViewportRuler, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () {\n return [{ type: i1.Platform }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }];\n } });\n\n/** Checks if the given ranges are equal. */\nfunction rangesEqual(r1, r2) {\n return r1.start == r2.start && r1.end == r2.end;\n}\n/**\n * Scheduler to be used for scroll events. Needs to fall back to\n * something that doesn't rely on requestAnimationFrame on environments\n * that don't support it (e.g. server-side rendering).\n */\nconst SCROLL_SCHEDULER = typeof requestAnimationFrame !== 'undefined' ? animationFrameScheduler : asapScheduler;\n/** A viewport that virtualizes its scrolling with the help of `CdkVirtualForOf`. */\nclass CdkVirtualScrollViewport extends CdkScrollable {\n constructor(elementRef, _changeDetectorRef, ngZone, _scrollStrategy, dir, scrollDispatcher, viewportRuler) {\n super(elementRef, scrollDispatcher, ngZone, dir);\n this.elementRef = elementRef;\n this._changeDetectorRef = _changeDetectorRef;\n this._scrollStrategy = _scrollStrategy;\n /** Emits when the viewport is detached from a CdkVirtualForOf. */\n this._detachedSubject = new Subject();\n /** Emits when the rendered range changes. */\n this._renderedRangeSubject = new Subject();\n this._orientation = 'vertical';\n this._appendOnly = false;\n // Note: we don't use the typical EventEmitter here because we need to subscribe to the scroll\n // strategy lazily (i.e. only if the user is actually listening to the events). We do this because\n // depending on how the strategy calculates the scrolled index, it may come at a cost to\n // performance.\n /** Emits when the index of the first element visible in the viewport changes. */\n this.scrolledIndexChange = new Observable((observer) => this._scrollStrategy.scrolledIndexChange.subscribe(index => Promise.resolve().then(() => this.ngZone.run(() => observer.next(index)))));\n /** A stream that emits whenever the rendered range changes. */\n this.renderedRangeStream = this._renderedRangeSubject;\n /**\n * The total size of all content (in pixels), including content that is not currently rendered.\n */\n this._totalContentSize = 0;\n /** A string representing the `style.width` property value to be used for the spacer element. */\n this._totalContentWidth = '';\n /** A string representing the `style.height` property value to be used for the spacer element. */\n this._totalContentHeight = '';\n /** The currently rendered range of indices. */\n this._renderedRange = { start: 0, end: 0 };\n /** The length of the data bound to this viewport (in number of items). */\n this._dataLength = 0;\n /** The size of the viewport (in pixels). */\n this._viewportSize = 0;\n /** The last rendered content offset that was set. */\n this._renderedContentOffset = 0;\n /**\n * Whether the last rendered content offset was to the end of the content (and therefore needs to\n * be rewritten as an offset to the start of the content).\n */\n this._renderedContentOffsetNeedsRewrite = false;\n /** Whether there is a pending change detection cycle. */\n this._isChangeDetectionPending = false;\n /** A list of functions to run after the next change detection cycle. */\n this._runAfterChangeDetection = [];\n /** Subscription to changes in the viewport size. */\n this._viewportChanges = Subscription.EMPTY;\n if (!_scrollStrategy && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('Error: cdk-virtual-scroll-viewport requires the \"itemSize\" property to be set.');\n }\n this._viewportChanges = viewportRuler.change().subscribe(() => {\n this.checkViewportSize();\n });\n }\n /** The direction the viewport scrolls. */\n get orientation() {\n return this._orientation;\n }\n set orientation(orientation) {\n if (this._orientation !== orientation) {\n this._orientation = orientation;\n this._calculateSpacerSize();\n }\n }\n /**\n * Whether rendered items should persist in the DOM after scrolling out of view. By default, items\n * will be removed.\n */\n get appendOnly() {\n return this._appendOnly;\n }\n set appendOnly(value) {\n this._appendOnly = coerceBooleanProperty(value);\n }\n ngOnInit() {\n super.ngOnInit();\n // It's still too early to measure the viewport at this point. Deferring with a promise allows\n // the Viewport to be rendered with the correct size before we measure. We run this outside the\n // zone to avoid causing more change detection cycles. We handle the change detection loop\n // ourselves instead.\n this.ngZone.runOutsideAngular(() => Promise.resolve().then(() => {\n this._measureViewportSize();\n this._scrollStrategy.attach(this);\n this.elementScrolled()\n .pipe(\n // Start off with a fake scroll event so we properly detect our initial position.\n startWith(null), \n // Collect multiple events into one until the next animation frame. This way if\n // there are multiple scroll events in the same frame we only need to recheck\n // our layout once.\n auditTime(0, SCROLL_SCHEDULER))\n .subscribe(() => this._scrollStrategy.onContentScrolled());\n this._markChangeDetectionNeeded();\n }));\n }\n ngOnDestroy() {\n this.detach();\n this._scrollStrategy.detach();\n // Complete all subjects\n this._renderedRangeSubject.complete();\n this._detachedSubject.complete();\n this._viewportChanges.unsubscribe();\n super.ngOnDestroy();\n }\n /** Attaches a `CdkVirtualScrollRepeater` to this viewport. */\n attach(forOf) {\n if (this._forOf && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error('CdkVirtualScrollViewport is already attached.');\n }\n // Subscribe to the data stream of the CdkVirtualForOf to keep track of when the data length\n // changes. Run outside the zone to avoid triggering change detection, since we're managing the\n // change detection loop ourselves.\n this.ngZone.runOutsideAngular(() => {\n this._forOf = forOf;\n this._forOf.dataStream.pipe(takeUntil(this._detachedSubject)).subscribe(data => {\n const newLength = data.length;\n if (newLength !== this._dataLength) {\n this._dataLength = newLength;\n this._scrollStrategy.onDataLengthChanged();\n }\n this._doChangeDetection();\n });\n });\n }\n /** Detaches the current `CdkVirtualForOf`. */\n detach() {\n this._forOf = null;\n this._detachedSubject.next();\n }\n /** Gets the length of the data bound to this viewport (in number of items). */\n getDataLength() {\n return this._dataLength;\n }\n /** Gets the size of the viewport (in pixels). */\n getViewportSize() {\n return this._viewportSize;\n }\n // TODO(mmalerba): This is technically out of sync with what's really rendered until a render\n // cycle happens. I'm being careful to only call it after the render cycle is complete and before\n // setting it to something else, but its error prone and should probably be split into\n // `pendingRange` and `renderedRange`, the latter reflecting whats actually in the DOM.\n /** Get the current rendered range of items. */\n getRenderedRange() {\n return this._renderedRange;\n }\n /**\n * Sets the total size of all content (in pixels), including content that is not currently\n * rendered.\n */\n setTotalContentSize(size) {\n if (this._totalContentSize !== size) {\n this._totalContentSize = size;\n this._calculateSpacerSize();\n this._markChangeDetectionNeeded();\n }\n }\n /** Sets the currently rendered range of indices. */\n setRenderedRange(range) {\n if (!rangesEqual(this._renderedRange, range)) {\n if (this.appendOnly) {\n range = { start: 0, end: Math.max(this._renderedRange.end, range.end) };\n }\n this._renderedRangeSubject.next((this._renderedRange = range));\n this._markChangeDetectionNeeded(() => this._scrollStrategy.onContentRendered());\n }\n }\n /**\n * Gets the offset from the start of the viewport to the start of the rendered data (in pixels).\n */\n getOffsetToRenderedContentStart() {\n return this._renderedContentOffsetNeedsRewrite ? null : this._renderedContentOffset;\n }\n /**\n * Sets the offset from the start of the viewport to either the start or end of the rendered data\n * (in pixels).\n */\n setRenderedContentOffset(offset, to = 'to-start') {\n // For a horizontal viewport in a right-to-left language we need to translate along the x-axis\n // in the negative direction.\n const isRtl = this.dir && this.dir.value == 'rtl';\n const isHorizontal = this.orientation == 'horizontal';\n const axis = isHorizontal ? 'X' : 'Y';\n const axisDirection = isHorizontal && isRtl ? -1 : 1;\n let transform = `translate${axis}(${Number(axisDirection * offset)}px)`;\n // in appendOnly, we always start from the top\n offset = this.appendOnly && to === 'to-start' ? 0 : offset;\n this._renderedContentOffset = offset;\n if (to === 'to-end') {\n transform += ` translate${axis}(-100%)`;\n // The viewport should rewrite this as a `to-start` offset on the next render cycle. Otherwise\n // elements will appear to expand in the wrong direction (e.g. `mat-expansion-panel` would\n // expand upward).\n this._renderedContentOffsetNeedsRewrite = true;\n }\n if (this._renderedContentTransform != transform) {\n // We know this value is safe because we parse `offset` with `Number()` before passing it\n // into the string.\n this._renderedContentTransform = transform;\n this._markChangeDetectionNeeded(() => {\n if (this._renderedContentOffsetNeedsRewrite) {\n this._renderedContentOffset -= this.measureRenderedContentSize();\n this._renderedContentOffsetNeedsRewrite = false;\n this.setRenderedContentOffset(this._renderedContentOffset);\n }\n else {\n this._scrollStrategy.onRenderedOffsetChanged();\n }\n });\n }\n }\n /**\n * Scrolls to the given offset from the start of the viewport. Please note that this is not always\n * the same as setting `scrollTop` or `scrollLeft`. In a horizontal viewport with right-to-left\n * direction, this would be the equivalent of setting a fictional `scrollRight` property.\n * @param offset The offset to scroll to.\n * @param behavior The ScrollBehavior to use when scrolling. Default is behavior is `auto`.\n */\n scrollToOffset(offset, behavior = 'auto') {\n const options = { behavior };\n if (this.orientation === 'horizontal') {\n options.start = offset;\n }\n else {\n options.top = offset;\n }\n this.scrollTo(options);\n }\n /**\n * Scrolls to the offset for the given index.\n * @param index The index of the element to scroll to.\n * @param behavior The ScrollBehavior to use when scrolling. Default is behavior is `auto`.\n */\n scrollToIndex(index, behavior = 'auto') {\n this._scrollStrategy.scrollToIndex(index, behavior);\n }\n /**\n * Gets the current scroll offset from the start of the viewport (in pixels).\n * @param from The edge to measure the offset from. Defaults to 'top' in vertical mode and 'start'\n * in horizontal mode.\n */\n measureScrollOffset(from) {\n return from\n ? super.measureScrollOffset(from)\n : super.measureScrollOffset(this.orientation === 'horizontal' ? 'start' : 'top');\n }\n /** Measure the combined size of all of the rendered items. */\n measureRenderedContentSize() {\n const contentEl = this._contentWrapper.nativeElement;\n return this.orientation === 'horizontal' ? contentEl.offsetWidth : contentEl.offsetHeight;\n }\n /**\n * Measure the total combined size of the given range. Throws if the range includes items that are\n * not rendered.\n */\n measureRangeSize(range) {\n if (!this._forOf) {\n return 0;\n }\n return this._forOf.measureRangeSize(range, this.orientation);\n }\n /** Update the viewport dimensions and re-render. */\n checkViewportSize() {\n // TODO: Cleanup later when add logic for handling content resize\n this._measureViewportSize();\n this._scrollStrategy.onDataLengthChanged();\n }\n /** Measure the viewport size. */\n _measureViewportSize() {\n const viewportEl = this.elementRef.nativeElement;\n this._viewportSize =\n this.orientation === 'horizontal' ? viewportEl.clientWidth : viewportEl.clientHeight;\n }\n /** Queue up change detection to run. */\n _markChangeDetectionNeeded(runAfter) {\n if (runAfter) {\n this._runAfterChangeDetection.push(runAfter);\n }\n // Use a Promise to batch together calls to `_doChangeDetection`. This way if we set a bunch of\n // properties sequentially we only have to run `_doChangeDetection` once at the end.\n if (!this._isChangeDetectionPending) {\n this._isChangeDetectionPending = true;\n this.ngZone.runOutsideAngular(() => Promise.resolve().then(() => {\n this._doChangeDetection();\n }));\n }\n }\n /** Run change detection. */\n _doChangeDetection() {\n this._isChangeDetectionPending = false;\n // Apply the content transform. The transform can't be set via an Angular binding because\n // bypassSecurityTrustStyle is banned in Google. However the value is safe, it's composed of\n // string literals, a variable that can only be 'X' or 'Y', and user input that is run through\n // the `Number` function first to coerce it to a numeric value.\n this._contentWrapper.nativeElement.style.transform = this._renderedContentTransform;\n // Apply changes to Angular bindings. Note: We must call `markForCheck` to run change detection\n // from the root, since the repeated items are content projected in. Calling `detectChanges`\n // instead does not properly check the projected content.\n this.ngZone.run(() => this._changeDetectorRef.markForCheck());\n const runAfterChangeDetection = this._runAfterChangeDetection;\n this._runAfterChangeDetection = [];\n for (const fn of runAfterChangeDetection) {\n fn();\n }\n }\n /** Calculates the `style.width` and `style.height` for the spacer element. */\n _calculateSpacerSize() {\n this._totalContentHeight =\n this.orientation === 'horizontal' ? '' : `${this._totalContentSize}px`;\n this._totalContentWidth =\n this.orientation === 'horizontal' ? `${this._totalContentSize}px` : '';\n }\n}\nCdkVirtualScrollViewport.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkVirtualScrollViewport, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: VIRTUAL_SCROLL_STRATEGY, optional: true }, { token: i2.Directionality, optional: true }, { token: ScrollDispatcher }, { token: ViewportRuler }], target: i0.ɵɵFactoryTarget.Component });\nCdkVirtualScrollViewport.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkVirtualScrollViewport, selector: \"cdk-virtual-scroll-viewport\", inputs: { orientation: \"orientation\", appendOnly: \"appendOnly\" }, outputs: { scrolledIndexChange: \"scrolledIndexChange\" }, host: { properties: { \"class.cdk-virtual-scroll-orientation-horizontal\": \"orientation === \\\"horizontal\\\"\", \"class.cdk-virtual-scroll-orientation-vertical\": \"orientation !== \\\"horizontal\\\"\" }, classAttribute: \"cdk-virtual-scroll-viewport\" }, providers: [\n {\n provide: CdkScrollable,\n useExisting: CdkVirtualScrollViewport,\n },\n ], viewQueries: [{ propertyName: \"_contentWrapper\", first: true, predicate: [\"contentWrapper\"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: \"\\n
    \\n \\n
    \\n\\n
    \\n\", styles: [\"cdk-virtual-scroll-viewport{display:block;position:relative;overflow:auto;contain:strict;transform:translateZ(0);will-change:scroll-position;-webkit-overflow-scrolling:touch}.cdk-virtual-scroll-content-wrapper{position:absolute;top:0;left:0;contain:content}[dir=rtl] .cdk-virtual-scroll-content-wrapper{right:0;left:auto}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper{min-height:100%}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-left:0;padding-right:0;margin-left:0;margin-right:0;border-left-width:0;border-right-width:0;outline:none}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper{min-width:100%}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-top:0;padding-bottom:0;margin-top:0;margin-bottom:0;border-top-width:0;border-bottom-width:0;outline:none}.cdk-virtual-scroll-spacer{position:absolute;top:0;left:0;height:1px;width:1px;transform-origin:0 0}[dir=rtl] .cdk-virtual-scroll-spacer{right:0;left:auto;transform-origin:100% 0}\\n\"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkVirtualScrollViewport, decorators: [{\n type: Component,\n args: [{ selector: 'cdk-virtual-scroll-viewport', host: {\n 'class': 'cdk-virtual-scroll-viewport',\n '[class.cdk-virtual-scroll-orientation-horizontal]': 'orientation === \"horizontal\"',\n '[class.cdk-virtual-scroll-orientation-vertical]': 'orientation !== \"horizontal\"',\n }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [\n {\n provide: CdkScrollable,\n useExisting: CdkVirtualScrollViewport,\n },\n ], template: \"\\n
    \\n \\n
    \\n\\n
    \\n\", styles: [\"cdk-virtual-scroll-viewport{display:block;position:relative;overflow:auto;contain:strict;transform:translateZ(0);will-change:scroll-position;-webkit-overflow-scrolling:touch}.cdk-virtual-scroll-content-wrapper{position:absolute;top:0;left:0;contain:content}[dir=rtl] .cdk-virtual-scroll-content-wrapper{right:0;left:auto}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper{min-height:100%}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-left:0;padding-right:0;margin-left:0;margin-right:0;border-left-width:0;border-right-width:0;outline:none}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper{min-width:100%}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-top:0;padding-bottom:0;margin-top:0;margin-bottom:0;border-top-width:0;border-bottom-width:0;outline:none}.cdk-virtual-scroll-spacer{position:absolute;top:0;left:0;height:1px;width:1px;transform-origin:0 0}[dir=rtl] .cdk-virtual-scroll-spacer{right:0;left:auto;transform-origin:100% 0}\\n\"] }]\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [VIRTUAL_SCROLL_STRATEGY]\n }] }, { type: i2.Directionality, decorators: [{\n type: Optional\n }] }, { type: ScrollDispatcher }, { type: ViewportRuler }];\n }, propDecorators: { orientation: [{\n type: Input\n }], appendOnly: [{\n type: Input\n }], scrolledIndexChange: [{\n type: Output\n }], _contentWrapper: [{\n type: ViewChild,\n args: ['contentWrapper', { static: 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/** Helper to extract the offset of a DOM Node in a certain direction. */\nfunction getOffset(orientation, direction, node) {\n const el = node;\n if (!el.getBoundingClientRect) {\n return 0;\n }\n const rect = el.getBoundingClientRect();\n if (orientation === 'horizontal') {\n return direction === 'start' ? rect.left : rect.right;\n }\n return direction === 'start' ? rect.top : rect.bottom;\n}\n/**\n * A directive similar to `ngForOf` to be used for rendering data inside a virtual scrolling\n * container.\n */\nclass CdkVirtualForOf {\n constructor(\n /** The view container to add items to. */\n _viewContainerRef, \n /** The template to use when stamping out new items. */\n _template, \n /** The set of available differs. */\n _differs, \n /** The strategy used to render items in the virtual scroll viewport. */\n _viewRepeater, \n /** The virtual scrolling viewport that these items are being rendered in. */\n _viewport, ngZone) {\n this._viewContainerRef = _viewContainerRef;\n this._template = _template;\n this._differs = _differs;\n this._viewRepeater = _viewRepeater;\n this._viewport = _viewport;\n /** Emits when the rendered view of the data changes. */\n this.viewChange = new Subject();\n /** Subject that emits when a new DataSource instance is given. */\n this._dataSourceChanges = new Subject();\n /** Emits whenever the data in the current DataSource changes. */\n this.dataStream = this._dataSourceChanges.pipe(\n // Start off with null `DataSource`.\n startWith(null), \n // Bundle up the previous and current data sources so we can work with both.\n pairwise(), \n // Use `_changeDataSource` to disconnect from the previous data source and connect to the\n // new one, passing back a stream of data changes which we run through `switchMap` to give\n // us a data stream that emits the latest data from whatever the current `DataSource` is.\n switchMap(([prev, cur]) => this._changeDataSource(prev, cur)), \n // Replay the last emitted data when someone subscribes.\n shareReplay(1));\n /** The differ used to calculate changes to the data. */\n this._differ = null;\n /** Whether the rendered data should be updated during the next ngDoCheck cycle. */\n this._needsUpdate = false;\n this._destroyed = new Subject();\n this.dataStream.subscribe(data => {\n this._data = data;\n this._onRenderedDataChange();\n });\n this._viewport.renderedRangeStream.pipe(takeUntil(this._destroyed)).subscribe(range => {\n this._renderedRange = range;\n if (this.viewChange.observers.length) {\n ngZone.run(() => this.viewChange.next(this._renderedRange));\n }\n this._onRenderedDataChange();\n });\n this._viewport.attach(this);\n }\n /** The DataSource to display. */\n get cdkVirtualForOf() {\n return this._cdkVirtualForOf;\n }\n set cdkVirtualForOf(value) {\n this._cdkVirtualForOf = value;\n if (isDataSource(value)) {\n this._dataSourceChanges.next(value);\n }\n else {\n // If value is an an NgIterable, convert it to an array.\n this._dataSourceChanges.next(new ArrayDataSource(isObservable(value) ? value : Array.from(value || [])));\n }\n }\n /**\n * The `TrackByFunction` to use for tracking changes. The `TrackByFunction` takes the index and\n * the item and produces a value to be used as the item's identity when tracking changes.\n */\n get cdkVirtualForTrackBy() {\n return this._cdkVirtualForTrackBy;\n }\n set cdkVirtualForTrackBy(fn) {\n this._needsUpdate = true;\n this._cdkVirtualForTrackBy = fn\n ? (index, item) => fn(index + (this._renderedRange ? this._renderedRange.start : 0), item)\n : undefined;\n }\n /** The template used to stamp out new elements. */\n set cdkVirtualForTemplate(value) {\n if (value) {\n this._needsUpdate = true;\n this._template = value;\n }\n }\n /**\n * The size of the cache used to store templates that are not being used for re-use later.\n * Setting the cache size to `0` will disable caching. Defaults to 20 templates.\n */\n get cdkVirtualForTemplateCacheSize() {\n return this._viewRepeater.viewCacheSize;\n }\n set cdkVirtualForTemplateCacheSize(size) {\n this._viewRepeater.viewCacheSize = coerceNumberProperty(size);\n }\n /**\n * Measures the combined size (width for horizontal orientation, height for vertical) of all items\n * in the specified range. Throws an error if the range includes items that are not currently\n * rendered.\n */\n measureRangeSize(range, orientation) {\n if (range.start >= range.end) {\n return 0;\n }\n if ((range.start < this._renderedRange.start || range.end > this._renderedRange.end) &&\n (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(`Error: attempted to measure an item that isn't rendered.`);\n }\n // The index into the list of rendered views for the first item in the range.\n const renderedStartIndex = range.start - this._renderedRange.start;\n // The length of the range we're measuring.\n const rangeLen = range.end - range.start;\n // Loop over all the views, find the first and land node and compute the size by subtracting\n // the top of the first node from the bottom of the last one.\n let firstNode;\n let lastNode;\n // Find the first node by starting from the beginning and going forwards.\n for (let i = 0; i < rangeLen; i++) {\n const view = this._viewContainerRef.get(i + renderedStartIndex);\n if (view && view.rootNodes.length) {\n firstNode = lastNode = view.rootNodes[0];\n break;\n }\n }\n // Find the last node by starting from the end and going backwards.\n for (let i = rangeLen - 1; i > -1; i--) {\n const view = this._viewContainerRef.get(i + renderedStartIndex);\n if (view && view.rootNodes.length) {\n lastNode = view.rootNodes[view.rootNodes.length - 1];\n break;\n }\n }\n return firstNode && lastNode\n ? getOffset(orientation, 'end', lastNode) - getOffset(orientation, 'start', firstNode)\n : 0;\n }\n ngDoCheck() {\n if (this._differ && this._needsUpdate) {\n // TODO(mmalerba): We should differentiate needs update due to scrolling and a new portion of\n // this list being rendered (can use simpler algorithm) vs needs update due to data actually\n // changing (need to do this diff).\n const changes = this._differ.diff(this._renderedItems);\n if (!changes) {\n this._updateContext();\n }\n else {\n this._applyChanges(changes);\n }\n this._needsUpdate = false;\n }\n }\n ngOnDestroy() {\n this._viewport.detach();\n this._dataSourceChanges.next(undefined);\n this._dataSourceChanges.complete();\n this.viewChange.complete();\n this._destroyed.next();\n this._destroyed.complete();\n this._viewRepeater.detach();\n }\n /** React to scroll state changes in the viewport. */\n _onRenderedDataChange() {\n if (!this._renderedRange) {\n return;\n }\n this._renderedItems = this._data.slice(this._renderedRange.start, this._renderedRange.end);\n if (!this._differ) {\n // Use a wrapper function for the `trackBy` so any new values are\n // picked up automatically without having to recreate the differ.\n this._differ = this._differs.find(this._renderedItems).create((index, item) => {\n return this.cdkVirtualForTrackBy ? this.cdkVirtualForTrackBy(index, item) : item;\n });\n }\n this._needsUpdate = true;\n }\n /** Swap out one `DataSource` for another. */\n _changeDataSource(oldDs, newDs) {\n if (oldDs) {\n oldDs.disconnect(this);\n }\n this._needsUpdate = true;\n return newDs ? newDs.connect(this) : of();\n }\n /** Update the `CdkVirtualForOfContext` for all views. */\n _updateContext() {\n const count = this._data.length;\n let i = this._viewContainerRef.length;\n while (i--) {\n const view = this._viewContainerRef.get(i);\n view.context.index = this._renderedRange.start + i;\n view.context.count = count;\n this._updateComputedContextProperties(view.context);\n view.detectChanges();\n }\n }\n /** Apply changes to the DOM. */\n _applyChanges(changes) {\n this._viewRepeater.applyChanges(changes, this._viewContainerRef, (record, _adjustedPreviousIndex, currentIndex) => this._getEmbeddedViewArgs(record, currentIndex), record => record.item);\n // Update $implicit for any items that had an identity change.\n changes.forEachIdentityChange((record) => {\n const view = this._viewContainerRef.get(record.currentIndex);\n view.context.$implicit = record.item;\n });\n // Update the context variables on all items.\n const count = this._data.length;\n let i = this._viewContainerRef.length;\n while (i--) {\n const view = this._viewContainerRef.get(i);\n view.context.index = this._renderedRange.start + i;\n view.context.count = count;\n this._updateComputedContextProperties(view.context);\n }\n }\n /** Update the computed properties on the `CdkVirtualForOfContext`. */\n _updateComputedContextProperties(context) {\n context.first = context.index === 0;\n context.last = context.index === context.count - 1;\n context.even = context.index % 2 === 0;\n context.odd = !context.even;\n }\n _getEmbeddedViewArgs(record, index) {\n // Note that it's important that we insert the item directly at the proper index,\n // rather than inserting it and the moving it in place, because if there's a directive\n // on the same node that injects the `ViewContainerRef`, Angular will insert another\n // comment node which can throw off the move when it's being repeated for all items.\n return {\n templateRef: this._template,\n context: {\n $implicit: record.item,\n // It's guaranteed that the iterable is not \"undefined\" or \"null\" because we only\n // generate views for elements if the \"cdkVirtualForOf\" iterable has elements.\n cdkVirtualForOf: this._cdkVirtualForOf,\n index: -1,\n count: -1,\n first: false,\n last: false,\n odd: false,\n even: false,\n },\n index,\n };\n }\n}\nCdkVirtualForOf.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkVirtualForOf, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: i0.IterableDiffers }, { token: _VIEW_REPEATER_STRATEGY }, { token: CdkVirtualScrollViewport, skipSelf: true }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });\nCdkVirtualForOf.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkVirtualForOf, selector: \"[cdkVirtualFor][cdkVirtualForOf]\", inputs: { cdkVirtualForOf: \"cdkVirtualForOf\", cdkVirtualForTrackBy: \"cdkVirtualForTrackBy\", cdkVirtualForTemplate: \"cdkVirtualForTemplate\", cdkVirtualForTemplateCacheSize: \"cdkVirtualForTemplateCacheSize\" }, providers: [{ provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy }], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkVirtualForOf, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkVirtualFor][cdkVirtualForOf]',\n providers: [{ provide: _VIEW_REPEATER_STRATEGY, useClass: _RecycleViewRepeaterStrategy }],\n }]\n }], ctorParameters: function () {\n return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: i0.IterableDiffers }, { type: i2$1._RecycleViewRepeaterStrategy, decorators: [{\n type: Inject,\n args: [_VIEW_REPEATER_STRATEGY]\n }] }, { type: CdkVirtualScrollViewport, decorators: [{\n type: SkipSelf\n }] }, { type: i0.NgZone }];\n }, propDecorators: { cdkVirtualForOf: [{\n type: Input\n }], cdkVirtualForTrackBy: [{\n type: Input\n }], cdkVirtualForTemplate: [{\n type: Input\n }], cdkVirtualForTemplateCacheSize: [{\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 */\nclass CdkScrollableModule {\n}\nCdkScrollableModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkScrollableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCdkScrollableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkScrollableModule, declarations: [CdkScrollable], exports: [CdkScrollable] });\nCdkScrollableModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkScrollableModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkScrollableModule, decorators: [{\n type: NgModule,\n args: [{\n exports: [CdkScrollable],\n declarations: [CdkScrollable],\n }]\n }] });\n/**\n * @docs-primary-export\n */\nclass ScrollingModule {\n}\nScrollingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: ScrollingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nScrollingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: ScrollingModule, declarations: [CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport], imports: [BidiModule, CdkScrollableModule], exports: [BidiModule, CdkScrollableModule, CdkFixedSizeVirtualScroll,\n CdkVirtualForOf,\n CdkVirtualScrollViewport] });\nScrollingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: ScrollingModule, imports: [[BidiModule, CdkScrollableModule], BidiModule, CdkScrollableModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: ScrollingModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [BidiModule, CdkScrollableModule],\n exports: [\n BidiModule,\n CdkScrollableModule,\n CdkFixedSizeVirtualScroll,\n CdkVirtualForOf,\n CdkVirtualScrollViewport,\n ],\n declarations: [CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport],\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/**\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 { CdkFixedSizeVirtualScroll, CdkScrollable, CdkScrollableModule, CdkVirtualForOf, CdkVirtualScrollViewport, DEFAULT_RESIZE_TIME, DEFAULT_SCROLL_TIME, FixedSizeVirtualScrollStrategy, ScrollDispatcher, ScrollingModule, VIRTUAL_SCROLL_STRATEGY, ViewportRuler, _fixedSizeVirtualScrollStrategyFactory };\n","import * as i1 from '@angular/cdk/platform';\nimport { normalizePassiveListenerOptions } from '@angular/cdk/platform';\nimport * as i0 from '@angular/core';\nimport { Injectable, EventEmitter, Directive, Output, Optional, Inject, Input, NgModule } from '@angular/core';\nimport { coerceElement, coerceNumberProperty, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { EMPTY, Subject, fromEvent } from 'rxjs';\nimport { auditTime, takeUntil } from 'rxjs/operators';\nimport { DOCUMENT } from '@angular/common';\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/** Options to pass to the animationstart listener. */\nconst listenerOptions = normalizePassiveListenerOptions({ passive: true });\n/**\n * An injectable service that can be used to monitor the autofill state of an input.\n * Based on the following blog post:\n * https://medium.com/@brunn/detecting-autofilled-fields-in-javascript-aed598d25da7\n */\nclass AutofillMonitor {\n constructor(_platform, _ngZone) {\n this._platform = _platform;\n this._ngZone = _ngZone;\n this._monitoredElements = new Map();\n }\n monitor(elementOrRef) {\n if (!this._platform.isBrowser) {\n return EMPTY;\n }\n const element = coerceElement(elementOrRef);\n const info = this._monitoredElements.get(element);\n if (info) {\n return info.subject;\n }\n const result = new Subject();\n const cssClass = 'cdk-text-field-autofilled';\n const listener = ((event) => {\n // Animation events fire on initial element render, we check for the presence of the autofill\n // CSS class to make sure this is a real change in state, not just the initial render before\n // we fire off events.\n if (event.animationName === 'cdk-text-field-autofill-start' &&\n !element.classList.contains(cssClass)) {\n element.classList.add(cssClass);\n this._ngZone.run(() => result.next({ target: event.target, isAutofilled: true }));\n }\n else if (event.animationName === 'cdk-text-field-autofill-end' &&\n element.classList.contains(cssClass)) {\n element.classList.remove(cssClass);\n this._ngZone.run(() => result.next({ target: event.target, isAutofilled: false }));\n }\n });\n this._ngZone.runOutsideAngular(() => {\n element.addEventListener('animationstart', listener, listenerOptions);\n element.classList.add('cdk-text-field-autofill-monitored');\n });\n this._monitoredElements.set(element, {\n subject: result,\n unlisten: () => {\n element.removeEventListener('animationstart', listener, listenerOptions);\n },\n });\n return result;\n }\n stopMonitoring(elementOrRef) {\n const element = coerceElement(elementOrRef);\n const info = this._monitoredElements.get(element);\n if (info) {\n info.unlisten();\n info.subject.complete();\n element.classList.remove('cdk-text-field-autofill-monitored');\n element.classList.remove('cdk-text-field-autofilled');\n this._monitoredElements.delete(element);\n }\n }\n ngOnDestroy() {\n this._monitoredElements.forEach((_info, element) => this.stopMonitoring(element));\n }\n}\nAutofillMonitor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: AutofillMonitor, deps: [{ token: i1.Platform }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });\nAutofillMonitor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: AutofillMonitor, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: AutofillMonitor, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return [{ type: i1.Platform }, { type: i0.NgZone }]; } });\n/** A directive that can be used to monitor the autofill state of an input. */\nclass CdkAutofill {\n constructor(_elementRef, _autofillMonitor) {\n this._elementRef = _elementRef;\n this._autofillMonitor = _autofillMonitor;\n /** Emits when the autofill state of the element changes. */\n this.cdkAutofill = new EventEmitter();\n }\n ngOnInit() {\n this._autofillMonitor\n .monitor(this._elementRef)\n .subscribe(event => this.cdkAutofill.emit(event));\n }\n ngOnDestroy() {\n this._autofillMonitor.stopMonitoring(this._elementRef);\n }\n}\nCdkAutofill.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkAutofill, deps: [{ token: i0.ElementRef }, { token: AutofillMonitor }], target: i0.ɵɵFactoryTarget.Directive });\nCdkAutofill.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkAutofill, selector: \"[cdkAutofill]\", outputs: { cdkAutofill: \"cdkAutofill\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkAutofill, decorators: [{\n type: Directive,\n args: [{\n selector: '[cdkAutofill]',\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: AutofillMonitor }]; }, propDecorators: { cdkAutofill: [{\n type: Output\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/** Directive to automatically resize a textarea to fit its content. */\nclass CdkTextareaAutosize {\n constructor(_elementRef, _platform, _ngZone, \n /** @breaking-change 11.0.0 make document required */\n document) {\n this._elementRef = _elementRef;\n this._platform = _platform;\n this._ngZone = _ngZone;\n this._destroyed = new Subject();\n this._enabled = true;\n /**\n * Value of minRows as of last resize. If the minRows has decreased, the\n * height of the textarea needs to be recomputed to reflect the new minimum. The maxHeight\n * does not have the same problem because it does not affect the textarea's scrollHeight.\n */\n this._previousMinRows = -1;\n this._isViewInited = false;\n /** Handles `focus` and `blur` events. */\n this._handleFocusEvent = (event) => {\n this._hasFocus = event.type === 'focus';\n };\n this._document = document;\n this._textareaElement = this._elementRef.nativeElement;\n }\n /** Minimum amount of rows in the textarea. */\n get minRows() {\n return this._minRows;\n }\n set minRows(value) {\n this._minRows = coerceNumberProperty(value);\n this._setMinHeight();\n }\n /** Maximum amount of rows in the textarea. */\n get maxRows() {\n return this._maxRows;\n }\n set maxRows(value) {\n this._maxRows = coerceNumberProperty(value);\n this._setMaxHeight();\n }\n /** Whether autosizing is enabled or not */\n get enabled() {\n return this._enabled;\n }\n set enabled(value) {\n value = coerceBooleanProperty(value);\n // Only act if the actual value changed. This specifically helps to not run\n // resizeToFitContent too early (i.e. before ngAfterViewInit)\n if (this._enabled !== value) {\n (this._enabled = value) ? this.resizeToFitContent(true) : this.reset();\n }\n }\n get placeholder() {\n return this._textareaElement.placeholder;\n }\n set placeholder(value) {\n this._cachedPlaceholderHeight = undefined;\n if (value) {\n this._textareaElement.setAttribute('placeholder', value);\n }\n else {\n this._textareaElement.removeAttribute('placeholder');\n }\n this._cacheTextareaPlaceholderHeight();\n }\n /** Sets the minimum height of the textarea as determined by minRows. */\n _setMinHeight() {\n const minHeight = this.minRows && this._cachedLineHeight ? `${this.minRows * this._cachedLineHeight}px` : null;\n if (minHeight) {\n this._textareaElement.style.minHeight = minHeight;\n }\n }\n /** Sets the maximum height of the textarea as determined by maxRows. */\n _setMaxHeight() {\n const maxHeight = this.maxRows && this._cachedLineHeight ? `${this.maxRows * this._cachedLineHeight}px` : null;\n if (maxHeight) {\n this._textareaElement.style.maxHeight = maxHeight;\n }\n }\n ngAfterViewInit() {\n if (this._platform.isBrowser) {\n // Remember the height which we started with in case autosizing is disabled\n this._initialHeight = this._textareaElement.style.height;\n this.resizeToFitContent();\n this._ngZone.runOutsideAngular(() => {\n const window = this._getWindow();\n fromEvent(window, 'resize')\n .pipe(auditTime(16), takeUntil(this._destroyed))\n .subscribe(() => this.resizeToFitContent(true));\n this._textareaElement.addEventListener('focus', this._handleFocusEvent);\n this._textareaElement.addEventListener('blur', this._handleFocusEvent);\n });\n this._isViewInited = true;\n this.resizeToFitContent(true);\n }\n }\n ngOnDestroy() {\n this._textareaElement.removeEventListener('focus', this._handleFocusEvent);\n this._textareaElement.removeEventListener('blur', this._handleFocusEvent);\n this._destroyed.next();\n this._destroyed.complete();\n }\n /**\n * Cache the height of a single-row textarea if it has not already been cached.\n *\n * We need to know how large a single \"row\" of a textarea is in order to apply minRows and\n * maxRows. For the initial version, we will assume that the height of a single line in the\n * textarea does not ever change.\n */\n _cacheTextareaLineHeight() {\n if (this._cachedLineHeight) {\n return;\n }\n // Use a clone element because we have to override some styles.\n let textareaClone = this._textareaElement.cloneNode(false);\n textareaClone.rows = 1;\n // Use `position: absolute` so that this doesn't cause a browser layout and use\n // `visibility: hidden` so that nothing is rendered. Clear any other styles that\n // would affect the height.\n textareaClone.style.position = 'absolute';\n textareaClone.style.visibility = 'hidden';\n textareaClone.style.border = 'none';\n textareaClone.style.padding = '0';\n textareaClone.style.height = '';\n textareaClone.style.minHeight = '';\n textareaClone.style.maxHeight = '';\n // In Firefox it happens that textarea elements are always bigger than the specified amount\n // of rows. This is because Firefox tries to add extra space for the horizontal scrollbar.\n // As a workaround that removes the extra space for the scrollbar, we can just set overflow\n // to hidden. This ensures that there is no invalid calculation of the line height.\n // See Firefox bug report: https://bugzilla.mozilla.org/show_bug.cgi?id=33654\n textareaClone.style.overflow = 'hidden';\n this._textareaElement.parentNode.appendChild(textareaClone);\n this._cachedLineHeight = textareaClone.clientHeight;\n textareaClone.remove();\n // Min and max heights have to be re-calculated if the cached line height changes\n this._setMinHeight();\n this._setMaxHeight();\n }\n _measureScrollHeight() {\n const element = this._textareaElement;\n const previousMargin = element.style.marginBottom || '';\n const isFirefox = this._platform.FIREFOX;\n const needsMarginFiller = isFirefox && this._hasFocus;\n const measuringClass = isFirefox\n ? 'cdk-textarea-autosize-measuring-firefox'\n : 'cdk-textarea-autosize-measuring';\n // In some cases the page might move around while we're measuring the `textarea` on Firefox. We\n // work around it by assigning a temporary margin with the same height as the `textarea` so that\n // it occupies the same amount of space. See #23233.\n if (needsMarginFiller) {\n element.style.marginBottom = `${element.clientHeight}px`;\n }\n // Reset the textarea height to auto in order to shrink back to its default size.\n // Also temporarily force overflow:hidden, so scroll bars do not interfere with calculations.\n element.classList.add(measuringClass);\n // The measuring class includes a 2px padding to workaround an issue with Chrome,\n // so we account for that extra space here by subtracting 4 (2px top + 2px bottom).\n const scrollHeight = element.scrollHeight - 4;\n element.classList.remove(measuringClass);\n if (needsMarginFiller) {\n element.style.marginBottom = previousMargin;\n }\n return scrollHeight;\n }\n _cacheTextareaPlaceholderHeight() {\n if (!this._isViewInited || this._cachedPlaceholderHeight != undefined) {\n return;\n }\n if (!this.placeholder) {\n this._cachedPlaceholderHeight = 0;\n return;\n }\n const value = this._textareaElement.value;\n this._textareaElement.value = this._textareaElement.placeholder;\n this._cachedPlaceholderHeight = this._measureScrollHeight();\n this._textareaElement.value = value;\n }\n ngDoCheck() {\n if (this._platform.isBrowser) {\n this.resizeToFitContent();\n }\n }\n /**\n * Resize the textarea to fit its content.\n * @param force Whether to force a height recalculation. By default the height will be\n * recalculated only if the value changed since the last call.\n */\n resizeToFitContent(force = false) {\n // If autosizing is disabled, just skip everything else\n if (!this._enabled) {\n return;\n }\n this._cacheTextareaLineHeight();\n this._cacheTextareaPlaceholderHeight();\n // If we haven't determined the line-height yet, we know we're still hidden and there's no point\n // in checking the height of the textarea.\n if (!this._cachedLineHeight) {\n return;\n }\n const textarea = this._elementRef.nativeElement;\n const value = textarea.value;\n // Only resize if the value or minRows have changed since these calculations can be expensive.\n if (!force && this._minRows === this._previousMinRows && value === this._previousValue) {\n return;\n }\n const scrollHeight = this._measureScrollHeight();\n const height = Math.max(scrollHeight, this._cachedPlaceholderHeight || 0);\n // Use the scrollHeight to know how large the textarea *would* be if fit its entire value.\n textarea.style.height = `${height}px`;\n this._ngZone.runOutsideAngular(() => {\n if (typeof requestAnimationFrame !== 'undefined') {\n requestAnimationFrame(() => this._scrollToCaretPosition(textarea));\n }\n else {\n setTimeout(() => this._scrollToCaretPosition(textarea));\n }\n });\n this._previousValue = value;\n this._previousMinRows = this._minRows;\n }\n /**\n * Resets the textarea to its original size\n */\n reset() {\n // Do not try to change the textarea, if the initialHeight has not been determined yet\n // This might potentially remove styles when reset() is called before ngAfterViewInit\n if (this._initialHeight !== undefined) {\n this._textareaElement.style.height = this._initialHeight;\n }\n }\n _noopInputHandler() {\n // no-op handler that ensures we're running change detection on input events.\n }\n /** Access injected document if available or fallback to global document reference */\n _getDocument() {\n return this._document || document;\n }\n /** Use defaultView of injected document if available or fallback to global window reference */\n _getWindow() {\n const doc = this._getDocument();\n return doc.defaultView || window;\n }\n /**\n * Scrolls a textarea to the caret position. On Firefox resizing the textarea will\n * prevent it from scrolling to the caret position. We need to re-set the selection\n * in order for it to scroll to the proper position.\n */\n _scrollToCaretPosition(textarea) {\n const { selectionStart, selectionEnd } = textarea;\n // IE will throw an \"Unspecified error\" if we try to set the selection range after the\n // element has been removed from the DOM. Assert that the directive hasn't been destroyed\n // between the time we requested the animation frame and when it was executed.\n // Also note that we have to assert that the textarea is focused before we set the\n // selection range. Setting the selection range on a non-focused textarea will cause\n // it to receive focus on IE and Edge.\n if (!this._destroyed.isStopped && this._hasFocus) {\n textarea.setSelectionRange(selectionStart, selectionEnd);\n }\n }\n}\nCdkTextareaAutosize.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkTextareaAutosize, deps: [{ token: i0.ElementRef }, { token: i1.Platform }, { token: i0.NgZone }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nCdkTextareaAutosize.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.3.0\", type: CdkTextareaAutosize, selector: \"textarea[cdkTextareaAutosize]\", inputs: { minRows: [\"cdkAutosizeMinRows\", \"minRows\"], maxRows: [\"cdkAutosizeMaxRows\", \"maxRows\"], enabled: [\"cdkTextareaAutosize\", \"enabled\"], placeholder: \"placeholder\" }, host: { attributes: { \"rows\": \"1\" }, listeners: { \"input\": \"_noopInputHandler()\" }, classAttribute: \"cdk-textarea-autosize\" }, exportAs: [\"cdkTextareaAutosize\"], ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: CdkTextareaAutosize, decorators: [{\n type: Directive,\n args: [{\n selector: 'textarea[cdkTextareaAutosize]',\n exportAs: 'cdkTextareaAutosize',\n host: {\n 'class': 'cdk-textarea-autosize',\n // Textarea elements that have the directive applied should have a single row by default.\n // Browsers normally show two rows by default and therefore this limits the minRows binding.\n 'rows': '1',\n '(input)': '_noopInputHandler()',\n },\n }]\n }], ctorParameters: function () {\n return [{ type: i0.ElementRef }, { type: i1.Platform }, { type: i0.NgZone }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }];\n }, propDecorators: { minRows: [{\n type: Input,\n args: ['cdkAutosizeMinRows']\n }], maxRows: [{\n type: Input,\n args: ['cdkAutosizeMaxRows']\n }], enabled: [{\n type: Input,\n args: ['cdkTextareaAutosize']\n }], placeholder: [{\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 */\nclass TextFieldModule {\n}\nTextFieldModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: TextFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nTextFieldModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: TextFieldModule, declarations: [CdkAutofill, CdkTextareaAutosize], exports: [CdkAutofill, CdkTextareaAutosize] });\nTextFieldModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: TextFieldModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.3.0\", ngImport: i0, type: TextFieldModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [CdkAutofill, CdkTextareaAutosize],\n exports: [CdkAutofill, CdkTextareaAutosize],\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/**\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 { AutofillMonitor, CdkAutofill, CdkTextareaAutosize, TextFieldModule };\n","/**\n * @license Angular v13.4.0\n * (c) 2010-2022 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, ɵRuntimeError, inject, ɵformatRuntimeError, InjectFlags, NgZone, Renderer2, ElementRef, Injector, PLATFORM_ID, NgModule, Host, Attribute, ɵisPromise, ɵisSubscribable, Pipe, DEFAULT_CURRENCY_CODE, 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.4.0\", ngImport: i0, type: PlatformLocation, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nPlatformLocation.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: PlatformLocation, providedIn: 'platform', useFactory: useBrowserPlatformLocation });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", 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.4.0\", ngImport: i0, type: BrowserPlatformLocation, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nBrowserPlatformLocation.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: BrowserPlatformLocation, providedIn: 'platform', useFactory: createBrowserPlatformLocation });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: BrowserPlatformLocation, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'platform',\n // See #23917\n useFactory: createBrowserPlatformLocation,\n }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }];\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.4.0\", ngImport: i0, type: LocationStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nLocationStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: LocationStrategy, providedIn: 'root', useFactory: provideLocationStrategy });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", 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 /** @nodoc */\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 var _a, _b;\n (_b = (_a = this._platformLocation).historyGo) === null || _b === void 0 ? void 0 : _b.call(_a, relativePosition);\n }\n}\nPathLocationStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", 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.4.0\", ngImport: i0, type: PathLocationStrategy });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: PathLocationStrategy, decorators: [{\n type: Injectable\n }], ctorParameters: function () {\n return [{ type: PlatformLocation }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [APP_BASE_HREF]\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 * @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 /** @nodoc */\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 var _a, _b;\n (_b = (_a = this._platformLocation).historyGo) === null || _b === void 0 ? void 0 : _b.call(_a, relativePosition);\n }\n}\nHashLocationStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", 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.4.0\", ngImport: i0, type: HashLocationStrategy });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: HashLocationStrategy, decorators: [{\n type: Injectable\n }], ctorParameters: function () {\n return [{ type: PlatformLocation }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [APP_BASE_HREF]\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 * @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 var _a, _b;\n (_b = (_a = this._platformStrategy).historyGo) === null || _b === void 0 ? void 0 : _b.call(_a, 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.4.0\", ngImport: i0, type: Location, deps: [{ token: LocationStrategy }, { token: PlatformLocation }], target: i0.ɵɵFactoryTarget.Injectable });\nLocation.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: Location, providedIn: 'root', useFactory: createLocation });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", 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 ? dateFormatter(date, locale, dateTimezoneOffset) :\n value === '\\'\\'' ? '\\'' :\n 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}\nNgLocalization.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgLocalization, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNgLocalization.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgLocalization, providedIn: 'root', useFactory: (locale) => new NgLocaleLocalization(locale), deps: [{ token: LOCALE_ID }] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgLocalization, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n useFactory: (locale) => new NgLocaleLocalization(locale),\n deps: [LOCALE_ID],\n }]\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.4.0\", ngImport: i0, type: NgLocaleLocalization, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Injectable });\nNgLocaleLocalization.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgLocaleLocalization });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgLocaleLocalization, decorators: [{\n type: Injectable\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\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 * 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.4.0\", 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.4.0\", type: NgClass, selector: \"[ngClass]\", inputs: { klass: [\"class\", \"klass\"], ngClass: \"ngClass\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", 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 /** @nodoc */\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 /** @nodoc */\n ngOnDestroy() {\n if (this._moduleRef)\n this._moduleRef.destroy();\n }\n}\nNgComponentOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgComponentOutlet, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgComponentOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.4.0\", 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.4.0\", 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/structural-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/structural-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 * @nodoc\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 if (typeof ngDevMode === 'undefined' || ngDevMode) {\n try {\n // CAUTION: this logic is duplicated for production mode below, as the try-catch\n // is only present in development builds.\n this._differ = this._differs.find(value).create(this.ngForTrackBy);\n }\n catch (_a) {\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 else {\n // CAUTION: this logic is duplicated for development mode above, as the try-catch\n // is only present in development builds.\n this._differ = this._differs.find(value).create(this.ngForTrackBy);\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 viewContainer = this._viewContainer;\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 viewContainer.createEmbeddedView(this._template, new NgForOfContext(item.item, this._ngForOf, -1, -1), currentIndex === null ? undefined : currentIndex);\n }\n else if (currentIndex == null) {\n viewContainer.remove(adjustedPreviousIndex === null ? undefined : adjustedPreviousIndex);\n }\n else if (adjustedPreviousIndex !== null) {\n const view = viewContainer.get(adjustedPreviousIndex);\n viewContainer.move(view, currentIndex);\n applyViewChange(view, item);\n }\n });\n for (let i = 0, ilen = viewContainer.length; i < ilen; i++) {\n const viewRef = viewContainer.get(i);\n const context = viewRef.context;\n context.index = i;\n context.count = ilen;\n context.ngForOf = this._ngForOf;\n }\n changes.forEachIdentityChange((record) => {\n const viewRef = viewContainer.get(record.currentIndex);\n applyViewChange(viewRef, record);\n });\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.4.0\", 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.4.0\", type: NgForOf, selector: \"[ngFor][ngForOf]\", inputs: { ngForOf: \"ngForOf\", ngForTrackBy: \"ngForTrackBy\", ngForTemplate: \"ngForTemplate\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", 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 }] } });\nfunction applyViewChange(view, record) {\n view.context.$implicit = record.item;\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](guide/structural-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.4.0\", 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.4.0\", type: NgIf, selector: \"[ngIf]\", inputs: { ngIf: \"ngIf\", ngIfThen: \"ngIfThen\", ngIfElse: \"ngIfElse\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", 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 */\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// Assembles directive details string, useful for error messages.\nfunction imgDirectiveDetails(ngSrc, includeNgSrc = true) {\n const ngSrcInfo = includeNgSrc ? `(activated on an element with the \\`ngSrc=\"${ngSrc}\"\\`) ` : '';\n return `The NgOptimizedImage directive ${ngSrcInfo}has detected that`;\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// Converts a string that represents a URL into a URL class instance.\nfunction getUrl(src, win) {\n // Don't use a base URL is the URL is absolute.\n return isAbsoluteUrl(src) ? new URL(src) : new URL(src, win.location.href);\n}\n// Checks whether a URL is absolute (i.e. starts with `http://` or `https://`).\nfunction isAbsoluteUrl(src) {\n return /^https?:\\/\\//.test(src);\n}\n// Given a URL, extract the hostname part.\n// If a URL is a relative one - the URL is returned as is.\nfunction extractHostname(url) {\n return isAbsoluteUrl(url) ? (new URL(url)).hostname : url;\n}\nfunction isValidPath(path) {\n const isString = typeof path === 'string';\n if (!isString || path.trim() === '') {\n return false;\n }\n // Calling new URL() will throw if the path string is malformed\n try {\n const url = new URL(path);\n return true;\n }\n catch (_a) {\n return false;\n }\n}\nfunction normalizePath(path) {\n return path.endsWith('/') ? path.slice(0, -1) : path;\n}\nfunction normalizeSrc(src) {\n return src.startsWith('/') ? src.slice(1) : src;\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 * Noop image loader that does no transformation to the original src and just returns it as is.\n * This loader is used as a default one if more specific logic is not provided in an app config.\n *\n * @see `ImageLoader`\n * @see `NgOptimizedImage`\n */\nconst noopImageLoader = (config) => config.src;\n/**\n * Injection token that configures the image loader function.\n *\n * @see `ImageLoader`\n * @see `NgOptimizedImage`\n * @publicApi\n */\nconst IMAGE_LOADER = new InjectionToken('ImageLoader', {\n providedIn: 'root',\n factory: () => noopImageLoader,\n});\n/**\n * Internal helper function that makes it easier to introduce custom image loaders for the\n * `NgOptimizedImage` directive. It is enough to specify a URL builder function to obtain full DI\n * configuration for a given loader: a DI token corresponding to the actual loader function, plus DI\n * tokens managing preconnect check functionality.\n * @param buildUrlFn a function returning a full URL based on loader's configuration\n * @param exampleUrls example of full URLs for a given loader (used in error messages)\n * @returns a set of DI providers corresponding to the configured image loader\n */\nfunction createImageLoader(buildUrlFn, exampleUrls) {\n return function provideImageLoader(path) {\n if (!isValidPath(path)) {\n throwInvalidPathError(path, exampleUrls || []);\n }\n // The trailing / is stripped (if provided) to make URL construction (concatenation) easier in\n // the individual loader functions.\n path = normalizePath(path);\n const loaderFn = (config) => {\n if (isAbsoluteUrl(config.src)) {\n // Image loader functions expect an image file name (e.g. `my-image.png`)\n // or a relative path + a file name (e.g. `/a/b/c/my-image.png`) as an input,\n // so the final absolute URL can be constructed.\n // When an absolute URL is provided instead - the loader can not\n // build a final URL, thus the error is thrown to indicate that.\n throwUnexpectedAbsoluteUrlError(path, config.src);\n }\n return buildUrlFn(path, Object.assign(Object.assign({}, config), { src: normalizeSrc(config.src) }));\n };\n const providers = [{ provide: IMAGE_LOADER, useValue: loaderFn }];\n return providers;\n };\n}\nfunction throwInvalidPathError(path, exampleUrls) {\n throw new ɵRuntimeError(2959 /* INVALID_LOADER_ARGUMENTS */, ngDevMode &&\n `Image loader has detected an invalid path (\\`${path}\\`). ` +\n `To fix this, supply a path using one of the following formats: ${exampleUrls.join(' or ')}`);\n}\nfunction throwUnexpectedAbsoluteUrlError(path, url) {\n throw new ɵRuntimeError(2959 /* INVALID_LOADER_ARGUMENTS */, ngDevMode &&\n `Image loader has detected a \\`\\` tag with an invalid \\`ngSrc\\` attribute: ${url}. ` +\n `This image loader expects \\`ngSrc\\` to be a relative URL - ` +\n `however the provided value is an absolute URL. ` +\n `To fix this, provide \\`ngSrc\\` as a path relative to the base URL ` +\n `configured for this loader (\\`${path}\\`).`);\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 * Name and URL tester for Cloudinary.\n */\nconst cloudinaryLoaderInfo = {\n name: 'Cloudinary',\n testUrl: isCloudinaryUrl\n};\nconst CLOUDINARY_LOADER_REGEX = /https?\\:\\/\\/[^\\/]+\\.cloudinary\\.com\\/.+/;\n/**\n * Tests whether a URL is from Cloudinary CDN.\n */\nfunction isCloudinaryUrl(url) {\n return CLOUDINARY_LOADER_REGEX.test(url);\n}\n/**\n * Function that generates an ImageLoader for Cloudinary and turns it into an Angular provider.\n *\n * @param path Base URL of your Cloudinary images\n * This URL should match one of the following formats:\n * https://res.cloudinary.com/mysite\n * https://mysite.cloudinary.com\n * https://subdomain.mysite.com\n * @returns Set of providers to configure the Cloudinary loader.\n *\n * @publicApi\n */\nconst provideCloudinaryLoader = createImageLoader(createCloudinaryUrl, ngDevMode ?\n [\n 'https://res.cloudinary.com/mysite', 'https://mysite.cloudinary.com',\n 'https://subdomain.mysite.com'\n ] :\n undefined);\n// Exported for testing purposes in backport only. Not to be accessed except in unit tests.\nfunction createCloudinaryUrl(path, config) {\n // Cloudinary image URLformat:\n // https://cloudinary.com/documentation/image_transformations#transformation_url_structure\n // Example of a Cloudinary image URL:\n // https://res.cloudinary.com/mysite/image/upload/c_scale,f_auto,q_auto,w_600/marketing/tile-topics-m.png\n let params = `f_auto,q_auto`; // sets image format and quality to \"auto\"\n if (config.width) {\n params += `,w_${config.width}`;\n }\n return `${path}/image/upload/${params}/${config.src}`;\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 * Name and URL tester for ImageKit.\n */\nconst imageKitLoaderInfo = {\n name: 'ImageKit',\n testUrl: isImageKitUrl\n};\nconst IMAGE_KIT_LOADER_REGEX = /https?\\:\\/\\/[^\\/]+\\.imagekit\\.io\\/.+/;\n/**\n * Tests whether a URL is from ImageKit CDN.\n */\nfunction isImageKitUrl(url) {\n return IMAGE_KIT_LOADER_REGEX.test(url);\n}\n/**\n * Function that generates an ImageLoader for ImageKit and turns it into an Angular provider.\n *\n * @param path Base URL of your ImageKit images\n * This URL should match one of the following formats:\n * https://ik.imagekit.io/myaccount\n * https://subdomain.mysite.com\n * @returns Set of providers to configure the ImageKit loader.\n *\n * @publicApi\n */\nconst provideImageKitLoader = createImageLoader(createImagekitUrl, ngDevMode ? ['https://ik.imagekit.io/mysite', 'https://subdomain.mysite.com'] : undefined);\nfunction createImagekitUrl(path, config) {\n // Example of an ImageKit image URL:\n // https://ik.imagekit.io/demo/tr:w-300,h-300/medium_cafe_B1iTdD0C.jpg\n let params = `tr:q-auto`; // applies the \"auto quality\" transformation\n if (config.width) {\n params += `,w-${config.width}`;\n }\n return `${path}/${params}/${config.src}`;\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 * Name and URL tester for Imgix.\n */\nconst imgixLoaderInfo = {\n name: 'Imgix',\n testUrl: isImgixUrl\n};\nconst IMGIX_LOADER_REGEX = /https?\\:\\/\\/[^\\/]+\\.imgix\\.net\\/.+/;\n/**\n * Tests whether a URL is from Imgix CDN.\n */\nfunction isImgixUrl(url) {\n return IMGIX_LOADER_REGEX.test(url);\n}\n/**\n * Function that generates an ImageLoader for Imgix and turns it into an Angular provider.\n *\n * @param path path to the desired Imgix origin,\n * e.g. https://somepath.imgix.net or https://images.mysite.com\n * @returns Set of providers to configure the Imgix loader.\n *\n * @publicApi\n */\nconst provideImgixLoader = createImageLoader(createImgixUrl, ngDevMode ? ['https://somepath.imgix.net/'] : undefined);\n// Exported for testing purposes in backport only. Not to be accessed except in unit tests.\nfunction createImgixUrl(path, config) {\n const url = new URL(`${path}/${config.src}`);\n // This setting ensures the smallest allowable format is set.\n url.searchParams.set('auto', 'format');\n if (config.width) {\n url.searchParams.set('w', config.width.toString());\n }\n return url.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 * Asserts that the application is in development mode. Throws an error if the application is in\n * production mode. This assert can be used to make sure that there is no dev-mode code invoked in\n * the prod mode accidentally.\n */\nfunction assertDevMode(checkName) {\n if (!ngDevMode) {\n throw new ɵRuntimeError(2958 /* UNEXPECTED_DEV_MODE_CHECK_IN_PROD_MODE */, `Unexpected invocation of the ${checkName} in the prod mode. ` +\n `Please make sure that the prod mode is enabled for production builds.`);\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 * Observer that detects whether an image with `NgOptimizedImage`\n * is treated as a Largest Contentful Paint (LCP) element. If so,\n * asserts that the image has the `priority` attribute.\n *\n * Note: this is a dev-mode only class and it does not appear in prod bundles,\n * thus there is no `ngDevMode` use in the code.\n *\n * Based on https://web.dev/lcp/#measure-lcp-in-javascript.\n */\nclass LCPImageObserver {\n constructor() {\n // Map of full image URLs -> original `ngSrc` values.\n this.images = new Map();\n // Keep track of images for which `console.warn` was produced.\n this.alreadyWarned = new Set();\n this.window = null;\n this.observer = null;\n assertDevMode('LCP checker');\n const win = inject(DOCUMENT).defaultView;\n if (typeof win !== 'undefined' && typeof PerformanceObserver !== 'undefined') {\n this.window = win;\n this.observer = this.initPerformanceObserver();\n }\n }\n /**\n * Inits PerformanceObserver and subscribes to LCP events.\n * Based on https://web.dev/lcp/#measure-lcp-in-javascript\n */\n initPerformanceObserver() {\n const observer = new PerformanceObserver((entryList) => {\n var _a, _b;\n const entries = entryList.getEntries();\n if (entries.length === 0)\n return;\n // We use the latest entry produced by the `PerformanceObserver` as the best\n // signal on which element is actually an LCP one. As an example, the first image to load on\n // a page, by virtue of being the only thing on the page so far, is often a LCP candidate\n // and gets reported by PerformanceObserver, but isn't necessarily the LCP element.\n const lcpElement = entries[entries.length - 1];\n // Cast to `any` due to missing `element` on the `LargestContentfulPaint` type of entry.\n // See https://developer.mozilla.org/en-US/docs/Web/API/LargestContentfulPaint\n const imgSrc = (_b = (_a = lcpElement.element) === null || _a === void 0 ? void 0 : _a.src) !== null && _b !== void 0 ? _b : '';\n // Exclude `data:` and `blob:` URLs, since they are not supported by the directive.\n if (imgSrc.startsWith('data:') || imgSrc.startsWith('blob:'))\n return;\n const imgNgSrc = this.images.get(imgSrc);\n if (imgNgSrc && !this.alreadyWarned.has(imgSrc)) {\n this.alreadyWarned.add(imgSrc);\n logMissingPriorityWarning(imgSrc);\n }\n });\n observer.observe({ type: 'largest-contentful-paint', buffered: true });\n return observer;\n }\n registerImage(rewrittenSrc, originalNgSrc) {\n if (!this.observer)\n return;\n this.images.set(getUrl(rewrittenSrc, this.window).href, originalNgSrc);\n }\n unregisterImage(rewrittenSrc) {\n if (!this.observer)\n return;\n this.images.delete(getUrl(rewrittenSrc, this.window).href);\n }\n ngOnDestroy() {\n if (!this.observer)\n return;\n this.observer.disconnect();\n this.images.clear();\n this.alreadyWarned.clear();\n }\n}\nLCPImageObserver.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: LCPImageObserver, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nLCPImageObserver.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: LCPImageObserver, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: LCPImageObserver, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return []; } });\nfunction logMissingPriorityWarning(ngSrc) {\n const directiveDetails = imgDirectiveDetails(ngSrc);\n console.warn(ɵformatRuntimeError(2955 /* LCP_IMG_MISSING_PRIORITY */, `${directiveDetails} this image is the Largest Contentful Paint (LCP) ` +\n `element but was not marked \"priority\". This image should be marked ` +\n `\"priority\" in order to prioritize its loading. ` +\n `To fix this, add the \"priority\" attribute.`));\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// Set of origins that are always excluded from the preconnect checks.\nconst INTERNAL_PRECONNECT_CHECK_BLOCKLIST = new Set(['localhost', '127.0.0.1', '0.0.0.0']);\n/**\n * Injection token to configure which origins should be excluded\n * from the preconnect checks. It can either be a single string or an array of strings\n * to represent a group of origins, for example:\n *\n * ```typescript\n * {provide: PRECONNECT_CHECK_BLOCKLIST, useValue: 'https://your-domain.com'}\n * ```\n *\n * or:\n *\n * ```typescript\n * {provide: PRECONNECT_CHECK_BLOCKLIST,\n * useValue: ['https://your-domain-1.com', 'https://your-domain-2.com']}\n * ```\n *\n * @publicApi\n */\nconst PRECONNECT_CHECK_BLOCKLIST = new InjectionToken('PRECONNECT_CHECK_BLOCKLIST');\n/**\n * Contains the logic to detect whether an image, marked with the \"priority\" attribute\n * has a corresponding `` tag in the `document.head`.\n *\n * Note: this is a dev-mode only class, which should not appear in prod bundles,\n * thus there is no `ngDevMode` use in the code.\n */\nclass PreconnectLinkChecker {\n constructor() {\n /**\n * Set of tags found on this page.\n * The `null` value indicates that there was no DOM query operation performed.\n */\n this.preconnectLinks = null;\n /*\n * Keep track of all already seen origin URLs to avoid repeating the same check.\n */\n this.alreadySeen = new Set();\n this.window = null;\n this.blocklist = new Set(INTERNAL_PRECONNECT_CHECK_BLOCKLIST);\n this.document = inject(DOCUMENT);\n assertDevMode('preconnect link checker');\n const win = this.document.defaultView;\n if (typeof win !== 'undefined') {\n this.window = win;\n }\n const blocklist = inject(PRECONNECT_CHECK_BLOCKLIST, InjectFlags.Optional);\n if (blocklist) {\n this.populateBlocklist(blocklist);\n }\n }\n populateBlocklist(origins) {\n if (Array.isArray(origins)) {\n deepForEach(origins, origin => {\n this.blocklist.add(extractHostname(origin));\n });\n }\n else {\n this.blocklist.add(extractHostname(origins));\n }\n }\n /**\n * Checks that a preconnect resource hint exists in the head for the\n * given src.\n *\n * @param rewrittenSrc src formatted with loader\n * @param originalNgSrc ngSrc value\n */\n assertPreconnect(rewrittenSrc, originalNgSrc) {\n if (!this.window)\n return;\n const imgUrl = getUrl(rewrittenSrc, this.window);\n if (this.blocklist.has(imgUrl.hostname) || this.alreadySeen.has(imgUrl.origin))\n return;\n // Register this origin as seen, so we don't check it again later.\n this.alreadySeen.add(imgUrl.origin);\n if (!this.preconnectLinks) {\n // Note: we query for preconnect links only *once* and cache the results\n // for the entire lifespan of an application, since it's unlikely that the\n // list would change frequently. This allows to make sure there are no\n // performance implications of making extra DOM lookups for each image.\n this.preconnectLinks = this.queryPreconnectLinks();\n }\n if (!this.preconnectLinks.has(imgUrl.origin)) {\n console.warn(ɵformatRuntimeError(2956 /* PRIORITY_IMG_MISSING_PRECONNECT_TAG */, `${imgDirectiveDetails(originalNgSrc)} there is no preconnect tag present for this ` +\n `image. Preconnecting to the origin(s) that serve priority images ensures that these ` +\n `images are delivered as soon as possible. To fix this, please add the following ` +\n `element into the of the document:\\n` +\n ` `));\n }\n }\n queryPreconnectLinks() {\n const preconnectUrls = new Set();\n const selector = 'link[rel=preconnect]';\n const links = Array.from(this.document.querySelectorAll(selector));\n for (let link of links) {\n const url = getUrl(link.href, this.window);\n preconnectUrls.add(url.origin);\n }\n return preconnectUrls;\n }\n ngOnDestroy() {\n var _a;\n (_a = this.preconnectLinks) === null || _a === void 0 ? void 0 : _a.clear();\n this.alreadySeen.clear();\n }\n}\nPreconnectLinkChecker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: PreconnectLinkChecker, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nPreconnectLinkChecker.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: PreconnectLinkChecker, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: PreconnectLinkChecker, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return []; } });\n/**\n * Invokes a callback for each element in the array. Also invokes a callback\n * recursively for each nested array.\n */\nfunction deepForEach(input, fn) {\n for (let value of input) {\n Array.isArray(value) ? deepForEach(value, fn) : fn(value);\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 * In SSR scenarios, a preload `` element is generated for priority images.\n * Having a large number of preload tags may negatively affect the performance,\n * so we warn developers (by throwing an error) if the number of preloaded images\n * is above a certain threshold. This const specifies this threshold.\n */\nconst DEFAULT_PRELOADED_IMAGES_LIMIT = 5;\n/**\n * Helps to keep track of priority images that already have a corresponding\n * preload tag (to avoid generating multiple preload tags with the same URL).\n *\n * This Set tracks the original src passed into the `ngSrc` input not the src after it has been\n * run through the specified `IMAGE_LOADER`.\n */\nconst PRELOADED_IMAGES = new InjectionToken('NG_OPTIMIZED_PRELOADED_IMAGES', { providedIn: 'root', factory: () => new Set() });\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 Contains the logic needed to track and add preload link tags to the `` tag. It\n * will also track what images have already had preload link tags added so as to not duplicate link\n * tags.\n *\n * In dev mode this service will validate that the number of preloaded images does not exceed the\n * configured default preloaded images limit: {@link DEFAULT_PRELOADED_IMAGES_LIMIT}.\n */\nclass PreloadLinkCreator {\n constructor() {\n this.preloadedImages = inject(PRELOADED_IMAGES);\n this.document = inject(DOCUMENT);\n }\n /**\n * @description Add a preload `` to the `` of the `index.html` that is served from the\n * server while using Angular Universal and SSR to kick off image loads for high priority images.\n *\n * The `sizes` (passed in from the user) and `srcset` (parsed and formatted from `ngSrcset`)\n * properties used to set the corresponding attributes, `imagesizes` and `imagesrcset`\n * respectively, on the preload `` tag so that the correctly sized image is preloaded from\n * the CDN.\n *\n * {@link https://web.dev/preload-responsive-images/#imagesrcset-and-imagesizes}\n *\n * @param renderer The `Renderer2` passed in from the directive\n * @param src The original src of the image that is set on the `ngSrc` input.\n * @param srcset The parsed and formatted srcset created from the `ngSrcset` input\n * @param sizes The value of the `sizes` attribute passed in to the `` tag\n */\n createPreloadLinkTag(renderer, src, srcset, sizes) {\n if (ngDevMode) {\n if (this.preloadedImages.size >= DEFAULT_PRELOADED_IMAGES_LIMIT) {\n throw new ɵRuntimeError(2961 /* TOO_MANY_PRELOADED_IMAGES */, ngDevMode &&\n `The \\`NgOptimizedImage\\` directive has detected that more than ` +\n `${DEFAULT_PRELOADED_IMAGES_LIMIT} images were marked as priority. ` +\n `This might negatively affect an overall performance of the page. ` +\n `To fix this, remove the \"priority\" attribute from images with less priority.`);\n }\n }\n if (this.preloadedImages.has(src)) {\n return;\n }\n this.preloadedImages.add(src);\n const preload = renderer.createElement('link');\n renderer.setAttribute(preload, 'as', 'image');\n renderer.setAttribute(preload, 'href', src);\n renderer.setAttribute(preload, 'rel', 'preload');\n renderer.setAttribute(preload, 'fetchpriority', 'high');\n if (sizes) {\n renderer.setAttribute(preload, 'imageSizes', sizes);\n }\n if (srcset) {\n renderer.setAttribute(preload, 'imageSrcset', srcset);\n }\n renderer.appendChild(this.document.head, preload);\n }\n}\nPreloadLinkCreator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: PreloadLinkCreator, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nPreloadLinkCreator.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: PreloadLinkCreator, providedIn: 'root' });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: PreloadLinkCreator, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], ctorParameters: function () { return []; } });\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 * When a Base64-encoded image is passed as an input to the `NgOptimizedImage` directive,\n * an error is thrown. The image content (as a string) might be very long, thus making\n * it hard to read an error message if the entire string is included. This const defines\n * the number of characters that should be included into the error message. The rest\n * of the content is truncated.\n */\nconst BASE64_IMG_MAX_LENGTH_IN_ERROR = 50;\n/**\n * RegExpr to determine whether a src in a srcset is using width descriptors.\n * Should match something like: \"100w, 200w\".\n */\nconst VALID_WIDTH_DESCRIPTOR_SRCSET = /^((\\s*\\d+w\\s*(,|$)){1,})$/;\n/**\n * RegExpr to determine whether a src in a srcset is using density descriptors.\n * Should match something like: \"1x, 2x, 50x\". Also supports decimals like \"1.5x, 1.50x\".\n */\nconst VALID_DENSITY_DESCRIPTOR_SRCSET = /^((\\s*\\d+(\\.\\d+)?x\\s*(,|$)){1,})$/;\n/**\n * Srcset values with a density descriptor higher than this value will actively\n * throw an error. Such densities are not permitted as they cause image sizes\n * to be unreasonably large and slow down LCP.\n */\nconst ABSOLUTE_SRCSET_DENSITY_CAP = 3;\n/**\n * Used only in error message text to communicate best practices, as we will\n * only throw based on the slightly more conservative ABSOLUTE_SRCSET_DENSITY_CAP.\n */\nconst RECOMMENDED_SRCSET_DENSITY_CAP = 2;\n/**\n * Used in generating automatic density-based srcsets\n */\nconst DENSITY_SRCSET_MULTIPLIERS = [1, 2];\n/**\n * Used to determine which breakpoints to use on full-width images\n */\nconst VIEWPORT_BREAKPOINT_CUTOFF = 640;\n/**\n * Used to determine whether two aspect ratios are similar in value.\n */\nconst ASPECT_RATIO_TOLERANCE = .1;\n/**\n * Used to determine whether the image has been requested at an overly\n * large size compared to the actual rendered image size (after taking\n * into account a typical device pixel ratio). In pixels.\n */\nconst OVERSIZED_IMAGE_TOLERANCE = 1000;\n/**\n * Used to limit automatic srcset generation of very large sources for\n * fixed-size images. In pixels.\n */\nconst FIXED_SRCSET_WIDTH_LIMIT = 1920;\nconst FIXED_SRCSET_HEIGHT_LIMIT = 1080;\n/** Info about built-in loaders we can test for. */\nconst BUILT_IN_LOADERS = [imgixLoaderInfo, imageKitLoaderInfo, cloudinaryLoaderInfo];\nconst defaultConfig = {\n breakpoints: [16, 32, 48, 64, 96, 128, 256, 384, 640, 750, 828, 1080, 1200, 1920, 2048, 3840],\n};\n/**\n * Injection token that configures the image optimized image functionality.\n *\n * @see `NgOptimizedImage`\n * @publicApi\n */\nconst IMAGE_CONFIG = new InjectionToken('ImageConfig', { providedIn: 'root', factory: () => defaultConfig });\n/**\n * @ngModule NgOptimizedImageModule\n *\n * @description\n *\n * Directive that improves image loading performance by enforcing best practices.\n *\n * `NgOptimizedImage` ensures that the loading of the Largest Contentful Paint (LCP) image is\n * prioritized by:\n * - Automatically setting the `fetchpriority` attribute on the `` tag\n * - Lazy loading non-priority images by default\n * - Asserting that there is a corresponding preconnect link tag in the document head\n *\n * In addition, the directive:\n * - Generates appropriate asset URLs if a corresponding `ImageLoader` function is provided\n * - Automatically generates a srcset\n * - Requires that `width` and `height` are set\n * - Warns if `width` or `height` have been set incorrectly\n * - Warns if the image will be visually distorted when rendered\n *\n * @usageNotes\n *\n * Follow the steps below to enable and use the directive:\n * 1. Import it into the necessary NgModule Component.\n * 2. Optionally provide an `ImageLoader` if you use an image hosting service.\n * 3. Update the necessary `` tags in templates and replace `src` attributes with `ngSrc`.\n * Using a `ngSrc` allows the directive to control when the `src` gets set, which triggers an image\n * download.\n *\n * Step 1: import the `NgOptimizedImage` directive.\n *\n * ```typescript\n * import { NgOptimizedImageModule } from '@angular/common';\n *\n * // Include it into the necessary NgModule\n * @NgModule({\n * imports: [NgOptimizedImageModule],\n * })\n * class AppModule {}\n *\n *\n * Step 2: configure a loader.\n *\n * To use the **default loader**: no additional code changes are necessary. The URL returned by the\n * generic loader will always match the value of \"src\". In other words, this loader applies no\n * transformations to the resource URL and the value of the `ngSrc` attribute will be used as is.\n *\n * To use an existing loader for a **third-party image service**: add the provider factory for your\n * chosen service to the `providers` array. In the example below, the Imgix loader is used:\n *\n * ```typescript\n * import {provideImgixLoader} from '@angular/common';\n *\n * // Call the function and add the result to the `providers` array:\n * providers: [\n * provideImgixLoader(\"https://my.base.url/\"),\n * ],\n * ```\n *\n * The `NgOptimizedImage` directive provides the following functions:\n * - `provideCloudflareLoader`\n * - `provideCloudinaryLoader`\n * - `provideImageKitLoader`\n * - `provideImgixLoader`\n *\n * If you use a different image provider, you can create a custom loader function as described\n * below.\n *\n * To use a **custom loader**: provide your loader function as a value for the `IMAGE_LOADER` DI\n * token.\n *\n * ```typescript\n * import {IMAGE_LOADER, ImageLoaderConfig} from '@angular/common';\n *\n * // Configure the loader using the `IMAGE_LOADER` token.\n * providers: [\n * {\n * provide: IMAGE_LOADER,\n * useValue: (config: ImageLoaderConfig) => {\n * return `https://example.com/${config.src}-${config.width}.jpg}`;\n * }\n * },\n * ],\n * ```\n *\n * Step 3: update `` tags in templates to use `ngSrc` instead of `src`.\n *\n * ```\n * \n * ```\n *\n * @publicApi\n */\nclass NgOptimizedImage {\n constructor(imageLoader, config, renderer, elementRef, injector, platformId, preloadLinkChecker) {\n this.imageLoader = imageLoader;\n this.config = config;\n this.renderer = renderer;\n this.elementRef = elementRef;\n this.injector = injector;\n this.platformId = platformId;\n this.preloadLinkChecker = preloadLinkChecker;\n /**\n * Calculate the rewritten `src` once and store it.\n * This is needed to avoid repetitive calculations and make sure the directive cleanup in the\n * `ngOnDestroy` does not rely on the `IMAGE_LOADER` logic (which in turn can rely on some other\n * instance that might be already destroyed).\n */\n this._renderedSrc = null;\n this._priority = false;\n this._disableOptimizedSrcset = false;\n this._fill = false;\n this.config = processConfig(this.config);\n this.imgElement = this.elementRef.nativeElement;\n this.lcpObserver = ngDevMode ? this.injector.get(LCPImageObserver) : null;\n }\n /**\n * For responsive images: the intrinsic width of the image in pixels.\n * For fixed size images: the desired rendered width of the image in pixels.\n */\n set width(value) {\n ngDevMode && assertGreaterThanZero(this, value, 'width');\n this._width = inputToInteger(value);\n }\n get width() {\n return this._width;\n }\n /**\n * For responsive images: the intrinsic height of the image in pixels.\n * For fixed size images: the desired rendered height of the image in pixels.* The intrinsic\n * height of the image in pixels.\n */\n set height(value) {\n ngDevMode && assertGreaterThanZero(this, value, 'height');\n this._height = inputToInteger(value);\n }\n get height() {\n return this._height;\n }\n /**\n * Indicates whether this image should have a high priority.\n */\n set priority(value) {\n this._priority = inputToBoolean(value);\n }\n get priority() {\n return this._priority;\n }\n /**\n * Disables automatic srcset generation for this image.\n */\n set disableOptimizedSrcset(value) {\n this._disableOptimizedSrcset = inputToBoolean(value);\n }\n get disableOptimizedSrcset() {\n return this._disableOptimizedSrcset;\n }\n /**\n * Sets the image to \"fill mode\", which eliminates the height/width requirement and adds\n * styles such that the image fills its containing element.\n */\n set fill(value) {\n this._fill = inputToBoolean(value);\n }\n get fill() {\n return this._fill;\n }\n /** @nodoc */\n ngOnInit() {\n if (ngDevMode) {\n assertNonEmptyInput(this, 'ngSrc', this.ngSrc);\n assertValidNgSrcset(this, this.ngSrcset);\n assertNoConflictingSrc(this);\n if (this.ngSrcset) {\n assertNoConflictingSrcset(this);\n }\n assertNotBase64Image(this);\n assertNotBlobUrl(this);\n if (this.fill) {\n assertEmptyWidthAndHeight(this);\n assertNonZeroRenderedHeight(this, this.imgElement, this.renderer);\n }\n else {\n assertNonEmptyWidthAndHeight(this);\n // Only check for distorted images when not in fill mode, where\n // images may be intentionally stretched, cropped or letterboxed.\n assertNoImageDistortion(this, this.imgElement, this.renderer);\n }\n assertValidLoadingInput(this);\n if (!this.ngSrcset) {\n assertNoComplexSizes(this);\n }\n assertNotMissingBuiltInLoader(this.ngSrc, this.imageLoader);\n assertNoNgSrcsetWithoutLoader(this, this.imageLoader);\n assertNoLoaderParamsWithoutLoader(this, this.imageLoader);\n if (this.priority) {\n const checker = this.injector.get(PreconnectLinkChecker);\n checker.assertPreconnect(this.getRewrittenSrc(), this.ngSrc);\n }\n else {\n // Monitor whether an image is an LCP element only in case\n // the `priority` attribute is missing. Otherwise, an image\n // has the necessary settings and no extra checks are required.\n if (this.lcpObserver !== null) {\n const ngZone = this.injector.get(NgZone);\n ngZone.runOutsideAngular(() => {\n this.lcpObserver.registerImage(this.getRewrittenSrc(), this.ngSrc);\n });\n }\n }\n }\n this.setHostAttributes();\n }\n setHostAttributes() {\n // Must set width/height explicitly in case they are bound (in which case they will\n // only be reflected and not found by the browser)\n if (this.fill) {\n if (!this.sizes) {\n this.sizes = '100vw';\n }\n this.renderer.setStyle(this.imgElement, 'position', 'absolute');\n this.renderer.setStyle(this.imgElement, 'width', '100%');\n this.renderer.setStyle(this.imgElement, 'height', '100%');\n this.renderer.setStyle(this.imgElement, 'inset', '0px');\n }\n else {\n this.setHostAttribute('width', this.width.toString());\n this.setHostAttribute('height', this.height.toString());\n }\n this.setHostAttribute('loading', this.getLoadingBehavior());\n this.setHostAttribute('fetchpriority', this.getFetchPriority());\n // The `data-ng-img` attribute flags an image as using the directive, to allow\n // for analysis of the directive's performance.\n this.setHostAttribute('ng-img', 'true');\n // The `src` and `srcset` attributes should be set last since other attributes\n // could affect the image's loading behavior.\n const rewrittenSrc = this.getRewrittenSrc();\n this.setHostAttribute('src', rewrittenSrc);\n let rewrittenSrcset = undefined;\n if (this.sizes) {\n this.setHostAttribute('sizes', this.sizes);\n }\n if (this.ngSrcset) {\n rewrittenSrcset = this.getRewrittenSrcset();\n }\n else if (this.shouldGenerateAutomaticSrcset()) {\n rewrittenSrcset = this.getAutomaticSrcset();\n }\n if (rewrittenSrcset) {\n this.setHostAttribute('srcset', rewrittenSrcset);\n }\n if (isPlatformServer(this.platformId) && this.priority) {\n this.preloadLinkChecker.createPreloadLinkTag(this.renderer, rewrittenSrc, rewrittenSrcset, this.sizes);\n }\n }\n /** @nodoc */\n ngOnChanges(changes) {\n if (ngDevMode) {\n assertNoPostInitInputChange(this, changes, [\n 'ngSrc',\n 'ngSrcset',\n 'width',\n 'height',\n 'priority',\n 'fill',\n 'loading',\n 'sizes',\n 'loaderParams',\n 'disableOptimizedSrcset',\n ]);\n }\n }\n callImageLoader(configWithoutCustomParams) {\n let augmentedConfig = configWithoutCustomParams;\n if (this.loaderParams) {\n augmentedConfig.loaderParams = this.loaderParams;\n }\n return this.imageLoader(augmentedConfig);\n }\n getLoadingBehavior() {\n if (!this.priority && this.loading !== undefined) {\n return this.loading;\n }\n return this.priority ? 'eager' : 'lazy';\n }\n getFetchPriority() {\n return this.priority ? 'high' : 'auto';\n }\n getRewrittenSrc() {\n // ImageLoaderConfig supports setting a width property. However, we're not setting width here\n // because if the developer uses rendered width instead of intrinsic width in the HTML width\n // attribute, the image requested may be too small for 2x+ screens.\n if (!this._renderedSrc) {\n const imgConfig = { src: this.ngSrc };\n // Cache calculated image src to reuse it later in the code.\n this._renderedSrc = this.callImageLoader(imgConfig);\n }\n return this._renderedSrc;\n }\n getRewrittenSrcset() {\n const widthSrcSet = VALID_WIDTH_DESCRIPTOR_SRCSET.test(this.ngSrcset);\n const finalSrcs = this.ngSrcset.split(',').filter(src => src !== '').map(srcStr => {\n srcStr = srcStr.trim();\n const width = widthSrcSet ? parseFloat(srcStr) : parseFloat(srcStr) * this.width;\n return `${this.callImageLoader({ src: this.ngSrc, width })} ${srcStr}`;\n });\n return finalSrcs.join(', ');\n }\n getAutomaticSrcset() {\n if (this.sizes) {\n return this.getResponsiveSrcset();\n }\n else {\n return this.getFixedSrcset();\n }\n }\n getResponsiveSrcset() {\n var _a;\n const { breakpoints } = this.config;\n let filteredBreakpoints = breakpoints;\n if (((_a = this.sizes) === null || _a === void 0 ? void 0 : _a.trim()) === '100vw') {\n // Since this is a full-screen-width image, our srcset only needs to include\n // breakpoints with full viewport widths.\n filteredBreakpoints = breakpoints.filter(bp => bp >= VIEWPORT_BREAKPOINT_CUTOFF);\n }\n const finalSrcs = filteredBreakpoints.map(bp => `${this.callImageLoader({ src: this.ngSrc, width: bp })} ${bp}w`);\n return finalSrcs.join(', ');\n }\n getFixedSrcset() {\n const finalSrcs = DENSITY_SRCSET_MULTIPLIERS.map(multiplier => {\n const imgUrl = this.callImageLoader({ src: this.ngSrc, width: this.width * multiplier });\n return `${imgUrl} ${multiplier}x`;\n });\n return finalSrcs.join(', ');\n }\n shouldGenerateAutomaticSrcset() {\n return !this._disableOptimizedSrcset && !this.srcset && this.imageLoader !== noopImageLoader &&\n !(this.width > FIXED_SRCSET_WIDTH_LIMIT || this.height > FIXED_SRCSET_HEIGHT_LIMIT);\n }\n /** @nodoc */\n ngOnDestroy() {\n if (ngDevMode) {\n if (!this.priority && this._renderedSrc !== null && this.lcpObserver !== null) {\n this.lcpObserver.unregisterImage(this._renderedSrc);\n }\n }\n }\n setHostAttribute(name, value) {\n this.renderer.setAttribute(this.imgElement, name, value);\n }\n}\nNgOptimizedImage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgOptimizedImage, deps: [{ token: IMAGE_LOADER }, { token: IMAGE_CONFIG }, { token: Renderer2 }, { token: ElementRef }, { token: Injector }, { token: PLATFORM_ID }, { token: PreloadLinkCreator }], target: i0.ɵɵFactoryTarget.Directive });\nNgOptimizedImage.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.4.0\", type: NgOptimizedImage, selector: \"img[ngSrc]\", inputs: { ngSrc: \"ngSrc\", ngSrcset: \"ngSrcset\", sizes: \"sizes\", width: \"width\", height: \"height\", loading: \"loading\", priority: \"priority\", loaderParams: \"loaderParams\", disableOptimizedSrcset: \"disableOptimizedSrcset\", fill: \"fill\", src: \"src\", srcset: \"srcset\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgOptimizedImage, decorators: [{\n type: Directive,\n args: [{ selector: 'img[ngSrc]' }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Inject,\n args: [IMAGE_LOADER]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [IMAGE_CONFIG]\n }] }, { type: i0.Renderer2, decorators: [{\n type: Inject,\n args: [Renderer2]\n }] }, { type: i0.ElementRef, decorators: [{\n type: Inject,\n args: [ElementRef]\n }] }, { type: i0.Injector, decorators: [{\n type: Inject,\n args: [Injector]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: PreloadLinkCreator, decorators: [{\n type: Inject,\n args: [PreloadLinkCreator]\n }] }];\n }, propDecorators: { ngSrc: [{\n type: Input\n }], ngSrcset: [{\n type: Input\n }], sizes: [{\n type: Input\n }], width: [{\n type: Input\n }], height: [{\n type: Input\n }], loading: [{\n type: Input\n }], priority: [{\n type: Input\n }], loaderParams: [{\n type: Input\n }], disableOptimizedSrcset: [{\n type: Input\n }], fill: [{\n type: Input\n }], src: [{\n type: Input\n }], srcset: [{\n type: Input\n }] } });\n/***** Helpers *****/\n/**\n * Convert input value to integer.\n */\nfunction inputToInteger(value) {\n return typeof value === 'string' ? parseInt(value, 10) : value;\n}\n/**\n * Convert input value to boolean.\n */\nfunction inputToBoolean(value) {\n return value != null && `${value}` !== 'false';\n}\n/**\n * Sorts provided config breakpoints and uses defaults.\n */\nfunction processConfig(config) {\n let sortedBreakpoints = {};\n if (config.breakpoints) {\n sortedBreakpoints.breakpoints = config.breakpoints.sort((a, b) => a - b);\n }\n return Object.assign({}, defaultConfig, config, sortedBreakpoints);\n}\n/***** Assert functions *****/\n/**\n * Verifies that there is no `src` set on a host element.\n */\nfunction assertNoConflictingSrc(dir) {\n if (dir.src) {\n throw new ɵRuntimeError(2950 /* UNEXPECTED_SRC_ATTR */, `${imgDirectiveDetails(dir.ngSrc)} both \\`src\\` and \\`ngSrc\\` have been set. ` +\n `Supplying both of these attributes breaks lazy loading. ` +\n `The NgOptimizedImage directive sets \\`src\\` itself based on the value of \\`ngSrc\\`. ` +\n `To fix this, please remove the \\`src\\` attribute.`);\n }\n}\n/**\n * Verifies that there is no `srcset` set on a host element.\n */\nfunction assertNoConflictingSrcset(dir) {\n if (dir.srcset) {\n throw new ɵRuntimeError(2951 /* UNEXPECTED_SRCSET_ATTR */, `${imgDirectiveDetails(dir.ngSrc)} both \\`srcset\\` and \\`ngSrcset\\` have been set. ` +\n `Supplying both of these attributes breaks lazy loading. ` +\n `The NgOptimizedImage directive sets \\`srcset\\` itself based on the value of ` +\n `\\`ngSrcset\\`. To fix this, please remove the \\`srcset\\` attribute.`);\n }\n}\n/**\n * Verifies that the `ngSrc` is not a Base64-encoded image.\n */\nfunction assertNotBase64Image(dir) {\n let ngSrc = dir.ngSrc.trim();\n if (ngSrc.startsWith('data:')) {\n if (ngSrc.length > BASE64_IMG_MAX_LENGTH_IN_ERROR) {\n ngSrc = ngSrc.substring(0, BASE64_IMG_MAX_LENGTH_IN_ERROR) + '...';\n }\n throw new ɵRuntimeError(2952 /* INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc, false)} \\`ngSrc\\` is a Base64-encoded string ` +\n `(${ngSrc}). NgOptimizedImage does not support Base64-encoded strings. ` +\n `To fix this, disable the NgOptimizedImage directive for this element ` +\n `by removing \\`ngSrc\\` and using a standard \\`src\\` attribute instead.`);\n }\n}\n/**\n * Verifies that the 'sizes' only includes responsive values.\n */\nfunction assertNoComplexSizes(dir) {\n let sizes = dir.sizes;\n if (sizes === null || sizes === void 0 ? void 0 : sizes.match(/((\\)|,)\\s|^)\\d+px/)) {\n throw new ɵRuntimeError(2952 /* INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc, false)} \\`sizes\\` was set to a string including ` +\n `pixel values. For automatic \\`srcset\\` generation, \\`sizes\\` must only include responsive ` +\n `values, such as \\`sizes=\"50vw\"\\` or \\`sizes=\"(min-width: 768px) 50vw, 100vw\"\\`. ` +\n `To fix this, modify the \\`sizes\\` attribute, or provide your own \\`ngSrcset\\` value directly.`);\n }\n}\n/**\n * Verifies that the `ngSrc` is not a Blob URL.\n */\nfunction assertNotBlobUrl(dir) {\n const ngSrc = dir.ngSrc.trim();\n if (ngSrc.startsWith('blob:')) {\n throw new ɵRuntimeError(2952 /* INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} \\`ngSrc\\` was set to a blob URL (${ngSrc}). ` +\n `Blob URLs are not supported by the NgOptimizedImage directive. ` +\n `To fix this, disable the NgOptimizedImage directive for this element ` +\n `by removing \\`ngSrc\\` and using a regular \\`src\\` attribute instead.`);\n }\n}\n/**\n * Verifies that the input is set to a non-empty string.\n */\nfunction assertNonEmptyInput(dir, name, value) {\n const isString = typeof value === 'string';\n const isEmptyString = isString && value.trim() === '';\n if (!isString || isEmptyString) {\n throw new ɵRuntimeError(2952 /* INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} \\`${name}\\` has an invalid value ` +\n `(\\`${value}\\`). To fix this, change the value to a non-empty string.`);\n }\n}\n/**\n * Verifies that the `ngSrcset` is in a valid format, e.g. \"100w, 200w\" or \"1x, 2x\".\n */\nfunction assertValidNgSrcset(dir, value) {\n if (value == null)\n return;\n assertNonEmptyInput(dir, 'ngSrcset', value);\n const stringVal = value;\n const isValidWidthDescriptor = VALID_WIDTH_DESCRIPTOR_SRCSET.test(stringVal);\n const isValidDensityDescriptor = VALID_DENSITY_DESCRIPTOR_SRCSET.test(stringVal);\n if (isValidDensityDescriptor) {\n assertUnderDensityCap(dir, stringVal);\n }\n const isValidSrcset = isValidWidthDescriptor || isValidDensityDescriptor;\n if (!isValidSrcset) {\n throw new ɵRuntimeError(2952 /* INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} \\`ngSrcset\\` has an invalid value (\\`${value}\\`). ` +\n `To fix this, supply \\`ngSrcset\\` using a comma-separated list of one or more width ` +\n `descriptors (e.g. \"100w, 200w\") or density descriptors (e.g. \"1x, 2x\").`);\n }\n}\nfunction assertUnderDensityCap(dir, value) {\n const underDensityCap = value.split(',').every(num => num === '' || parseFloat(num) <= ABSOLUTE_SRCSET_DENSITY_CAP);\n if (!underDensityCap) {\n throw new ɵRuntimeError(2952 /* INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the \\`ngSrcset\\` contains an unsupported image density:` +\n `\\`${value}\\`. NgOptimizedImage generally recommends a max image density of ` +\n `${RECOMMENDED_SRCSET_DENSITY_CAP}x but supports image densities up to ` +\n `${ABSOLUTE_SRCSET_DENSITY_CAP}x. The human eye cannot distinguish between image densities ` +\n `greater than ${RECOMMENDED_SRCSET_DENSITY_CAP}x - which makes them unnecessary for ` +\n `most use cases. Images that will be pinch-zoomed are typically the primary use case for ` +\n `${ABSOLUTE_SRCSET_DENSITY_CAP}x images. Please remove the high density descriptor and try again.`);\n }\n}\n/**\n * Creates a `RuntimeError` instance to represent a situation when an input is set after\n * the directive has initialized.\n */\nfunction postInitInputChangeError(dir, inputName) {\n let reason;\n if (inputName === 'width' || inputName === 'height') {\n reason = `Changing \\`${inputName}\\` may result in different attribute value ` +\n `applied to the underlying image element and cause layout shifts on a page.`;\n }\n else {\n reason = `Changing the \\`${inputName}\\` would have no effect on the underlying ` +\n `image element, because the resource loading has already occurred.`;\n }\n return new ɵRuntimeError(2953 /* UNEXPECTED_INPUT_CHANGE */, `${imgDirectiveDetails(dir.ngSrc)} \\`${inputName}\\` was updated after initialization. ` +\n `The NgOptimizedImage directive will not react to this input change. ${reason} ` +\n `To fix this, either switch \\`${inputName}\\` to a static value ` +\n `or wrap the image element in an *ngIf that is gated on the necessary value.`);\n}\n/**\n * Verify that none of the listed inputs has changed.\n */\nfunction assertNoPostInitInputChange(dir, changes, inputs) {\n inputs.forEach(input => {\n const isUpdated = changes.hasOwnProperty(input);\n if (isUpdated && !changes[input].isFirstChange()) {\n if (input === 'ngSrc') {\n // When the `ngSrc` input changes, we detect that only in the\n // `ngOnChanges` hook, thus the `ngSrc` is already set. We use\n // `ngSrc` in the error message, so we use a previous value, but\n // not the updated one in it.\n dir = { ngSrc: changes[input].previousValue };\n }\n throw postInitInputChangeError(dir, input);\n }\n });\n}\n/**\n * Verifies that a specified input is a number greater than 0.\n */\nfunction assertGreaterThanZero(dir, inputValue, inputName) {\n const validNumber = typeof inputValue === 'number' && inputValue > 0;\n const validString = typeof inputValue === 'string' && /^\\d+$/.test(inputValue.trim()) && parseInt(inputValue) > 0;\n if (!validNumber && !validString) {\n throw new ɵRuntimeError(2952 /* INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} \\`${inputName}\\` has an invalid value ` +\n `(\\`${inputValue}\\`). To fix this, provide \\`${inputName}\\` ` +\n `as a number greater than 0.`);\n }\n}\n/**\n * Verifies that the rendered image is not visually distorted. Effectively this is checking:\n * - Whether the \"width\" and \"height\" attributes reflect the actual dimensions of the image.\n * - Whether image styling is \"correct\" (see below for a longer explanation).\n */\nfunction assertNoImageDistortion(dir, img, renderer) {\n const removeListenerFn = renderer.listen(img, 'load', () => {\n removeListenerFn();\n const renderedWidth = img.clientWidth;\n const renderedHeight = img.clientHeight;\n const renderedAspectRatio = renderedWidth / renderedHeight;\n const nonZeroRenderedDimensions = renderedWidth !== 0 && renderedHeight !== 0;\n const intrinsicWidth = img.naturalWidth;\n const intrinsicHeight = img.naturalHeight;\n const intrinsicAspectRatio = intrinsicWidth / intrinsicHeight;\n const suppliedWidth = dir.width;\n const suppliedHeight = dir.height;\n const suppliedAspectRatio = suppliedWidth / suppliedHeight;\n // Tolerance is used to account for the impact of subpixel rendering.\n // Due to subpixel rendering, the rendered, intrinsic, and supplied\n // aspect ratios of a correctly configured image may not exactly match.\n // For example, a `width=4030 height=3020` image might have a rendered\n // size of \"1062w, 796.48h\". (An aspect ratio of 1.334... vs. 1.333...)\n const inaccurateDimensions = Math.abs(suppliedAspectRatio - intrinsicAspectRatio) > ASPECT_RATIO_TOLERANCE;\n const stylingDistortion = nonZeroRenderedDimensions &&\n Math.abs(intrinsicAspectRatio - renderedAspectRatio) > ASPECT_RATIO_TOLERANCE;\n if (inaccurateDimensions) {\n console.warn(ɵformatRuntimeError(2952 /* INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the aspect ratio of the image does not match ` +\n `the aspect ratio indicated by the width and height attributes. ` +\n `\\nIntrinsic image size: ${intrinsicWidth}w x ${intrinsicHeight}h ` +\n `(aspect-ratio: ${intrinsicAspectRatio}). \\nSupplied width and height attributes: ` +\n `${suppliedWidth}w x ${suppliedHeight}h (aspect-ratio: ${suppliedAspectRatio}). ` +\n `\\nTo fix this, update the width and height attributes.`));\n }\n else if (stylingDistortion) {\n console.warn(ɵformatRuntimeError(2952 /* INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the aspect ratio of the rendered image ` +\n `does not match the image's intrinsic aspect ratio. ` +\n `\\nIntrinsic image size: ${intrinsicWidth}w x ${intrinsicHeight}h ` +\n `(aspect-ratio: ${intrinsicAspectRatio}). \\nRendered image size: ` +\n `${renderedWidth}w x ${renderedHeight}h (aspect-ratio: ` +\n `${renderedAspectRatio}). \\nThis issue can occur if \"width\" and \"height\" ` +\n `attributes are added to an image without updating the corresponding ` +\n `image styling. To fix this, adjust image styling. In most cases, ` +\n `adding \"height: auto\" or \"width: auto\" to the image styling will fix ` +\n `this issue.`));\n }\n else if (!dir.ngSrcset && nonZeroRenderedDimensions) {\n // If `ngSrcset` hasn't been set, sanity check the intrinsic size.\n const recommendedWidth = RECOMMENDED_SRCSET_DENSITY_CAP * renderedWidth;\n const recommendedHeight = RECOMMENDED_SRCSET_DENSITY_CAP * renderedHeight;\n const oversizedWidth = (intrinsicWidth - recommendedWidth) >= OVERSIZED_IMAGE_TOLERANCE;\n const oversizedHeight = (intrinsicHeight - recommendedHeight) >= OVERSIZED_IMAGE_TOLERANCE;\n if (oversizedWidth || oversizedHeight) {\n console.warn(ɵformatRuntimeError(2960 /* OVERSIZED_IMAGE */, `${imgDirectiveDetails(dir.ngSrc)} the intrinsic image is significantly ` +\n `larger than necessary. ` +\n `\\nRendered image size: ${renderedWidth}w x ${renderedHeight}h. ` +\n `\\nIntrinsic image size: ${intrinsicWidth}w x ${intrinsicHeight}h. ` +\n `\\nRecommended intrinsic image size: ${recommendedWidth}w x ${recommendedHeight}h. ` +\n `\\nNote: Recommended intrinsic image size is calculated assuming a maximum DPR of ` +\n `${RECOMMENDED_SRCSET_DENSITY_CAP}. To improve loading time, resize the image ` +\n `or consider using the \"ngSrcset\" and \"sizes\" attributes.`));\n }\n }\n });\n}\n/**\n * Verifies that a specified input is set.\n */\nfunction assertNonEmptyWidthAndHeight(dir) {\n let missingAttributes = [];\n if (dir.width === undefined)\n missingAttributes.push('width');\n if (dir.height === undefined)\n missingAttributes.push('height');\n if (missingAttributes.length > 0) {\n throw new ɵRuntimeError(2954 /* REQUIRED_INPUT_MISSING */, `${imgDirectiveDetails(dir.ngSrc)} these required attributes ` +\n `are missing: ${missingAttributes.map(attr => `\"${attr}\"`).join(', ')}. ` +\n `Including \"width\" and \"height\" attributes will prevent image-related layout shifts. ` +\n `To fix this, include \"width\" and \"height\" attributes on the image tag or turn on ` +\n `\"fill\" mode with the \\`fill\\` attribute.`);\n }\n}\n/**\n * Verifies that width and height are not set. Used in fill mode, where those attributes don't make\n * sense.\n */\nfunction assertEmptyWidthAndHeight(dir) {\n if (dir.width || dir.height) {\n throw new ɵRuntimeError(2952 /* INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the attributes \\`height\\` and/or \\`width\\` are present ` +\n `along with the \\`fill\\` attribute. Because \\`fill\\` mode causes an image to fill its containing ` +\n `element, the size attributes have no effect and should be removed.`);\n }\n}\n/**\n * Verifies that the rendered image has a nonzero height. If the image is in fill mode, provides\n * guidance that this can be caused by the containing element's CSS position property.\n */\nfunction assertNonZeroRenderedHeight(dir, img, renderer) {\n const removeListenerFn = renderer.listen(img, 'load', () => {\n removeListenerFn();\n const renderedHeight = img.clientHeight;\n if (dir.fill && renderedHeight === 0) {\n console.warn(ɵformatRuntimeError(2952 /* INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the height of the fill-mode image is zero. ` +\n `This is likely because the containing element does not have the CSS 'position' ` +\n `property set to one of the following: \"relative\", \"fixed\", or \"absolute\". ` +\n `To fix this problem, make sure the container element has the CSS 'position' ` +\n `property defined and the height of the element is not zero.`));\n }\n });\n}\n/**\n * Verifies that the `loading` attribute is set to a valid input &\n * is not used on priority images.\n */\nfunction assertValidLoadingInput(dir) {\n if (dir.loading && dir.priority) {\n throw new ɵRuntimeError(2952 /* INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the \\`loading\\` attribute ` +\n `was used on an image that was marked \"priority\". ` +\n `Setting \\`loading\\` on priority images is not allowed ` +\n `because these images will always be eagerly loaded. ` +\n `To fix this, remove the “loading” attribute from the priority image.`);\n }\n const validInputs = ['auto', 'eager', 'lazy'];\n if (typeof dir.loading === 'string' && !validInputs.includes(dir.loading)) {\n throw new ɵRuntimeError(2952 /* INVALID_INPUT */, `${imgDirectiveDetails(dir.ngSrc)} the \\`loading\\` attribute ` +\n `has an invalid value (\\`${dir.loading}\\`). ` +\n `To fix this, provide a valid value (\"lazy\", \"eager\", or \"auto\").`);\n }\n}\n/**\n * Warns if NOT using a loader (falling back to the generic loader) and\n * the image appears to be hosted on one of the image CDNs for which\n * we do have a built-in image loader. Suggests switching to the\n * built-in loader.\n *\n * @param ngSrc Value of the ngSrc attribute\n * @param imageLoader ImageLoader provided\n */\nfunction assertNotMissingBuiltInLoader(ngSrc, imageLoader) {\n if (imageLoader === noopImageLoader) {\n let builtInLoaderName = '';\n for (const loader of BUILT_IN_LOADERS) {\n if (loader.testUrl(ngSrc)) {\n builtInLoaderName = loader.name;\n break;\n }\n }\n if (builtInLoaderName) {\n console.warn(ɵformatRuntimeError(2962 /* MISSING_BUILTIN_LOADER */, `NgOptimizedImage: It looks like your images may be hosted on the ` +\n `${builtInLoaderName} CDN, but your app is not using Angular's ` +\n `built-in loader for that CDN. We recommend switching to use ` +\n `the built-in by calling \\`provide${builtInLoaderName}Loader()\\` ` +\n `in your \\`providers\\` and passing it your instance's base URL. ` +\n `If you don't want to use the built-in loader, define a custom ` +\n `loader function using IMAGE_LOADER to silence this warning.`));\n }\n }\n}\n/**\n * Warns if ngSrcset is present and no loader is configured (i.e. the default one is being used).\n */\nfunction assertNoNgSrcsetWithoutLoader(dir, imageLoader) {\n if (dir.ngSrcset && imageLoader === noopImageLoader) {\n console.warn(ɵformatRuntimeError(2963 /* MISSING_NECESSARY_LOADER */, `${imgDirectiveDetails(dir.ngSrc)} the \\`ngSrcset\\` attribute is present but ` +\n `no image loader is configured (i.e. the default one is being used), ` +\n `which would result in the same image being used for all configured sizes. ` +\n `To fix this, provide a loader or remove the \\`ngSrcset\\` attribute from the image.`));\n }\n}\n/**\n * Warns if loaderParams is present and no loader is configured (i.e. the default one is being\n * used).\n */\nfunction assertNoLoaderParamsWithoutLoader(dir, imageLoader) {\n if (dir.loaderParams && imageLoader === noopImageLoader) {\n console.warn(ɵformatRuntimeError(2963 /* MISSING_NECESSARY_LOADER */, `${imgDirectiveDetails(dir.ngSrc)} the \\`loaderParams\\` attribute is present but ` +\n `no image loader is configured (i.e. the default one is being used), ` +\n `which means that the loaderParams data will not be consumed and will not affect the URL. ` +\n `To fix this, provide a custom loader or remove the \\`loaderParams\\` attribute from the image.`));\n }\n}\n/**\n * This NgModule exports the `NgOptimizedImage` directive.\n * Import this module to enable the optimized image directive in your application.\n *\n * @publicApi\n * @deprecated In Angular v15, this NgModule is removed in favor of the NgOptimizedImage directive,\n * which is annotated as standalone.\n */\nclass NgOptimizedImageModule {\n}\nNgOptimizedImageModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgOptimizedImageModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nNgOptimizedImageModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgOptimizedImageModule, declarations: [NgOptimizedImage], exports: [NgOptimizedImage] });\nNgOptimizedImageModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgOptimizedImageModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgOptimizedImageModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [NgOptimizedImage],\n exports: [NgOptimizedImage],\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.4.0\", ngImport: i0, type: NgSwitch, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nNgSwitch.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.4.0\", type: NgSwitch, selector: \"[ngSwitch]\", inputs: { ngSwitch: \"ngSwitch\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", 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 * @nodoc\n */\n ngDoCheck() {\n this._view.enforceState(this.ngSwitch._matchCase(this.ngSwitchCase));\n }\n}\nNgSwitchCase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", 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.4.0\", type: NgSwitchCase, selector: \"[ngSwitchCase]\", inputs: { ngSwitchCase: \"ngSwitchCase\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgSwitchCase, decorators: [{\n type: Directive,\n args: [{ selector: '[ngSwitchCase]' }]\n }], ctorParameters: function () {\n return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: NgSwitch, decorators: [{\n type: Optional\n }, {\n type: Host\n }] }];\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.4.0\", 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.4.0\", type: NgSwitchDefault, selector: \"[ngSwitchDefault]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgSwitchDefault, decorators: [{\n type: Directive,\n args: [{ selector: '[ngSwitchDefault]' }]\n }], ctorParameters: function () {\n return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: NgSwitch, decorators: [{\n type: Optional\n }, {\n type: Host\n }] }];\n } });\nfunction throwNgSwitchProviderNotFoundError(attrName, directiveName) {\n throw new ɵRuntimeError(2000 /* PARENT_NG_SWITCH_NOT_FOUND */, `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.4.0\", ngImport: i0, type: NgPlural, deps: [{ token: NgLocalization }], target: i0.ɵɵFactoryTarget.Directive });\nNgPlural.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.4.0\", type: NgPlural, selector: \"[ngPlural]\", inputs: { ngPlural: \"ngPlural\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", 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.4.0\", 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.4.0\", type: NgPluralCase, selector: \"[ngPluralCase]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NgPluralCase, decorators: [{\n type: Directive,\n args: [{ selector: '[ngPluralCase]' }]\n }], ctorParameters: function () {\n 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/**\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.4.0\", 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.4.0\", type: NgStyle, selector: \"[ngStyle]\", inputs: { ngStyle: \"ngStyle\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", 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 /** @nodoc */\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.4.0\", ngImport: i0, type: NgTemplateOutlet, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgTemplateOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.4.0\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: { ngTemplateOutletContext: \"ngTemplateOutletContext\", ngTemplateOutlet: \"ngTemplateOutlet\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", 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 const errorMessage = (typeof ngDevMode === 'undefined' || ngDevMode) ?\n `InvalidPipeArgument: '${value}' for pipe '${ɵstringify(type)}'` :\n '';\n return new ɵRuntimeError(2100 /* INVALID_PIPE_ARGUMENT */, errorMessage);\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.4.0\", ngImport: i0, type: AsyncPipe, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Pipe });\nAsyncPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: AsyncPipe, name: \"async\", pure: false });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", 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.4.0\", ngImport: i0, type: LowerCasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nLowerCasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: LowerCasePipe, name: \"lowercase\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", 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.4.0\", ngImport: i0, type: TitleCasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nTitleCasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: TitleCasePipe, name: \"titlecase\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", 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.4.0\", ngImport: i0, type: UpperCasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nUpperCasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: UpperCasePipe, name: \"uppercase\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", 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 var _a;\n if (value == null || value === '' || value !== value)\n return null;\n try {\n return formatDate(value, format, locale || this.locale, (_a = timezone !== null && timezone !== void 0 ? timezone : this.defaultTimezone) !== null && _a !== void 0 ? _a : undefined);\n }\n catch (error) {\n throw invalidPipeArgumentError(DatePipe, error.message);\n }\n }\n}\nDatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.4.0\", 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.4.0\", ngImport: i0, type: DatePipe, name: \"date\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: DatePipe, decorators: [{\n type: Pipe,\n args: [{ name: 'date', pure: true }]\n }], ctorParameters: function () {\n 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/**\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.4.0\", ngImport: i0, type: I18nPluralPipe, deps: [{ token: NgLocalization }], target: i0.ɵɵFactoryTarget.Pipe });\nI18nPluralPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: I18nPluralPipe, name: \"i18nPlural\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", 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.4.0\", ngImport: i0, type: I18nSelectPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nI18nSelectPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: I18nSelectPipe, name: \"i18nSelect\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", 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.4.0\", ngImport: i0, type: JsonPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nJsonPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: JsonPipe, name: \"json\", pure: false });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", 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.4.0\", ngImport: i0, type: KeyValuePipe, deps: [{ token: i0.KeyValueDiffers }], target: i0.ɵɵFactoryTarget.Pipe });\nKeyValuePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: KeyValuePipe, name: \"keyvalue\", pure: false });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", 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.4.0\", ngImport: i0, type: DecimalPipe, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe });\nDecimalPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: DecimalPipe, name: \"number\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: DecimalPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'number' }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }];\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.4.0\", ngImport: i0, type: PercentPipe, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe });\nPercentPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: PercentPipe, name: \"percent\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: PercentPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'percent' }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }];\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.4.0\", 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.4.0\", ngImport: i0, type: CurrencyPipe, name: \"currency\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: CurrencyPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'currency' }]\n }], ctorParameters: function () {\n return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DEFAULT_CURRENCY_CODE]\n }] }];\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.4.0\", ngImport: i0, type: SlicePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nSlicePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: SlicePipe, name: \"slice\", pure: false });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", 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.4.0\", ngImport: i0, type: CommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.4.0\", 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.4.0\", ngImport: i0, type: CommonModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: CommonModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [COMMON_DIRECTIVES, COMMON_PIPES],\n exports: [COMMON_DIRECTIVES, COMMON_PIPES],\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 * @publicApi\n */\nconst VERSION = new Version('13.4.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 * 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 //\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 elSelected.focus();\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 * 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 (_a) {\n return false;\n }\n }\n supportsScrolling() {\n try {\n return !!this.window && !!this.window.scrollTo && 'pageXOffset' in this.window;\n }\n catch (_a) {\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 * Function that generates an ImageLoader for [Cloudflare Image\n * Resizing](https://developers.cloudflare.com/images/image-resizing/) and turns it into an Angular\n * provider. Note: Cloudflare has multiple image products - this provider is specifically for\n * Cloudflare Image Resizing; it will not work with Cloudflare Images or Cloudflare Polish.\n *\n * @param path Your domain name, e.g. https://mysite.com\n * @returns Provider that provides an ImageLoader function\n *\n * @publicApi\n */\nconst provideCloudflareLoader = createImageLoader(createCloudflareUrl, ngDevMode ? ['https:///cdn-cgi/image//'] : undefined);\n// Exported for testing purposes in backport only. Not to be accessed except in unit tests.\nfunction createCloudflareUrl(path, config) {\n let params = `format=auto`;\n if (config.width) {\n params += `,width=${config.width}`;\n }\n // Cloudflare image URLs format:\n // https://developers.cloudflare.com/images/image-resizing/url-format/\n return `${path}/cdn-cgi/image/${params}/${config.src}`;\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/**\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, IMAGE_CONFIG, IMAGE_LOADER, JsonPipe, KeyValuePipe, LOCATION_INITIALIZED, Location, LocationStrategy, LowerCasePipe, NgClass, NgComponentOutlet, NgForOf, NgForOfContext, NgIf, NgIfContext, NgLocaleLocalization, NgLocalization, NgOptimizedImage, NgOptimizedImageModule, NgPlural, NgPluralCase, NgStyle, NgSwitch, NgSwitchCase, NgSwitchDefault, NgTemplateOutlet, NumberFormatStyle, NumberSymbol, PRECONNECT_CHECK_BLOCKLIST, 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, provideCloudflareLoader, provideCloudinaryLoader, provideImageKitLoader, provideImgixLoader, 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.4.0\n * (c) 2010-2022 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) => { var _a; return (_a = STANDARD_ENCODING_REPLACEMENTS[t]) !== null && _a !== void 0 ? _a : 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 * Checks for existence of a given token.\n *\n * @param token The reference to an instance of `HttpContextToken`.\n *\n * @returns True if the token exists, false otherwise.\n */\n has(token) {\n return this.map.has(token);\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 var _a;\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 = (_a = update.context) !== null && _a !== void 0 ? _a : 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.4.0\", ngImport: i0, type: HttpClient, deps: [{ token: HttpHandler }], target: i0.ɵɵFactoryTarget.Injectable });\nHttpClient.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: HttpClient });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", 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.4.0\", ngImport: i0, type: NoopInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNoopInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.4.0\", ngImport: i0, type: NoopInterceptor });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.4.0\", 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/**\n * When a pending