{"version":3,"file":"kalees64-vk-auth.mjs","sources":["../../../projects/auth/src/lib/auth.service.ts","../../../projects/auth/src/lib/auth.component.ts","../../../projects/auth/src/lib/components/login/login.component.ts","../../../projects/auth/src/lib/components/login/login.component.html","../../../projects/auth/src/lib/components/register/register.component.ts","../../../projects/auth/src/lib/components/register/register.component.html","../../../projects/auth/src/lib/components/forgot-password/forgot-password.component.ts","../../../projects/auth/src/lib/components/forgot-password/forgot-password.component.html","../../../projects/auth/src/lib/components/activate-account/activate-account.component.ts","../../../projects/auth/src/lib/components/activate-account/activate-account.component.html","../../../projects/auth/src/lib/interceptors/auth.interceptor.ts","../../../projects/auth/src/lib/guards/auth.guard.ts","../../../projects/auth/src/lib/hasrole.directive.ts","../../../projects/auth/src/lib/google-auth.service.ts","../../../projects/auth/src/lib/components/google-signin/google-signin.component.ts","../../../projects/auth/src/lib/components/google-signin/google-signin.component.html","../../../projects/auth/src/public-api.ts","../../../projects/auth/src/kalees64-vk-auth.ts"],"sourcesContent":["import { Injectable, signal } from '@angular/core';\r\n\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class AuthService {\r\n  constructor() {}\r\n\r\n  private token: string | null = localStorage.getItem('auth_token');\r\n  private roles: string[] = JSON.parse(localStorage.getItem('roles') || '[]');\r\n\r\n  getToken() {\r\n    return this.token;\r\n  }\r\n\r\n  getRoles() {\r\n    return this.roles;\r\n  }\r\n\r\n  isAuthenticated() {\r\n    return this.token !== null;\r\n  }\r\n\r\n  getUserIdFromLocalStorage() {\r\n    const res = localStorage.getItem('user');\r\n    if (res) {\r\n      return JSON.parse(res).id;\r\n    }\r\n  }\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'lib-auth',\r\n  standalone: true,\r\n  imports: [],\r\n  template: `\r\n    <p>\r\n      auth works!\r\n    </p>\r\n  `,\r\n  styles: ``\r\n})\r\nexport class AuthComponent {\r\n\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport {\r\n  FormBuilder,\r\n  FormGroup,\r\n  ReactiveFormsModule,\r\n  Validators,\r\n} from '@angular/forms';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n  selector: 'vk-login',\r\n  standalone: true,\r\n  imports: [ReactiveFormsModule],\r\n  templateUrl: './login.component.html',\r\n  styleUrl: './login.component.css',\r\n})\r\nexport class LoginComponent implements OnInit {\r\n  constructor(private fb: FormBuilder, private toast: ToastrService) {}\r\n  loginForm!: FormGroup;\r\n\r\n  onSubmit() {\r\n    console.log(this.loginForm.value);\r\n    this.toast.success('Loggedin successfully');\r\n    this.loginForm.reset();\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.loginForm = this.fb.group({\r\n      email: [null, [Validators.required, Validators.email]],\r\n      password: [null, Validators.required],\r\n    });\r\n  }\r\n\r\n  get email() {\r\n    return this.loginForm.controls['email'];\r\n  }\r\n\r\n  get password() {\r\n    return this.loginForm.controls['password'];\r\n  }\r\n}\r\n","<section class=\"w-full h-dvh vk-bg-body flex items-center justify-center\">\r\n  <div\r\n    class=\"vk-bg-white w-5/12 max-md:w-11/12 max-lg:w-7/12 rounded-md border p-5\"\r\n  >\r\n    <h1 class=\"vk-h3 text-center\">Login</h1>\r\n    <form class=\"\" [formGroup]=\"loginForm\" (submit)=\"onSubmit()\">\r\n      <div class=\"grid\">\r\n        <label for=\"email\" class=\"vk-form-label\"\r\n          >Email <span class=\"vk-alert-red\">*</span></label\r\n        >\r\n        <input\r\n          type=\"email\"\r\n          name=\"email\"\r\n          id=\"email\"\r\n          placeholder=\"Enter email\"\r\n          class=\"{{\r\n            email.invalid && email.touched\r\n              ? 'vk-form-input-invalid'\r\n              : email.valid\r\n              ? 'vk-form-input-valid'\r\n              : 'vk-form-input '\r\n          }}\"\r\n          formControlName=\"email\"\r\n        />\r\n        @if(email.errors && (email.touched || email.dirty)){\r\n        <span class=\"vk-alert-red\">Enter valid email</span>\r\n        }\r\n      </div>\r\n      <div class=\"grid\">\r\n        <label for=\"password\" class=\"vk-form-label\"\r\n          >Password <span class=\"vk-alert-red\">*</span></label\r\n        >\r\n        <input\r\n          type=\"password\"\r\n          name=\"password\"\r\n          id=\"password\"\r\n          placeholder=\"Enter password\"\r\n          class=\"{{\r\n            password.invalid && password.touched\r\n              ? 'vk-form-input-invalid'\r\n              : password.valid\r\n              ? 'vk-form-input-valid'\r\n              : 'vk-form-input '\r\n          }}\"\r\n          formControlName=\"password\"\r\n        />\r\n        @if(password.errors && (password.touched || password.dirty)){\r\n        <span class=\"vk-alert-red\">Password is required</span>\r\n        }\r\n      </div>\r\n\r\n      <div class=\"pt-3 flex justify-end\">\r\n        <button\r\n          type=\"submit\"\r\n          class=\"vk-btn-blue w-full\"\r\n          [disabled]=\"loginForm.invalid\"\r\n        >\r\n          Login\r\n        </button>\r\n      </div>\r\n    </form>\r\n\r\n    <div class=\"text-center pt-2\">\r\n      Do you want to create Account ?\r\n      <a class=\"vk-text-blue\"> Register</a> &nbsp;<br />\r\n      Activate Account ? <a class=\"vk-text-blue\">Activate</a> &nbsp; <br />\r\n      Forgot Password ? <a class=\"vk-text-blue\">Forgot Password</a> &nbsp;\r\n    </div>\r\n  </div>\r\n</section>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport {\r\n  FormBuilder,\r\n  FormGroup,\r\n  ReactiveFormsModule,\r\n  Validators,\r\n} from '@angular/forms';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n  selector: 'vk-register',\r\n  standalone: true,\r\n  imports: [ReactiveFormsModule, CommonModule],\r\n  templateUrl: './register.component.html',\r\n  styleUrl: './register.component.css',\r\n})\r\nexport class RegisterComponent implements OnInit {\r\n  constructor(private fb: FormBuilder, private toast: ToastrService) {}\r\n\r\n  registerForm!: FormGroup;\r\n\r\n  onSubmit() {\r\n    console.log(this.registerForm.value);\r\n    this.toast.success('Register succesfully');\r\n    this.registerForm.reset();\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.registerForm = this.fb.group({\r\n      name: [null, [Validators.required, Validators.minLength(3)]],\r\n      email: [null, [Validators.required, Validators.email]],\r\n      password: [\r\n        null,\r\n        [\r\n          Validators.required,\r\n          Validators.minLength(8),\r\n          Validators.maxLength(16),\r\n          Validators.pattern(\r\n            /^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[@$!%*?&])[A-Za-z\\d@$!%*?&]/\r\n          ),\r\n        ],\r\n      ],\r\n    });\r\n  }\r\n\r\n  get name() {\r\n    return this.registerForm.controls['name'];\r\n  }\r\n\r\n  get email() {\r\n    return this.registerForm.controls['email'];\r\n  }\r\n\r\n  get password() {\r\n    return this.registerForm.controls['password'];\r\n  }\r\n}\r\n","<section class=\"w-full h-dvh vk-bg-body flex items-center justify-center\">\r\n  <div\r\n    class=\"vk-bg-white w-5/12 max-md:w-11/12 max-lg:w-7/12 rounded-md border p-5\"\r\n  >\r\n    <h1 class=\"vk-h3 text-center\">Register</h1>\r\n    <form class=\"\" [formGroup]=\"registerForm\" (submit)=\"onSubmit()\">\r\n      <div class=\"grid\">\r\n        <label for=\"name\" class=\"vk-form-label\"\r\n          >Name <span class=\"vk-alert-red\">*</span></label\r\n        >\r\n        <input\r\n          type=\"text\"\r\n          name=\"name\"\r\n          id=\"name\"\r\n          placeholder=\"Enter name\"\r\n          formControlName=\"name\"\r\n          class=\"{{\r\n            name.invalid && name.touched\r\n              ? 'vk-form-input-invalid'\r\n              : name.valid\r\n              ? 'vk-form-input-valid'\r\n              : 'vk-form-input '\r\n          }}\"\r\n        />\r\n      </div>\r\n      @if(name.invalid && (name.touched || name.dirty) ){\r\n      <span class=\"vk-alert-red\" *ngIf=\"name.errors && name.errors['required']\"\r\n        >Name is required</span\r\n      >\r\n      <span class=\"vk-alert-red\" *ngIf=\"name.errors && name.errors['minlength']\"\r\n        >Name must contains\r\n        {{ name.errors[\"minlength\"].requiredLength }} letters</span\r\n      >\r\n      }\r\n      <div class=\"grid\">\r\n        <label for=\"email\" class=\"vk-form-label\"\r\n          >Email <span class=\"vk-alert-red\">*</span></label\r\n        >\r\n        <input\r\n          type=\"email\"\r\n          name=\"email\"\r\n          id=\"email\"\r\n          placeholder=\"Enter email\"\r\n          formControlName=\"email\"\r\n          class=\"{{\r\n            email.invalid && email.touched\r\n              ? 'vk-form-input-invalid'\r\n              : email.valid\r\n              ? 'vk-form-input-valid'\r\n              : 'vk-form-input '\r\n          }}\"\r\n        />\r\n        @if(email.invalid && (email.touched || email.dirty) ){\r\n        <span\r\n          class=\"vk-alert-red\"\r\n          *ngIf=\"email.errors && email.errors['required']\"\r\n          >Email is required</span\r\n        >\r\n        <span class=\"vk-alert-red\" *ngIf=\"email.errors && email.errors['email']\"\r\n          >Enter valid email</span\r\n        >\r\n        }\r\n      </div>\r\n      <div class=\"grid\">\r\n        <label for=\"password\" class=\"vk-form-label\"\r\n          >Password <span class=\"vk-alert-red\">*</span></label\r\n        >\r\n        <input\r\n          type=\"password\"\r\n          name=\"password\"\r\n          id=\"password\"\r\n          placeholder=\"Enter password\"\r\n          formControlName=\"password\"\r\n          class=\"{{\r\n            password.invalid && password.touched\r\n              ? 'vk-form-input-invalid'\r\n              : password.valid\r\n              ? 'vk-form-input-valid'\r\n              : 'vk-form-input '\r\n          }}\"\r\n        />\r\n        @if(password.invalid && (password.touched || password.dirty)){\r\n        <span\r\n          class=\"vk-alert-red\"\r\n          *ngIf=\"password.errors && password.errors['required']\"\r\n          >Password is required</span\r\n        >\r\n        <span\r\n          class=\"vk-alert-red\"\r\n          *ngIf=\"password.errors && password.errors['minlength']\"\r\n          >Password must contains\r\n          {{ password.errors[\"minlength\"].requiredLength }} letters</span\r\n        >\r\n        <span\r\n          class=\"vk-alert-red\"\r\n          *ngIf=\"password.errors && password.errors['maxlength']\"\r\n          >Password not grater than\r\n          {{ password.errors[\"maxlength\"].requiredLength }} letters</span\r\n        >\r\n\r\n        <span\r\n          class=\"vk-alert-red\"\r\n          *ngIf=\"password.errors && password.errors['pattern']\"\r\n          >Password must contains one uppercase , one lowercase , one number and\r\n          one special character</span\r\n        >\r\n        }\r\n      </div>\r\n\r\n      <div class=\"pt-3 flex justify-end\">\r\n        <button\r\n          type=\"submit\"\r\n          [disabled]=\"registerForm.invalid\"\r\n          class=\"vk-btn-blue w-full\"\r\n        >\r\n          Register\r\n        </button>\r\n      </div>\r\n    </form>\r\n\r\n    <div class=\"text-center pt-2\">\r\n      Already have an Account ?\r\n      <a class=\"vk-text-blue\"> Login</a>\r\n    </div>\r\n  </div>\r\n</section>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport {\r\n  FormBuilder,\r\n  FormGroup,\r\n  ReactiveFormsModule,\r\n  Validators,\r\n} from '@angular/forms';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n  selector: 'vk-forgot-password',\r\n  standalone: true,\r\n  imports: [ReactiveFormsModule, CommonModule],\r\n  templateUrl: './forgot-password.component.html',\r\n  styleUrl: './forgot-password.component.css',\r\n})\r\nexport class ForgotPasswordComponent implements OnInit {\r\n  constructor(private fb: FormBuilder, private toast: ToastrService) {}\r\n\r\n  forgotPasswordForm!: FormGroup;\r\n\r\n  onSubmit() {\r\n    console.log(this.forgotPasswordForm.value);\r\n    this.toast.success('Password chage link sent to your email successfully');\r\n    this.forgotPasswordForm.reset();\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.forgotPasswordForm = this.fb.group({\r\n      email: [null, [Validators.required, Validators.email]],\r\n    });\r\n  }\r\n\r\n  get email() {\r\n    return this.forgotPasswordForm.controls['email'];\r\n  }\r\n}\r\n","<section class=\"w-full h-dvh vk-bg-body flex items-center justify-center\">\r\n  <div\r\n    class=\"vk-bg-white w-5/12 max-md:w-11/12 max-lg:w-7/12 rounded-md border p-5\"\r\n  >\r\n    <h1 class=\"vk-h3 text-center\">Forgot Password</h1>\r\n    <form class=\"\" [formGroup]=\"forgotPasswordForm\" (submit)=\"onSubmit()\">\r\n      <div class=\"grid\">\r\n        <label for=\"email\" class=\"vk-form-label\"\r\n          >Email <span class=\"vk-alert-red\">*</span></label\r\n        >\r\n        <input\r\n          type=\"email\"\r\n          name=\"email\"\r\n          id=\"email\"\r\n          placeholder=\"Enter email\"\r\n          class=\"{{\r\n            email.touched && email.invalid\r\n              ? 'vk-form-input-invalid'\r\n              : email.valid\r\n              ? 'vk-form-input-valid'\r\n              : 'vk-form-input'\r\n          }}\"\r\n          formControlName=\"email\"\r\n        />\r\n\r\n        @if(email.invalid && (email.touched || email.dirty)){\r\n        <span\r\n          class=\"vk-alert-red\"\r\n          *ngIf=\"email.errors && email.errors['required']\"\r\n          >Email is required</span\r\n        >\r\n        <span class=\"vk-alert-red\" *ngIf=\"email.errors && email.errors['email']\"\r\n          >Enter valid email</span\r\n        >\r\n        }\r\n      </div>\r\n\r\n      <div class=\"pt-3 flex justify-end\">\r\n        <button\r\n          type=\"submit\"\r\n          class=\"vk-btn-blue w-full\"\r\n          [disabled]=\"forgotPasswordForm.invalid\"\r\n        >\r\n          Submit\r\n        </button>\r\n      </div>\r\n    </form>\r\n\r\n    <div class=\"text-center pt-2\">\r\n      Do you want to create Account ?\r\n      <a class=\"vk-text-blue\"> Register</a> &nbsp;<br />\r\n      Already have an Account ?\r\n      <a class=\"vk-text-blue\"> Login</a> &nbsp;<br />\r\n    </div>\r\n  </div>\r\n</section>\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport {\r\n  FormBuilder,\r\n  FormGroup,\r\n  ReactiveFormsModule,\r\n  Validators,\r\n} from '@angular/forms';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n  selector: 'vk-activate-account',\r\n  standalone: true,\r\n  imports: [ReactiveFormsModule, CommonModule],\r\n  templateUrl: './activate-account.component.html',\r\n  styleUrl: './activate-account.component.css',\r\n})\r\nexport class ActivateAccountComponent implements OnInit {\r\n  constructor(private fb: FormBuilder, private toast: ToastrService) {}\r\n\r\n  activeAccountForm!: FormGroup;\r\n\r\n  onSubmit() {\r\n    console.log(this.activeAccountForm.value);\r\n    this.toast.success('Account activated successfully');\r\n    this.activeAccountForm.reset();\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.activeAccountForm = this.fb.group({\r\n      email: [null, [Validators.required, Validators.email]],\r\n      otp: [null, Validators.required],\r\n    });\r\n  }\r\n\r\n  get email() {\r\n    return this.activeAccountForm.controls['email'];\r\n  }\r\n\r\n  get otp() {\r\n    return this.activeAccountForm.controls['otp'];\r\n  }\r\n}\r\n","<section class=\"w-full h-dvh vk-bg-body flex items-center justify-center\">\r\n  <div\r\n    class=\"vk-bg-white w-5/12 max-md:w-11/12 max-lg:w-7/12 rounded-md border p-5\"\r\n  >\r\n    <h1 class=\"vk-h3 text-center\">Activate Account</h1>\r\n    <form class=\"\" [formGroup]=\"activeAccountForm\" (submit)=\"onSubmit()\">\r\n      <div class=\"grid\">\r\n        <label for=\"email\" class=\"vk-form-label\"\r\n          >Email <span class=\"vk-alert-red\">*</span></label\r\n        >\r\n        <input\r\n          type=\"email\"\r\n          name=\"email\"\r\n          id=\"email\"\r\n          placeholder=\"Enter email\"\r\n          class=\"{{\r\n            email.touched && email.invalid\r\n              ? 'vk-form-input-invalid'\r\n              : email.valid\r\n              ? 'vk-form-input-valid'\r\n              : 'vk-form-input'\r\n          }}\"\r\n          formControlName=\"email\"\r\n        />\r\n        @if(email.invalid && (email.touched || email.dirty)){\r\n        <span\r\n          class=\"vk-alert-red\"\r\n          *ngIf=\"email.errors && email.errors['required']\"\r\n          >Email is required</span\r\n        >\r\n        <span class=\"vk-alert-red\" *ngIf=\"email.errors && email.errors['email']\"\r\n          >Enter valid email</span\r\n        >\r\n        }\r\n      </div>\r\n      <div class=\"grid\">\r\n        <label for=\"email\" class=\"vk-form-label\"\r\n          >OTP <span class=\"vk-alert-red\">*</span></label\r\n        >\r\n        <input\r\n          type=\"text\"\r\n          name=\"email\"\r\n          id=\"email\"\r\n          placeholder=\"Enter OTP\"\r\n          class=\"{{\r\n            otp.touched && otp.invalid\r\n              ? 'vk-form-input-invalid'\r\n              : otp.valid\r\n              ? 'vk-form-input-valid'\r\n              : 'vk-form-input'\r\n          }}\"\r\n          formControlName=\"otp\"\r\n        />\r\n        @if(otp.invalid && (otp.touched || otp.dirty)){\r\n        <span class=\"vk-alert-red\" *ngIf=\"otp.errors && otp.errors['required']\"\r\n          >OTP is required</span\r\n        >\r\n\r\n        }\r\n      </div>\r\n\r\n      <div class=\"pt-3 flex justify-end\">\r\n        <button\r\n          type=\"submit\"\r\n          class=\"vk-btn-blue w-full\"\r\n          [disabled]=\"activeAccountForm.invalid\"\r\n        >\r\n          Submit\r\n        </button>\r\n      </div>\r\n    </form>\r\n\r\n    <div class=\"text-center pt-2\">\r\n      Do you want to create Account ?\r\n      <a class=\"vk-text-blue\"> Register</a> &nbsp;<br />\r\n      Already have an Account ?\r\n      <a class=\"vk-text-blue\"> Login</a> &nbsp;<br />\r\n    </div>\r\n  </div>\r\n</section>\r\n","import { HttpInterceptorFn } from '@angular/common/http';\r\n\r\nexport const authInterceptor: HttpInterceptorFn = (req, next) => {\r\n  const authToken = `environment.token`;\r\n  const authReq = req.clone({\r\n    headers: req.headers.set('Authorization', `Bearer ${authToken}`),\r\n  });\r\n\r\n  return next(authReq);\r\n};\r\n","import { CanActivateFn, Router } from '@angular/router';\r\nimport { AuthService } from '../auth.service';\r\nimport { inject } from '@angular/core';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\nexport const authGuard: CanActivateFn = (route, state) => {\r\n  const userService = inject(AuthService);\r\n  const toast = inject(ToastrService);\r\n  const router = inject(Router);\r\n  const userId = userService.getUserIdFromLocalStorage();\r\n  if (userId) {\r\n    return true;\r\n  } else {\r\n    toast.error('You are not logged in, please login');\r\n    setTimeout(() => {\r\n      router.navigateByUrl('/login');\r\n    }, 2000);\r\n    return false;\r\n  }\r\n};\r\n","import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';\r\nimport { AuthService } from './auth.service';\r\n\r\n@Directive({\r\n  selector: '[hasRole]',\r\n  standalone: true,\r\n})\r\nexport class HasRoleDirective {\r\n  @Input() set hasRole(roles: string[]) {\r\n    const userRoles = this.authService.getRoles();\r\n    const hasRole = roles.some((role) => userRoles.includes(role));\r\n\r\n    if (hasRole) {\r\n      this.viewContainer.createEmbeddedView(this.templateRef);\r\n    } else {\r\n      this.viewContainer.clear();\r\n    }\r\n  }\r\n\r\n  constructor(\r\n    private templateRef: TemplateRef<any>,\r\n    private viewContainer: ViewContainerRef,\r\n    private authService: AuthService\r\n  ) {}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { loadGapiInsideDOM } from 'gapi-script';\r\n\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class GoogleAuthService {\r\n  private authInstance!: gapi.auth2.GoogleAuth;\r\n\r\n  constructor() {}\r\n\r\n  async initialize(clientId: string): Promise<void> {\r\n    await loadGapiInsideDOM();\r\n    await new Promise((resolve, reject) => {\r\n      gapi.load('auth2', () => {\r\n        gapi.auth2\r\n          .init({ client_id: clientId })\r\n          .then((auth) => {\r\n            this.authInstance = auth as gapi.auth2.GoogleAuth; // Explicit type assertion\r\n            resolve(true);\r\n          })\r\n          .catch(reject);\r\n      });\r\n    });\r\n  }\r\n\r\n  signIn(): Promise<gapi.auth2.GoogleUser> {\r\n    return this.authInstance.signIn();\r\n  }\r\n\r\n  signOut(): Promise<void> {\r\n    return this.authInstance.signOut();\r\n  }\r\n\r\n  isSignedIn(): boolean {\r\n    return this.authInstance.isSignedIn.get();\r\n  }\r\n\r\n  getUser(): gapi.auth2.GoogleUser | null {\r\n    return this.isSignedIn() ? this.authInstance.currentUser.get() : null;\r\n  }\r\n}\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { GoogleAuthService } from '../../google-auth.service';\r\n\r\n@Component({\r\n  selector: 'vk-google-signin',\r\n  standalone: true,\r\n  imports: [],\r\n  templateUrl: './google-signin.component.html',\r\n  styleUrl: './google-signin.component.css',\r\n})\r\nexport class GoogleSigninComponent {\r\n  @Input() clientId!: string;\r\n  @Input() buttonText = 'Login with Google';\r\n  @Output() userAuthenticated = new EventEmitter<gapi.auth2.GoogleUser>();\r\n\r\n  constructor(private authService: GoogleAuthService) {}\r\n\r\n  async ngOnInit(): Promise<void> {\r\n    await this.authService.initialize(this.clientId);\r\n  }\r\n\r\n  async onLoginClick(): Promise<void> {\r\n    try {\r\n      const user = await this.authService.signIn();\r\n      this.userAuthenticated.emit(user);\r\n    } catch (error) {\r\n      console.error('Google Sign-In failed:', error);\r\n    }\r\n  }\r\n}\r\n\r\n// <google-login-button\r\n//       [clientId]=\"'YOUR_GOOGLE_CLIENT_ID'\"\r\n//       (userAuthenticated)=\"onUserAuthenticated($event)\">\r\n//     </google-login-button>\r\n\r\n// onUserAuthenticated(user: gapi.auth2.GoogleUser) {\r\n//     console.log('User authenticated:', user);\r\n//   }\r\n","<button (click)=\"onLoginClick()\">\r\n  {{ buttonText }}\r\n</button>\r\n","/*\r\n * Public API Surface of auth\r\n */\r\n\r\nexport * from './lib/auth.service';\r\nexport * from './lib/auth.component';\r\n\r\nexport * from './lib/components/login/login.component';\r\nexport * from './lib/components/register/register.component';\r\nexport * from './lib/components/forgot-password/forgot-password.component';\r\nexport * from './lib/components/activate-account/activate-account.component';\r\n\r\nexport * from './lib/interceptors/auth.interceptor';\r\nexport * from './lib/guards/auth.guard';\r\nexport * from './lib/hasrole.directive';\r\n\r\nexport * from './lib/google-auth.service';\r\nexport * from './lib/components/google-signin/google-signin.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.AuthService","i1.GoogleAuthService"],"mappings":";;;;;;;;;;;MAKa,WAAW,CAAA;AACtB,IAAA,WAAA,GAAA,GAAgB;AAER,IAAA,KAAK,GAAkB,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AAC1D,IAAA,KAAK,GAAa,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC;IAE5E,QAAQ,GAAA;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;IAED,QAAQ,GAAA;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;IAED,eAAe,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC;KAC5B;IAED,yBAAyB,GAAA;QACvB,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,GAAG,EAAE;YACP,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;SAC3B;KACF;wGAvBU,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAX,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,cAFV,MAAM,EAAA,CAAA,CAAA;;4FAEP,WAAW,EAAA,UAAA,EAAA,CAAA;kBAHvB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCSY,aAAa,CAAA;wGAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,EAPd,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAGU,aAAa,EAAA,UAAA,EAAA,CAAA;kBAXzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,EACR,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,EAAE,EACD,QAAA,EAAA,CAAA;;;;AAIT,EAAA,CAAA,EAAA,CAAA;;;MCMU,cAAc,CAAA;AACL,IAAA,EAAA,CAAA;AAAyB,IAAA,KAAA,CAAA;IAA7C,WAAoB,CAAA,EAAe,EAAU,KAAoB,EAAA;QAA7C,IAAE,CAAA,EAAA,GAAF,EAAE,CAAa;QAAU,IAAK,CAAA,KAAA,GAAL,KAAK,CAAe;KAAI;AACrE,IAAA,SAAS,CAAa;IAEtB,QAAQ,GAAA;QACN,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAClC,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;AAC5C,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;KACxB;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AAC7B,YAAA,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;AACtD,YAAA,QAAQ,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC;AACtC,SAAA,CAAC,CAAC;KACJ;AAED,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;KACzC;AAED,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;KAC5C;wGAvBU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChB3B,k7EAsEA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED1DY,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAIlB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAP1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,EACR,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,mBAAmB,CAAC,EAAA,QAAA,EAAA,k7EAAA,EAAA,CAAA;;;MEKnB,iBAAiB,CAAA;AACR,IAAA,EAAA,CAAA;AAAyB,IAAA,KAAA,CAAA;IAA7C,WAAoB,CAAA,EAAe,EAAU,KAAoB,EAAA;QAA7C,IAAE,CAAA,EAAA,GAAF,EAAE,CAAa;QAAU,IAAK,CAAA,KAAA,GAAL,KAAK,CAAe;KAAI;AAErE,IAAA,YAAY,CAAa;IAEzB,QAAQ,GAAA;QACN,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACrC,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;KAC3B;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AAChC,YAAA,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,YAAA,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;AACtD,YAAA,QAAQ,EAAE;gBACR,IAAI;AACJ,gBAAA;AACE,oBAAA,UAAU,CAAC,QAAQ;AACnB,oBAAA,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AACvB,oBAAA,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;AACxB,oBAAA,UAAU,CAAC,OAAO,CAChB,iEAAiE,CAClE;AACF,iBAAA;AACF,aAAA;AACF,SAAA,CAAC,CAAC;KACJ;AAED,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;KAC3C;AAED,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;KAC5C;AAED,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;KAC/C;wGAvCU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,ECjB9B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,g2IA8HA,EDjHY,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,48BAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAIhC,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,cACX,IAAI,EAAA,OAAA,EACP,CAAC,mBAAmB,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,g2IAAA,EAAA,CAAA;;;MEIjC,uBAAuB,CAAA;AACd,IAAA,EAAA,CAAA;AAAyB,IAAA,KAAA,CAAA;IAA7C,WAAoB,CAAA,EAAe,EAAU,KAAoB,EAAA;QAA7C,IAAE,CAAA,EAAA,GAAF,EAAE,CAAa;QAAU,IAAK,CAAA,KAAA,GAAL,KAAK,CAAe;KAAI;AAErE,IAAA,kBAAkB,CAAa;IAE/B,QAAQ,GAAA;QACN,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAC3C,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,qDAAqD,CAAC,CAAC;AAC1E,QAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;KACjC;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AACtC,YAAA,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;AACvD,SAAA,CAAC,CAAC;KACJ;AAED,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;KAClD;wGAnBU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,ECjBpC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,q2DAwDA,ED3CY,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,48BAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAIhC,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAPnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,cAClB,IAAI,EAAA,OAAA,EACP,CAAC,mBAAmB,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,q2DAAA,EAAA,CAAA;;;MEIjC,wBAAwB,CAAA;AACf,IAAA,EAAA,CAAA;AAAyB,IAAA,KAAA,CAAA;IAA7C,WAAoB,CAAA,EAAe,EAAU,KAAoB,EAAA;QAA7C,IAAE,CAAA,EAAA,GAAF,EAAE,CAAa;QAAU,IAAK,CAAA,KAAA,GAAL,KAAK,CAAe;KAAI;AAErE,IAAA,iBAAiB,CAAa;IAE9B,QAAQ,GAAA;QACN,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;AAC1C,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC;AACrD,QAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;KAChC;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AACrC,YAAA,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;AACtD,YAAA,GAAG,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC;AACjC,SAAA,CAAC,CAAC;KACJ;AAED,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;KACjD;AAED,IAAA,IAAI,GAAG,GAAA;QACL,OAAO,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KAC/C;wGAxBU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,ECjBrC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,2oFAgFA,EDnEY,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,mBAAmB,48BAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAIhC,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAPpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,cACnB,IAAI,EAAA,OAAA,EACP,CAAC,mBAAmB,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,2oFAAA,EAAA,CAAA;;;MEXjC,eAAe,GAAsB,CAAC,GAAG,EAAE,IAAI,KAAI;IAC9D,MAAM,SAAS,GAAG,CAAA,iBAAA,CAAmB,CAAC;AACtC,IAAA,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC;AACxB,QAAA,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,CAAA,OAAA,EAAU,SAAS,CAAA,CAAE,CAAC;AACjE,KAAA,CAAC,CAAC;AAEH,IAAA,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;AACvB;;MCJa,SAAS,GAAkB,CAAC,KAAK,EAAE,KAAK,KAAI;AACvD,IAAA,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AACxC,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AACpC,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAC9B,IAAA,MAAM,MAAM,GAAG,WAAW,CAAC,yBAAyB,EAAE,CAAC;IACvD,IAAI,MAAM,EAAE;AACV,QAAA,OAAO,IAAI,CAAC;KACb;SAAM;AACL,QAAA,KAAK,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACnD,UAAU,CAAC,MAAK;AACd,YAAA,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;SAChC,EAAE,IAAI,CAAC,CAAC;AACT,QAAA,OAAO,KAAK,CAAC;KACd;AACH;;MCZa,gBAAgB,CAAA;AAajB,IAAA,WAAA,CAAA;AACA,IAAA,aAAA,CAAA;AACA,IAAA,WAAA,CAAA;IAdV,IAAa,OAAO,CAAC,KAAe,EAAA;QAClC,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;AAC9C,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAE/D,IAAI,OAAO,EAAE;YACX,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SACzD;aAAM;AACL,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;SAC5B;KACF;AAED,IAAA,WAAA,CACU,WAA6B,EAC7B,aAA+B,EAC/B,WAAwB,EAAA;QAFxB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAkB;QAC7B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAkB;QAC/B,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;KAC9B;wGAhBO,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;sIAEc,OAAO,EAAA,CAAA;sBAAnB,KAAK;;;MCFK,iBAAiB,CAAA;AACpB,IAAA,YAAY,CAAyB;AAE7C,IAAA,WAAA,GAAA,GAAgB;IAEhB,MAAM,UAAU,CAAC,QAAgB,EAAA;QAC/B,MAAM,iBAAiB,EAAE,CAAC;QAC1B,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACpC,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAK;AACtB,gBAAA,IAAI,CAAC,KAAK;AACP,qBAAA,IAAI,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AAC7B,qBAAA,IAAI,CAAC,CAAC,IAAI,KAAI;AACb,oBAAA,IAAI,CAAC,YAAY,GAAG,IAA6B,CAAC;oBAClD,OAAO,CAAC,IAAI,CAAC,CAAC;AAChB,iBAAC,CAAC;qBACD,KAAK,CAAC,MAAM,CAAC,CAAC;AACnB,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;IAED,MAAM,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;KACnC;IAED,OAAO,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;KACpC;IAED,UAAU,GAAA;QACR,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;KAC3C;IAED,OAAO,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;KACvE;wGAlCU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cAFhB,MAAM,EAAA,CAAA,CAAA;;4FAEP,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;MCKY,qBAAqB,CAAA;AAKZ,IAAA,WAAA,CAAA;AAJX,IAAA,QAAQ,CAAU;IAClB,UAAU,GAAG,mBAAmB,CAAC;AAChC,IAAA,iBAAiB,GAAG,IAAI,YAAY,EAAyB,CAAC;AAExE,IAAA,WAAA,CAAoB,WAA8B,EAAA;QAA9B,IAAW,CAAA,WAAA,GAAX,WAAW,CAAmB;KAAI;AAEtD,IAAA,MAAM,QAAQ,GAAA;QACZ,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAClD;AAED,IAAA,MAAM,YAAY,GAAA;AAChB,QAAA,IAAI;YACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;AAC7C,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACnC;QAAC,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;SAChD;KACF;wGAlBU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,6LCVlC,4EAGA,EAAA,MAAA,EAAA,CAAA,oJAAA,CAAA,EAAA,CAAA,CAAA;;4FDOa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;+BACE,kBAAkB,EAAA,UAAA,EAChB,IAAI,EAAA,OAAA,EACP,EAAE,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,oJAAA,CAAA,EAAA,CAAA;mFAKF,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBACI,iBAAiB,EAAA,CAAA;sBAA1B,MAAM;;;AEbT;;AAEG;;ACFH;;AAEG;;;;"}