UNPKG

ngx-auth-firebaseui-updated

Version:

From ngx-auth-firbaseui but updated to fix dependency issues with Angular 16. Open Source Library for Angular Web Apps to integrate a material user interface for firebase authentication

75 lines 73.5 kB
import { Component, Input, Output } from '@angular/core'; import { AuthProvider } from '../../services/auth-process.service'; import { NgxAuthFirebaseuiAnimations } from '../../animations'; import { Layout, Theme } from '../../interfaces'; import { LegalityDialogComponent } from '../legality-dialog/legality-dialog.component'; import { Breakpoints } from '@angular/cdk/layout'; import * as i0 from "@angular/core"; import * as i1 from "../../services/auth-process.service"; import * as i2 from "@angular/material/dialog"; import * as i3 from "@angular/cdk/layout"; import * as i4 from "@angular/common"; import * as i5 from "@angular/material/button"; import * as i6 from "@angular/material/icon"; export class AuthProvidersComponent { constructor(authProcess, dialog, renderer, breakpointObserver) { this.authProcess = authProcess; this.dialog = dialog; this.renderer = renderer; this.breakpointObserver = breakpointObserver; this.layout = Layout.ROW; this.providers = AuthProvider.ALL; // google, facebook, twitter, github, microsoft, yahoo this.themes = Theme; this.authProvider = AuthProvider; this.onSuccess = authProcess.onSuccessEmitter; this.onError = authProcess.onErrorEmitter; } ngOnInit() { this.breakpointObserver.observe([Breakpoints.XSmall]) .subscribe(result => { this.isXsScreen = result.matches; }); } processLegalSignUP(authProvider) { if (this.tosUrl || this.privacyPolicyUrl) { const params = { tosUrl: this.tosUrl, privacyPolicyUrl: this.privacyPolicyUrl, authProvider }; this.dialogRef = this.dialog.open(LegalityDialogComponent, { data: params }); this.dialogRef.afterClosed().subscribe((result) => { if (result && result.checked) { // this._afterSignUpMiddleware(result.authProvider).then(() => this.signUpFormGroup.reset()); this.authProcess.signInWith(authProvider); } this.dialogRef = null; }); } else { // this._afterSignUpMiddleware(authProvider).then(() => this.signUpFormGroup.reset()); this.authProcess.signInWith(authProvider); } } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AuthProvidersComponent, deps: [{ token: i1.AuthProcessService }, { token: i2.MatDialog }, { token: i0.Renderer2 }, { token: i3.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AuthProvidersComponent, selector: "ngx-auth-firebaseui-providers", inputs: { theme: "theme", layout: "layout", providers: "providers", tosUrl: "tosUrl", privacyPolicyUrl: "privacyPolicyUrl" }, outputs: { onSuccess: "onSuccess", onError: "onError" }, ngImport: i0, template: "<div [@animateStagger]=\"{ value: '50' }\" [ngSwitch]=\"theme\">\n\n <!--default icon buttons-->\n <div *ngSwitchDefault\n [ngStyle]=\"{'flex-direction': isXsScreen ? 'column' : layout, 'justify-content': layout == 'row' ? 'space-around center' : 'stretch'}\">\n <button (click)=\"processLegalSignUP(authProvider.Google)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Google)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n mat-button>\n <mat-icon svgIcon=\"google-colored\"></mat-icon>\n Google\n </button>\n\n <button (click)=\"processLegalSignUP(authProvider.Apple)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Apple)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n class=\"apple-filled\"\n mat-button>\n <mat-icon svgIcon=\"apple\"></mat-icon>\n Apple\n </button>\n\n <button (click)=\"processLegalSignUP(authProvider.Facebook)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Facebook)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n class=\"facebook-filled\"\n mat-button>\n <mat-icon svgIcon=\"facebook\"></mat-icon>\n Facebook\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Twitter)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Twitter)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n class=\"twitter-filled\"\n mat-button>\n <mat-icon svgIcon=\"twitter\"></mat-icon>\n Twitter\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Github)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Github)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n mat-button>\n <mat-icon svgIcon=\"github\"></mat-icon>\n GitHub\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Microsoft)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Microsoft)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n mat-button>\n <mat-icon svgIcon=\"microsoft\"></mat-icon>\n Microsoft\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Yahoo)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Yahoo)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n mat-button>\n <mat-icon svgIcon=\"yahoo\"></mat-icon>\n Yahoo\n </button>\n </div>\n\n <!--classic-->\n <div *ngSwitchCase=\"themes.CLASSIC\"\n [ngStyle]=\"{'flex-direction': isXsScreen ? 'column' : layout, 'justify-content': layout == 'row'? 'space-around center' : 'stretch'}\"\n class=\"buttons-classic\">\n <button (click)=\"processLegalSignUP(authProvider.Google)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Google)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n class=\"google-classic\"\n mat-button>\n Google\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Apple)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Apple)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n class=\"apple-classic\"\n mat-button>\n Apple\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Facebook)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Facebook)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n class=\"facebook-classic\"\n mat-button>\n Facebook\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Twitter)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Twitter)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n class=\"twitter-classic\"\n mat-button>\n Twitter\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Github)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Github)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n class=\"github-classic\"\n mat-button>\n GitHub\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Microsoft)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Microsoft)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n class=\"microsoft-classic\"\n mat-button>\n Microsoft\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Yahoo)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Yahoo)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n class=\"yahoo-classic\"\n mat-button>\n Yahoo\n </button>\n </div>\n\n <!--stroked-->\n <div *ngSwitchCase=\"themes.STROKED\"\n\n [ngStyle]=\"{'flex-direction': isXsScreen ? 'column' : layout, 'justify-content': layout == 'row' ? 'space-around center' : 'stretch'}\"\n class=\"buttons-classic\">\n <button (click)=\"processLegalSignUP(authProvider.Google)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Google)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':true}\"\n class=\"google-classic\"\n mat-stroked-button>\n Google\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Apple)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Apple)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n class=\"apple-classic\"\n mat-stroked-button>\n Apple\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Facebook)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Facebook)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n class=\"facebook-classic\"\n mat-stroked-button>\n Facebook\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Twitter)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Twitter)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n class=\"twitter-classic\"\n mat-stroked-button>\n Twitter\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Github)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Github)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n class=\"github-classic\"\n mat-stroked-button>\n GitHub\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Microsoft)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Microsoft)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n class=\"microsoft-classic\"\n mat-stroked-button>\n Microsoft\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Yahoo)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Yahoo)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n class=\"yahoo-classic\"\n mat-stroked-button>\n Yahoo\n </button>\n </div>\n\n <!--raised-->\n <div *ngSwitchCase=\"themes.RAISED\"\n [ngStyle]=\"{'flex-direction': isXsScreen ? 'column' : layout, 'justify-content': layout == 'row' ? 'space-around center' : 'stretch'}\"\n class=\"buttons-raised\">\n <button (click)=\"processLegalSignUP(authProvider.Google)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Google)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n class=\"google-raised\"\n mat-raised-button>\n Google\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Apple)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Apple)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n class=\"apple-raised\"\n mat-raised-button>\n Apple\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Facebook)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Facebook)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n class=\"facebook-raised\"\n mat-raised-button>\n Facebook\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Twitter)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Twitter)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n class=\"twitter-raised\"\n mat-raised-button>\n Twitter\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Github)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Github)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n class=\"github-raised\"\n mat-raised-button>\n GitHub\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Microsoft)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Microsoft)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n class=\"microsoft-raised\"\n mat-raised-button>\n Microsoft\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Yahoo)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Yahoo)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n class=\"yahoo-raised\"\n mat-raised-button>\n Yahoo\n </button>\n </div>\n\n <!--fab-->\n <div *ngSwitchCase=\"themes.FAB\"\n [ngStyle]=\"{'flex-direction': layout, 'justify-content': layout == 'row' ? 'space-around center' : 'stretch'}\"\n class=\"buttons-raised\">\n <button (click)=\"processLegalSignUP(authProvider.Google)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Google)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n class=\"google-raised\"\n mat-fab>\n <mat-icon svgIcon=\"google\"></mat-icon>\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Apple)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Apple)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n class=\"apple-raised\"\n mat-fab>\n <mat-icon svgIcon=\"apple\"></mat-icon>\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Facebook)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Facebook)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n class=\"facebook-raised\"\n mat-fab>\n <mat-icon svgIcon=\"facebook\"></mat-icon>\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Twitter)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Twitter)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n class=\"twitter-raised\"\n mat-fab>\n <mat-icon svgIcon=\"twitter\"></mat-icon>\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Github)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Github)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n class=\"github-raised\"\n mat-fab>\n <mat-icon svgIcon=\"github\"></mat-icon>\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Microsoft)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Microsoft)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n class=\"microsoft\"\n mat-fab>\n <mat-icon svgIcon=\"microsoft\"></mat-icon>\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Yahoo)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Yahoo)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n class=\"yahoo-raised\"\n mat-fab>\n <mat-icon svgIcon=\"yahoo\"></mat-icon>\n </button>\n </div>\n\n <!--mini-fab-->\n <div *ngSwitchCase=\"themes.MINI_FAB\"\n [ngStyle]=\"{'flex-direction': layout, 'justify-content': layout == 'row' ? 'space-around center' : 'stretch'}\"\n class=\"buttons-raised\"\n fxLayoutAlign.xs=\"center center\">\n <button (click)=\"processLegalSignUP(authProvider.Google)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Google)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n class=\"google-raised\"\n fxFlexAlign=\"center\"\n mat-mini-fab>\n <mat-icon svgIcon=\"google\"></mat-icon>\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Apple)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Apple)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n class=\"apple-raised\"\n mat-mini-fab>\n <mat-icon svgIcon=\"apple\"></mat-icon>\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Facebook)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Facebook)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n class=\"facebook-raised\"\n mat-mini-fab>\n <mat-icon svgIcon=\"facebook\"></mat-icon>\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Twitter)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Twitter)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n class=\"twitter-raised\"\n mat-mini-fab>\n <mat-icon class=\"icon-white\" svgIcon=\"twitter\"></mat-icon>\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Github)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Github)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n class=\"github-raised\"\n mat-mini-fab>\n <mat-icon svgIcon=\"github\"></mat-icon>\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Microsoft)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Microsoft)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n class=\"microsoft\"\n mat-mini-fab>\n <mat-icon svgIcon=\"microsoft\"></mat-icon>\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Yahoo)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Yahoo)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n class=\"yahoo-raised\"\n mat-mini-fab>\n <mat-icon svgIcon=\"yahoo\"></mat-icon>\n </button>\n </div>\n</div>\n", styles: [":host{display:block}.space-full-xs{width:100%;margin:.4rem}.apple-filled mat-icon svg path{fill:#000}.facebook-filled mat-icon{fill:#385899}.twitter-filled mat-icon{fill:#1da1f2}.buttons-raised button{color:#fff!important}.buttons-raised .google-raised{background-color:#db4437}.buttons-raised .apple-raised{background-color:#000}.buttons-raised .facebook-raised{background-color:#385899}.buttons-raised .twitter-raised{background-color:#1da1f2}.buttons-raised .github-raised{background-color:#000}.buttons-raised .microsoft-raised{background-color:#0078d4}.buttons-raised .yahoo-raised{background-color:#720e9e}.buttons-raised .phone-raised{background-color:#02bd7e}.buttons-classic button.google-classic{color:#db4437!important}.buttons-classic button.apple-classic{color:#000!important}.buttons-classic .facebook-classic{color:#385899!important}.buttons-classic .twitter-classic{color:#1da1f2!important}.buttons-classic .github-classic{color:#000!important}.buttons-classic .microsoft-classic{color:#0078d4!important}.buttons-classic .yahoo-classic{color:#720e9e!important}.buttons-classic .phone-classic{color:#02bd7e}.icon-white{color:#fff}.icon-white mat-icon{fill:#fff}button.microsoft{background:#f8f9fa}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i4.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatMiniFabButton, selector: "button[mat-mini-fab]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatFabButton, selector: "button[mat-fab]", inputs: ["disabled", "disableRipple", "color", "tabIndex", "extended"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], animations: NgxAuthFirebaseuiAnimations }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AuthProvidersComponent, decorators: [{ type: Component, args: [{ selector: 'ngx-auth-firebaseui-providers', animations: NgxAuthFirebaseuiAnimations, template: "<div [@animateStagger]=\"{ value: '50' }\" [ngSwitch]=\"theme\">\n\n <!--default icon buttons-->\n <div *ngSwitchDefault\n [ngStyle]=\"{'flex-direction': isXsScreen ? 'column' : layout, 'justify-content': layout == 'row' ? 'space-around center' : 'stretch'}\">\n <button (click)=\"processLegalSignUP(authProvider.Google)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Google)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n mat-button>\n <mat-icon svgIcon=\"google-colored\"></mat-icon>\n Google\n </button>\n\n <button (click)=\"processLegalSignUP(authProvider.Apple)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Apple)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n class=\"apple-filled\"\n mat-button>\n <mat-icon svgIcon=\"apple\"></mat-icon>\n Apple\n </button>\n\n <button (click)=\"processLegalSignUP(authProvider.Facebook)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Facebook)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n class=\"facebook-filled\"\n mat-button>\n <mat-icon svgIcon=\"facebook\"></mat-icon>\n Facebook\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Twitter)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Twitter)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n class=\"twitter-filled\"\n mat-button>\n <mat-icon svgIcon=\"twitter\"></mat-icon>\n Twitter\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Github)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Github)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n mat-button>\n <mat-icon svgIcon=\"github\"></mat-icon>\n GitHub\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Microsoft)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Microsoft)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n mat-button>\n <mat-icon svgIcon=\"microsoft\"></mat-icon>\n Microsoft\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Yahoo)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Yahoo)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n mat-button>\n <mat-icon svgIcon=\"yahoo\"></mat-icon>\n Yahoo\n </button>\n </div>\n\n <!--classic-->\n <div *ngSwitchCase=\"themes.CLASSIC\"\n [ngStyle]=\"{'flex-direction': isXsScreen ? 'column' : layout, 'justify-content': layout == 'row'? 'space-around center' : 'stretch'}\"\n class=\"buttons-classic\">\n <button (click)=\"processLegalSignUP(authProvider.Google)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Google)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n class=\"google-classic\"\n mat-button>\n Google\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Apple)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Apple)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n class=\"apple-classic\"\n mat-button>\n Apple\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Facebook)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Facebook)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n class=\"facebook-classic\"\n mat-button>\n Facebook\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Twitter)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Twitter)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n class=\"twitter-classic\"\n mat-button>\n Twitter\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Github)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Github)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n class=\"github-classic\"\n mat-button>\n GitHub\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Microsoft)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Microsoft)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n class=\"microsoft-classic\"\n mat-button>\n Microsoft\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Yahoo)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Yahoo)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n class=\"yahoo-classic\"\n mat-button>\n Yahoo\n </button>\n </div>\n\n <!--stroked-->\n <div *ngSwitchCase=\"themes.STROKED\"\n\n [ngStyle]=\"{'flex-direction': isXsScreen ? 'column' : layout, 'justify-content': layout == 'row' ? 'space-around center' : 'stretch'}\"\n class=\"buttons-classic\">\n <button (click)=\"processLegalSignUP(authProvider.Google)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Google)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':true}\"\n class=\"google-classic\"\n mat-stroked-button>\n Google\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Apple)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Apple)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n class=\"apple-classic\"\n mat-stroked-button>\n Apple\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Facebook)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Facebook)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n class=\"facebook-classic\"\n mat-stroked-button>\n Facebook\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Twitter)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Twitter)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n class=\"twitter-classic\"\n mat-stroked-button>\n Twitter\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Github)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Github)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n class=\"github-classic\"\n mat-stroked-button>\n GitHub\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Microsoft)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Microsoft)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n class=\"microsoft-classic\"\n mat-stroked-button>\n Microsoft\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Yahoo)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Yahoo)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n class=\"yahoo-classic\"\n mat-stroked-button>\n Yahoo\n </button>\n </div>\n\n <!--raised-->\n <div *ngSwitchCase=\"themes.RAISED\"\n [ngStyle]=\"{'flex-direction': isXsScreen ? 'column' : layout, 'justify-content': layout == 'row' ? 'space-around center' : 'stretch'}\"\n class=\"buttons-raised\">\n <button (click)=\"processLegalSignUP(authProvider.Google)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Google)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n class=\"google-raised\"\n mat-raised-button>\n Google\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Apple)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Apple)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n class=\"apple-raised\"\n mat-raised-button>\n Apple\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Facebook)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Facebook)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n class=\"facebook-raised\"\n mat-raised-button>\n Facebook\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Twitter)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Twitter)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n class=\"twitter-raised\"\n mat-raised-button>\n Twitter\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Github)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Github)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n class=\"github-raised\"\n mat-raised-button>\n GitHub\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Microsoft)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Microsoft)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n class=\"microsoft-raised\"\n mat-raised-button>\n Microsoft\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Yahoo)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Yahoo)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n [ngClass]=\"{'space-full-xs':isXsScreen}\"\n class=\"yahoo-raised\"\n mat-raised-button>\n Yahoo\n </button>\n </div>\n\n <!--fab-->\n <div *ngSwitchCase=\"themes.FAB\"\n [ngStyle]=\"{'flex-direction': layout, 'justify-content': layout == 'row' ? 'space-around center' : 'stretch'}\"\n class=\"buttons-raised\">\n <button (click)=\"processLegalSignUP(authProvider.Google)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Google)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n class=\"google-raised\"\n mat-fab>\n <mat-icon svgIcon=\"google\"></mat-icon>\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Apple)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Apple)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n class=\"apple-raised\"\n mat-fab>\n <mat-icon svgIcon=\"apple\"></mat-icon>\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Facebook)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Facebook)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n class=\"facebook-raised\"\n mat-fab>\n <mat-icon svgIcon=\"facebook\"></mat-icon>\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Twitter)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Twitter)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n class=\"twitter-raised\"\n mat-fab>\n <mat-icon svgIcon=\"twitter\"></mat-icon>\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Github)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Github)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n class=\"github-raised\"\n mat-fab>\n <mat-icon svgIcon=\"github\"></mat-icon>\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Microsoft)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Microsoft)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n class=\"microsoft\"\n mat-fab>\n <mat-icon svgIcon=\"microsoft\"></mat-icon>\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Yahoo)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Yahoo)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n class=\"yahoo-raised\"\n mat-fab>\n <mat-icon svgIcon=\"yahoo\"></mat-icon>\n </button>\n </div>\n\n <!--mini-fab-->\n <div *ngSwitchCase=\"themes.MINI_FAB\"\n [ngStyle]=\"{'flex-direction': layout, 'justify-content': layout == 'row' ? 'space-around center' : 'stretch'}\"\n class=\"buttons-raised\"\n fxLayoutAlign.xs=\"center center\">\n <button (click)=\"processLegalSignUP(authProvider.Google)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Google)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n class=\"google-raised\"\n fxFlexAlign=\"center\"\n mat-mini-fab>\n <mat-icon svgIcon=\"google\"></mat-icon>\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Apple)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Apple)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n class=\"apple-raised\"\n mat-mini-fab>\n <mat-icon svgIcon=\"apple\"></mat-icon>\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Facebook)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Facebook)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n class=\"facebook-raised\"\n mat-mini-fab>\n <mat-icon svgIcon=\"facebook\"></mat-icon>\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Twitter)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Twitter)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n class=\"twitter-raised\"\n mat-mini-fab>\n <mat-icon class=\"icon-white\" svgIcon=\"twitter\"></mat-icon>\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Github)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Github)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n class=\"github-raised\"\n mat-mini-fab>\n <mat-icon svgIcon=\"github\"></mat-icon>\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Microsoft)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Microsoft)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n class=\"microsoft\"\n mat-mini-fab>\n <mat-icon svgIcon=\"microsoft\"></mat-icon>\n </button>\n <button (click)=\"processLegalSignUP(authProvider.Yahoo)\"\n *ngIf=\"providers === authProvider.ALL || providers.includes(authProvider.Yahoo)\"\n [@animate]=\"{value:'*',params:{duration:'300ms',y:'100px'}}\"\n class=\"yahoo-raised\"\n mat-mini-fab>\n <mat-icon svgIcon=\"yahoo\"></mat-icon>\n </button>\n </div>\n</div>\n", styles: [":host{display:block}.space-full-xs{width:100%;margin:.4rem}.apple-filled mat-icon svg path{fill:#000}.facebook-filled mat-icon{fill:#385899}.twitter-filled mat-icon{fill:#1da1f2}.buttons-raised button{color:#fff!important}.buttons-raised .google-raised{background-color:#db4437}.buttons-raised .apple-raised{background-color:#000}.buttons-raised .facebook-raised{background-color:#385899}.buttons-raised .twitter-raised{background-color:#1da1f2}.buttons-raised .github-raised{background-color:#000}.buttons-raised .microsoft-raised{background-color:#0078d4}.buttons-raised .yahoo-raised{background-color:#720e9e}.buttons-raised .phone-raised{background-color:#02bd7e}.buttons-classic button.google-classic{color:#db4437!important}.buttons-classic button.apple-classic{color:#000!important}.buttons-classic .facebook-classic{color:#385899!important}.buttons-classic .twitter-classic{color:#1da1f2!important}.buttons-classic .github-classic{color:#000!important}.buttons-classic .microsoft-classic{color:#0078d4!important}.buttons-classic .yahoo-classic{color:#720e9e!important}.buttons-classic .phone-classic{color:#02bd7e}.icon-white{color:#fff}.icon-white mat-icon{fill:#fff}button.microsoft{background:#f8f9fa}\n"] }] }], ctorParameters: function () { return [{ type: i1.AuthProcessService }, { type: i2.MatDialog }, { type: i0.Renderer2 }, { type: i3.BreakpointObserver }]; }, propDecorators: { theme: [{ type: Input }], layout: [{ type: Input }], providers: [{ type: Input }], onSuccess: [{ type: Output }], onError: [{ type: Output }], tosUrl: [{ type: Input }], privacyPolicyUrl: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5wcm92aWRlcnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWF1dGgtZmlyZWJhc2V1aS9zcmMvbGliL2NvbXBvbmVudHMvcHJvdmlkZXJzL2F1dGgucHJvdmlkZXJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1hdXRoLWZpcmViYXNldWkvc3JjL2xpYi9jb21wb25lbnRzL3Byb3ZpZGVycy9hdXRoLnByb3ZpZGVycy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDbEUsT0FBTyxFQUFxQixZQUFZLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUNyRixPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUM3RCxPQUFPLEVBQUMsTUFBTSxFQUE4QyxLQUFLLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUUzRixPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSw4Q0FBOEMsQ0FBQztBQUNyRixPQUFPLEVBQXNCLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7OztBQVF0RSxNQUFNLE9BQU8sc0JBQXNCO0lBa0JqQyxZQUFtQixXQUErQixFQUFTLE1BQWlCLEVBQ2hFLFFBQW1CLEVBQ25CLGtCQUFzQztRQUYvQixnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2hFLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQWpCekMsV0FBTSxHQUFXLE1BQU0sQ0FBQyxHQUFHLENBQUM7UUFDNUIsY0FBUyxHQUFrQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsdURBQXVEO1FBUzdILFdBQU0sR0FBRyxLQUFLLENBQUM7UUFDZixpQkFBWSxHQUFHLFlBQVksQ0FBQztRQU8xQixJQUFJLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQztRQUM5QyxJQUFJLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQyxjQUFjLENBQUM7SUFDNUMsQ0FBQztJQUNELFFBQVE7UUFDTixJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ2xELFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNsQixJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFDbkMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0Qsa0JBQWtCLENBQUMsWUFBMkI7UUFDNUMsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUN4QyxNQUFNLE1BQU0sR0FBeUI7Z0JBQ25DLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtnQkFDbkIsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtnQkFDdkMsWUFBWTthQUNiLENBQUM7WUFFRixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLEVBQUMsSUFBSSxFQUFFLE1BQU0sRUFBQyxDQUFDLENBQUM7WUFDM0UsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUE0QixFQUFFLEVBQUU7Z0JBQ3RFLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUU7b0JBQzVCLDZGQUE2RjtvQkFDN0YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7aUJBQzNDO2dCQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3hCLENBQUMsQ0FBQyxDQUFDO1NBQ0o7YUFBTTtZQUNMLHNGQUFzRjtZQUN0RixJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUMzQztJQUNILENBQUM7K0dBbERVLHNCQUFzQjttR0FBdEIsc0JBQXNCLDRQQ2RuQywrNmlCQStXQSx3OUVEbldjLDJCQUEyQjs7NEZBRTVCLHNCQUFzQjtrQkFObEMsU0FBUzsrQkFDRSwrQkFBK0IsY0FHN0IsMkJBQTJCOzBMQUk5QixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUksU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxPQUFPO3NCQUFoQixNQUFNO2dCQUVFLE1BQU07c0JBQWQsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgUmVuZGVyZXIyfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QXV0aFByb2Nlc3NTZXJ2aWNlLCBBdXRoUHJvdmlkZXJ9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2F1dGgtcHJvY2Vzcy5zZXJ2aWNlJztcbmltcG9ydCB7Tmd4QXV0aEZpcmViYXNldWlBbmltYXRpb25zfSBmcm9tICcuLi8uLi9hbmltYXRpb25zJztcbmltcG9ydCB7TGF5b3V0LCBMZWdhbGl0eURpYWxvZ1BhcmFtcywgTGVnYWxpdHlEaWFsb2dSZXN1bHQsIFRoZW1lfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7TWF0RGlhbG9nLE1hdERpYWxvZ1JlZn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7TGVnYWxpdHlEaWFsb2dDb21wb25lbnR9IGZyb20gJy4uL2xlZ2FsaXR5LWRpYWxvZy9sZWdhbGl0eS1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IEJyZWFrcG9pbnRPYnNlcnZlciwgQnJlYWtwb2ludHMgfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmd4LWF1dGgtZmlyZWJhc2V1aS1wcm92aWRlcnMnLFxuICB0ZW1wbGF0ZVVybDogJ2F1dGgucHJvdmlkZXJzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ2F1dGgucHJvdmlkZXJzLmNvbXBvbmVudC5zY3NzJ10sXG4gIGFuaW1hdGlvbnM6IE5neEF1dGhGaXJlYmFzZXVpQW5pbWF0aW9uc1xufSlcbmV4cG9ydCBjbGFzcyBBdXRoUHJvdmlkZXJzQ29tcG9uZW50IHtcblxuICBASW5wdXQoKSB0aGVtZTogVGhlbWU7IC8vIHRoZW1lOiBzdHJpbmcgPSBUaGVtZS5ERUZBVUxUO1xuICBASW5wdXQoKSBsYXlvdXQ6IHN0cmluZyA9IExheW91dC5ST1c7XG4gIEBJbnB1dCgpIHByb3ZpZGVyczogQXV0aFByb3ZpZGVyW10gfCBBdXRoUHJvdmlkZXIgPSBBdXRoUHJvdmlkZXIuQUxMOyAvLyAgZ29vZ2xlLCBmYWNlYm9vaywgdHdpdHRlciwgZ2l0aHViLCBtaWNyb3NvZnQsIHlhaG9vXG5cbiAgQE91dHB1dCgpIG9uU3VjY2VzczogYW55O1xuICBAT3V0cHV0KCkgb25FcnJvcjogYW55O1xuXG4gIEBJbnB1dCgpIHRvc1VybDogc3RyaW5nO1xuICBASW5wdXQoKSBwcml2YWN5UG9saWN5VXJsOiBzdHJpbmc7XG4gIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPExlZ2FsaXR5RGlhbG9nQ29tcG9uZW50PjtcblxuICB0aGVtZXMgPSBUaGVtZTtcbiAgYXV0aFByb3ZpZGVyID0gQXV0aFByb3ZpZGVyO1xuXG4gIGlzWHNTY3JlZW46IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IocHVibGljIGF1dGhQcm9jZXNzOiBBdXRoUHJvY2Vzc1NlcnZpY2UsIHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgIHByaXZhdGUgYnJlYWtwb2ludE9ic2VydmVyOiBCcmVha3BvaW50T2JzZXJ2ZXIpIHtcbiAgICB0aGlzLm9uU3VjY2VzcyA9IGF1dGhQcm9jZXNzLm9uU3VjY2Vzc0VtaXR0ZXI7XG4gICAgdGhpcy5vbkVycm9yID0gYXV0aFByb2Nlc3Mub25FcnJvckVtaXR0ZXI7XG4gIH1cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5icmVha3BvaW50T2JzZXJ2ZXIub2JzZXJ2ZShbQnJlYWtwb2ludHMuWFNtYWxsXSlcbiAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgICAgdGhpcy5pc1hzU2NyZWVuID0gcmVzdWx0Lm1hdGNoZXM7XG4gICAgICB9KTtcbiAgfVxuICBwcm9jZXNzTGVnYWxTaWduVVAoYXV0aFByb3ZpZGVyPzogQXV0aFByb3ZpZGVyKSB7XG4gICAgaWYgKHRoaXMudG9zVXJsIHx8IHRoaXMucHJpdmFjeVBvbGljeVVybCkge1xuICAgICAgY29uc3QgcGFyYW1zOiBMZWdhbGl0eURpYWxvZ1BhcmFtcyA9IHtcbiAgICAgICAgdG9zVXJsOiB0aGlzLnRvc1VybCxcbiAgICAgICAgcHJpdmFjeVBvbGljeVVybDogdGhpcy5wcml2YWN5UG9saWN5VXJsLFxuICAgICAgICBhdXRoUHJvdmlkZXJcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihMZWdhbGl0eURpYWxvZ0NvbXBvbmVudCwge2RhdGE6IHBhcmFtc30pO1xuICAgICAgdGhpcy5kaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3VsdDogTGVnYWxpdHlEaWFsb2dSZXN1bHQpID0+IHtcbiAgICAgICAgaWYgKHJlc3VsdCAmJiByZXN1bHQuY2hlY2tlZCkge1xuICAgICAgICAgIC8vIHRoaXMuX2FmdGVyU2lnblVwTWlkZGxld2FyZShyZXN1bHQuYXV0aFByb3ZpZGVyKS50aGVuKCgpID0+IHRoaXMuc2lnblVwRm9ybUdyb3VwLnJlc2V0KCkpO1xuICAgICAgICAgIHRoaXMuYXV0aFByb2Nlc3Muc2lnbkluV2l0aChhdXRoUHJvdmlkZXIpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmID0gbnVsbDtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyB0aGlzLl9hZnRlclNpZ25VcE1pZGRsZXdhcmUoYXV0aFByb3ZpZGVyKS50aGVuKCgpID0+IHRoaXMuc2lnblVwRm9ybUdyb3VwLnJlc2V0KCkpO1xuICAgICAgdGhpcy5hdXRoUHJvY2Vzcy5zaWduSW5XaXRoKGF1dGhQcm92aWRlcik7XG4gICAgfVxuICB9XG5cbn1cbiIsIjxkaXYgW0BhbmltYXRlU3RhZ2dlcl09XCJ7IHZhbHVlOiAnNTAnIH1cIiBbbmdTd2l0Y2hdPVwidGhlbWVcIj5cblxuICA8IS0tZGVmYXVsdCBpY29uIGJ1dHRvbnMtLT5cbiAgPGRpdiAqbmdTd2l0Y2hEZWZhdWx0XG4gICAgICAgW25nU3R5bGVdPVwieydmbGV4LWRpcmVjdGlvbic6IGlzWHNTY3JlZW4gPyAnY29sdW1uJyA6IGxheW91dCwgJ2p1c3RpZnktY29udG